@strapi/content-manager 5.56.0 → 5.58.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 (220) hide show
  1. package/dist/admin/components/ConfigurationForm/Form.js +3 -3
  2. package/dist/admin/components/ConfigurationForm/Form.js.map +1 -1
  3. package/dist/admin/components/ConfigurationForm/Form.mjs +2 -2
  4. package/dist/admin/components/ConfigurationForm/Form.mjs.map +1 -1
  5. package/dist/admin/components/RelativeTime.js +9 -0
  6. package/dist/admin/components/RelativeTime.js.map +1 -1
  7. package/dist/admin/components/RelativeTime.mjs +10 -1
  8. package/dist/admin/components/RelativeTime.mjs.map +1 -1
  9. package/dist/admin/features/DocumentRBAC.js +0 -3
  10. package/dist/admin/features/DocumentRBAC.js.map +1 -1
  11. package/dist/admin/features/DocumentRBAC.mjs +1 -4
  12. package/dist/admin/features/DocumentRBAC.mjs.map +1 -1
  13. package/dist/admin/history/components/VersionContent.js +3 -3
  14. package/dist/admin/history/components/VersionContent.js.map +1 -1
  15. package/dist/admin/history/components/VersionContent.mjs +2 -2
  16. package/dist/admin/history/components/VersionContent.mjs.map +1 -1
  17. package/dist/admin/history/pages/History.js +2 -1
  18. package/dist/admin/history/pages/History.js.map +1 -1
  19. package/dist/admin/history/pages/History.mjs +3 -2
  20. package/dist/admin/history/pages/History.mjs.map +1 -1
  21. package/dist/admin/pages/EditView/EditViewPage.js +2 -2
  22. package/dist/admin/pages/EditView/EditViewPage.js.map +1 -1
  23. package/dist/admin/pages/EditView/EditViewPage.mjs +2 -2
  24. package/dist/admin/pages/EditView/EditViewPage.mjs.map +1 -1
  25. package/dist/admin/pages/EditView/components/DocumentActions.js +37 -2
  26. package/dist/admin/pages/EditView/components/DocumentActions.js.map +1 -1
  27. package/dist/admin/pages/EditView/components/DocumentActions.mjs +37 -3
  28. package/dist/admin/pages/EditView/components/DocumentActions.mjs.map +1 -1
  29. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js +1 -0
  30. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.js.map +1 -1
  31. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs +1 -0
  32. package/dist/admin/pages/EditView/components/FormInputs/BlocksInput/BlocksToolbar.mjs.map +1 -1
  33. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js +3 -3
  34. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.js.map +1 -1
  35. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs +2 -2
  36. package/dist/admin/pages/EditView/components/FormInputs/DynamicZone/Field.mjs.map +1 -1
  37. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js +30 -2
  38. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.js.map +1 -1
  39. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs +31 -4
  40. package/dist/admin/pages/EditView/components/FormInputs/Relations/RelationModal.mjs.map +1 -1
  41. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js +40 -8
  42. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.js.map +1 -1
  43. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs +41 -9
  44. package/dist/admin/pages/EditView/components/FormInputs/Relations/Relations.mjs.map +1 -1
  45. package/dist/admin/pages/EditView/utils/data.js +3 -3
  46. package/dist/admin/pages/EditView/utils/data.js.map +1 -1
  47. package/dist/admin/pages/EditView/utils/data.mjs +2 -2
  48. package/dist/admin/pages/EditView/utils/data.mjs.map +1 -1
  49. package/dist/admin/pages/ListView/ListViewPage.js +4 -3
  50. package/dist/admin/pages/ListView/ListViewPage.js.map +1 -1
  51. package/dist/admin/pages/ListView/ListViewPage.mjs +4 -3
  52. package/dist/admin/pages/ListView/ListViewPage.mjs.map +1 -1
  53. package/dist/admin/preview/pages/Preview.js +2 -1
  54. package/dist/admin/preview/pages/Preview.js.map +1 -1
  55. package/dist/admin/preview/pages/Preview.mjs +3 -2
  56. package/dist/admin/preview/pages/Preview.mjs.map +1 -1
  57. package/dist/admin/services/documents.js +3 -2
  58. package/dist/admin/services/documents.js.map +1 -1
  59. package/dist/admin/services/documents.mjs +2 -2
  60. package/dist/admin/services/documents.mjs.map +1 -1
  61. package/dist/admin/services/relations.js +3 -0
  62. package/dist/admin/services/relations.js.map +1 -1
  63. package/dist/admin/services/relations.mjs +3 -0
  64. package/dist/admin/services/relations.mjs.map +1 -1
  65. package/dist/admin/src/pages/EditView/components/DocumentActions.d.ts +2 -1
  66. package/dist/admin/src/pages/EditView/components/FormInputs/Relations/RelationModal.d.ts +19 -2
  67. package/dist/admin/src/services/documents.d.ts +10 -2
  68. package/dist/admin/translations/en.json.js +2 -0
  69. package/dist/admin/translations/en.json.js.map +1 -1
  70. package/dist/admin/translations/en.json.mjs +2 -0
  71. package/dist/admin/translations/en.json.mjs.map +1 -1
  72. package/dist/admin/utils/validation.js +3 -3
  73. package/dist/admin/utils/validation.js.map +1 -1
  74. package/dist/admin/utils/validation.mjs +2 -2
  75. package/dist/admin/utils/validation.mjs.map +1 -1
  76. package/dist/server/controllers/collection-types.js +4 -4
  77. package/dist/server/controllers/collection-types.js.map +1 -1
  78. package/dist/server/controllers/collection-types.mjs +4 -4
  79. package/dist/server/controllers/collection-types.mjs.map +1 -1
  80. package/dist/server/controllers/content-types.js +5 -7
  81. package/dist/server/controllers/content-types.js.map +1 -1
  82. package/dist/server/controllers/content-types.mjs +5 -7
  83. package/dist/server/controllers/content-types.mjs.map +1 -1
  84. package/dist/server/controllers/relations.js +19 -15
  85. package/dist/server/controllers/relations.js.map +1 -1
  86. package/dist/server/controllers/relations.mjs +17 -13
  87. package/dist/server/controllers/relations.mjs.map +1 -1
  88. package/dist/server/controllers/utils/clone.js +3 -4
  89. package/dist/server/controllers/utils/clone.js.map +1 -1
  90. package/dist/server/controllers/utils/clone.mjs +4 -5
  91. package/dist/server/controllers/utils/clone.mjs.map +1 -1
  92. package/dist/server/controllers/validation/index.js +1 -1
  93. package/dist/server/controllers/validation/index.mjs +1 -1
  94. package/dist/server/history/controllers/history-version.js +3 -3
  95. package/dist/server/history/controllers/history-version.js.map +1 -1
  96. package/dist/server/history/controllers/history-version.mjs +3 -3
  97. package/dist/server/history/controllers/history-version.mjs.map +1 -1
  98. package/dist/server/history/entitlements.js +26 -0
  99. package/dist/server/history/entitlements.js.map +1 -0
  100. package/dist/server/history/entitlements.mjs +24 -0
  101. package/dist/server/history/entitlements.mjs.map +1 -0
  102. package/dist/server/history/index.js +3 -0
  103. package/dist/server/history/index.js.map +1 -1
  104. package/dist/server/history/index.mjs +3 -0
  105. package/dist/server/history/index.mjs.map +1 -1
  106. package/dist/server/history/services/history.js +4 -4
  107. package/dist/server/history/services/history.js.map +1 -1
  108. package/dist/server/history/services/history.mjs +4 -4
  109. package/dist/server/history/services/history.mjs.map +1 -1
  110. package/dist/server/history/services/lifecycles.js +8 -8
  111. package/dist/server/history/services/lifecycles.js.map +1 -1
  112. package/dist/server/history/services/lifecycles.mjs +3 -3
  113. package/dist/server/history/services/lifecycles.mjs.map +1 -1
  114. package/dist/server/history/services/utils.js +26 -18
  115. package/dist/server/history/services/utils.js.map +1 -1
  116. package/dist/server/history/services/utils.mjs +23 -17
  117. package/dist/server/history/services/utils.mjs.map +1 -1
  118. package/dist/server/mcp/permissions.js +2 -2
  119. package/dist/server/mcp/permissions.js.map +1 -1
  120. package/dist/server/mcp/permissions.mjs +2 -2
  121. package/dist/server/mcp/permissions.mjs.map +1 -1
  122. package/dist/server/mcp/register-content-manager-mcp-tools.js +7 -5
  123. package/dist/server/mcp/register-content-manager-mcp-tools.js.map +1 -1
  124. package/dist/server/mcp/register-content-manager-mcp-tools.mjs +7 -5
  125. package/dist/server/mcp/register-content-manager-mcp-tools.mjs.map +1 -1
  126. package/dist/server/preview/controllers/previewScript.js +30 -15
  127. package/dist/server/preview/controllers/validation/preview.js +3 -3
  128. package/dist/server/preview/controllers/validation/preview.js.map +1 -1
  129. package/dist/server/preview/controllers/validation/preview.mjs +3 -3
  130. package/dist/server/preview/controllers/validation/preview.mjs.map +1 -1
  131. package/dist/server/services/components.js +3 -3
  132. package/dist/server/services/components.js.map +1 -1
  133. package/dist/server/services/components.mjs +3 -3
  134. package/dist/server/services/components.mjs.map +1 -1
  135. package/dist/server/services/content-structure.js +2 -2
  136. package/dist/server/services/content-structure.js.map +1 -1
  137. package/dist/server/services/content-structure.mjs +2 -2
  138. package/dist/server/services/content-structure.mjs.map +1 -1
  139. package/dist/server/services/content-types.js +3 -3
  140. package/dist/server/services/content-types.js.map +1 -1
  141. package/dist/server/services/content-types.mjs +3 -3
  142. package/dist/server/services/content-types.mjs.map +1 -1
  143. package/dist/server/services/data-mapper.js +3 -3
  144. package/dist/server/services/data-mapper.js.map +1 -1
  145. package/dist/server/services/data-mapper.mjs +3 -3
  146. package/dist/server/services/data-mapper.mjs.map +1 -1
  147. package/dist/server/services/document-manager.js +6 -6
  148. package/dist/server/services/document-manager.js.map +1 -1
  149. package/dist/server/services/document-manager.mjs +6 -6
  150. package/dist/server/services/document-manager.mjs.map +1 -1
  151. package/dist/server/services/document-metadata.js +29 -31
  152. package/dist/server/services/document-metadata.js.map +1 -1
  153. package/dist/server/services/document-metadata.mjs +29 -31
  154. package/dist/server/services/document-metadata.mjs.map +1 -1
  155. package/dist/server/services/metrics.js +3 -3
  156. package/dist/server/services/metrics.js.map +1 -1
  157. package/dist/server/services/metrics.mjs +3 -3
  158. package/dist/server/services/metrics.mjs.map +1 -1
  159. package/dist/server/services/permission-checker.js +2 -2
  160. package/dist/server/services/permission-checker.js.map +1 -1
  161. package/dist/server/services/permission-checker.mjs +1 -1
  162. package/dist/server/services/permission-checker.mjs.map +1 -1
  163. package/dist/server/services/permission.js +2 -3
  164. package/dist/server/services/permission.js.map +1 -1
  165. package/dist/server/services/permission.mjs +2 -3
  166. package/dist/server/services/permission.mjs.map +1 -1
  167. package/dist/server/services/populate-builder.js +4 -4
  168. package/dist/server/services/populate-builder.js.map +1 -1
  169. package/dist/server/services/populate-builder.mjs +4 -4
  170. package/dist/server/services/populate-builder.mjs.map +1 -1
  171. package/dist/server/services/utils/configuration/attributes.js +1 -2
  172. package/dist/server/services/utils/configuration/attributes.js.map +1 -1
  173. package/dist/server/services/utils/configuration/attributes.mjs +2 -3
  174. package/dist/server/services/utils/configuration/attributes.mjs.map +1 -1
  175. package/dist/server/services/utils/configuration/settings.js +4 -7
  176. package/dist/server/services/utils/configuration/settings.js.map +1 -1
  177. package/dist/server/services/utils/configuration/settings.mjs +2 -5
  178. package/dist/server/services/utils/configuration/settings.mjs.map +1 -1
  179. package/dist/server/services/utils/draft.js +8 -7
  180. package/dist/server/services/utils/draft.js.map +1 -1
  181. package/dist/server/services/utils/draft.mjs +6 -5
  182. package/dist/server/services/utils/draft.mjs.map +1 -1
  183. package/dist/server/services/utils/populate.js +10 -11
  184. package/dist/server/services/utils/populate.js.map +1 -1
  185. package/dist/server/services/utils/populate.mjs +9 -10
  186. package/dist/server/services/utils/populate.mjs.map +1 -1
  187. package/dist/server/src/controllers/relations.d.ts.map +1 -1
  188. package/dist/server/src/history/controllers/history-version.d.ts.map +1 -1
  189. package/dist/server/src/history/entitlements.d.ts +9 -0
  190. package/dist/server/src/history/entitlements.d.ts.map +1 -0
  191. package/dist/server/src/history/index.d.ts.map +1 -1
  192. package/dist/server/src/history/services/utils.d.ts +8 -2
  193. package/dist/server/src/history/services/utils.d.ts.map +1 -1
  194. package/dist/server/src/index.d.ts +1 -1
  195. package/dist/server/src/index.d.ts.map +1 -1
  196. package/dist/server/src/mcp/permissions.d.ts +1 -1
  197. package/dist/server/src/mcp/permissions.d.ts.map +1 -1
  198. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts +3 -1
  199. package/dist/server/src/mcp/register-content-manager-mcp-tools.d.ts.map +1 -1
  200. package/dist/server/src/mcp/types.d.ts +2 -2
  201. package/dist/server/src/services/content-types.d.ts.map +1 -1
  202. package/dist/server/src/services/data-mapper.d.ts +1 -1
  203. package/dist/server/src/services/data-mapper.d.ts.map +1 -1
  204. package/dist/server/src/services/document-manager.d.ts.map +1 -1
  205. package/dist/server/src/services/document-metadata.d.ts.map +1 -1
  206. package/dist/server/src/services/index.d.ts +1 -1
  207. package/dist/server/src/services/index.d.ts.map +1 -1
  208. package/dist/server/src/services/metrics.d.ts.map +1 -1
  209. package/dist/server/src/services/permission-checker.d.ts.map +1 -1
  210. package/dist/server/src/services/permission.d.ts.map +1 -1
  211. package/dist/server/src/services/populate-builder.d.ts.map +1 -1
  212. package/dist/server/src/services/utils/configuration/index.d.ts +10 -1
  213. package/dist/server/src/services/utils/configuration/index.d.ts.map +1 -1
  214. package/dist/server/src/services/utils/configuration/settings.d.ts +10 -1
  215. package/dist/server/src/services/utils/configuration/settings.d.ts.map +1 -1
  216. package/dist/server/src/services/utils/draft.d.ts.map +1 -1
  217. package/dist/server/src/services/utils/populate.d.ts.map +1 -1
  218. package/dist/shared/contracts/relations.d.ts +1 -0
  219. package/dist/shared/contracts/relations.d.ts.map +1 -1
  220. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.js","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n type FieldContentSourceMap,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { InputPopover } from '../components/InputPopover';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { INTERNAL_EVENTS, PUBLIC_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PopoverField extends FieldContentSourceMap {\n position: DOMRect;\n attribute: Schema.Attribute.AnyAttribute;\n blockIndex: number | null;\n}\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n components: NonNullable<ReturnType<UseDocument>['components']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n}\n\ntype PreviewHighlightColors = {\n highlightHoverColor: string;\n highlightActiveColor: string;\n};\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\nconst getPreviewScript = (() => {\n let previewScript = '';\n return async (previewHighlightColors: PreviewHighlightColors) => {\n if (!previewScript) {\n const resp = await fetch(`${window.strapi.backendURL}/content-manager/preview/script`);\n\n if (!resp.ok) {\n throw new Error('Could not retrieve preview script from server.');\n }\n\n previewScript = await resp.text();\n\n if (!previewScript) {\n throw new Error('Could not retrieve preview script from server.');\n }\n }\n\n return `(${previewScript})(${JSON.stringify({\n colors: previewHighlightColors,\n events: INTERNAL_EVENTS,\n parentOrigin: window.location.origin,\n })})`;\n };\n})();\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n const theme = useTheme();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n const prevPopoverFieldRef = React.useRef<PopoverField | null>(null);\n\n // When the popover closes, ask the iframe to rescan its stega element groups.\n // Live-preview sync updates the iframe DOM while editing, which can change the\n // rendered height of the field; groups need to reflect the current DOM so that\n // hover highlights and double-click detection work on the updated content.\n React.useEffect(() => {\n const prev = prevPopoverFieldRef.current;\n prevPopoverFieldRef.current = popoverField;\n\n if (prev !== null && popoverField === null) {\n const iframe = iframeRef.current;\n if (!iframe?.src) return;\n iframe.contentWindow?.postMessage(\n { type: INTERNAL_EVENTS.STRAPI_RESCAN_HIGHLIGHTS },\n new URL(iframe.src).origin\n );\n }\n }, [popoverField, iframeRef]);\n\n const { toggleNotification } = useNotification();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: { i18n?: { locale?: string } };\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n const previewHighlightColors: PreviewHighlightColors = {\n highlightHoverColor: theme.colors.primary500,\n highlightActiveColor: theme.colors.primary600,\n };\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n // Only listen to events from the preview iframe\n if (iframeRef.current) {\n const previewOrigin = new URL(iframeRef.current?.src).origin;\n if (event.origin !== previewOrigin) {\n return;\n }\n }\n\n if (event.data?.type === PUBLIC_EVENTS.PREVIEW_READY) {\n try {\n const script = await getPreviewScript(previewHighlightColors);\n\n const sendMessage = getSendMessage(iframeRef);\n sendMessage(PUBLIC_EVENTS.STRAPI_SCRIPT, { script });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.preview.error.script-failed',\n defaultMessage:\n 'Could not load the live preview script. Visual editing may not be available.',\n }),\n });\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n // Preserve the existing dependency behavior: previewHighlightColors is derived from theme.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [documentId, toggleNotification, theme, formatMessage]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale as GetPreviewUrl.Request['query']['locale'],\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n components={documentResponse.components}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <InputPopover documentResponse={documentResponse} />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\nexport type { PreviewContextValue };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","getPreviewScript","previewScript","previewHighlightColors","resp","fetch","window","strapi","backendURL","ok","Error","text","JSON","stringify","colors","events","INTERNAL_EVENTS","parentOrigin","location","origin","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","useLocation","formatMessage","useIntl","theme","useTheme","iframeRef","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","popoverField","setPopoverField","prevPopoverFieldRef","useEffect","prev","current","iframe","src","contentWindow","postMessage","type","STRAPI_RESCAN_HIGHLIGHTS","URL","toggleNotification","useNotification","slug","model","documentId","collectionType","useParams","query","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","highlightHoverColor","primary500","highlightActiveColor","primary600","handleMessage","event","previewOrigin","data","PUBLIC_EVENTS","PREVIEW_READY","script","sendMessage","getSendMessage","STRAPI_SCRIPT","message","addEventListener","removeEventListener","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","document","_jsx","Page","Loading","initialValues","getInitialFormValues","error","meta","schema","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","attributes","abortEarly","previewUrl","onPreview","hasAdvancedPreview","features","isEnabled","_jsxs","_Fragment","Title","title","layout","FormContext","method","disabled","initialErrors","state","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","InputPopover","flex","overflow","Box","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","padding","IconButton","variant","onClick","justifyContent","SingleSelect","value","onChange","toString","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","position","top","left","zIndex","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA;;AAEkG,qGAElG,MAAMA,OAAAA,GAAU;AACd,IAAA;QACEC,IAAAA,EAAM,SAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,wCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,MAAA;QACPC,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;QACEL,IAAAA,EAAM,QAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,uCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,OAAA;QACPC,MAAAA,EAAQ;AACV;AACD,CAAA;AA+BD,MAAM,CAACC,eAAAA,EAAiBC,iBAAAA,CAAkB,GAAGC,yBAAAA,CAAmC,aAAA;AAEhF,MAAMC,gBAAAA,GAAmB,CAAC,IAAA;AACxB,IAAA,IAAIC,aAAAA,GAAgB,EAAA;AACpB,IAAA,OAAO,OAAOC,sBAAAA,GAAAA;AACZ,QAAA,IAAI,CAACD,aAAAA,EAAe;YAClB,MAAME,IAAAA,GAAO,MAAMC,KAAAA,CAAM,CAAA,EAAGC,MAAAA,CAAOC,MAAM,CAACC,UAAU,CAAC,+BAA+B,CAAC,CAAA;YAErF,IAAI,CAACJ,IAAAA,CAAKK,EAAE,EAAE;AACZ,gBAAA,MAAM,IAAIC,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;YAEAR,aAAAA,GAAgB,MAAME,KAAKO,IAAI,EAAA;AAE/B,YAAA,IAAI,CAACT,aAAAA,EAAe;AAClB,gBAAA,MAAM,IAAIQ,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;AACF,QAAA;QAEA,OAAO,CAAC,CAAC,EAAER,aAAAA,CAAc,EAAE,EAAEU,IAAAA,CAAKC,SAAS,CAAC;YAC1CC,MAAAA,EAAQX,sBAAAA;YACRY,MAAAA,EAAQC,yBAAAA;YACRC,YAAAA,EAAcX,MAAAA,CAAOY,QAAQ,CAACC;AAChC,SAAA,CAAA,CAAG,CAAC,CAAC;AACP,IAAA,CAAA;AACF,CAAA,GAAA;AAEA;;AAEkG,qGAElG,MAAMC,aAAAA,GAAgBC,uBAAAA,CAAOC,mBAAAA,CAA8C;;AAEjE,UAAA,EAAE,CAACC,KAAAA,GAAWA,KAAAA,CAAMC,iBAAiB,GAAG,SAAS,QAAA,CAAU;;AAErE,CAAC;AAED,MAAMC,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMP,QAAAA,GAAWQ,0BAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,KAAAA,GAAQC,yBAAAA,EAAAA;IAEd,MAAMC,SAAAA,GAAYC,gBAAAA,CAAMC,MAAM,CAAoB,IAAA,CAAA;AAClD,IAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGH,gBAAAA,CAAMI,QAAQ,CAAC,IAAA,CAAA;AAC/D,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGN,gBAAAA,CAAMI,QAAQ,CAAsB,IAAA,CAAA;IAC5E,MAAMG,mBAAAA,GAAsBP,gBAAAA,CAAMC,MAAM,CAAsB,IAAA,CAAA;;;;;AAM9DD,IAAAA,gBAAAA,CAAMQ,SAAS,CAAC,IAAA;QACd,MAAMC,IAAAA,GAAOF,oBAAoBG,OAAO;AACxCH,QAAAA,mBAAAA,CAAoBG,OAAO,GAAGL,YAAAA;QAE9B,IAAII,IAAAA,KAAS,IAAA,IAAQJ,YAAAA,KAAiB,IAAA,EAAM;YAC1C,MAAMM,MAAAA,GAASZ,UAAUW,OAAO;YAChC,IAAI,CAACC,QAAQC,GAAAA,EAAK;YAClBD,MAAAA,CAAOE,aAAa,EAAEC,WAAAA,CACpB;AAAEC,gBAAAA,IAAAA,EAAM/B,0BAAgBgC;AAAyB,aAAA,EACjD,IAAIC,GAAAA,CAAIN,MAAAA,CAAOC,GAAG,EAAEzB,MAAM,CAAA;AAE9B,QAAA;IACF,CAAA,EAAG;AAACkB,QAAAA,YAAAA;AAAcN,QAAAA;AAAU,KAAA,CAAA;IAE5B,MAAM,EAAEmB,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;;IAG/B,MAAM,EACJC,MAAMC,KAAK,EACX3D,IAAI4D,UAAU,EACdC,cAAc,EACf,GAAGC,wBAAAA,EAAAA;AAKJ,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAKpB,IAAA,MAAMC,SAAS3B,gBAAAA,CAAM4B,OAAO,CAAC,IAAMC,qBAAiBJ,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,MAAM,CAACK,UAAAA,EAAYC,aAAAA,CAAc,GAAG/B,gBAAAA,CAAMI,QAAQ,CAChD7C,OAAO,CAAC,CAAA,CAAE,CAACC,IAAI,CAAA;AAEjB,IAAA,MAAMwE,MAAAA,GAASzE,OAAAA,CAAQ0E,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAE1E,IAAI,KAAKsE,UAAAA,CAAAA,IAAevE,OAAO,CAAC,CAAA,CAAE;AAEvE,IAAA,MAAMY,sBAAAA,GAAiD;QACrDgE,mBAAAA,EAAqBtC,KAAAA,CAAMf,MAAM,CAACsD,UAAU;QAC5CC,oBAAAA,EAAsBxC,KAAAA,CAAMf,MAAM,CAACwD;AACrC,KAAA;;AAGAtC,IAAAA,gBAAAA,CAAMQ,SAAS,CAAC,IAAA;AACd,QAAA,MAAM+B,gBAAgB,OAAOC,KAAAA,GAAAA;;YAE3B,IAAIzC,SAAAA,CAAUW,OAAO,EAAE;AACrB,gBAAA,MAAM+B,gBAAgB,IAAIxB,GAAAA,CAAIlB,UAAUW,OAAO,EAAEE,KAAKzB,MAAM;gBAC5D,IAAIqD,KAAAA,CAAMrD,MAAM,KAAKsD,aAAAA,EAAe;AAClC,oBAAA;AACF,gBAAA;AACF,YAAA;AAEA,YAAA,IAAID,MAAME,IAAI,EAAE3B,IAAAA,KAAS4B,uBAAAA,CAAcC,aAAa,EAAE;gBACpD,IAAI;oBACF,MAAMC,MAAAA,GAAS,MAAM5E,gBAAAA,CAAiBE,sBAAAA,CAAAA;AAEtC,oBAAA,MAAM2E,cAAcC,6BAAAA,CAAehD,SAAAA,CAAAA;oBACnC+C,WAAAA,CAAYH,uBAAAA,CAAcK,aAAa,EAAE;AAAEH,wBAAAA;AAAO,qBAAA,CAAA;AACpD,gBAAA,CAAA,CAAE,OAAM;oBACN3B,kBAAAA,CAAmB;wBACjBH,IAAAA,EAAM,QAAA;AACNkC,wBAAAA,OAAAA,EAAStD,aAAAA,CAAc;4BACrBjC,EAAAA,EAAI,6CAAA;4BACJC,cAAAA,EACE;AACJ,yBAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;QAEAW,MAAAA,CAAO4E,gBAAgB,CAAC,SAAA,EAAWX,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLjE,MAAAA,CAAO6E,mBAAmB,CAAC,SAAA,EAAWZ,aAAAA,CAAAA;AACxC,QAAA,CAAA;;;IAGF,CAAA,EAAG;AAACjB,QAAAA,UAAAA;AAAYJ,QAAAA,kBAAAA;AAAoBrB,QAAAA,KAAAA;AAAOF,QAAAA;AAAc,KAAA,CAAA;AAEzD,IAAA,IAAI,CAAC4B,cAAAA,EAAgB;AACnB,QAAA,MAAM,IAAI7C,KAAAA,CAAM,6CAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI,CAAC2C,KAAAA,EAAO;AACV,QAAA,MAAM,IAAI3C,KAAAA,CAAM,oCAAA,CAAA;AAClB,IAAA;;IAGA,IAAI6C,cAAAA,KAAmB6B,4BAAAA,IAAoB,CAAC9B,UAAAA,EAAY;AACtD,QAAA,MAAM,IAAI5C,KAAAA,CAAM,yCAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAM2E,qBAAqBC,6BAAAA,CAAsB;QAC/C3B,MAAAA,EAAQ;YACN4B,WAAAA,EAAalC;AACf,SAAA;QACAI,KAAAA,EAAO;AACLH,YAAAA,UAAAA;AACAkC,YAAAA,MAAAA,EAAQ7B,OAAO6B,MAAM;AACrBC,YAAAA,MAAAA,EAAQ9B,OAAO8B;AACjB;AACF,KAAA,CAAA;AACA,IAAA,MAAMC,mBAAmBC,uBAAAA,CAAY;AACnCtC,QAAAA,KAAAA;AACAE,QAAAA,cAAAA;AACAD,QAAAA,UAAAA;AACAK,QAAAA;AACF,KAAA,CAAA;AACA,IAAA,MAAMiC,yBAAyBC,mCAAAA,CAAkBxC,KAAAA,CAAAA;IAEjD,MAAMyC,SAAAA,GACJT,mBAAmBS,SAAS,IAAIF,uBAAuBE,SAAS,IAAIJ,iBAAiBI,SAAS;IAChG,IAAIA,SAAAA,KAAc,CAACJ,gBAAAA,CAAiBK,QAAQ,EAAEzC,UAAAA,IAAc+B,kBAAAA,CAAmBS,SAAQ,CAAA,EAAI;QACzF,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgBT,iBAAiBU,oBAAoB,EAAA;AAE3D,IAAA,IACEf,mBAAmBgB,KAAK,IACxBT,uBAAuBS,KAAK,IAC5B,CAACX,gBAAAA,CAAiBK,QAAQ,IAC1B,CAACL,gBAAAA,CAAiBY,IAAI,IACtB,CAACZ,iBAAiBa,MAAM,IACxB,CAACJ,aAAAA,EACD;QACA,qBAAOH,cAAA,CAACC,iBAAKvF,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAAC2E,kBAAAA,CAAmBX,IAAI,EAAEA,MAAM8B,GAAAA,EAAK;QACvC,qBAAOR,cAAA,CAACC,iBAAKQ,MAAM,EAAA,EAAA,CAAA;AACrB,IAAA;IAEA,MAAMC,aAAAA,GAAgBhB,iBAAiBiB,QAAQ,CAACf,uBAAuBgB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;IAE9F,MAAMC,YAAAA,GAAe,CAACC,MAAAA,EAAiCC,OAAAA,GAAAA;QACrD,MAAM,EAAEvC,MAAMwC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAAA,EAAQ;AACnFT,YAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,YAAAA,aAAAA;AACAkB,YAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,SAAA,CAAA;QAEA,MAAMC,SAAAA,GAAYC,2BAChB7B,gBAAAA,CAAiBa,MAAM,EAAEiB,UAAAA,EACzB9B,gBAAAA,CAAiB2B,UAAU,EAC3B;YACE5B,MAAAA,EAAQC,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,YAAAA,iBAAAA;AACA,YAAA,GAAGF;AACL,SAAA,CAAA;QAGF,OAAOK,SAAAA,CAAUP,YAAY,CAACG,aAAAA,EAAe;YAAEO,UAAAA,EAAY;AAAM,SAAA,CAAA;AACnE,IAAA,CAAA;AAEA,IAAA,MAAMC,aAAarC,kBAAAA,CAAmBX,IAAI,CAACA,IAAI,CAAC8B,GAAG;AAEnD,IAAA,MAAMmB,SAAAA,GAAY,IAAA;QAChB5F,SAAAA,EAAWW,OAAAA,EAASG,eAAeC,WAAAA,CACjC;YAAEC,IAAAA,EAAM;AAAe,SAAA;AAEvB,QAAA,IAAIE,IAAIlB,SAAAA,CAAUW,OAAO,CAACE,GAAG,EAAEzB,MAAM,CAAA;AAEzC,IAAA,CAAA;AAEA,IAAA,MAAMyG,qBAAqBtH,MAAAA,CAAOC,MAAM,CAACsH,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA;IAE5D,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAhC,cAAA,CAACC,iBAAKgC,KAAK,EAAA;0BACRtG,aAAAA,CACC;oBACEjC,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;iBAClB,EACA;oBACE4F,WAAAA,EAAamB;AACf,iBAAA;;0BAGJV,cAAA,CAAClG,eAAAA,EAAAA;gBACC0G,GAAAA,EAAKkB,UAAAA;AACL3B,gBAAAA,QAAAA,EAAUL,iBAAiBK,QAAQ;gBACnCmC,KAAAA,EAAOxB,aAAAA;AACPJ,gBAAAA,IAAAA,EAAMZ,iBAAiBY,IAAI;AAC3BC,gBAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/Bc,gBAAAA,UAAAA,EAAY3B,iBAAiB2B,UAAU;AACvCc,gBAAAA,MAAAA,EAAQvC,uBAAuBgB,IAAI;gBACnCe,SAAAA,EAAWA,SAAAA;gBACX5F,SAAAA,EAAWA,SAAAA;gBACXM,YAAAA,EAAcA,YAAAA;gBACdC,eAAAA,EAAiBA,eAAAA;AAEjB,gBAAA,QAAA,gBAAA0D,cAAA,CAACoC,gBAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EACE7E,KAAAA,CAAMgC,MAAM,KAAK,WAAA,IACjBC,oBACAA,gBAAAA,CAAiBK,QAAQ,CAACN,MAAM,KAAK,OAAA;AAEvCU,oBAAAA,aAAAA,EAAeT,iBAAiBU,oBAAoB,EAAA;AACpDmC,oBAAAA,aAAAA,EAAerH,UAAUsH,KAAAA,EAAOC,eAAAA,GAAkB1B,aAAaZ,aAAAA,EAAe,MAAM,EAAC;oBACrFtG,MAAAA,EAAO,MAAA;AACP6I,oBAAAA,QAAAA,EAAU,CAAC1B,MAAAA,EAAiCC,OAAAA,GAAAA;wBAC1C,MAAM,EAAEvC,MAAMwC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAAA,EAAQ;AACnFT,4BAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,4BAAAA,aAAAA;AACAkB,4BAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,yBAAA,CAAA;wBAEA,MAAMC,SAAAA,GAAYC,2BAChB7B,gBAAAA,CAAiBa,MAAM,EAAEiB,UAAAA,EACzB9B,gBAAAA,CAAiB2B,UAAU,EAC3B;4BACE5B,MAAAA,EAAQC,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,4BAAAA,iBAAAA;AACA,4BAAA,GAAGF;AACL,yBAAA,CAAA;wBAGF,OAAOK,SAAAA,CAAUoB,QAAQ,CAACxB,aAAAA,EAAe;4BAAEO,UAAAA,EAAY;AAAM,yBAAA,CAAA;AAC/D,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAAM,eAAA,CAACY,iBAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAAS/I,MAAAA,EAAO,MAAA;wBAAOgJ,UAAAA,EAAW,SAAA;;0CAChD7C,cAAA,CAAC8C,eAAAA,EAAAA,EAAAA,CAAAA;0CACD9C,cAAA,CAAC+C,2BAAAA,EAAAA,EAAAA,CAAAA;0CACD/C,cAAA,CAACgD,yBAAAA,EAAAA;gCAAatD,gBAAAA,EAAkBA;;0CAChCqC,eAAA,CAACY,iBAAAA,EAAAA;gCAAKM,IAAAA,EAAM,CAAA;gCAAGC,QAAAA,EAAS,MAAA;gCAAOL,UAAAA,EAAW,SAAA;;AACvCjB,oCAAAA,kBAAAA,kBACC5B,cAAA,CAACmD,gBAAAA,EAAAA;wCACCD,QAAAA,EAAS,MAAA;AACTtJ,wCAAAA,KAAAA,EAAOsC,mBAAmB,KAAA,GAAQ,CAAA;wCAClCkH,WAAAA,EAAY,WAAA;wCACZC,WAAAA,EAAY,YAAA;wCACZC,UAAAA,EAAY,CAAA;wCACZC,aAAAA,EAAe,CAAA;;AAEfC,wCAAAA,WAAAA,EAAatH,mBAAmB,CAAA,GAAI,CAAA;AACpCuH,wCAAAA,YAAAA,EAAcvH,mBAAmB,CAAA,GAAI,CAAA;wCACrCwH,UAAAA,EAAW,sBAAA;AAEX,wCAAA,QAAA,gBAAA1D,cAAA,CAAC2D,qBAAAA,EAAAA;4CACCxB,MAAAA,EAAQvC,sBAAAA,CAAuBgB,IAAI,CAACuB,MAAM;4CAC1CpC,QAAAA,EAAUL,gBAAAA;4CACVkE,aAAAA,EAAe;;;kDAIrB7B,eAAA,CAACY,iBAAAA,EAAAA;wCACCC,SAAAA,EAAU,QAAA;wCACVC,UAAAA,EAAW,SAAA;wCACXI,IAAAA,EAAM,CAAA;wCACNpJ,MAAAA,EAAO,MAAA;wCACPqJ,QAAAA,EAAS,QAAA;;0DAETnB,eAAA,CAACY,iBAAAA,EAAAA;gDACCC,SAAAA,EAAU,KAAA;gDACViB,UAAAA,EAAW,UAAA;gDACXC,OAAAA,EAAS,CAAA;gDACTV,WAAAA,EAAY,WAAA;gDACZC,WAAAA,EAAY,YAAA;;AAEXzB,oDAAAA,kBAAAA,kBACC5B,cAAA,CAAC+D,uBAAAA,EAAAA;wDACCC,OAAAA,EAAQ,OAAA;AACRvK,wDAAAA,KAAAA,EAAOkC,cACLO,gBAAAA,GACI;4DACExC,EAAAA,EAAI,8CAAA;4DACJC,cAAAA,EAAgB;yDAClB,GACA;4DACED,EAAAA,EAAI,6CAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;AAENsK,wDAAAA,OAAAA,EAAS,IAAM9H,mBAAAA,CAAoB,CAACM,IAAAA,GAAS,CAACA,IAAAA,CAAAA;AAE9C,wDAAA,QAAA,gBAAAuD,cAAA,CAAC5E,aAAAA,EAAAA;4DAAcI,iBAAAA,EAAmBU;;;kEAGtC8D,cAAA,CAAC2C,iBAAAA,EAAAA;wDAAKuB,cAAAA,EAAe,QAAA;wDAASjB,IAAAA,EAAM,CAAA;AAClC,wDAAA,QAAA,gBAAAjD,cAAA,CAACmE,yBAAAA,EAAAA;4DACCC,KAAAA,EAAOtG,UAAAA;AACPuG,4DAAAA,QAAAA,EAAU,CAAC7K,IAAAA,GAASuE,aAAAA,CAAcvE,IAAAA,CAAK8K,QAAQ,EAAA,CAAA;AAC/CC,4DAAAA,YAAAA,EAAY5I,aAAAA,CAAc;gEACxBjC,EAAAA,EAAI,uCAAA;gEACJC,cAAAA,EAAgB;AAClB,6DAAA,CAAA;AAECJ,4DAAAA,QAAAA,EAAAA,OAAAA,CAAQiL,GAAG,CAAC,CAACC,YAAAA,iBACZzE,cAAA,CAAC0E,+BAAAA,EAAAA;AAA2CN,oEAAAA,KAAAA,EAAOK,aAAajL,IAAI;AACjEmC,oEAAAA,QAAAA,EAAAA,aAAAA,CAAc8I,aAAahL,KAAK;AADVgL,iEAAAA,EAAAA,YAAAA,CAAajL,IAAI,CAAA;;;;;0DAOlDwG,cAAA,CAAC2C,iBAAAA,EAAAA;gDAAKC,SAAAA,EAAU,QAAA;gDAASsB,cAAAA,EAAe,QAAA;gDAASL,UAAAA,EAAW,UAAA;gDAAWZ,IAAAA,EAAM,CAAA;AAC3E,gDAAA,QAAA,gBAAAjD,cAAA,CAACmD,gBAAAA,EAAAA;oDACCwB,aAAAA,EAAY,gBAAA;oDACZC,GAAAA,EAAK7I,SAAAA;oDACLa,GAAAA,EAAK8E,UAAAA;AASLQ,oDAAAA,KAAAA,EAAOvG,aAAAA,CAAc;wDACnBjC,EAAAA,EAAI,qCAAA;wDACJC,cAAAA,EAAgB;AAClB,qDAAA,CAAA;AACAC,oDAAAA,KAAAA,EAAOoE,OAAOpE,KAAK;AACnBC,oDAAAA,MAAAA,EAAQmE,OAAOnE,MAAM;oDACrBuJ,WAAAA,EAAa,CAAA;oDACbyB,GAAAA,EAAI;AARCnD,iDAAAA,EAAAA,UAAAA;;;;;;;;;;;;AAkBzB,CAAA;AAEA;;AAEkG,qGAElG,MAAMoD,wBAAAA,GAA2B,IAAA;AAC/B,IAAA,MAAM,EAAE1H,IAAAA,EAAMC,KAAK,EAAE,GAAGG,wBAAAA,EAAAA;IAGxB,MAAM,EACJuH,cAAc,EAAE,EAChBjF,SAAS,EACTO,KAAK,EACN,GAAG2E,mBAAAA,CAAQ;AACV,QAAA;YAAEC,MAAAA,EAAQ,uCAAA;YAAyCC,OAAAA,EAAS7H;AAAM,SAAA;AAClE,QAAA;YAAE4H,MAAAA,EAAQ,yCAAA;YAA2CC,OAAAA,EAAS7H;AAAM,SAAA;AACpE,QAAA;YAAE4H,MAAAA,EAAQ,0CAAA;YAA4CC,OAAAA,EAAS7H;AAAM;AACtE,KAAA,CAAA;AAED,IAAA,IAAIyC,SAAAA,EAAW;QACb,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIG,KAAAA,IAAS,CAAChD,KAAAA,EAAO;AACnB,QAAA,qBACE2C,cAAA,CAACmD,gBAAAA,EAAAA;YACCtJ,MAAAA,EAAO,QAAA;YACPD,KAAAA,EAAM,QAAA;YACNuL,QAAAA,EAAS,OAAA;YACTC,GAAAA,EAAK,CAAA;YACLC,IAAAA,EAAM,CAAA;YACNC,MAAAA,EAAQ,CAAA;YACRzB,UAAAA,EAAW,UAAA;oCAEX7D,cAAA,CAACC,iBAAKvF,KAAK,EAAA,EAAA;;AAGjB,IAAA;AAEA,IAAA,qBACEsF,cAAA,CAACmD,gBAAAA,EAAAA;QACCtJ,MAAAA,EAAO,QAAA;QACPD,KAAAA,EAAM,QAAA;QACNuL,QAAAA,EAAS,OAAA;QACTC,GAAAA,EAAK,CAAA;QACLC,IAAAA,EAAM,CAAA;QACNC,MAAAA,EAAQ,CAAA;QACRzB,UAAAA,EAAW,UAAA;gCAEX7D,cAAA,CAACC,iBAAKsF,OAAO,EAAA;YACXR,WAAAA,EAAaA,WAAAA,CAAYS,MAAM,CAAC,CAACC,aAC/BA,UAAAA,CAAWR,MAAM,CAACS,QAAQ,CAAC,eAAA,CAAA,CAAA;AAG7B,YAAA,QAAA,gBAAA1F,cAAA,CAAC2F,yBAAAA,EAAAA;gBAAaZ,WAAAA,EAAaA,WAAAA;AACzB,gBAAA,QAAA,gBAAA/E,cAAA,CAACvE,WAAAA,EAAAA,EAAAA;;;;AAKX,CAAA;AAEA,MAAMmK,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,qBACE5F,cAAA,CAAC6F,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA7F,cAAA,CAAC8F,sBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAA9F,cAAA,CAAC8E,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;;"}
1
+ {"version":3,"file":"Preview.js","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n type FieldContentSourceMap,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { InputPopover } from '../components/InputPopover';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { INTERNAL_EVENTS, PUBLIC_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PopoverField extends FieldContentSourceMap {\n position: DOMRect;\n attribute: Schema.Attribute.AnyAttribute;\n blockIndex: number | null;\n}\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n components: NonNullable<ReturnType<UseDocument>['components']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n}\n\ntype PreviewHighlightColors = {\n highlightHoverColor: string;\n highlightActiveColor: string;\n};\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\nconst getPreviewScript = (() => {\n let previewScript = '';\n return async (previewHighlightColors: PreviewHighlightColors) => {\n if (!previewScript) {\n const resp = await fetch(`${window.strapi.backendURL}/content-manager/preview/script`);\n\n if (!resp.ok) {\n throw new Error('Could not retrieve preview script from server.');\n }\n\n previewScript = await resp.text();\n\n if (!previewScript) {\n throw new Error('Could not retrieve preview script from server.');\n }\n }\n\n return `(${previewScript})(${JSON.stringify({\n colors: previewHighlightColors,\n events: INTERNAL_EVENTS,\n parentOrigin: window.location.origin,\n })})`;\n };\n})();\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n const theme = useTheme();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n const prevPopoverFieldRef = React.useRef<PopoverField | null>(null);\n\n // When the popover closes, ask the iframe to rescan its stega element groups.\n // Live-preview sync updates the iframe DOM while editing, which can change the\n // rendered height of the field; groups need to reflect the current DOM so that\n // hover highlights and double-click detection work on the updated content.\n React.useEffect(() => {\n const prev = prevPopoverFieldRef.current;\n prevPopoverFieldRef.current = popoverField;\n\n if (prev !== null && popoverField === null) {\n const iframe = iframeRef.current;\n if (!iframe?.src) return;\n iframe.contentWindow?.postMessage(\n { type: INTERNAL_EVENTS.STRAPI_RESCAN_HIGHLIGHTS },\n new URL(iframe.src).origin\n );\n }\n }, [popoverField, iframeRef]);\n\n const { toggleNotification } = useNotification();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: { i18n?: { locale?: string } };\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n const previewHighlightColors: PreviewHighlightColors = {\n highlightHoverColor: theme.colors.primary500,\n highlightActiveColor: theme.colors.primary600,\n };\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n // Only listen to events from the preview iframe\n if (iframeRef.current) {\n const previewOrigin = new URL(iframeRef.current?.src).origin;\n if (event.origin !== previewOrigin) {\n return;\n }\n }\n\n if (event.data?.type === PUBLIC_EVENTS.PREVIEW_READY) {\n try {\n const script = await getPreviewScript(previewHighlightColors);\n\n const sendMessage = getSendMessage(iframeRef);\n sendMessage(PUBLIC_EVENTS.STRAPI_SCRIPT, { script });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.preview.error.script-failed',\n defaultMessage:\n 'Could not load the live preview script. Visual editing may not be available.',\n }),\n });\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n // Preserve the existing dependency behavior: previewHighlightColors is derived from theme.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [documentId, toggleNotification, theme, formatMessage]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale as GetPreviewUrl.Request['query']['locale'],\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n const isLoadingActionsRBAC = useDocumentRBAC('PreviewPage', (state) => state.isLoading);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (\n isLoadingActionsRBAC ||\n (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading))\n ) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n components={documentResponse.components}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <InputPopover documentResponse={documentResponse} />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\nexport type { PreviewContextValue };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","getPreviewScript","previewScript","previewHighlightColors","resp","fetch","window","strapi","backendURL","ok","Error","text","JSON","stringify","colors","events","INTERNAL_EVENTS","parentOrigin","location","origin","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","useLocation","formatMessage","useIntl","theme","useTheme","iframeRef","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","popoverField","setPopoverField","prevPopoverFieldRef","useEffect","prev","current","iframe","src","contentWindow","postMessage","type","STRAPI_RESCAN_HIGHLIGHTS","URL","toggleNotification","useNotification","slug","model","documentId","collectionType","useParams","query","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","highlightHoverColor","primary500","highlightActiveColor","primary600","handleMessage","event","previewOrigin","data","PUBLIC_EVENTS","PREVIEW_READY","script","sendMessage","getSendMessage","STRAPI_SCRIPT","message","addEventListener","removeEventListener","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoadingActionsRBAC","useDocumentRBAC","state","isLoading","document","_jsx","Page","Loading","initialValues","getInitialFormValues","error","meta","schema","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","attributes","abortEarly","previewUrl","onPreview","hasAdvancedPreview","features","isEnabled","_jsxs","_Fragment","Title","title","layout","FormContext","method","disabled","initialErrors","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","InputPopover","flex","overflow","Box","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","padding","IconButton","variant","onClick","justifyContent","SingleSelect","value","onChange","toString","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","position","top","left","zIndex","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CA;;AAEkG,qGAElG,MAAMA,OAAAA,GAAU;AACd,IAAA;QACEC,IAAAA,EAAM,SAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,wCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,MAAA;QACPC,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;QACEL,IAAAA,EAAM,QAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,uCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,OAAA;QACPC,MAAAA,EAAQ;AACV;AACD,CAAA;AA+BD,MAAM,CAACC,eAAAA,EAAiBC,iBAAAA,CAAkB,GAAGC,yBAAAA,CAAmC,aAAA;AAEhF,MAAMC,gBAAAA,GAAmB,CAAC,IAAA;AACxB,IAAA,IAAIC,aAAAA,GAAgB,EAAA;AACpB,IAAA,OAAO,OAAOC,sBAAAA,GAAAA;AACZ,QAAA,IAAI,CAACD,aAAAA,EAAe;YAClB,MAAME,IAAAA,GAAO,MAAMC,KAAAA,CAAM,CAAA,EAAGC,MAAAA,CAAOC,MAAM,CAACC,UAAU,CAAC,+BAA+B,CAAC,CAAA;YAErF,IAAI,CAACJ,IAAAA,CAAKK,EAAE,EAAE;AACZ,gBAAA,MAAM,IAAIC,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;YAEAR,aAAAA,GAAgB,MAAME,KAAKO,IAAI,EAAA;AAE/B,YAAA,IAAI,CAACT,aAAAA,EAAe;AAClB,gBAAA,MAAM,IAAIQ,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;AACF,QAAA;QAEA,OAAO,CAAC,CAAC,EAAER,aAAAA,CAAc,EAAE,EAAEU,IAAAA,CAAKC,SAAS,CAAC;YAC1CC,MAAAA,EAAQX,sBAAAA;YACRY,MAAAA,EAAQC,yBAAAA;YACRC,YAAAA,EAAcX,MAAAA,CAAOY,QAAQ,CAACC;AAChC,SAAA,CAAA,CAAG,CAAC,CAAC;AACP,IAAA,CAAA;AACF,CAAA,GAAA;AAEA;;AAEkG,qGAElG,MAAMC,aAAAA,GAAgBC,uBAAAA,CAAOC,mBAAAA,CAA8C;;AAEjE,UAAA,EAAE,CAACC,KAAAA,GAAWA,KAAAA,CAAMC,iBAAiB,GAAG,SAAS,QAAA,CAAU;;AAErE,CAAC;AAED,MAAMC,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMP,QAAAA,GAAWQ,0BAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,iBAAAA,EAAAA;AAC1B,IAAA,MAAMC,KAAAA,GAAQC,yBAAAA,EAAAA;IAEd,MAAMC,SAAAA,GAAYC,gBAAAA,CAAMC,MAAM,CAAoB,IAAA,CAAA;AAClD,IAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGH,gBAAAA,CAAMI,QAAQ,CAAC,IAAA,CAAA;AAC/D,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGN,gBAAAA,CAAMI,QAAQ,CAAsB,IAAA,CAAA;IAC5E,MAAMG,mBAAAA,GAAsBP,gBAAAA,CAAMC,MAAM,CAAsB,IAAA,CAAA;;;;;AAM9DD,IAAAA,gBAAAA,CAAMQ,SAAS,CAAC,IAAA;QACd,MAAMC,IAAAA,GAAOF,oBAAoBG,OAAO;AACxCH,QAAAA,mBAAAA,CAAoBG,OAAO,GAAGL,YAAAA;QAE9B,IAAII,IAAAA,KAAS,IAAA,IAAQJ,YAAAA,KAAiB,IAAA,EAAM;YAC1C,MAAMM,MAAAA,GAASZ,UAAUW,OAAO;YAChC,IAAI,CAACC,QAAQC,GAAAA,EAAK;YAClBD,MAAAA,CAAOE,aAAa,EAAEC,WAAAA,CACpB;AAAEC,gBAAAA,IAAAA,EAAM/B,0BAAgBgC;AAAyB,aAAA,EACjD,IAAIC,GAAAA,CAAIN,MAAAA,CAAOC,GAAG,EAAEzB,MAAM,CAAA;AAE9B,QAAA;IACF,CAAA,EAAG;AAACkB,QAAAA,YAAAA;AAAcN,QAAAA;AAAU,KAAA,CAAA;IAE5B,MAAM,EAAEmB,kBAAkB,EAAE,GAAGC,2BAAAA,EAAAA;;IAG/B,MAAM,EACJC,MAAMC,KAAK,EACX3D,IAAI4D,UAAU,EACdC,cAAc,EACf,GAAGC,wBAAAA,EAAAA;AAKJ,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,0BAAAA,EAAAA;AAKpB,IAAA,MAAMC,SAAS3B,gBAAAA,CAAM4B,OAAO,CAAC,IAAMC,qBAAiBJ,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,MAAM,CAACK,UAAAA,EAAYC,aAAAA,CAAc,GAAG/B,gBAAAA,CAAMI,QAAQ,CAChD7C,OAAO,CAAC,CAAA,CAAE,CAACC,IAAI,CAAA;AAEjB,IAAA,MAAMwE,MAAAA,GAASzE,OAAAA,CAAQ0E,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAE1E,IAAI,KAAKsE,UAAAA,CAAAA,IAAevE,OAAO,CAAC,CAAA,CAAE;AAEvE,IAAA,MAAMY,sBAAAA,GAAiD;QACrDgE,mBAAAA,EAAqBtC,KAAAA,CAAMf,MAAM,CAACsD,UAAU;QAC5CC,oBAAAA,EAAsBxC,KAAAA,CAAMf,MAAM,CAACwD;AACrC,KAAA;;AAGAtC,IAAAA,gBAAAA,CAAMQ,SAAS,CAAC,IAAA;AACd,QAAA,MAAM+B,gBAAgB,OAAOC,KAAAA,GAAAA;;YAE3B,IAAIzC,SAAAA,CAAUW,OAAO,EAAE;AACrB,gBAAA,MAAM+B,gBAAgB,IAAIxB,GAAAA,CAAIlB,UAAUW,OAAO,EAAEE,KAAKzB,MAAM;gBAC5D,IAAIqD,KAAAA,CAAMrD,MAAM,KAAKsD,aAAAA,EAAe;AAClC,oBAAA;AACF,gBAAA;AACF,YAAA;AAEA,YAAA,IAAID,MAAME,IAAI,EAAE3B,IAAAA,KAAS4B,uBAAAA,CAAcC,aAAa,EAAE;gBACpD,IAAI;oBACF,MAAMC,MAAAA,GAAS,MAAM5E,gBAAAA,CAAiBE,sBAAAA,CAAAA;AAEtC,oBAAA,MAAM2E,cAAcC,6BAAAA,CAAehD,SAAAA,CAAAA;oBACnC+C,WAAAA,CAAYH,uBAAAA,CAAcK,aAAa,EAAE;AAAEH,wBAAAA;AAAO,qBAAA,CAAA;AACpD,gBAAA,CAAA,CAAE,OAAM;oBACN3B,kBAAAA,CAAmB;wBACjBH,IAAAA,EAAM,QAAA;AACNkC,wBAAAA,OAAAA,EAAStD,aAAAA,CAAc;4BACrBjC,EAAAA,EAAI,6CAAA;4BACJC,cAAAA,EACE;AACJ,yBAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;QAEAW,MAAAA,CAAO4E,gBAAgB,CAAC,SAAA,EAAWX,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLjE,MAAAA,CAAO6E,mBAAmB,CAAC,SAAA,EAAWZ,aAAAA,CAAAA;AACxC,QAAA,CAAA;;;IAGF,CAAA,EAAG;AAACjB,QAAAA,UAAAA;AAAYJ,QAAAA,kBAAAA;AAAoBrB,QAAAA,KAAAA;AAAOF,QAAAA;AAAc,KAAA,CAAA;AAEzD,IAAA,IAAI,CAAC4B,cAAAA,EAAgB;AACnB,QAAA,MAAM,IAAI7C,KAAAA,CAAM,6CAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI,CAAC2C,KAAAA,EAAO;AACV,QAAA,MAAM,IAAI3C,KAAAA,CAAM,oCAAA,CAAA;AAClB,IAAA;;IAGA,IAAI6C,cAAAA,KAAmB6B,4BAAAA,IAAoB,CAAC9B,UAAAA,EAAY;AACtD,QAAA,MAAM,IAAI5C,KAAAA,CAAM,yCAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAM2E,qBAAqBC,6BAAAA,CAAsB;QAC/C3B,MAAAA,EAAQ;YACN4B,WAAAA,EAAalC;AACf,SAAA;QACAI,KAAAA,EAAO;AACLH,YAAAA,UAAAA;AACAkC,YAAAA,MAAAA,EAAQ7B,OAAO6B,MAAM;AACrBC,YAAAA,MAAAA,EAAQ9B,OAAO8B;AACjB;AACF,KAAA,CAAA;AACA,IAAA,MAAMC,mBAAmBC,uBAAAA,CAAY;AACnCtC,QAAAA,KAAAA;AACAE,QAAAA,cAAAA;AACAD,QAAAA,UAAAA;AACAK,QAAAA;AACF,KAAA,CAAA;AACA,IAAA,MAAMiC,yBAAyBC,mCAAAA,CAAkBxC,KAAAA,CAAAA;AACjD,IAAA,MAAMyC,uBAAuBC,4BAAAA,CAAgB,aAAA,EAAe,CAACC,KAAAA,GAAUA,MAAMC,SAAS,CAAA;IAEtF,MAAMA,SAAAA,GACJZ,mBAAmBY,SAAS,IAAIL,uBAAuBK,SAAS,IAAIP,iBAAiBO,SAAS;IAChG,IACEH,oBAAAA,IACCG,SAAAA,KAAc,CAACP,gBAAAA,CAAiBQ,QAAQ,EAAE5C,UAAAA,IAAc+B,kBAAAA,CAAmBY,SAAQ,CAAA,EACpF;QACA,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgBZ,iBAAiBa,oBAAoB,EAAA;AAE3D,IAAA,IACElB,mBAAmBmB,KAAK,IACxBZ,uBAAuBY,KAAK,IAC5B,CAACd,gBAAAA,CAAiBQ,QAAQ,IAC1B,CAACR,gBAAAA,CAAiBe,IAAI,IACtB,CAACf,iBAAiBgB,MAAM,IACxB,CAACJ,aAAAA,EACD;QACA,qBAAOH,cAAA,CAACC,iBAAK1F,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAAC2E,kBAAAA,CAAmBX,IAAI,EAAEA,MAAMiC,GAAAA,EAAK;QACvC,qBAAOR,cAAA,CAACC,iBAAKQ,MAAM,EAAA,EAAA,CAAA;AACrB,IAAA;IAEA,MAAMC,aAAAA,GAAgBnB,iBAAiBoB,QAAQ,CAAClB,uBAAuBmB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;IAE9F,MAAMC,YAAAA,GAAe,CAACC,MAAAA,EAAiCC,OAAAA,GAAAA;QACrD,MAAM,EAAE1C,MAAM2C,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAAA,EAAQ;AACnFT,YAAAA,MAAAA,EAAQhB,iBAAiBgB,MAAM;AAC/BJ,YAAAA,aAAAA;AACAkB,YAAAA,UAAAA,EAAY9B,iBAAiB8B;AAC/B,SAAA,CAAA;QAEA,MAAMC,SAAAA,GAAYC,2BAChBhC,gBAAAA,CAAiBgB,MAAM,EAAEiB,UAAAA,EACzBjC,gBAAAA,CAAiB8B,UAAU,EAC3B;YACE/B,MAAAA,EAAQC,gBAAAA,CAAiBQ,QAAQ,EAAET,MAAAA;AACnC6B,YAAAA,iBAAAA;AACA,YAAA,GAAGF;AACL,SAAA,CAAA;QAGF,OAAOK,SAAAA,CAAUP,YAAY,CAACG,aAAAA,EAAe;YAAEO,UAAAA,EAAY;AAAM,SAAA,CAAA;AACnE,IAAA,CAAA;AAEA,IAAA,MAAMC,aAAaxC,kBAAAA,CAAmBX,IAAI,CAACA,IAAI,CAACiC,GAAG;AAEnD,IAAA,MAAMmB,SAAAA,GAAY,IAAA;QAChB/F,SAAAA,EAAWW,OAAAA,EAASG,eAAeC,WAAAA,CACjC;YAAEC,IAAAA,EAAM;AAAe,SAAA;AAEvB,QAAA,IAAIE,IAAIlB,SAAAA,CAAUW,OAAO,CAACE,GAAG,EAAEzB,MAAM,CAAA;AAEzC,IAAA,CAAA;AAEA,IAAA,MAAM4G,qBAAqBzH,MAAAA,CAAOC,MAAM,CAACyH,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA;IAE5D,qBACEC,eAAA,CAAAC,mBAAA,EAAA;;AACE,0BAAAhC,cAAA,CAACC,iBAAKgC,KAAK,EAAA;0BACRzG,aAAAA,CACC;oBACEjC,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;iBAClB,EACA;oBACE4F,WAAAA,EAAasB;AACf,iBAAA;;0BAGJV,cAAA,CAACrG,eAAAA,EAAAA;gBACC6G,GAAAA,EAAKkB,UAAAA;AACL3B,gBAAAA,QAAAA,EAAUR,iBAAiBQ,QAAQ;gBACnCmC,KAAAA,EAAOxB,aAAAA;AACPJ,gBAAAA,IAAAA,EAAMf,iBAAiBe,IAAI;AAC3BC,gBAAAA,MAAAA,EAAQhB,iBAAiBgB,MAAM;AAC/Bc,gBAAAA,UAAAA,EAAY9B,iBAAiB8B,UAAU;AACvCc,gBAAAA,MAAAA,EAAQ1C,uBAAuBmB,IAAI;gBACnCe,SAAAA,EAAWA,SAAAA;gBACX/F,SAAAA,EAAWA,SAAAA;gBACXM,YAAAA,EAAcA,YAAAA;gBACdC,eAAAA,EAAiBA,eAAAA;AAEjB,gBAAA,QAAA,gBAAA6D,cAAA,CAACoC,gBAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EACEhF,KAAAA,CAAMgC,MAAM,KAAK,WAAA,IACjBC,oBACAA,gBAAAA,CAAiBQ,QAAQ,CAACT,MAAM,KAAK,OAAA;AAEvCa,oBAAAA,aAAAA,EAAeZ,iBAAiBa,oBAAoB,EAAA;AACpDmC,oBAAAA,aAAAA,EAAexH,UAAU8E,KAAAA,EAAO2C,eAAAA,GAAkBzB,aAAaZ,aAAAA,EAAe,MAAM,EAAC;oBACrFzG,MAAAA,EAAO,MAAA;AACP+I,oBAAAA,QAAAA,EAAU,CAACzB,MAAAA,EAAiCC,OAAAA,GAAAA;wBAC1C,MAAM,EAAE1C,MAAM2C,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,+BAA0BJ,MAAAA,EAAQ;AACnFT,4BAAAA,MAAAA,EAAQhB,iBAAiBgB,MAAM;AAC/BJ,4BAAAA,aAAAA;AACAkB,4BAAAA,UAAAA,EAAY9B,iBAAiB8B;AAC/B,yBAAA,CAAA;wBAEA,MAAMC,SAAAA,GAAYC,2BAChBhC,gBAAAA,CAAiBgB,MAAM,EAAEiB,UAAAA,EACzBjC,gBAAAA,CAAiB8B,UAAU,EAC3B;4BACE/B,MAAAA,EAAQC,gBAAAA,CAAiBQ,QAAQ,EAAET,MAAAA;AACnC6B,4BAAAA,iBAAAA;AACA,4BAAA,GAAGF;AACL,yBAAA,CAAA;wBAGF,OAAOK,SAAAA,CAAUmB,QAAQ,CAACvB,aAAAA,EAAe;4BAAEO,UAAAA,EAAY;AAAM,yBAAA,CAAA;AAC/D,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAAM,eAAA,CAACW,iBAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAASjJ,MAAAA,EAAO,MAAA;wBAAOkJ,UAAAA,EAAW,SAAA;;0CAChD5C,cAAA,CAAC6C,eAAAA,EAAAA,EAAAA,CAAAA;0CACD7C,cAAA,CAAC8C,2BAAAA,EAAAA,EAAAA,CAAAA;0CACD9C,cAAA,CAAC+C,yBAAAA,EAAAA;gCAAaxD,gBAAAA,EAAkBA;;0CAChCwC,eAAA,CAACW,iBAAAA,EAAAA;gCAAKM,IAAAA,EAAM,CAAA;gCAAGC,QAAAA,EAAS,MAAA;gCAAOL,UAAAA,EAAW,SAAA;;AACvChB,oCAAAA,kBAAAA,kBACC5B,cAAA,CAACkD,gBAAAA,EAAAA;wCACCD,QAAAA,EAAS,MAAA;AACTxJ,wCAAAA,KAAAA,EAAOsC,mBAAmB,KAAA,GAAQ,CAAA;wCAClCoH,WAAAA,EAAY,WAAA;wCACZC,WAAAA,EAAY,YAAA;wCACZC,UAAAA,EAAY,CAAA;wCACZC,aAAAA,EAAe,CAAA;;AAEfC,wCAAAA,WAAAA,EAAaxH,mBAAmB,CAAA,GAAI,CAAA;AACpCyH,wCAAAA,YAAAA,EAAczH,mBAAmB,CAAA,GAAI,CAAA;wCACrC0H,UAAAA,EAAW,sBAAA;AAEX,wCAAA,QAAA,gBAAAzD,cAAA,CAAC0D,qBAAAA,EAAAA;4CACCvB,MAAAA,EAAQ1C,sBAAAA,CAAuBmB,IAAI,CAACuB,MAAM;4CAC1CpC,QAAAA,EAAUR,gBAAAA;4CACVoE,aAAAA,EAAe;;;kDAIrB5B,eAAA,CAACW,iBAAAA,EAAAA;wCACCC,SAAAA,EAAU,QAAA;wCACVC,UAAAA,EAAW,SAAA;wCACXI,IAAAA,EAAM,CAAA;wCACNtJ,MAAAA,EAAO,MAAA;wCACPuJ,QAAAA,EAAS,QAAA;;0DAETlB,eAAA,CAACW,iBAAAA,EAAAA;gDACCC,SAAAA,EAAU,KAAA;gDACViB,UAAAA,EAAW,UAAA;gDACXC,OAAAA,EAAS,CAAA;gDACTV,WAAAA,EAAY,WAAA;gDACZC,WAAAA,EAAY,YAAA;;AAEXxB,oDAAAA,kBAAAA,kBACC5B,cAAA,CAAC8D,uBAAAA,EAAAA;wDACCC,OAAAA,EAAQ,OAAA;AACRzK,wDAAAA,KAAAA,EAAOkC,cACLO,gBAAAA,GACI;4DACExC,EAAAA,EAAI,8CAAA;4DACJC,cAAAA,EAAgB;yDAClB,GACA;4DACED,EAAAA,EAAI,6CAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;AAENwK,wDAAAA,OAAAA,EAAS,IAAMhI,mBAAAA,CAAoB,CAACM,IAAAA,GAAS,CAACA,IAAAA,CAAAA;AAE9C,wDAAA,QAAA,gBAAA0D,cAAA,CAAC/E,aAAAA,EAAAA;4DAAcI,iBAAAA,EAAmBU;;;kEAGtCiE,cAAA,CAAC0C,iBAAAA,EAAAA;wDAAKuB,cAAAA,EAAe,QAAA;wDAASjB,IAAAA,EAAM,CAAA;AAClC,wDAAA,QAAA,gBAAAhD,cAAA,CAACkE,yBAAAA,EAAAA;4DACCC,KAAAA,EAAOxG,UAAAA;AACPyG,4DAAAA,QAAAA,EAAU,CAAC/K,IAAAA,GAASuE,aAAAA,CAAcvE,IAAAA,CAAKgL,QAAQ,EAAA,CAAA;AAC/CC,4DAAAA,YAAAA,EAAY9I,aAAAA,CAAc;gEACxBjC,EAAAA,EAAI,uCAAA;gEACJC,cAAAA,EAAgB;AAClB,6DAAA,CAAA;AAECJ,4DAAAA,QAAAA,EAAAA,OAAAA,CAAQmL,GAAG,CAAC,CAACC,YAAAA,iBACZxE,cAAA,CAACyE,+BAAAA,EAAAA;AAA2CN,oEAAAA,KAAAA,EAAOK,aAAanL,IAAI;AACjEmC,oEAAAA,QAAAA,EAAAA,aAAAA,CAAcgJ,aAAalL,KAAK;AADVkL,iEAAAA,EAAAA,YAAAA,CAAanL,IAAI,CAAA;;;;;0DAOlD2G,cAAA,CAAC0C,iBAAAA,EAAAA;gDAAKC,SAAAA,EAAU,QAAA;gDAASsB,cAAAA,EAAe,QAAA;gDAASL,UAAAA,EAAW,UAAA;gDAAWZ,IAAAA,EAAM,CAAA;AAC3E,gDAAA,QAAA,gBAAAhD,cAAA,CAACkD,gBAAAA,EAAAA;oDACCwB,aAAAA,EAAY,gBAAA;oDACZC,GAAAA,EAAK/I,SAAAA;oDACLa,GAAAA,EAAKiF,UAAAA;AASLQ,oDAAAA,KAAAA,EAAO1G,aAAAA,CAAc;wDACnBjC,EAAAA,EAAI,qCAAA;wDACJC,cAAAA,EAAgB;AAClB,qDAAA,CAAA;AACAC,oDAAAA,KAAAA,EAAOoE,OAAOpE,KAAK;AACnBC,oDAAAA,MAAAA,EAAQmE,OAAOnE,MAAM;oDACrByJ,WAAAA,EAAa,CAAA;oDACbyB,GAAAA,EAAI;AARClD,iDAAAA,EAAAA,UAAAA;;;;;;;;;;;;AAkBzB,CAAA;AAEA;;AAEkG,qGAElG,MAAMmD,wBAAAA,GAA2B,IAAA;AAC/B,IAAA,MAAM,EAAE5H,IAAAA,EAAMC,KAAK,EAAE,GAAGG,wBAAAA,EAAAA;IAGxB,MAAM,EACJyH,cAAc,EAAE,EAChBhF,SAAS,EACTO,KAAK,EACN,GAAG0E,mBAAAA,CAAQ;AACV,QAAA;YAAEC,MAAAA,EAAQ,uCAAA;YAAyCC,OAAAA,EAAS/H;AAAM,SAAA;AAClE,QAAA;YAAE8H,MAAAA,EAAQ,yCAAA;YAA2CC,OAAAA,EAAS/H;AAAM,SAAA;AACpE,QAAA;YAAE8H,MAAAA,EAAQ,0CAAA;YAA4CC,OAAAA,EAAS/H;AAAM;AACtE,KAAA,CAAA;AAED,IAAA,IAAI4C,SAAAA,EAAW;QACb,qBAAOE,cAAA,CAACC,iBAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIG,KAAAA,IAAS,CAACnD,KAAAA,EAAO;AACnB,QAAA,qBACE8C,cAAA,CAACkD,gBAAAA,EAAAA;YACCxJ,MAAAA,EAAO,QAAA;YACPD,KAAAA,EAAM,QAAA;YACNyL,QAAAA,EAAS,OAAA;YACTC,GAAAA,EAAK,CAAA;YACLC,IAAAA,EAAM,CAAA;YACNC,MAAAA,EAAQ,CAAA;YACRzB,UAAAA,EAAW,UAAA;oCAEX5D,cAAA,CAACC,iBAAK1F,KAAK,EAAA,EAAA;;AAGjB,IAAA;AAEA,IAAA,qBACEyF,cAAA,CAACkD,gBAAAA,EAAAA;QACCxJ,MAAAA,EAAO,QAAA;QACPD,KAAAA,EAAM,QAAA;QACNyL,QAAAA,EAAS,OAAA;QACTC,GAAAA,EAAK,CAAA;QACLC,IAAAA,EAAM,CAAA;QACNC,MAAAA,EAAQ,CAAA;QACRzB,UAAAA,EAAW,UAAA;gCAEX5D,cAAA,CAACC,iBAAKqF,OAAO,EAAA;YACXR,WAAAA,EAAaA,WAAAA,CAAYS,MAAM,CAAC,CAACC,aAC/BA,UAAAA,CAAWR,MAAM,CAACS,QAAQ,CAAC,eAAA,CAAA,CAAA;AAG7B,YAAA,QAAA,gBAAAzF,cAAA,CAAC0F,yBAAAA,EAAAA;gBAAaZ,WAAAA,EAAaA,WAAAA;AACzB,gBAAA,QAAA,gBAAA9E,cAAA,CAAC1E,WAAAA,EAAAA,EAAAA;;;;AAKX,CAAA;AAEA,MAAMqK,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,qBACE3F,cAAA,CAAC4F,mBAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA5F,cAAA,CAAC6F,sBAAAA,EAAAA;AACC,YAAA,QAAA,gBAAA7F,cAAA,CAAC6E,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;;"}
@@ -7,7 +7,7 @@ import { useIntl } from 'react-intl';
7
7
  import { useParams, useLocation } from 'react-router-dom';
8
8
  import { styled, useTheme } from 'styled-components';
9
9
  import { COLLECTION_TYPES } from '../../constants/collections.mjs';
10
- import { DocumentRBAC } from '../../features/DocumentRBAC.mjs';
10
+ import { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC.mjs';
11
11
  import { useDocument } from '../../hooks/useDocument.mjs';
12
12
  import { useDocumentLayout } from '../../hooks/useDocumentLayout.mjs';
13
13
  import { Blocker } from '../../pages/EditView/components/Blocker.mjs';
@@ -177,8 +177,9 @@ const PreviewPage = ()=>{
177
177
  params
178
178
  });
179
179
  const documentLayoutResponse = useDocumentLayout(model);
180
+ const isLoadingActionsRBAC = useDocumentRBAC('PreviewPage', (state)=>state.isLoading);
180
181
  const isLoading = previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;
181
- if (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {
182
+ if (isLoadingActionsRBAC || isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {
182
183
  return /*#__PURE__*/ jsx(Page.Loading, {});
183
184
  }
184
185
  const initialValues = documentResponse.getInitialFormValues();
@@ -1 +1 @@
1
- {"version":3,"file":"Preview.mjs","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n type FieldContentSourceMap,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { InputPopover } from '../components/InputPopover';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { INTERNAL_EVENTS, PUBLIC_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PopoverField extends FieldContentSourceMap {\n position: DOMRect;\n attribute: Schema.Attribute.AnyAttribute;\n blockIndex: number | null;\n}\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n components: NonNullable<ReturnType<UseDocument>['components']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n}\n\ntype PreviewHighlightColors = {\n highlightHoverColor: string;\n highlightActiveColor: string;\n};\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\nconst getPreviewScript = (() => {\n let previewScript = '';\n return async (previewHighlightColors: PreviewHighlightColors) => {\n if (!previewScript) {\n const resp = await fetch(`${window.strapi.backendURL}/content-manager/preview/script`);\n\n if (!resp.ok) {\n throw new Error('Could not retrieve preview script from server.');\n }\n\n previewScript = await resp.text();\n\n if (!previewScript) {\n throw new Error('Could not retrieve preview script from server.');\n }\n }\n\n return `(${previewScript})(${JSON.stringify({\n colors: previewHighlightColors,\n events: INTERNAL_EVENTS,\n parentOrigin: window.location.origin,\n })})`;\n };\n})();\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n const theme = useTheme();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n const prevPopoverFieldRef = React.useRef<PopoverField | null>(null);\n\n // When the popover closes, ask the iframe to rescan its stega element groups.\n // Live-preview sync updates the iframe DOM while editing, which can change the\n // rendered height of the field; groups need to reflect the current DOM so that\n // hover highlights and double-click detection work on the updated content.\n React.useEffect(() => {\n const prev = prevPopoverFieldRef.current;\n prevPopoverFieldRef.current = popoverField;\n\n if (prev !== null && popoverField === null) {\n const iframe = iframeRef.current;\n if (!iframe?.src) return;\n iframe.contentWindow?.postMessage(\n { type: INTERNAL_EVENTS.STRAPI_RESCAN_HIGHLIGHTS },\n new URL(iframe.src).origin\n );\n }\n }, [popoverField, iframeRef]);\n\n const { toggleNotification } = useNotification();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: { i18n?: { locale?: string } };\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n const previewHighlightColors: PreviewHighlightColors = {\n highlightHoverColor: theme.colors.primary500,\n highlightActiveColor: theme.colors.primary600,\n };\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n // Only listen to events from the preview iframe\n if (iframeRef.current) {\n const previewOrigin = new URL(iframeRef.current?.src).origin;\n if (event.origin !== previewOrigin) {\n return;\n }\n }\n\n if (event.data?.type === PUBLIC_EVENTS.PREVIEW_READY) {\n try {\n const script = await getPreviewScript(previewHighlightColors);\n\n const sendMessage = getSendMessage(iframeRef);\n sendMessage(PUBLIC_EVENTS.STRAPI_SCRIPT, { script });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.preview.error.script-failed',\n defaultMessage:\n 'Could not load the live preview script. Visual editing may not be available.',\n }),\n });\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n // Preserve the existing dependency behavior: previewHighlightColors is derived from theme.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [documentId, toggleNotification, theme, formatMessage]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale as GetPreviewUrl.Request['query']['locale'],\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading)) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n components={documentResponse.components}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <InputPopover documentResponse={documentResponse} />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\nexport type { PreviewContextValue };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","getPreviewScript","previewScript","previewHighlightColors","resp","fetch","window","strapi","backendURL","ok","Error","text","JSON","stringify","colors","events","INTERNAL_EVENTS","parentOrigin","location","origin","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","useLocation","formatMessage","useIntl","theme","useTheme","iframeRef","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","popoverField","setPopoverField","prevPopoverFieldRef","useEffect","prev","current","iframe","src","contentWindow","postMessage","type","STRAPI_RESCAN_HIGHLIGHTS","URL","toggleNotification","useNotification","slug","model","documentId","collectionType","useParams","query","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","highlightHoverColor","primary500","highlightActiveColor","primary600","handleMessage","event","previewOrigin","data","PUBLIC_EVENTS","PREVIEW_READY","script","sendMessage","getSendMessage","STRAPI_SCRIPT","message","addEventListener","removeEventListener","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","document","_jsx","Page","Loading","initialValues","getInitialFormValues","error","meta","schema","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","attributes","abortEarly","previewUrl","onPreview","hasAdvancedPreview","features","isEnabled","_jsxs","_Fragment","Title","title","layout","FormContext","method","disabled","initialErrors","state","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","InputPopover","flex","overflow","Box","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","padding","IconButton","variant","onClick","justifyContent","SingleSelect","value","onChange","toString","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","position","top","left","zIndex","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA2CA;;AAEkG,qGAElG,MAAMA,OAAAA,GAAU;AACd,IAAA;QACEC,IAAAA,EAAM,SAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,wCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,MAAA;QACPC,MAAAA,EAAQ;AACV,KAAA;AACA,IAAA;QACEL,IAAAA,EAAM,QAAA;QACNC,KAAAA,EAAO;YACLC,EAAAA,EAAI,uCAAA;YACJC,cAAAA,EAAgB;AAClB,SAAA;QACAC,KAAAA,EAAO,OAAA;QACPC,MAAAA,EAAQ;AACV;AACD,CAAA;AA+BD,MAAM,CAACC,eAAAA,EAAiBC,iBAAAA,CAAkB,GAAGC,aAAAA,CAAmC,aAAA;AAEhF,MAAMC,gBAAAA,GAAmB,CAAC,IAAA;AACxB,IAAA,IAAIC,aAAAA,GAAgB,EAAA;AACpB,IAAA,OAAO,OAAOC,sBAAAA,GAAAA;AACZ,QAAA,IAAI,CAACD,aAAAA,EAAe;YAClB,MAAME,IAAAA,GAAO,MAAMC,KAAAA,CAAM,CAAA,EAAGC,MAAAA,CAAOC,MAAM,CAACC,UAAU,CAAC,+BAA+B,CAAC,CAAA;YAErF,IAAI,CAACJ,IAAAA,CAAKK,EAAE,EAAE;AACZ,gBAAA,MAAM,IAAIC,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;YAEAR,aAAAA,GAAgB,MAAME,KAAKO,IAAI,EAAA;AAE/B,YAAA,IAAI,CAACT,aAAAA,EAAe;AAClB,gBAAA,MAAM,IAAIQ,KAAAA,CAAM,gDAAA,CAAA;AAClB,YAAA;AACF,QAAA;QAEA,OAAO,CAAC,CAAC,EAAER,aAAAA,CAAc,EAAE,EAAEU,IAAAA,CAAKC,SAAS,CAAC;YAC1CC,MAAAA,EAAQX,sBAAAA;YACRY,MAAAA,EAAQC,eAAAA;YACRC,YAAAA,EAAcX,MAAAA,CAAOY,QAAQ,CAACC;AAChC,SAAA,CAAA,CAAG,CAAC,CAAC;AACP,IAAA,CAAA;AACF,CAAA,GAAA;AAEA;;AAEkG,qGAElG,MAAMC,aAAAA,GAAgBC,MAAAA,CAAOC,aAAAA,CAA8C;;AAEjE,UAAA,EAAE,CAACC,KAAAA,GAAWA,KAAAA,CAAMC,iBAAiB,GAAG,SAAS,QAAA,CAAU;;AAErE,CAAC;AAED,MAAMC,WAAAA,GAAc,IAAA;AAClB,IAAA,MAAMP,QAAAA,GAAWQ,WAAAA,EAAAA;IACjB,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAC1B,IAAA,MAAMC,KAAAA,GAAQC,QAAAA,EAAAA;IAEd,MAAMC,SAAAA,GAAYC,KAAAA,CAAMC,MAAM,CAAoB,IAAA,CAAA;AAClD,IAAA,MAAM,CAACC,gBAAAA,EAAkBC,mBAAAA,CAAoB,GAAGH,KAAAA,CAAMI,QAAQ,CAAC,IAAA,CAAA;AAC/D,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGN,KAAAA,CAAMI,QAAQ,CAAsB,IAAA,CAAA;IAC5E,MAAMG,mBAAAA,GAAsBP,KAAAA,CAAMC,MAAM,CAAsB,IAAA,CAAA;;;;;AAM9DD,IAAAA,KAAAA,CAAMQ,SAAS,CAAC,IAAA;QACd,MAAMC,IAAAA,GAAOF,oBAAoBG,OAAO;AACxCH,QAAAA,mBAAAA,CAAoBG,OAAO,GAAGL,YAAAA;QAE9B,IAAII,IAAAA,KAAS,IAAA,IAAQJ,YAAAA,KAAiB,IAAA,EAAM;YAC1C,MAAMM,MAAAA,GAASZ,UAAUW,OAAO;YAChC,IAAI,CAACC,QAAQC,GAAAA,EAAK;YAClBD,MAAAA,CAAOE,aAAa,EAAEC,WAAAA,CACpB;AAAEC,gBAAAA,IAAAA,EAAM/B,gBAAgBgC;AAAyB,aAAA,EACjD,IAAIC,GAAAA,CAAIN,MAAAA,CAAOC,GAAG,EAAEzB,MAAM,CAAA;AAE9B,QAAA;IACF,CAAA,EAAG;AAACkB,QAAAA,YAAAA;AAAcN,QAAAA;AAAU,KAAA,CAAA;IAE5B,MAAM,EAAEmB,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;;IAG/B,MAAM,EACJC,MAAMC,KAAK,EACX3D,IAAI4D,UAAU,EACdC,cAAc,EACf,GAAGC,SAAAA,EAAAA;AAKJ,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;AAKpB,IAAA,MAAMC,SAAS3B,KAAAA,CAAM4B,OAAO,CAAC,IAAMC,iBAAiBJ,KAAAA,CAAAA,EAAQ;AAACA,QAAAA;AAAM,KAAA,CAAA;IAEnE,MAAM,CAACK,UAAAA,EAAYC,aAAAA,CAAc,GAAG/B,KAAAA,CAAMI,QAAQ,CAChD7C,OAAO,CAAC,CAAA,CAAE,CAACC,IAAI,CAAA;AAEjB,IAAA,MAAMwE,MAAAA,GAASzE,OAAAA,CAAQ0E,IAAI,CAAC,CAACC,CAAAA,GAAMA,CAAAA,CAAE1E,IAAI,KAAKsE,UAAAA,CAAAA,IAAevE,OAAO,CAAC,CAAA,CAAE;AAEvE,IAAA,MAAMY,sBAAAA,GAAiD;QACrDgE,mBAAAA,EAAqBtC,KAAAA,CAAMf,MAAM,CAACsD,UAAU;QAC5CC,oBAAAA,EAAsBxC,KAAAA,CAAMf,MAAM,CAACwD;AACrC,KAAA;;AAGAtC,IAAAA,KAAAA,CAAMQ,SAAS,CAAC,IAAA;AACd,QAAA,MAAM+B,gBAAgB,OAAOC,KAAAA,GAAAA;;YAE3B,IAAIzC,SAAAA,CAAUW,OAAO,EAAE;AACrB,gBAAA,MAAM+B,gBAAgB,IAAIxB,GAAAA,CAAIlB,UAAUW,OAAO,EAAEE,KAAKzB,MAAM;gBAC5D,IAAIqD,KAAAA,CAAMrD,MAAM,KAAKsD,aAAAA,EAAe;AAClC,oBAAA;AACF,gBAAA;AACF,YAAA;AAEA,YAAA,IAAID,MAAME,IAAI,EAAE3B,IAAAA,KAAS4B,aAAAA,CAAcC,aAAa,EAAE;gBACpD,IAAI;oBACF,MAAMC,MAAAA,GAAS,MAAM5E,gBAAAA,CAAiBE,sBAAAA,CAAAA;AAEtC,oBAAA,MAAM2E,cAAcC,cAAAA,CAAehD,SAAAA,CAAAA;oBACnC+C,WAAAA,CAAYH,aAAAA,CAAcK,aAAa,EAAE;AAAEH,wBAAAA;AAAO,qBAAA,CAAA;AACpD,gBAAA,CAAA,CAAE,OAAM;oBACN3B,kBAAAA,CAAmB;wBACjBH,IAAAA,EAAM,QAAA;AACNkC,wBAAAA,OAAAA,EAAStD,aAAAA,CAAc;4BACrBjC,EAAAA,EAAI,6CAAA;4BACJC,cAAAA,EACE;AACJ,yBAAA;AACF,qBAAA,CAAA;AACF,gBAAA;AACF,YAAA;AACF,QAAA,CAAA;QAEAW,MAAAA,CAAO4E,gBAAgB,CAAC,SAAA,EAAWX,aAAAA,CAAAA;QAEnC,OAAO,IAAA;YACLjE,MAAAA,CAAO6E,mBAAmB,CAAC,SAAA,EAAWZ,aAAAA,CAAAA;AACxC,QAAA,CAAA;;;IAGF,CAAA,EAAG;AAACjB,QAAAA,UAAAA;AAAYJ,QAAAA,kBAAAA;AAAoBrB,QAAAA,KAAAA;AAAOF,QAAAA;AAAc,KAAA,CAAA;AAEzD,IAAA,IAAI,CAAC4B,cAAAA,EAAgB;AACnB,QAAA,MAAM,IAAI7C,KAAAA,CAAM,6CAAA,CAAA;AAClB,IAAA;AAEA,IAAA,IAAI,CAAC2C,KAAAA,EAAO;AACV,QAAA,MAAM,IAAI3C,KAAAA,CAAM,oCAAA,CAAA;AAClB,IAAA;;IAGA,IAAI6C,cAAAA,KAAmB6B,gBAAAA,IAAoB,CAAC9B,UAAAA,EAAY;AACtD,QAAA,MAAM,IAAI5C,KAAAA,CAAM,yCAAA,CAAA;AAClB,IAAA;AAEA,IAAA,MAAM2E,qBAAqBC,qBAAAA,CAAsB;QAC/C3B,MAAAA,EAAQ;YACN4B,WAAAA,EAAalC;AACf,SAAA;QACAI,KAAAA,EAAO;AACLH,YAAAA,UAAAA;AACAkC,YAAAA,MAAAA,EAAQ7B,OAAO6B,MAAM;AACrBC,YAAAA,MAAAA,EAAQ9B,OAAO8B;AACjB;AACF,KAAA,CAAA;AACA,IAAA,MAAMC,mBAAmBC,WAAAA,CAAY;AACnCtC,QAAAA,KAAAA;AACAE,QAAAA,cAAAA;AACAD,QAAAA,UAAAA;AACAK,QAAAA;AACF,KAAA,CAAA;AACA,IAAA,MAAMiC,yBAAyBC,iBAAAA,CAAkBxC,KAAAA,CAAAA;IAEjD,MAAMyC,SAAAA,GACJT,mBAAmBS,SAAS,IAAIF,uBAAuBE,SAAS,IAAIJ,iBAAiBI,SAAS;IAChG,IAAIA,SAAAA,KAAc,CAACJ,gBAAAA,CAAiBK,QAAQ,EAAEzC,UAAAA,IAAc+B,kBAAAA,CAAmBS,SAAQ,CAAA,EAAI;QACzF,qBAAOE,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,MAAMC,aAAAA,GAAgBT,iBAAiBU,oBAAoB,EAAA;AAE3D,IAAA,IACEf,mBAAmBgB,KAAK,IACxBT,uBAAuBS,KAAK,IAC5B,CAACX,gBAAAA,CAAiBK,QAAQ,IAC1B,CAACL,gBAAAA,CAAiBY,IAAI,IACtB,CAACZ,iBAAiBa,MAAM,IACxB,CAACJ,aAAAA,EACD;QACA,qBAAOH,GAAA,CAACC,KAAKvF,KAAK,EAAA,EAAA,CAAA;AACpB,IAAA;AAEA,IAAA,IAAI,CAAC2E,kBAAAA,CAAmBX,IAAI,EAAEA,MAAM8B,GAAAA,EAAK;QACvC,qBAAOR,GAAA,CAACC,KAAKQ,MAAM,EAAA,EAAA,CAAA;AACrB,IAAA;IAEA,MAAMC,aAAAA,GAAgBhB,iBAAiBiB,QAAQ,CAACf,uBAAuBgB,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;IAE9F,MAAMC,YAAAA,GAAe,CAACC,MAAAA,EAAiCC,OAAAA,GAAAA;QACrD,MAAM,EAAEvC,MAAMwC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,0BAA0BJ,MAAAA,EAAQ;AACnFT,YAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,YAAAA,aAAAA;AACAkB,YAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,SAAA,CAAA;QAEA,MAAMC,SAAAA,GAAYC,gBAChB7B,gBAAAA,CAAiBa,MAAM,EAAEiB,UAAAA,EACzB9B,gBAAAA,CAAiB2B,UAAU,EAC3B;YACE5B,MAAAA,EAAQC,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,YAAAA,iBAAAA;AACA,YAAA,GAAGF;AACL,SAAA,CAAA;QAGF,OAAOK,SAAAA,CAAUP,YAAY,CAACG,aAAAA,EAAe;YAAEO,UAAAA,EAAY;AAAM,SAAA,CAAA;AACnE,IAAA,CAAA;AAEA,IAAA,MAAMC,aAAarC,kBAAAA,CAAmBX,IAAI,CAACA,IAAI,CAAC8B,GAAG;AAEnD,IAAA,MAAMmB,SAAAA,GAAY,IAAA;QAChB5F,SAAAA,EAAWW,OAAAA,EAASG,eAAeC,WAAAA,CACjC;YAAEC,IAAAA,EAAM;AAAe,SAAA;AAEvB,QAAA,IAAIE,IAAIlB,SAAAA,CAAUW,OAAO,CAACE,GAAG,EAAEzB,MAAM,CAAA;AAEzC,IAAA,CAAA;AAEA,IAAA,MAAMyG,qBAAqBtH,MAAAA,CAAOC,MAAM,CAACsH,QAAQ,CAACC,SAAS,CAAC,sBAAA,CAAA;IAE5D,qBACEC,IAAA,CAAAC,QAAA,EAAA;;AACE,0BAAAhC,GAAA,CAACC,KAAKgC,KAAK,EAAA;0BACRtG,aAAAA,CACC;oBACEjC,EAAAA,EAAI,oCAAA;oBACJC,cAAAA,EAAgB;iBAClB,EACA;oBACE4F,WAAAA,EAAamB;AACf,iBAAA;;0BAGJV,GAAA,CAAClG,eAAAA,EAAAA;gBACC0G,GAAAA,EAAKkB,UAAAA;AACL3B,gBAAAA,QAAAA,EAAUL,iBAAiBK,QAAQ;gBACnCmC,KAAAA,EAAOxB,aAAAA;AACPJ,gBAAAA,IAAAA,EAAMZ,iBAAiBY,IAAI;AAC3BC,gBAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/Bc,gBAAAA,UAAAA,EAAY3B,iBAAiB2B,UAAU;AACvCc,gBAAAA,MAAAA,EAAQvC,uBAAuBgB,IAAI;gBACnCe,SAAAA,EAAWA,SAAAA;gBACX5F,SAAAA,EAAWA,SAAAA;gBACXM,YAAAA,EAAcA,YAAAA;gBACdC,eAAAA,EAAiBA,eAAAA;AAEjB,gBAAA,QAAA,gBAAA0D,GAAA,CAACoC,IAAAA,EAAAA;oBACCC,MAAAA,EAAO,KAAA;oBACPC,QAAAA,EACE7E,KAAAA,CAAMgC,MAAM,KAAK,WAAA,IACjBC,oBACAA,gBAAAA,CAAiBK,QAAQ,CAACN,MAAM,KAAK,OAAA;AAEvCU,oBAAAA,aAAAA,EAAeT,iBAAiBU,oBAAoB,EAAA;AACpDmC,oBAAAA,aAAAA,EAAerH,UAAUsH,KAAAA,EAAOC,eAAAA,GAAkB1B,aAAaZ,aAAAA,EAAe,MAAM,EAAC;oBACrFtG,MAAAA,EAAO,MAAA;AACP6I,oBAAAA,QAAAA,EAAU,CAAC1B,MAAAA,EAAiCC,OAAAA,GAAAA;wBAC1C,MAAM,EAAEvC,MAAMwC,aAAa,EAAEC,iBAAiB,EAAE,GAAGC,0BAA0BJ,MAAAA,EAAQ;AACnFT,4BAAAA,MAAAA,EAAQb,iBAAiBa,MAAM;AAC/BJ,4BAAAA,aAAAA;AACAkB,4BAAAA,UAAAA,EAAY3B,iBAAiB2B;AAC/B,yBAAA,CAAA;wBAEA,MAAMC,SAAAA,GAAYC,gBAChB7B,gBAAAA,CAAiBa,MAAM,EAAEiB,UAAAA,EACzB9B,gBAAAA,CAAiB2B,UAAU,EAC3B;4BACE5B,MAAAA,EAAQC,gBAAAA,CAAiBK,QAAQ,EAAEN,MAAAA;AACnC0B,4BAAAA,iBAAAA;AACA,4BAAA,GAAGF;AACL,yBAAA,CAAA;wBAGF,OAAOK,SAAAA,CAAUoB,QAAQ,CAACxB,aAAAA,EAAe;4BAAEO,UAAAA,EAAY;AAAM,yBAAA,CAAA;AAC/D,oBAAA,CAAA;AAEA,oBAAA,QAAA,gBAAAM,IAAA,CAACY,IAAAA,EAAAA;wBAAKC,SAAAA,EAAU,QAAA;wBAAS/I,MAAAA,EAAO,MAAA;wBAAOgJ,UAAAA,EAAW,SAAA;;0CAChD7C,GAAA,CAAC8C,OAAAA,EAAAA,EAAAA,CAAAA;0CACD9C,GAAA,CAAC+C,aAAAA,EAAAA,EAAAA,CAAAA;0CACD/C,GAAA,CAACgD,YAAAA,EAAAA;gCAAatD,gBAAAA,EAAkBA;;0CAChCqC,IAAA,CAACY,IAAAA,EAAAA;gCAAKM,IAAAA,EAAM,CAAA;gCAAGC,QAAAA,EAAS,MAAA;gCAAOL,UAAAA,EAAW,SAAA;;AACvCjB,oCAAAA,kBAAAA,kBACC5B,GAAA,CAACmD,GAAAA,EAAAA;wCACCD,QAAAA,EAAS,MAAA;AACTtJ,wCAAAA,KAAAA,EAAOsC,mBAAmB,KAAA,GAAQ,CAAA;wCAClCkH,WAAAA,EAAY,WAAA;wCACZC,WAAAA,EAAY,YAAA;wCACZC,UAAAA,EAAY,CAAA;wCACZC,aAAAA,EAAe,CAAA;;AAEfC,wCAAAA,WAAAA,EAAatH,mBAAmB,CAAA,GAAI,CAAA;AACpCuH,wCAAAA,YAAAA,EAAcvH,mBAAmB,CAAA,GAAI,CAAA;wCACrCwH,UAAAA,EAAW,sBAAA;AAEX,wCAAA,QAAA,gBAAA1D,GAAA,CAAC2D,UAAAA,EAAAA;4CACCxB,MAAAA,EAAQvC,sBAAAA,CAAuBgB,IAAI,CAACuB,MAAM;4CAC1CpC,QAAAA,EAAUL,gBAAAA;4CACVkE,aAAAA,EAAe;;;kDAIrB7B,IAAA,CAACY,IAAAA,EAAAA;wCACCC,SAAAA,EAAU,QAAA;wCACVC,UAAAA,EAAW,SAAA;wCACXI,IAAAA,EAAM,CAAA;wCACNpJ,MAAAA,EAAO,MAAA;wCACPqJ,QAAAA,EAAS,QAAA;;0DAETnB,IAAA,CAACY,IAAAA,EAAAA;gDACCC,SAAAA,EAAU,KAAA;gDACViB,UAAAA,EAAW,UAAA;gDACXC,OAAAA,EAAS,CAAA;gDACTV,WAAAA,EAAY,WAAA;gDACZC,WAAAA,EAAY,YAAA;;AAEXzB,oDAAAA,kBAAAA,kBACC5B,GAAA,CAAC+D,UAAAA,EAAAA;wDACCC,OAAAA,EAAQ,OAAA;AACRvK,wDAAAA,KAAAA,EAAOkC,cACLO,gBAAAA,GACI;4DACExC,EAAAA,EAAI,8CAAA;4DACJC,cAAAA,EAAgB;yDAClB,GACA;4DACED,EAAAA,EAAI,6CAAA;4DACJC,cAAAA,EAAgB;AAClB,yDAAA,CAAA;AAENsK,wDAAAA,OAAAA,EAAS,IAAM9H,mBAAAA,CAAoB,CAACM,IAAAA,GAAS,CAACA,IAAAA,CAAAA;AAE9C,wDAAA,QAAA,gBAAAuD,GAAA,CAAC5E,aAAAA,EAAAA;4DAAcI,iBAAAA,EAAmBU;;;kEAGtC8D,GAAA,CAAC2C,IAAAA,EAAAA;wDAAKuB,cAAAA,EAAe,QAAA;wDAASjB,IAAAA,EAAM,CAAA;AAClC,wDAAA,QAAA,gBAAAjD,GAAA,CAACmE,YAAAA,EAAAA;4DACCC,KAAAA,EAAOtG,UAAAA;AACPuG,4DAAAA,QAAAA,EAAU,CAAC7K,IAAAA,GAASuE,aAAAA,CAAcvE,IAAAA,CAAK8K,QAAQ,EAAA,CAAA;AAC/CC,4DAAAA,YAAAA,EAAY5I,aAAAA,CAAc;gEACxBjC,EAAAA,EAAI,uCAAA;gEACJC,cAAAA,EAAgB;AAClB,6DAAA,CAAA;AAECJ,4DAAAA,QAAAA,EAAAA,OAAAA,CAAQiL,GAAG,CAAC,CAACC,YAAAA,iBACZzE,GAAA,CAAC0E,kBAAAA,EAAAA;AAA2CN,oEAAAA,KAAAA,EAAOK,aAAajL,IAAI;AACjEmC,oEAAAA,QAAAA,EAAAA,aAAAA,CAAc8I,aAAahL,KAAK;AADVgL,iEAAAA,EAAAA,YAAAA,CAAajL,IAAI,CAAA;;;;;0DAOlDwG,GAAA,CAAC2C,IAAAA,EAAAA;gDAAKC,SAAAA,EAAU,QAAA;gDAASsB,cAAAA,EAAe,QAAA;gDAASL,UAAAA,EAAW,UAAA;gDAAWZ,IAAAA,EAAM,CAAA;AAC3E,gDAAA,QAAA,gBAAAjD,GAAA,CAACmD,GAAAA,EAAAA;oDACCwB,aAAAA,EAAY,gBAAA;oDACZC,GAAAA,EAAK7I,SAAAA;oDACLa,GAAAA,EAAK8E,UAAAA;AASLQ,oDAAAA,KAAAA,EAAOvG,aAAAA,CAAc;wDACnBjC,EAAAA,EAAI,qCAAA;wDACJC,cAAAA,EAAgB;AAClB,qDAAA,CAAA;AACAC,oDAAAA,KAAAA,EAAOoE,OAAOpE,KAAK;AACnBC,oDAAAA,MAAAA,EAAQmE,OAAOnE,MAAM;oDACrBuJ,WAAAA,EAAa,CAAA;oDACbyB,GAAAA,EAAI;AARCnD,iDAAAA,EAAAA,UAAAA;;;;;;;;;;;;AAkBzB,CAAA;AAEA;;AAEkG,qGAElG,MAAMoD,wBAAAA,GAA2B,IAAA;AAC/B,IAAA,MAAM,EAAE1H,IAAAA,EAAMC,KAAK,EAAE,GAAGG,SAAAA,EAAAA;IAGxB,MAAM,EACJuH,cAAc,EAAE,EAChBjF,SAAS,EACTO,KAAK,EACN,GAAG2E,OAAAA,CAAQ;AACV,QAAA;YAAEC,MAAAA,EAAQ,uCAAA;YAAyCC,OAAAA,EAAS7H;AAAM,SAAA;AAClE,QAAA;YAAE4H,MAAAA,EAAQ,yCAAA;YAA2CC,OAAAA,EAAS7H;AAAM,SAAA;AACpE,QAAA;YAAE4H,MAAAA,EAAQ,0CAAA;YAA4CC,OAAAA,EAAS7H;AAAM;AACtE,KAAA,CAAA;AAED,IAAA,IAAIyC,SAAAA,EAAW;QACb,qBAAOE,GAAA,CAACC,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB,IAAA;IAEA,IAAIG,KAAAA,IAAS,CAAChD,KAAAA,EAAO;AACnB,QAAA,qBACE2C,GAAA,CAACmD,GAAAA,EAAAA;YACCtJ,MAAAA,EAAO,QAAA;YACPD,KAAAA,EAAM,QAAA;YACNuL,QAAAA,EAAS,OAAA;YACTC,GAAAA,EAAK,CAAA;YACLC,IAAAA,EAAM,CAAA;YACNC,MAAAA,EAAQ,CAAA;YACRzB,UAAAA,EAAW,UAAA;oCAEX7D,GAAA,CAACC,KAAKvF,KAAK,EAAA,EAAA;;AAGjB,IAAA;AAEA,IAAA,qBACEsF,GAAA,CAACmD,GAAAA,EAAAA;QACCtJ,MAAAA,EAAO,QAAA;QACPD,KAAAA,EAAM,QAAA;QACNuL,QAAAA,EAAS,OAAA;QACTC,GAAAA,EAAK,CAAA;QACLC,IAAAA,EAAM,CAAA;QACNC,MAAAA,EAAQ,CAAA;QACRzB,UAAAA,EAAW,UAAA;gCAEX7D,GAAA,CAACC,KAAKsF,OAAO,EAAA;YACXR,WAAAA,EAAaA,WAAAA,CAAYS,MAAM,CAAC,CAACC,aAC/BA,UAAAA,CAAWR,MAAM,CAACS,QAAQ,CAAC,eAAA,CAAA,CAAA;AAG7B,YAAA,QAAA,gBAAA1F,GAAA,CAAC2F,YAAAA,EAAAA;gBAAaZ,WAAAA,EAAaA,WAAAA;AACzB,gBAAA,QAAA,gBAAA/E,GAAA,CAACvE,WAAAA,EAAAA,EAAAA;;;;AAKX,CAAA;AAEA,MAAMmK,oBAAAA,GAAuB,IAAA;AAC3B,IAAA,qBACE5F,GAAA,CAAC6F,MAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA7F,GAAA,CAAC8F,SAAAA,EAAAA;AACC,YAAA,QAAA,gBAAA9F,GAAA,CAAC8E,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;"}
1
+ {"version":3,"file":"Preview.mjs","sources":["../../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n type FieldContentSourceMap,\n useNotification,\n} from '@strapi/admin/strapi-admin';\nimport {\n Box,\n Flex,\n FocusTrap,\n IconButton,\n Portal,\n SingleSelect,\n SingleSelectOption,\n} from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled, useTheme } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentRBAC, useDocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { Blocker } from '../../pages/EditView/components/Blocker';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { handleInvisibleAttributes } from '../../pages/EditView/utils/data';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { InputPopover } from '../components/InputPopover';\nimport { PreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\nimport { INTERNAL_EVENTS, PUBLIC_EVENTS } from '../utils/constants';\nimport { getSendMessage } from '../utils/getSendMessage';\n\nimport type { Schema, UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * Constants\n * -----------------------------------------------------------------------------------------------*/\n\nconst DEVICES = [\n {\n name: 'desktop',\n label: {\n id: 'content-manager.preview.device.desktop',\n defaultMessage: 'Desktop',\n },\n width: '100%',\n height: '100%',\n },\n {\n name: 'mobile',\n label: {\n id: 'content-manager.preview.device.mobile',\n defaultMessage: 'Mobile',\n },\n width: '375px',\n height: '667px',\n },\n];\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\n * -----------------------------------------------------------------------------------------------*/\n\ninterface PopoverField extends FieldContentSourceMap {\n position: DOMRect;\n attribute: Schema.Attribute.AnyAttribute;\n blockIndex: number | null;\n}\n\ninterface PreviewContextValue {\n url: string;\n title: string;\n document: NonNullable<ReturnType<UseDocument>['document']>;\n meta: NonNullable<ReturnType<UseDocument>['meta']>;\n schema: NonNullable<ReturnType<UseDocument>['schema']>;\n components: NonNullable<ReturnType<UseDocument>['components']>;\n layout: EditLayout;\n onPreview: () => void;\n iframeRef: React.RefObject<HTMLIFrameElement>;\n popoverField: PopoverField | null;\n setPopoverField: (value: PopoverField | null) => void;\n}\n\ntype PreviewHighlightColors = {\n highlightHoverColor: string;\n highlightActiveColor: string;\n};\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\n\nconst getPreviewScript = (() => {\n let previewScript = '';\n return async (previewHighlightColors: PreviewHighlightColors) => {\n if (!previewScript) {\n const resp = await fetch(`${window.strapi.backendURL}/content-manager/preview/script`);\n\n if (!resp.ok) {\n throw new Error('Could not retrieve preview script from server.');\n }\n\n previewScript = await resp.text();\n\n if (!previewScript) {\n throw new Error('Could not retrieve preview script from server.');\n }\n }\n\n return `(${previewScript})(${JSON.stringify({\n colors: previewHighlightColors,\n events: INTERNAL_EVENTS,\n parentOrigin: window.location.origin,\n })})`;\n };\n})();\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst AnimatedArrow = styled(ArrowLineLeft)<{ $isSideEditorOpen: boolean }>`\n will-change: transform;\n rotate: ${(props) => (props.$isSideEditorOpen ? '0deg' : '180deg')};\n transition: rotate 0.2s ease-in-out;\n`;\n\nconst PreviewPage = () => {\n const location = useLocation();\n const { formatMessage } = useIntl();\n const theme = useTheme();\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\n const [popoverField, setPopoverField] = React.useState<PopoverField | null>(null);\n const prevPopoverFieldRef = React.useRef<PopoverField | null>(null);\n\n // When the popover closes, ask the iframe to rescan its stega element groups.\n // Live-preview sync updates the iframe DOM while editing, which can change the\n // rendered height of the field; groups need to reflect the current DOM so that\n // hover highlights and double-click detection work on the updated content.\n React.useEffect(() => {\n const prev = prevPopoverFieldRef.current;\n prevPopoverFieldRef.current = popoverField;\n\n if (prev !== null && popoverField === null) {\n const iframe = iframeRef.current;\n if (!iframe?.src) return;\n iframe.contentWindow?.postMessage(\n { type: INTERNAL_EVENTS.STRAPI_RESCAN_HIGHLIGHTS },\n new URL(iframe.src).origin\n );\n }\n }, [popoverField, iframeRef]);\n\n const { toggleNotification } = useNotification();\n\n // Read all the necessary data from the URL to find the right preview URL\n const {\n slug: model,\n id: documentId,\n collectionType,\n } = useParams<{\n slug: UID.ContentType;\n id: string;\n collectionType: string;\n }>();\n const [{ query }] = useQueryParams<{\n plugins?: { i18n?: { locale?: string } };\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\n\n const [deviceName, setDeviceName] = React.useState<(typeof DEVICES)[number]['name']>(\n DEVICES[0].name\n );\n const device = DEVICES.find((d) => d.name === deviceName) ?? DEVICES[0];\n\n const previewHighlightColors: PreviewHighlightColors = {\n highlightHoverColor: theme.colors.primary500,\n highlightActiveColor: theme.colors.primary600,\n };\n\n // Listen for ready message from iframe before injecting script\n React.useEffect(() => {\n const handleMessage = async (event: MessageEvent) => {\n // Only listen to events from the preview iframe\n if (iframeRef.current) {\n const previewOrigin = new URL(iframeRef.current?.src).origin;\n if (event.origin !== previewOrigin) {\n return;\n }\n }\n\n if (event.data?.type === PUBLIC_EVENTS.PREVIEW_READY) {\n try {\n const script = await getPreviewScript(previewHighlightColors);\n\n const sendMessage = getSendMessage(iframeRef);\n sendMessage(PUBLIC_EVENTS.STRAPI_SCRIPT, { script });\n } catch {\n toggleNotification({\n type: 'danger',\n message: formatMessage({\n id: 'content-manager.preview.error.script-failed',\n defaultMessage:\n 'Could not load the live preview script. Visual editing may not be available.',\n }),\n });\n }\n }\n };\n\n window.addEventListener('message', handleMessage);\n\n return () => {\n window.removeEventListener('message', handleMessage);\n };\n // Preserve the existing dependency behavior: previewHighlightColors is derived from theme.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [documentId, toggleNotification, theme, formatMessage]);\n\n if (!collectionType) {\n throw new Error('Could not find collectionType in url params');\n }\n\n if (!model) {\n throw new Error('Could not find model in url params');\n }\n\n // Only collection types must have a documentId\n if (collectionType === COLLECTION_TYPES && !documentId) {\n throw new Error('Could not find documentId in url params');\n }\n\n const previewUrlResponse = useGetPreviewUrlQuery({\n params: {\n contentType: model,\n },\n query: {\n documentId,\n locale: params.locale as GetPreviewUrl.Request['query']['locale'],\n status: params.status as GetPreviewUrl.Request['query']['status'],\n },\n });\n const documentResponse = useDocument({\n model,\n collectionType,\n documentId,\n params,\n });\n const documentLayoutResponse = useDocumentLayout(model);\n const isLoadingActionsRBAC = useDocumentRBAC('PreviewPage', (state) => state.isLoading);\n\n const isLoading =\n previewUrlResponse.isLoading || documentLayoutResponse.isLoading || documentResponse.isLoading;\n if (\n isLoadingActionsRBAC ||\n (isLoading && (!documentResponse.document?.documentId || previewUrlResponse.isLoading))\n ) {\n return <Page.Loading />;\n }\n\n const initialValues = documentResponse.getInitialFormValues();\n\n if (\n previewUrlResponse.error ||\n documentLayoutResponse.error ||\n !documentResponse.document ||\n !documentResponse.meta ||\n !documentResponse.schema ||\n !initialValues\n ) {\n return <Page.Error />;\n }\n\n if (!previewUrlResponse.data?.data?.url) {\n return <Page.NoData />;\n }\n\n const documentTitle = documentResponse.getTitle(documentLayoutResponse.edit.settings.mainField);\n\n const validateSync = (values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validateSync(cleanedValues, { abortEarly: false });\n };\n\n const previewUrl = previewUrlResponse.data.data.url;\n\n const onPreview = () => {\n iframeRef?.current?.contentWindow?.postMessage(\n { type: 'strapiUpdate' },\n // The iframe origin is safe to use since it must be provided through the allowedOrigins config\n new URL(iframeRef.current.src).origin\n );\n };\n\n const hasAdvancedPreview = window.strapi.features.isEnabled('cms-advanced-preview');\n\n return (\n <>\n <Page.Title>\n {formatMessage(\n {\n id: 'content-manager.preview.page-title',\n defaultMessage: '{contentType} preview',\n },\n {\n contentType: documentTitle,\n }\n )}\n </Page.Title>\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n components={documentResponse.components}\n layout={documentLayoutResponse.edit}\n onPreview={onPreview}\n iframeRef={iframeRef}\n popoverField={popoverField}\n setPopoverField={setPopoverField}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status !== 'draft'\n }\n initialValues={documentResponse.getInitialFormValues()}\n initialErrors={location?.state?.forceValidation ? validateSync(initialValues, {}) : {}}\n height=\"100%\"\n validate={(values: Record<string, unknown>, options: Record<string, string>) => {\n const { data: cleanedValues, removedAttributes } = handleInvisibleAttributes(values, {\n schema: documentResponse.schema,\n initialValues,\n components: documentResponse.components,\n });\n\n const yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n removedAttributes,\n ...options,\n }\n );\n\n return yupSchema.validate(cleanedValues, { abortEarly: false });\n }}\n >\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n <Blocker />\n <PreviewHeader />\n <InputPopover documentResponse={documentResponse} />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\n {hasAdvancedPreview && (\n <Box\n overflow=\"auto\"\n width={isSideEditorOpen ? '50%' : 0}\n borderWidth=\"0 1px 0 0\"\n borderColor=\"neutral150\"\n paddingTop={6}\n paddingBottom={6}\n // Remove horizontal padding when the editor is closed or it won't fully disappear\n paddingLeft={isSideEditorOpen ? 6 : 0}\n paddingRight={isSideEditorOpen ? 6 : 0}\n transition=\"all 0.2s ease-in-out\"\n >\n <FormLayout\n layout={documentLayoutResponse.edit.layout}\n document={documentResponse}\n hasBackground={false}\n />\n </Box>\n )}\n <Flex\n direction=\"column\"\n alignItems=\"stretch\"\n flex={1}\n height=\"100%\"\n overflow=\"hidden\"\n >\n <Flex\n direction=\"row\"\n background=\"neutral0\"\n padding={2}\n borderWidth=\"0 0 1px 0\"\n borderColor=\"neutral150\"\n >\n {hasAdvancedPreview && (\n <IconButton\n variant=\"ghost\"\n label={formatMessage(\n isSideEditorOpen\n ? {\n id: 'content-manager.preview.content.close-editor',\n defaultMessage: 'Close editor',\n }\n : {\n id: 'content-manager.preview.content.open-editor',\n defaultMessage: 'Open editor',\n }\n )}\n onClick={() => setIsSideEditorOpen((prev) => !prev)}\n >\n <AnimatedArrow $isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n )}\n <Flex justifyContent=\"center\" flex={1}>\n <SingleSelect\n value={deviceName}\n onChange={(name) => setDeviceName(name.toString())}\n aria-label={formatMessage({\n id: 'content-manager.preview.device.select',\n defaultMessage: 'Select device type',\n })}\n >\n {DEVICES.map((deviceOption) => (\n <SingleSelectOption key={deviceOption.name} value={deviceOption.name}>\n {formatMessage(deviceOption.label)}\n </SingleSelectOption>\n ))}\n </SingleSelect>\n </Flex>\n </Flex>\n <Flex direction=\"column\" justifyContent=\"center\" background=\"neutral0\" flex={1}>\n <Box\n data-testid=\"preview-iframe\"\n ref={iframeRef}\n src={previewUrl}\n /**\n * For some reason, changing an iframe's src tag causes the browser to add a new item in the\n * history stack. This is an issue for us as it means clicking the back button will not let us\n * go back to the edit view. To fix it, we need to trick the browser into thinking this is a\n * different iframe when the preview URL changes. So we set a key prop to force React\n * to mount a different node when the src changes.\n */\n key={previewUrl}\n title={formatMessage({\n id: 'content-manager.preview.panel.title',\n defaultMessage: 'Preview',\n })}\n width={device.width}\n height={device.height}\n borderWidth={0}\n tag=\"iframe\"\n />\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </FormContext>\n </PreviewProvider>\n </>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * ProtectedPreviewPage\n * -----------------------------------------------------------------------------------------------*/\n\nconst ProtectedPreviewPageImpl = () => {\n const { slug: model } = useParams<{\n slug: string;\n }>();\n const {\n permissions = [],\n isLoading,\n error,\n } = useRBAC([\n { action: 'plugin::content-manager.explorer.read', subject: model },\n { action: 'plugin::content-manager.explorer.update', subject: model },\n { action: 'plugin::content-manager.explorer.publish', subject: model },\n ]);\n\n if (isLoading) {\n return <Page.Loading />;\n }\n\n if (error || !model) {\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100dvh\"\n width=\"100dvw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={5}\n background=\"neutral0\"\n >\n <Page.Protect\n permissions={permissions.filter((permission) =>\n permission.action.includes('explorer.read')\n )}\n >\n <DocumentRBAC permissions={permissions}>\n <PreviewPage />\n </DocumentRBAC>\n </Page.Protect>\n </Box>\n );\n};\n\nconst ProtectedPreviewPage = () => {\n return (\n <Portal>\n <FocusTrap>\n <ProtectedPreviewPageImpl />\n </FocusTrap>\n </Portal>\n );\n};\n\nexport { ProtectedPreviewPage, usePreviewContext };\nexport type { PreviewContextValue };\n"],"names":["DEVICES","name","label","id","defaultMessage","width","height","PreviewProvider","usePreviewContext","createContext","getPreviewScript","previewScript","previewHighlightColors","resp","fetch","window","strapi","backendURL","ok","Error","text","JSON","stringify","colors","events","INTERNAL_EVENTS","parentOrigin","location","origin","AnimatedArrow","styled","ArrowLineLeft","props","$isSideEditorOpen","PreviewPage","useLocation","formatMessage","useIntl","theme","useTheme","iframeRef","React","useRef","isSideEditorOpen","setIsSideEditorOpen","useState","popoverField","setPopoverField","prevPopoverFieldRef","useEffect","prev","current","iframe","src","contentWindow","postMessage","type","STRAPI_RESCAN_HIGHLIGHTS","URL","toggleNotification","useNotification","slug","model","documentId","collectionType","useParams","query","useQueryParams","params","useMemo","buildValidParams","deviceName","setDeviceName","device","find","d","highlightHoverColor","primary500","highlightActiveColor","primary600","handleMessage","event","previewOrigin","data","PUBLIC_EVENTS","PREVIEW_READY","script","sendMessage","getSendMessage","STRAPI_SCRIPT","message","addEventListener","removeEventListener","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","status","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoadingActionsRBAC","useDocumentRBAC","state","isLoading","document","_jsx","Page","Loading","initialValues","getInitialFormValues","error","meta","schema","url","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","options","cleanedValues","removedAttributes","handleInvisibleAttributes","components","yupSchema","createYupSchema","attributes","abortEarly","previewUrl","onPreview","hasAdvancedPreview","features","isEnabled","_jsxs","_Fragment","Title","title","layout","FormContext","method","disabled","initialErrors","forceValidation","validate","Flex","direction","alignItems","Blocker","PreviewHeader","InputPopover","flex","overflow","Box","borderWidth","borderColor","paddingTop","paddingBottom","paddingLeft","paddingRight","transition","FormLayout","hasBackground","background","padding","IconButton","variant","onClick","justifyContent","SingleSelect","value","onChange","toString","aria-label","map","deviceOption","SingleSelectOption","data-testid","ref","tag","ProtectedPreviewPageImpl","permissions","useRBAC","action","subject","position","top","left","zIndex","Protect","filter","permission","includes","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
@@ -435,7 +435,7 @@ const documentApi = api.contentManagerApi.injectEndpoints({
435
435
  })
436
436
  })
437
437
  });
438
- const { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentsForValidationQuery, useLazyGetDocumentQuery, useGetDocumentQuery, useLazyGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUpdateDocumentMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation } = documentApi;
438
+ const { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentsForValidationQuery, useLazyGetDocumentQuery, useGetDocumentQuery, useGetDraftRelationCountQuery, useLazyGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUpdateDocumentMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation } = documentApi;
439
439
 
440
440
  exports.useAutoCloneDocumentMutation = useAutoCloneDocumentMutation;
441
441
  exports.useCloneDocumentMutation = useCloneDocumentMutation;
@@ -446,9 +446,10 @@ exports.useDiscardDocumentMutation = useDiscardDocumentMutation;
446
446
  exports.useGetAllDocumentsQuery = useGetAllDocumentsQuery;
447
447
  exports.useGetDocumentQuery = useGetDocumentQuery;
448
448
  exports.useGetDocumentsForValidationQuery = useGetDocumentsForValidationQuery;
449
- exports.useGetDraftRelationCountQuery = useLazyGetDraftRelationCountQuery;
449
+ exports.useGetDraftRelationCountQuery = useGetDraftRelationCountQuery;
450
450
  exports.useGetManyDraftRelationCountQuery = useGetManyDraftRelationCountQuery;
451
451
  exports.useLazyGetDocumentQuery = useLazyGetDocumentQuery;
452
+ exports.useLazyGetDraftRelationCountQuery = useLazyGetDraftRelationCountQuery;
452
453
  exports.usePublishDocumentMutation = usePublishDocumentMutation;
453
454
  exports.usePublishManyDocumentsMutation = usePublishManyDocumentsMutation;
454
455
  exports.useUnpublishDocumentMutation = useUnpublishDocumentMutation;
@@ -1 +1 @@
1
- {"version":3,"file":"documents.js","sources":["../../../admin/src/services/documents.ts"],"sourcesContent":["/**\n * Related to fetching the actual content of a collection type or single type.\n */\nimport { stringify } from 'qs';\n\nimport { SINGLE_TYPES } from '../constants/collections';\n\nimport { contentManagerApi } from './api';\n\nimport type {\n Clone,\n Create,\n Delete,\n Find,\n FindOne,\n BulkDelete,\n BulkPublish,\n BulkUnpublish,\n Discard,\n CountDraftRelations,\n CountManyEntriesDraftRelations,\n Publish,\n Unpublish,\n Update,\n} from '../../../shared/contracts/collection-types';\n\nconst documentApi = contentManagerApi.injectEndpoints({\n overrideExisting: true,\n endpoints: (builder) => ({\n autoCloneDocument: builder.mutation<\n Clone.Response,\n Clone.Params & {\n params?: Find.Request['query'] & Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, params }) => ({\n url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, error, { model }) => {\n if (error) {\n return [];\n }\n\n return [\n { type: 'Document', id: `${model}_LIST` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n cloneDocument: builder.mutation<\n Clone.Response,\n Clone.Params & {\n data: Clone.Request['body'];\n params?: Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, data, params }) => ({\n url: `/content-manager/collection-types/${model}/clone/${sourceId}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n /**\n * Creates a new collection-type document. This should ONLY be used for collection-types.\n * single-types should always be using `updateDocument` since they always exist.\n */\n createDocument: builder.mutation<\n Create.Response,\n Create.Params & {\n data: Create.Request['body'];\n params?: Create.Request['query'];\n }\n >({\n query: ({ model, data, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n transformResponse: (response: Create.Response, meta, arg): Create.Response => {\n /**\n * TODO v6\n * Adapt plugin:users-permissions.user to return the same response\n * shape as all other requests. The error is returned as expected.\n */\n if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n return {\n data: response,\n meta: {\n availableStatus: [],\n availableLocales: [],\n },\n };\n }\n\n return response;\n },\n }),\n deleteDocument: builder.mutation<\n Delete.Response,\n Pick<Delete.Params, 'model'> &\n Pick<Partial<Delete.Params>, 'documentId'> & {\n collectionType: string;\n params?: Find.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n collectionType !== SINGLE_TYPES && documentId ? `/${documentId}` : ''\n }`,\n method: 'DELETE',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => [\n { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_ALL_ITEMS` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n deleteManyDocuments: builder.mutation<\n BulkDelete.Response,\n BulkDelete.Params & BulkDelete.Request['body'] & { params?: Find.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkDelete`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n discardDocument: builder.mutation<\n Discard.Response,\n Pick<Discard.Params, 'model'> &\n Partial<Pick<Discard.Params, 'documentId'>> & {\n collectionType: string;\n params?: Find.Request['query'] & {\n [key: string]: unknown;\n };\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/discard`\n : `/content-manager/${collectionType}/${model}/actions/discard`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n /**\n * Gets all documents of a collection type or single type.\n * By passing different params you can get different results e.g. only published documents or 'es' documents.\n */\n getAllDocuments: builder.query<\n Find.Response,\n Find.Params & {\n params?: Find.Request['query'] & {\n [key: string]: unknown;\n };\n }\n >({\n query: ({ model, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'GET',\n config: {\n params: stringify(params, { encode: true }),\n },\n }),\n providesTags: (result, _error, arg) => {\n return [\n { type: 'Document', id: `ALL_LIST` },\n { type: 'Document', id: `${arg.model}_LIST` },\n ...(result?.results.map(({ documentId }) => ({\n type: 'Document' as const,\n id: `${arg.model}_${documentId}`,\n })) ?? []),\n ];\n },\n }),\n getDraftRelationCount: builder.query<\n CountDraftRelations.Response,\n {\n collectionType: string;\n model: string;\n /**\n * You don't pass the documentId if the document is a single-type\n */\n documentId?: string;\n params?: CountDraftRelations.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/countDraftRelations`\n : `/content-manager/${collectionType}/${model}/actions/countDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n }),\n /**\n * Fetches multiple documents with deep populate in a single request for bulk publish validation.\n */\n getDocumentsForValidation: builder.query<\n Find.Response['results'],\n {\n model: string;\n documentIds: string[];\n locale?: string;\n sort?: string;\n }\n >({\n query: ({ model, documentIds, locale, sort }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkFindForValidation`,\n method: 'POST',\n data: { documentIds, locale, sort },\n }),\n transformResponse: (response: { results: Find.Response['results'] }) =>\n response?.results ?? [],\n providesTags: (result, _error, { model }) =>\n result\n ? [\n ...result.map((doc) => ({\n type: 'Document' as const,\n id: `${model}_${doc.documentId}`,\n })),\n { type: 'Document', id: `${model}_LIST` },\n ]\n : [],\n }),\n getDocument: builder.query<\n FindOne.Response,\n Pick<FindOne.Params, 'model'> &\n Partial<Pick<FindOne.Params, 'documentId'>> & {\n collectionType: string;\n params?: FindOne.Request['query'];\n }\n >({\n // @ts-expect-error – TODO: fix ts error where data unknown doesn't work with response via an assertion?\n queryFn: async (\n { collectionType, model, documentId, params },\n _api,\n _extraOpts,\n baseQuery\n ) => {\n const res = await baseQuery({\n url: `/content-manager/${collectionType}/${model}${\n documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n }`,\n method: 'GET',\n config: {\n params,\n },\n });\n\n /**\n * To stop the query from locking itself in multiple retries, we intercept the error here and manage correctly.\n * This is because single-types don't have a list view and fetching them with the route `/single-types/:model`\n * never returns a list, just a single document but this won't exist if you've not made one before.\n */\n if (res.error && res.error.name === 'NotFoundError' && collectionType === SINGLE_TYPES) {\n return { data: { document: undefined }, error: undefined };\n }\n\n return res;\n },\n providesTags: (result, _error, { collectionType, model, documentId }) => {\n return [\n // we prefer the result's id because we don't fetch single-types with an ID.\n {\n type: 'Document',\n id:\n collectionType !== SINGLE_TYPES\n ? `${model}_${result && 'documentId' in result ? result.documentId : documentId}`\n : model,\n },\n // Make it easy to invalidate all individual documents queries for a model\n {\n type: 'Document',\n id: `${model}_ALL_ITEMS`,\n },\n ];\n },\n }),\n getManyDraftRelationCount: builder.query<\n CountManyEntriesDraftRelations.Response['data'],\n CountManyEntriesDraftRelations.Request['query'] & {\n model: string;\n }\n >({\n query: ({ model, ...params }) => ({\n url: `/content-manager/collection-types/${model}/actions/countManyEntriesDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (response: CountManyEntriesDraftRelations.Response) => response.data,\n }),\n /**\n * This endpoint will either create or update documents at the same time as publishing.\n */\n publishDocument: builder.mutation<\n Publish.Response,\n Pick<Publish.Params, 'model'> &\n Partial<Pick<Publish.Params, 'documentId'>> & {\n collectionType: string;\n data: Publish.Request['body'];\n params?: Publish.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/publish`\n : `/content-manager/${collectionType}/${model}/actions/publish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n {\n type: 'AILocalizationJobs',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n ];\n },\n }),\n publishManyDocuments: builder.mutation<\n BulkPublish.Response,\n BulkPublish.Params & BulkPublish.Request['body'] & { params?: BulkPublish.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkPublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) => {\n return [\n ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n updateDocument: builder.mutation<\n Update.Response,\n Pick<Update.Params, 'model'> &\n Partial<Pick<Update.Params, 'documentId'>> & {\n collectionType: string;\n data: Update.Request['body'];\n params?: Update.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, data, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n }`,\n method: 'PUT',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n {\n type: 'AILocalizationJobs',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n ];\n },\n async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {\n // Optimistically update the cache with the new data\n const patchResult = dispatch(\n documentApi.util.updateQueryData('getDocument', patch, (draft) => {\n Object.assign(draft.data, data);\n })\n );\n try {\n await queryFulfilled;\n } catch {\n // Rollback the optimistic update if there's an error\n patchResult.undo();\n }\n },\n transformResponse: (response: Update.Response, meta, arg): Update.Response => {\n /**\n * TODO v6\n * Adapt plugin:users-permissions.user to return the same response\n * shape as all other requests. The error is returned as expected.\n */\n if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n return {\n data: response,\n meta: {\n availableStatus: [],\n availableLocales: [],\n },\n };\n }\n\n return response;\n },\n }),\n unpublishDocument: builder.mutation<\n Unpublish.Response,\n Pick<Unpublish.Params, 'model'> &\n Partial<Pick<Unpublish.Params, 'documentId'>> & {\n collectionType: string;\n params?: Unpublish.Request['query'];\n data: Unpublish.Request['body'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/unpublish`\n : `/content-manager/${collectionType}/${model}/actions/unpublish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n unpublishManyDocuments: builder.mutation<\n BulkUnpublish.Response,\n Pick<BulkUnpublish.Params, 'model'> &\n BulkUnpublish.Request['body'] & {\n params?: BulkUnpublish.Request['query'];\n }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkUnpublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) => [\n ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n }),\n});\n\nconst {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useGetDocumentsForValidationQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n} = documentApi;\n\nexport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useGetDocumentsForValidationQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useLazyGetDraftRelationCountQuery as useGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n};\n"],"names":["documentApi","contentManagerApi","injectEndpoints","overrideExisting","endpoints","builder","autoCloneDocument","mutation","query","model","sourceId","params","url","method","config","invalidatesTags","_result","error","type","id","cloneDocument","data","_error","createDocument","result","transformResponse","response","meta","arg","availableStatus","availableLocales","deleteDocument","collectionType","documentId","SINGLE_TYPES","deleteManyDocuments","body","_res","discardDocument","getAllDocuments","stringify","encode","providesTags","results","map","getDraftRelationCount","getDocumentsForValidation","documentIds","locale","sort","doc","getDocument","queryFn","_api","_extraOpts","baseQuery","res","name","document","undefined","getManyDraftRelationCount","publishDocument","publishManyDocuments","updateDocument","onQueryStarted","patch","dispatch","queryFulfilled","patchResult","util","updateQueryData","draft","Object","assign","undo","unpublishDocument","unpublishManyDocuments","useAutoCloneDocumentMutation","useCloneDocumentMutation","useCreateDocumentMutation","useDeleteDocumentMutation","useDeleteManyDocumentsMutation","useDiscardDocumentMutation","useGetAllDocumentsQuery","useGetDocumentsForValidationQuery","useLazyGetDocumentQuery","useGetDocumentQuery","useLazyGetDraftRelationCountQuery","useGetManyDraftRelationCountQuery","usePublishDocumentMutation","usePublishManyDocumentsMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useUnpublishManyDocumentsMutation"],"mappings":"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"}
1
+ {"version":3,"file":"documents.js","sources":["../../../admin/src/services/documents.ts"],"sourcesContent":["/**\n * Related to fetching the actual content of a collection type or single type.\n */\nimport { stringify } from 'qs';\n\nimport { SINGLE_TYPES } from '../constants/collections';\n\nimport { contentManagerApi } from './api';\n\nimport type {\n Clone,\n Create,\n Delete,\n Find,\n FindOne,\n BulkDelete,\n BulkPublish,\n BulkUnpublish,\n Discard,\n CountDraftRelations,\n CountManyEntriesDraftRelations,\n Publish,\n Unpublish,\n Update,\n} from '../../../shared/contracts/collection-types';\n\nconst documentApi = contentManagerApi.injectEndpoints({\n overrideExisting: true,\n endpoints: (builder) => ({\n autoCloneDocument: builder.mutation<\n Clone.Response,\n Clone.Params & {\n params?: Find.Request['query'] & Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, params }) => ({\n url: `/content-manager/collection-types/${model}/auto-clone/${sourceId}`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, error, { model }) => {\n if (error) {\n return [];\n }\n\n return [\n { type: 'Document', id: `${model}_LIST` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n cloneDocument: builder.mutation<\n Clone.Response,\n Clone.Params & {\n data: Clone.Request['body'];\n params?: Clone.Request['query'];\n }\n >({\n query: ({ model, sourceId, data, params }) => ({\n url: `/content-manager/collection-types/${model}/clone/${sourceId}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n /**\n * Creates a new collection-type document. This should ONLY be used for collection-types.\n * single-types should always be using `updateDocument` since they always exist.\n */\n createDocument: builder.mutation<\n Create.Response,\n Create.Params & {\n data: Create.Request['body'];\n params?: Create.Request['query'];\n }\n >({\n query: ({ model, data, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (result, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n transformResponse: (response: Create.Response, meta, arg): Create.Response => {\n /**\n * TODO v6\n * Adapt plugin:users-permissions.user to return the same response\n * shape as all other requests. The error is returned as expected.\n */\n if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n return {\n data: response,\n meta: {\n availableStatus: [],\n availableLocales: [],\n },\n };\n }\n\n return response;\n },\n }),\n deleteDocument: builder.mutation<\n Delete.Response,\n Pick<Delete.Params, 'model'> &\n Pick<Partial<Delete.Params>, 'documentId'> & {\n collectionType: string;\n params?: Find.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n collectionType !== SINGLE_TYPES && documentId ? `/${documentId}` : ''\n }`,\n method: 'DELETE',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => [\n { type: 'Document', id: collectionType !== SINGLE_TYPES ? `${model}_LIST` : model },\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_ALL_ITEMS` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n deleteManyDocuments: builder.mutation<\n BulkDelete.Response,\n BulkDelete.Params & BulkDelete.Request['body'] & { params?: Find.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkDelete`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model }) => [\n { type: 'Document', id: `${model}_LIST` },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n discardDocument: builder.mutation<\n Discard.Response,\n Pick<Discard.Params, 'model'> &\n Partial<Pick<Discard.Params, 'documentId'>> & {\n collectionType: string;\n params?: Find.Request['query'] & {\n [key: string]: unknown;\n };\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/discard`\n : `/content-manager/${collectionType}/${model}/actions/discard`,\n method: 'POST',\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n /**\n * Gets all documents of a collection type or single type.\n * By passing different params you can get different results e.g. only published documents or 'es' documents.\n */\n getAllDocuments: builder.query<\n Find.Response,\n Find.Params & {\n params?: Find.Request['query'] & {\n [key: string]: unknown;\n };\n }\n >({\n query: ({ model, params }) => ({\n url: `/content-manager/collection-types/${model}`,\n method: 'GET',\n config: {\n params: stringify(params, { encode: true }),\n },\n }),\n providesTags: (result, _error, arg) => {\n return [\n { type: 'Document', id: `ALL_LIST` },\n { type: 'Document', id: `${arg.model}_LIST` },\n ...(result?.results.map(({ documentId }) => ({\n type: 'Document' as const,\n id: `${arg.model}_${documentId}`,\n })) ?? []),\n ];\n },\n }),\n getDraftRelationCount: builder.query<\n CountDraftRelations.Response,\n {\n collectionType: string;\n model: string;\n /**\n * You don't pass the documentId if the document is a single-type\n */\n documentId?: string;\n params?: CountDraftRelations.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/countDraftRelations`\n : `/content-manager/${collectionType}/${model}/actions/countDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n }),\n /**\n * Fetches multiple documents with deep populate in a single request for bulk publish validation.\n */\n getDocumentsForValidation: builder.query<\n Find.Response['results'],\n {\n model: string;\n documentIds: string[];\n locale?: string;\n sort?: string;\n }\n >({\n query: ({ model, documentIds, locale, sort }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkFindForValidation`,\n method: 'POST',\n data: { documentIds, locale, sort },\n }),\n transformResponse: (response: { results: Find.Response['results'] }) =>\n response?.results ?? [],\n providesTags: (result, _error, { model }) =>\n result\n ? [\n ...result.map((doc) => ({\n type: 'Document' as const,\n id: `${model}_${doc.documentId}`,\n })),\n { type: 'Document', id: `${model}_LIST` },\n ]\n : [],\n }),\n getDocument: builder.query<\n FindOne.Response,\n Pick<FindOne.Params, 'model'> &\n Partial<Pick<FindOne.Params, 'documentId'>> & {\n collectionType: string;\n params?: FindOne.Request['query'];\n }\n >({\n // @ts-expect-error – TODO: fix ts error where data unknown doesn't work with response via an assertion?\n queryFn: async (\n { collectionType, model, documentId, params },\n _api,\n _extraOpts,\n baseQuery\n ) => {\n const res = await baseQuery({\n url: `/content-manager/${collectionType}/${model}${\n documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n }`,\n method: 'GET',\n config: {\n params,\n },\n });\n\n /**\n * To stop the query from locking itself in multiple retries, we intercept the error here and manage correctly.\n * This is because single-types don't have a list view and fetching them with the route `/single-types/:model`\n * never returns a list, just a single document but this won't exist if you've not made one before.\n */\n if (res.error && res.error.name === 'NotFoundError' && collectionType === SINGLE_TYPES) {\n return { data: { document: undefined }, error: undefined };\n }\n\n return res;\n },\n providesTags: (result, _error, { collectionType, model, documentId }) => {\n return [\n // we prefer the result's id because we don't fetch single-types with an ID.\n {\n type: 'Document',\n id:\n collectionType !== SINGLE_TYPES\n ? `${model}_${result && 'documentId' in result ? result.documentId : documentId}`\n : model,\n },\n // Make it easy to invalidate all individual documents queries for a model\n {\n type: 'Document',\n id: `${model}_ALL_ITEMS`,\n },\n ];\n },\n }),\n getManyDraftRelationCount: builder.query<\n CountManyEntriesDraftRelations.Response['data'],\n CountManyEntriesDraftRelations.Request['query'] & {\n model: string;\n }\n >({\n query: ({ model, ...params }) => ({\n url: `/content-manager/collection-types/${model}/actions/countManyEntriesDraftRelations`,\n method: 'GET',\n config: {\n params,\n },\n }),\n transformResponse: (response: CountManyEntriesDraftRelations.Response) => response.data,\n }),\n /**\n * This endpoint will either create or update documents at the same time as publishing.\n */\n publishDocument: builder.mutation<\n Publish.Response,\n Pick<Publish.Params, 'model'> &\n Partial<Pick<Publish.Params, 'documentId'>> & {\n collectionType: string;\n data: Publish.Request['body'];\n params?: Publish.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/publish`\n : `/content-manager/${collectionType}/${model}/actions/publish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n { type: 'Document', id: `${model}_LIST` },\n 'Relations',\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n {\n type: 'AILocalizationJobs',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n ];\n },\n }),\n publishManyDocuments: builder.mutation<\n BulkPublish.Response,\n BulkPublish.Params & BulkPublish.Request['body'] & { params?: BulkPublish.Request['query'] }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkPublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) => {\n return [\n ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n updateDocument: builder.mutation<\n Update.Response,\n Pick<Update.Params, 'model'> &\n Partial<Pick<Update.Params, 'documentId'>> & {\n collectionType: string;\n data: Update.Request['body'];\n params?: Update.Request['query'];\n }\n >({\n query: ({ collectionType, model, documentId, data, params }) => ({\n url: `/content-manager/${collectionType}/${model}${\n documentId && collectionType !== SINGLE_TYPES ? `/${documentId}` : ''\n }`,\n method: 'PUT',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'Relations',\n { type: 'UidAvailability', id: model },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n {\n type: 'AILocalizationJobs',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n ];\n },\n async onQueryStarted({ data, ...patch }, { dispatch, queryFulfilled }) {\n // Optimistically update the cache with the new data\n const patchResult = dispatch(\n documentApi.util.updateQueryData('getDocument', patch, (draft) => {\n Object.assign(draft.data, data);\n })\n );\n try {\n await queryFulfilled;\n } catch {\n // Rollback the optimistic update if there's an error\n patchResult.undo();\n }\n },\n transformResponse: (response: Update.Response, meta, arg): Update.Response => {\n /**\n * TODO v6\n * Adapt plugin:users-permissions.user to return the same response\n * shape as all other requests. The error is returned as expected.\n */\n if (!('data' in response) && arg.model === 'plugin::users-permissions.user') {\n return {\n data: response,\n meta: {\n availableStatus: [],\n availableLocales: [],\n },\n };\n }\n\n return response;\n },\n }),\n unpublishDocument: builder.mutation<\n Unpublish.Response,\n Pick<Unpublish.Params, 'model'> &\n Partial<Pick<Unpublish.Params, 'documentId'>> & {\n collectionType: string;\n params?: Unpublish.Request['query'];\n data: Unpublish.Request['body'];\n }\n >({\n query: ({ collectionType, model, documentId, params, data }) => ({\n url:\n documentId && collectionType !== SINGLE_TYPES\n ? `/content-manager/${collectionType}/${model}/${documentId}/actions/unpublish`\n : `/content-manager/${collectionType}/${model}/actions/unpublish`,\n method: 'POST',\n data,\n config: {\n params,\n },\n }),\n invalidatesTags: (_result, _error, { collectionType, model, documentId }) => {\n return [\n {\n type: 'Document',\n id: collectionType !== SINGLE_TYPES ? `${model}_${documentId}` : model,\n },\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ];\n },\n }),\n unpublishManyDocuments: builder.mutation<\n BulkUnpublish.Response,\n Pick<BulkUnpublish.Params, 'model'> &\n BulkUnpublish.Request['body'] & {\n params?: BulkUnpublish.Request['query'];\n }\n >({\n query: ({ model, params, ...body }) => ({\n url: `/content-manager/collection-types/${model}/actions/bulkUnpublish`,\n method: 'POST',\n data: body,\n config: {\n params,\n },\n }),\n invalidatesTags: (_res, _error, { model, documentIds }) => [\n ...documentIds.map((id) => ({ type: 'Document' as const, id: `${model}_${id}` })),\n 'RecentDocumentList',\n 'CountDocuments',\n 'UpcomingReleasesList',\n ],\n }),\n }),\n});\n\nconst {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useGetDocumentsForValidationQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useGetDraftRelationCountQuery,\n useLazyGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n} = documentApi;\n\nexport {\n useAutoCloneDocumentMutation,\n useCloneDocumentMutation,\n useCreateDocumentMutation,\n useDeleteDocumentMutation,\n useDeleteManyDocumentsMutation,\n useDiscardDocumentMutation,\n useGetAllDocumentsQuery,\n useGetDocumentsForValidationQuery,\n useLazyGetDocumentQuery,\n useGetDocumentQuery,\n useGetDraftRelationCountQuery,\n useLazyGetDraftRelationCountQuery,\n useGetManyDraftRelationCountQuery,\n usePublishDocumentMutation,\n usePublishManyDocumentsMutation,\n useUpdateDocumentMutation,\n useUnpublishDocumentMutation,\n useUnpublishManyDocumentsMutation,\n};\n"],"names":["documentApi","contentManagerApi","injectEndpoints","overrideExisting","endpoints","builder","autoCloneDocument","mutation","query","model","sourceId","params","url","method","config","invalidatesTags","_result","error","type","id","cloneDocument","data","_error","createDocument","result","transformResponse","response","meta","arg","availableStatus","availableLocales","deleteDocument","collectionType","documentId","SINGLE_TYPES","deleteManyDocuments","body","_res","discardDocument","getAllDocuments","stringify","encode","providesTags","results","map","getDraftRelationCount","getDocumentsForValidation","documentIds","locale","sort","doc","getDocument","queryFn","_api","_extraOpts","baseQuery","res","name","document","undefined","getManyDraftRelationCount","publishDocument","publishManyDocuments","updateDocument","onQueryStarted","patch","dispatch","queryFulfilled","patchResult","util","updateQueryData","draft","Object","assign","undo","unpublishDocument","unpublishManyDocuments","useAutoCloneDocumentMutation","useCloneDocumentMutation","useCreateDocumentMutation","useDeleteDocumentMutation","useDeleteManyDocumentsMutation","useDiscardDocumentMutation","useGetAllDocumentsQuery","useGetDocumentsForValidationQuery","useLazyGetDocumentQuery","useGetDocumentQuery","useGetDraftRelationCountQuery","useLazyGetDraftRelationCountQuery","useGetManyDraftRelationCountQuery","usePublishDocumentMutation","usePublishManyDocumentsMutation","useUpdateDocumentMutation","useUnpublishDocumentMutation","useUnpublishManyDocumentsMutation"],"mappings":"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"}
@@ -433,7 +433,7 @@ const documentApi = contentManagerApi.injectEndpoints({
433
433
  })
434
434
  })
435
435
  });
436
- const { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentsForValidationQuery, useLazyGetDocumentQuery, useGetDocumentQuery, useLazyGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUpdateDocumentMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation } = documentApi;
436
+ const { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentsForValidationQuery, useLazyGetDocumentQuery, useGetDocumentQuery, useGetDraftRelationCountQuery, useLazyGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUpdateDocumentMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation } = documentApi;
437
437
 
438
- export { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentQuery, useGetDocumentsForValidationQuery, useLazyGetDraftRelationCountQuery as useGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, useLazyGetDocumentQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation, useUpdateDocumentMutation };
438
+ export { useAutoCloneDocumentMutation, useCloneDocumentMutation, useCreateDocumentMutation, useDeleteDocumentMutation, useDeleteManyDocumentsMutation, useDiscardDocumentMutation, useGetAllDocumentsQuery, useGetDocumentQuery, useGetDocumentsForValidationQuery, useGetDraftRelationCountQuery, useGetManyDraftRelationCountQuery, useLazyGetDocumentQuery, useLazyGetDraftRelationCountQuery, usePublishDocumentMutation, usePublishManyDocumentsMutation, useUnpublishDocumentMutation, useUnpublishManyDocumentsMutation, useUpdateDocumentMutation };
439
439
  //# sourceMappingURL=documents.mjs.map