@strapi/content-manager 5.12.0-beta.1 → 5.12.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/chunks/{ComponentConfigurationPage-BBv83V0Q.js → ComponentConfigurationPage-CBvwLnAK.js} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BBv83V0Q.js.map → ComponentConfigurationPage-CBvwLnAK.js.map} +1 -1
- package/dist/admin/chunks/{ComponentConfigurationPage-BslfsQzl.mjs → ComponentConfigurationPage-w_ss7xEy.mjs} +3 -3
- package/dist/admin/chunks/{ComponentConfigurationPage-BslfsQzl.mjs.map → ComponentConfigurationPage-w_ss7xEy.mjs.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-CNdLJeZx.js → EditConfigurationPage-CbAhYSyH.js} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-CNdLJeZx.js.map → EditConfigurationPage-CbAhYSyH.js.map} +1 -1
- package/dist/admin/chunks/{EditConfigurationPage-B9DOw379.mjs → EditConfigurationPage-D1iHIzSR.mjs} +3 -3
- package/dist/admin/chunks/{EditConfigurationPage-B9DOw379.mjs.map → EditConfigurationPage-D1iHIzSR.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-DtQbJKp9.mjs → EditViewPage-BtunY0ZP.mjs} +4 -4
- package/dist/admin/chunks/{EditViewPage-DtQbJKp9.mjs.map → EditViewPage-BtunY0ZP.mjs.map} +1 -1
- package/dist/admin/chunks/{EditViewPage-C4hW0wp0.js → EditViewPage-Cf_TPJZd.js} +4 -4
- package/dist/admin/chunks/{EditViewPage-C4hW0wp0.js.map → EditViewPage-Cf_TPJZd.js.map} +1 -1
- package/dist/admin/chunks/{Form-C_A_nt8I.mjs → Form-DsvK3WTh.mjs} +2 -2
- package/dist/admin/chunks/{Form-C_A_nt8I.mjs.map → Form-DsvK3WTh.mjs.map} +1 -1
- package/dist/admin/chunks/{Form-DdbSAE5E.js → Form-UMrizqJP.js} +2 -2
- package/dist/admin/chunks/{Form-DdbSAE5E.js.map → Form-UMrizqJP.js.map} +1 -1
- package/dist/admin/chunks/{History-XhYubUOl.js → History-Crvb_hzd.js} +4 -4
- package/dist/admin/chunks/{History-XhYubUOl.js.map → History-Crvb_hzd.js.map} +1 -1
- package/dist/admin/chunks/{History-BMtfd-K3.mjs → History-DsRVSUF7.mjs} +4 -4
- package/dist/admin/chunks/{History-BMtfd-K3.mjs.map → History-DsRVSUF7.mjs.map} +1 -1
- package/dist/admin/chunks/{Input-k2wrKBei.js → Input-C2r54bIL.js} +3 -3
- package/dist/admin/chunks/{Input-k2wrKBei.js.map → Input-C2r54bIL.js.map} +1 -1
- package/dist/admin/chunks/{Input-CdL3aceg.mjs → Input-D6obstp0.mjs} +3 -3
- package/dist/admin/chunks/{Input-CdL3aceg.mjs.map → Input-D6obstp0.mjs.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-yuJxuXRe.mjs → ListConfigurationPage-DW-wAwmW.mjs} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-yuJxuXRe.mjs.map → ListConfigurationPage-DW-wAwmW.mjs.map} +1 -1
- package/dist/admin/chunks/{ListConfigurationPage-CWHRkx7T.js → ListConfigurationPage-DlQ2pLyr.js} +2 -2
- package/dist/admin/chunks/{ListConfigurationPage-CWHRkx7T.js.map → ListConfigurationPage-DlQ2pLyr.js.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-DNVvdcPG.mjs → ListViewPage-DcUhPA9a.mjs} +3 -3
- package/dist/admin/chunks/{ListViewPage-DNVvdcPG.mjs.map → ListViewPage-DcUhPA9a.mjs.map} +1 -1
- package/dist/admin/chunks/{ListViewPage-CZSzcPm-.js → ListViewPage-nJJ227Fo.js} +3 -3
- package/dist/admin/chunks/{ListViewPage-CZSzcPm-.js.map → ListViewPage-nJJ227Fo.js.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-KLPfLWVA.js → NoContentTypePage-Cxt-uFq7.js} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-KLPfLWVA.js.map → NoContentTypePage-Cxt-uFq7.js.map} +1 -1
- package/dist/admin/chunks/{NoContentTypePage-DouLpUHV.mjs → NoContentTypePage-DbRXR2cr.mjs} +2 -2
- package/dist/admin/chunks/{NoContentTypePage-DouLpUHV.mjs.map → NoContentTypePage-DbRXR2cr.mjs.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-YYWP7EKY.js → NoPermissionsPage-BeMTv_SG.js} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-YYWP7EKY.js.map → NoPermissionsPage-BeMTv_SG.js.map} +1 -1
- package/dist/admin/chunks/{NoPermissionsPage-BiMOAuSo.mjs → NoPermissionsPage-RWPwNESA.mjs} +2 -2
- package/dist/admin/chunks/{NoPermissionsPage-BiMOAuSo.mjs.map → NoPermissionsPage-RWPwNESA.mjs.map} +1 -1
- package/dist/admin/chunks/{Preview-8i9JsLMo.js → Preview-CCjSV5Iu.js} +74 -165
- package/dist/admin/chunks/Preview-CCjSV5Iu.js.map +1 -0
- package/dist/admin/chunks/{Preview-j5KbuGaQ.mjs → Preview-aVLT3LM_.mjs} +76 -167
- package/dist/admin/chunks/Preview-aVLT3LM_.mjs.map +1 -0
- package/dist/admin/chunks/{index-B3Mqveme.js → index-BA_JLxKS.js} +11 -11
- package/dist/admin/chunks/{index-B3Mqveme.js.map → index-BA_JLxKS.js.map} +1 -1
- package/dist/admin/chunks/{index-DXKkvSHM.mjs → index-CIOT3ggy.mjs} +11 -11
- package/dist/admin/chunks/{index-DXKkvSHM.mjs.map → index-CIOT3ggy.mjs.map} +1 -1
- package/dist/admin/chunks/{layout-PuWh68tF.js → layout-C510xcd6.js} +4 -4
- package/dist/admin/chunks/{layout-PuWh68tF.js.map → layout-C510xcd6.js.map} +1 -1
- package/dist/admin/chunks/{layout-1OGQ76-V.mjs → layout-DjT9cccU.mjs} +4 -4
- package/dist/admin/chunks/{layout-1OGQ76-V.mjs.map → layout-DjT9cccU.mjs.map} +1 -1
- package/dist/admin/chunks/{usePrev-D-A4N6nF.js → usePrev-BglKW7a4.js} +2 -2
- package/dist/admin/chunks/{usePrev-D-A4N6nF.js.map → usePrev-BglKW7a4.js.map} +1 -1
- package/dist/admin/chunks/{usePrev-BmTQq13K.mjs → usePrev-DAWUYIPh.mjs} +2 -2
- package/dist/admin/chunks/{usePrev-BmTQq13K.mjs.map → usePrev-DAWUYIPh.mjs.map} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/admin/src/preview/components/PreviewHeader.d.ts +1 -2
- package/package.json +5 -5
- package/dist/admin/chunks/Preview-8i9JsLMo.js.map +0 -1
- package/dist/admin/chunks/Preview-j5KbuGaQ.mjs.map +0 -1
- package/dist/admin/src/preview/components/PreviewContent.d.ts +0 -2
@@ -1,6 +1,6 @@
|
|
1
1
|
import { useState, useEffect, useRef } from 'react';
|
2
2
|
import { generateNKeysBetween } from 'fractional-indexing';
|
3
|
-
import { l as contentManagerApi } from './index-
|
3
|
+
import { l as contentManagerApi } from './index-CIOT3ggy.mjs';
|
4
4
|
|
5
5
|
const prefixFileUrlWithBackendUrl = (fileURL)=>{
|
6
6
|
return !!fileURL && fileURL.startsWith('/') ? `${window.strapi.backendURL}${fileURL}` : fileURL;
|
@@ -184,4 +184,4 @@ const usePrev = (value)=>{
|
|
184
184
|
};
|
185
185
|
|
186
186
|
export { useDebounce as a, useLazySearchRelationsQuery as b, usePrev as c, getRelationLabel as g, prefixFileUrlWithBackendUrl as p, useGetRelationsQuery as u };
|
187
|
-
//# sourceMappingURL=usePrev-
|
187
|
+
//# sourceMappingURL=usePrev-DAWUYIPh.mjs.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"usePrev-BmTQq13K.mjs","sources":["../../../admin/src/utils/urls.ts","../../../admin/src/hooks/useDebounce.ts","../../../admin/src/services/relations.ts","../../../admin/src/utils/relations.ts","../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["const prefixFileUrlWithBackendUrl = (fileURL?: string): string | undefined => {\n return !!fileURL && fileURL.startsWith('/') ? `${window.strapi.backendURL}${fileURL}` : fileURL;\n};\n\nexport { prefixFileUrlWithBackendUrl };\n","import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { generateNKeysBetween } from 'fractional-indexing';\n\nimport {\n RelationResult as RelResult,\n FindAvailable,\n FindExisting,\n} from '../../../shared/contracts/relations';\n\nimport { contentManagerApi } from './api';\n\nimport type { Modules } from '@strapi/types';\nimport type { errors } from '@strapi/utils';\n\ninterface RelationResult extends RelResult {\n __temp_key__: string;\n}\n\ntype GetRelationsResponse =\n | {\n results: Array<RelationResult>;\n pagination: {\n page: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['page']>;\n pageSize: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['pageSize']>;\n pageCount: number;\n total: number;\n } | null;\n error?: never;\n }\n | {\n results?: never;\n pagination?: never;\n error: errors.ApplicationError | errors.YupValidationError;\n };\n\nconst relationsApi = contentManagerApi.injectEndpoints({\n endpoints: (build) => ({\n getRelations: build.query<\n GetRelationsResponse,\n FindExisting.Params & {\n params?: FindExisting.Request['query'];\n }\n >({\n query: ({ model, id, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${id}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n id: queryArgs.id,\n targetField: queryArgs.targetField,\n locale: queryArgs.params?.locale,\n status: queryArgs.params?.status,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n *\n * Push new items at the beginning as latest items are shown first\n */\n currentCache.results = [\n ...prepareTempKeys(newItems.results, currentCache.results),\n ...currentCache.results,\n ];\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = prepareTempKeys(newItems.results);\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindExisting.Response) => {\n if ('results' in response && response.results) {\n return {\n ...response,\n results: prepareTempKeys(response.results.toReversed()),\n };\n } else {\n return response;\n }\n },\n providesTags: ['Relations'],\n }),\n searchRelations: build.query<\n FindAvailable.Response,\n FindAvailable.Params & {\n params?: FindAvailable.Request['query'];\n }\n >({\n query: ({ model, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n targetField: queryArgs.targetField,\n _q: queryArgs.params?._q,\n idsToOmit: queryArgs.params?.idsToOmit,\n idsToInclude: queryArgs.params?.idsToInclude,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...uniqueNewItems);\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = newItems.results;\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindAvailable.Response) => {\n if (response.results) {\n return {\n ...response,\n results: response.results,\n };\n } else {\n return response;\n }\n },\n }),\n }),\n});\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each relation item. This gives us\n * a stable identifier regardless of it's ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = (relations: RelResult[], existingRelations: RelationResult[] = []) => {\n const [firstItem] = existingRelations.slice(0);\n const keys = generateNKeysBetween(null, firstItem?.__temp_key__ ?? null, relations.length);\n\n return relations.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\nconst { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;\n\nexport { useGetRelationsQuery, useLazySearchRelationsQuery };\nexport type { RelationResult };\n","import type { MainField } from './attributes';\nimport type { RelationResult } from '../../../shared/contracts/relations';\n\n/**\n * @internal\n * @description Get the label of a relation, the contract has [key: string]: unknown,\n * so we need to check if the mainFieldKey is defined and if the relation has a value\n * under that property. If it does, we then verify it's type of string and return it.\n *\n * We fallback to the documentId.\n */\nconst getRelationLabel = (relation: RelationResult, mainField?: MainField): string => {\n const label = mainField && relation[mainField.name] ? relation[mainField.name] : null;\n\n if (typeof label === 'string') {\n return label;\n }\n\n return relation.documentId;\n};\n\nexport { getRelationLabel };\n","import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["prefixFileUrlWithBackendUrl","fileURL","startsWith","window","strapi","backendURL","useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout","relationsApi","contentManagerApi","injectEndpoints","endpoints","build","getRelations","query","model","id","targetField","params","url","method","config","serializeQueryArgs","args","endpointName","queryArgs","locale","status","merge","currentCache","newItems","pagination","page","results","prepareTempKeys","forceRefetch","currentArg","previousArg","pageSize","transformResponse","response","toReversed","providesTags","searchRelations","_q","idsToOmit","idsToInclude","existingIds","map","item","documentId","uniqueNewItems","filter","includes","push","relations","existingRelations","firstItem","slice","keys","generateNKeysBetween","__temp_key__","length","datum","index","useGetRelationsQuery","useLazySearchRelationsQuery","getRelationLabel","relation","mainField","label","name","usePrev","ref","useRef","current"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"usePrev-DAWUYIPh.mjs","sources":["../../../admin/src/utils/urls.ts","../../../admin/src/hooks/useDebounce.ts","../../../admin/src/services/relations.ts","../../../admin/src/utils/relations.ts","../../../admin/src/hooks/usePrev.ts"],"sourcesContent":["const prefixFileUrlWithBackendUrl = (fileURL?: string): string | undefined => {\n return !!fileURL && fileURL.startsWith('/') ? `${window.strapi.backendURL}${fileURL}` : fileURL;\n};\n\nexport { prefixFileUrlWithBackendUrl };\n","import { useEffect, useState } from 'react';\n\nexport function useDebounce<TValue>(value: TValue, delay: number): TValue {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { generateNKeysBetween } from 'fractional-indexing';\n\nimport {\n RelationResult as RelResult,\n FindAvailable,\n FindExisting,\n} from '../../../shared/contracts/relations';\n\nimport { contentManagerApi } from './api';\n\nimport type { Modules } from '@strapi/types';\nimport type { errors } from '@strapi/utils';\n\ninterface RelationResult extends RelResult {\n __temp_key__: string;\n}\n\ntype GetRelationsResponse =\n | {\n results: Array<RelationResult>;\n pagination: {\n page: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['page']>;\n pageSize: NonNullable<Modules.EntityService.Params.Pagination.PageNotation['pageSize']>;\n pageCount: number;\n total: number;\n } | null;\n error?: never;\n }\n | {\n results?: never;\n pagination?: never;\n error: errors.ApplicationError | errors.YupValidationError;\n };\n\nconst relationsApi = contentManagerApi.injectEndpoints({\n endpoints: (build) => ({\n getRelations: build.query<\n GetRelationsResponse,\n FindExisting.Params & {\n params?: FindExisting.Request['query'];\n }\n >({\n query: ({ model, id, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${id}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n id: queryArgs.id,\n targetField: queryArgs.targetField,\n locale: queryArgs.params?.locale,\n status: queryArgs.params?.status,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n *\n * Push new items at the beginning as latest items are shown first\n */\n currentCache.results = [\n ...prepareTempKeys(newItems.results, currentCache.results),\n ...currentCache.results,\n ];\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = prepareTempKeys(newItems.results);\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindExisting.Response) => {\n if ('results' in response && response.results) {\n return {\n ...response,\n results: prepareTempKeys(response.results.toReversed()),\n };\n } else {\n return response;\n }\n },\n providesTags: ['Relations'],\n }),\n searchRelations: build.query<\n FindAvailable.Response,\n FindAvailable.Params & {\n params?: FindAvailable.Request['query'];\n }\n >({\n query: ({ model, targetField, params }) => {\n return {\n url: `/content-manager/relations/${model}/${targetField}`,\n method: 'GET',\n config: {\n params,\n },\n };\n },\n serializeQueryArgs: (args) => {\n const { endpointName, queryArgs } = args;\n return {\n endpointName,\n model: queryArgs.model,\n targetField: queryArgs.targetField,\n _q: queryArgs.params?._q,\n idsToOmit: queryArgs.params?.idsToOmit,\n idsToInclude: queryArgs.params?.idsToInclude,\n };\n },\n merge: (currentCache, newItems) => {\n if (currentCache.pagination && newItems.pagination) {\n if (currentCache.pagination.page < newItems.pagination.page) {\n /**\n * Relations will always have unique IDs, so we can therefore assume\n * that we only need to push the new items to the cache.\n */\n const existingIds = currentCache.results.map((item) => item.documentId);\n const uniqueNewItems = newItems.results.filter(\n (item) => !existingIds.includes(item.documentId)\n );\n currentCache.results.push(...uniqueNewItems);\n currentCache.pagination = newItems.pagination;\n } else if (newItems.pagination.page === 1) {\n /**\n * We're resetting the relations\n */\n currentCache.results = newItems.results;\n currentCache.pagination = newItems.pagination;\n }\n }\n },\n forceRefetch({ currentArg, previousArg }) {\n if (!currentArg?.params && !previousArg?.params) {\n return false;\n }\n\n return (\n currentArg?.params?.page !== previousArg?.params?.page ||\n currentArg?.params?.pageSize !== previousArg?.params?.pageSize\n );\n },\n transformResponse: (response: FindAvailable.Response) => {\n if (response.results) {\n return {\n ...response,\n results: response.results,\n };\n } else {\n return response;\n }\n },\n }),\n }),\n});\n\n/**\n * @internal\n * @description Adds a `__temp_key__` to each relation item. This gives us\n * a stable identifier regardless of it's ids etc. that we can then use for drag and drop.\n */\nconst prepareTempKeys = (relations: RelResult[], existingRelations: RelationResult[] = []) => {\n const [firstItem] = existingRelations.slice(0);\n const keys = generateNKeysBetween(null, firstItem?.__temp_key__ ?? null, relations.length);\n\n return relations.map((datum, index) => ({\n ...datum,\n __temp_key__: keys[index],\n }));\n};\n\nconst { useGetRelationsQuery, useLazySearchRelationsQuery } = relationsApi;\n\nexport { useGetRelationsQuery, useLazySearchRelationsQuery };\nexport type { RelationResult };\n","import type { MainField } from './attributes';\nimport type { RelationResult } from '../../../shared/contracts/relations';\n\n/**\n * @internal\n * @description Get the label of a relation, the contract has [key: string]: unknown,\n * so we need to check if the mainFieldKey is defined and if the relation has a value\n * under that property. If it does, we then verify it's type of string and return it.\n *\n * We fallback to the documentId.\n */\nconst getRelationLabel = (relation: RelationResult, mainField?: MainField): string => {\n const label = mainField && relation[mainField.name] ? relation[mainField.name] : null;\n\n if (typeof label === 'string') {\n return label;\n }\n\n return relation.documentId;\n};\n\nexport { getRelationLabel };\n","import { useEffect, useRef } from 'react';\n\nexport const usePrev = <T>(value: T): T | undefined => {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n};\n"],"names":["prefixFileUrlWithBackendUrl","fileURL","startsWith","window","strapi","backendURL","useDebounce","value","delay","debouncedValue","setDebouncedValue","useState","useEffect","handler","setTimeout","clearTimeout","relationsApi","contentManagerApi","injectEndpoints","endpoints","build","getRelations","query","model","id","targetField","params","url","method","config","serializeQueryArgs","args","endpointName","queryArgs","locale","status","merge","currentCache","newItems","pagination","page","results","prepareTempKeys","forceRefetch","currentArg","previousArg","pageSize","transformResponse","response","toReversed","providesTags","searchRelations","_q","idsToOmit","idsToInclude","existingIds","map","item","documentId","uniqueNewItems","filter","includes","push","relations","existingRelations","firstItem","slice","keys","generateNKeysBetween","__temp_key__","length","datum","index","useGetRelationsQuery","useLazySearchRelationsQuery","getRelationLabel","relation","mainField","label","name","usePrev","ref","useRef","current"],"mappings":"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"}
|
package/dist/admin/index.js
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
4
4
|
|
5
5
|
require('@strapi/icons');
|
6
|
-
var index = require('./chunks/index-
|
6
|
+
var index = require('./chunks/index-BA_JLxKS.js');
|
7
7
|
require('prismjs');
|
8
8
|
require('react/jsx-runtime');
|
9
9
|
require('@strapi/admin/strapi-admin');
|
package/dist/admin/index.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
import '@strapi/icons';
|
2
|
-
export { i as DocumentRBAC, D as DocumentStatus, k as buildValidParams, W as default, X as unstable_useContentManagerContext, U as unstable_useDocument, Y as unstable_useDocumentActions, d as unstable_useDocumentLayout, o as useDocumentRBAC } from './chunks/index-
|
2
|
+
export { i as DocumentRBAC, D as DocumentStatus, k as buildValidParams, W as default, X as unstable_useContentManagerContext, U as unstable_useDocument, Y as unstable_useDocumentActions, d as unstable_useDocumentLayout, o as useDocumentRBAC } from './chunks/index-CIOT3ggy.mjs';
|
3
3
|
import 'prismjs';
|
4
4
|
import 'react/jsx-runtime';
|
5
5
|
import '@strapi/admin/strapi-admin';
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@strapi/content-manager",
|
3
|
-
"version": "5.12.0-beta.
|
3
|
+
"version": "5.12.0-beta.2",
|
4
4
|
"description": "A powerful UI to easily manage your data.",
|
5
5
|
"repository": {
|
6
6
|
"type": "git",
|
@@ -66,8 +66,8 @@
|
|
66
66
|
"@sindresorhus/slugify": "1.1.0",
|
67
67
|
"@strapi/design-system": "2.0.0-rc.18",
|
68
68
|
"@strapi/icons": "2.0.0-rc.18",
|
69
|
-
"@strapi/types": "5.12.0-beta.
|
70
|
-
"@strapi/utils": "5.12.0-beta.
|
69
|
+
"@strapi/types": "5.12.0-beta.2",
|
70
|
+
"@strapi/utils": "5.12.0-beta.2",
|
71
71
|
"codemirror5": "npm:codemirror@^5.65.11",
|
72
72
|
"date-fns": "2.30.0",
|
73
73
|
"fractional-indexing": "3.2.0",
|
@@ -102,8 +102,8 @@
|
|
102
102
|
"yup": "0.32.9"
|
103
103
|
},
|
104
104
|
"devDependencies": {
|
105
|
-
"@strapi/admin": "5.12.0-beta.
|
106
|
-
"@strapi/database": "5.12.0-beta.
|
105
|
+
"@strapi/admin": "5.12.0-beta.2",
|
106
|
+
"@strapi/database": "5.12.0-beta.2",
|
107
107
|
"@testing-library/react": "15.0.7",
|
108
108
|
"@types/jest": "29.5.2",
|
109
109
|
"@types/lodash": "^4.14.191",
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"Preview-8i9JsLMo.js","sources":["../../../admin/src/preview/components/PreviewContent.tsx","../../../admin/src/preview/components/PreviewHeader.tsx","../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { usePreviewContext } from '../pages/Preview';\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\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=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent };\n","import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid, Flex } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { useDocumentContext } from '../../features/DocumentContext';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n variant=\"ghost\"\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst UnstablePreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n const onPreview = useDocumentContext('PreviewHeader', (state) => state.onPreview);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\n }>();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: document.documentId,\n document,\n meta,\n onPreview,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewHeader = () => {\n // Get the document title\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={title}>\n {title}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader, UnstablePreviewHeader };\n","import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n Blocker,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, IconButton, Portal } from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentContextProvider } from '../../features/DocumentContext';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader, UnstablePreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\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 layout: EditLayout;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\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\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\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?: Record<string, unknown>;\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\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,\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) {\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 yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validateSync(values, { 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 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 <DocumentContextProvider\n initialDocument={{\n documentId: documentId || '',\n model,\n collectionType,\n }}\n onPreview={onPreview}\n >\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status === 'published'\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 yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n {({ resetForm }) => (\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n {window.strapi.future.isEnabled('unstablePreviewSideEditor') ? (\n <>\n <Blocker onProceed={resetForm} />\n <UnstablePreviewHeader />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\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 <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\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=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n <IconButton\n variant=\"tertiary\"\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 position=\"absolute\"\n top={2}\n left={2}\n >\n <AnimatedArrow isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n </Box>\n </Flex>\n </>\n ) : (\n <>\n <PreviewHeader />\n <PreviewContent />\n </>\n )}\n </Flex>\n )}\n </FormContext>\n </PreviewProvider>\n </DocumentContextProvider>\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=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\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 };\n"],"names":["PreviewContent","previewUrl","usePreviewContext","state","url","formatMessage","useIntl","_jsx","Box","src","title","id","defaultMessage","width","height","borderWidth","tag","ClosePreviewButton","query","useQueryParams","canGoBack","useHistory","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","IconButton","variant","Link","relative","to","onClick","label","Cross","Status","document","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","UnstablePreviewHeader","plugins","useStrapiApp","onPreview","useDocumentContext","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","Flex","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","PreviewHeader","Grid","gridCols","Item","xs","paddingTop","paddingBottom","marginBottom","alignItems","margin","styled","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","AnimatedArrow","ArrowLineLeft","isSideEditorOpen","PreviewPage","useLocation","iframeRef","React","useRef","setIsSideEditorOpen","useState","slug","useParams","params","useMemo","buildValidParams","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","data","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","yupSchema","createYupSchema","attributes","components","abortEarly","current","contentWindow","postMessage","URL","origin","Title","DocumentContextProvider","initialDocument","layout","FormContext","method","initialErrors","forceValidation","validate","resetForm","direction","strapi","future","isEnabled","Blocker","onProceed","overflow","transition","FormLayout","hasBackground","data-testid","ref","prev","top","left","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":"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"}
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"Preview-j5KbuGaQ.mjs","sources":["../../../admin/src/preview/components/PreviewContent.tsx","../../../admin/src/preview/components/PreviewHeader.tsx","../../../admin/src/preview/pages/Preview.tsx"],"sourcesContent":["import { Box } from '@strapi/design-system';\nimport { useIntl } from 'react-intl';\n\nimport { usePreviewContext } from '../pages/Preview';\n\nconst PreviewContent = () => {\n const previewUrl = usePreviewContext('PreviewContent', (state) => state.url);\n\n const { formatMessage } = useIntl();\n\n return (\n <Box\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=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n );\n};\n\nexport { PreviewContent };\n","import * as React from 'react';\n\nimport {\n DescriptionComponentRenderer,\n useClipboard,\n useHistory,\n useNotification,\n useQueryParams,\n useStrapiApp,\n} from '@strapi/admin/strapi-admin';\nimport { IconButton, Tabs, Typography, Grid, Flex } from '@strapi/design-system';\nimport { Cross, Link as LinkIcon } from '@strapi/icons';\nimport { stringify } from 'qs';\nimport { useIntl } from 'react-intl';\nimport { Link, type To } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { InjectionZone } from '../../components/InjectionZone';\nimport { useDocumentContext } from '../../features/DocumentContext';\nimport { DocumentActionButton } from '../../pages/EditView/components/DocumentActions';\nimport { DocumentStatus } from '../../pages/EditView/components/DocumentStatus';\nimport { getDocumentStatus } from '../../pages/EditView/EditViewPage';\nimport { usePreviewContext } from '../pages/Preview';\n\nimport type { ContentManagerPlugin, DocumentActionProps } from '../../content-manager';\n\n/* -------------------------------------------------------------------------------------------------\n * ClosePreviewButton\n * -----------------------------------------------------------------------------------------------*/\n\nconst ClosePreviewButton = () => {\n const [{ query }] = useQueryParams<{\n plugins?: Record<string, unknown>;\n }>();\n const { formatMessage } = useIntl();\n\n const canGoBack = useHistory('BackButton', (state) => state.canGoBack);\n const goBack = useHistory('BackButton', (state) => state.goBack);\n const history = useHistory('BackButton', (state) => state.history);\n const locationIndex = useHistory('BackButton', (state) => state.currentLocationIndex);\n\n /**\n * Get the link destination from the history.\n * Rely on a fallback (the parent edit view page) if there's no page to go back .\n */\n const historyTo = canGoBack ? history.at(locationIndex - 2) : undefined;\n const fallback = {\n pathname: '..',\n search: stringify(query, { encode: false }),\n } satisfies To;\n const toWithFallback = historyTo ?? fallback;\n\n const handleClick = (e: React.MouseEvent) => {\n if (canGoBack) {\n // Prevent normal link behavior, go back in the history stack instead\n e.preventDefault();\n goBack();\n return;\n }\n\n // Otherwise rely on native link behavior to go back to the edit view. We don't use navigate()\n // here in order to get the relative=\"path\" functionality from the Link component.\n };\n\n return (\n <IconButton\n variant=\"ghost\"\n tag={Link}\n relative=\"path\"\n to={toWithFallback}\n onClick={handleClick}\n label={formatMessage({\n id: 'content-manager.preview.header.close',\n defaultMessage: 'Close preview',\n })}\n >\n <Cross />\n </IconButton>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * Status\n * -----------------------------------------------------------------------------------------------*/\n\nconst Status = () => {\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublished = schema?.options?.draftAndPublish ?? false;\n\n if (!hasDraftAndPublished) {\n return null;\n }\n\n const status = getDocumentStatus(document, meta);\n\n return <DocumentStatus status={status} size=\"XS\" />;\n};\n\nconst PreviewTabs = () => {\n const { formatMessage } = useIntl();\n\n // URL query params\n const [{ query }, setQuery] = useQueryParams<{ status: 'draft' | 'published' }>();\n\n // Get status\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const hasDraftAndPublish = schema?.options?.draftAndPublish ?? false;\n const documentStatus = getDocumentStatus(document, meta);\n\n const handleTabChange = (status: string) => {\n if (status === 'published' || status === 'draft') {\n setQuery({ status }, 'push', true);\n }\n };\n\n if (!hasDraftAndPublish) {\n return null;\n }\n\n return (\n <Tabs.Root variant=\"simple\" value={query.status || 'draft'} onValueChange={handleTabChange}>\n <Tabs.List\n aria-label={formatMessage({\n id: 'preview.tabs.label',\n defaultMessage: 'Document status',\n })}\n >\n <StatusTab value=\"draft\">\n {formatMessage({\n id: 'content-manager.containers.List.draft',\n defaultMessage: 'draft',\n })}\n </StatusTab>\n <StatusTab value=\"published\" disabled={documentStatus === 'draft'}>\n {formatMessage({\n id: 'content-manager.containers.List.published',\n defaultMessage: 'published',\n })}\n </StatusTab>\n </Tabs.List>\n </Tabs.Root>\n );\n};\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewHeader\n * -----------------------------------------------------------------------------------------------*/\n\nconst UnstablePreviewHeader = () => {\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n const document = usePreviewContext('PreviewHeader', (state) => state.document);\n const schema = usePreviewContext('PreviewHeader', (state) => state.schema);\n const meta = usePreviewContext('PreviewHeader', (state) => state.meta);\n const plugins = useStrapiApp('PreviewHeader', (state) => state.plugins);\n const onPreview = useDocumentContext('PreviewHeader', (state) => state.onPreview);\n\n const [{ query }] = useQueryParams<{\n status?: 'draft' | 'published';\n }>();\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n const hasDraftAndPublish = schema.options?.draftAndPublish ?? false;\n const documentActionProps = {\n activeTab: query.status ?? null,\n collectionType: schema.kind === 'collectionType' ? 'collection-types' : 'single-types',\n model: schema.uid,\n documentId: document.documentId,\n document,\n meta,\n onPreview,\n } satisfies DocumentActionProps;\n\n return (\n <Flex height=\"48px\" gap={4} background=\"neutral0\" borderColor=\"neutral150\" tag=\"header\">\n {/* Title and status */}\n <TitleContainer height=\"100%\" paddingLeft={2} paddingRight={4}>\n <ClosePreviewButton />\n <PreviewTitle\n tag=\"h1\"\n title={title}\n maxWidth=\"200px\"\n fontSize={2}\n paddingLeft={2}\n paddingRight={3}\n fontWeight={600}\n >\n {title}\n </PreviewTitle>\n <Status />\n </TitleContainer>\n\n {/* Tabs and actions */}\n <Flex\n flex={1}\n paddingRight={2}\n gap={2}\n justifyContent={hasDraftAndPublish ? 'space-between' : 'flex-end'}\n >\n <Flex flex=\"1 1 70%\">\n <PreviewTabs />\n </Flex>\n <Flex gap={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n <InjectionZone area=\"preview.actions\" />\n <DescriptionComponentRenderer\n props={documentActionProps}\n descriptions={(\n plugins['content-manager'].apis as ContentManagerPlugin['config']['apis']\n ).getDocumentActions('preview')}\n >\n {(actions) => {\n const filteredActions = actions.filter((action) =>\n [action.position].flat().includes('preview')\n );\n const [primaryAction, secondaryAction] = filteredActions;\n\n if (!primaryAction && !secondaryAction) return null;\n\n // Both actions are available when draft and publish enabled\n if (primaryAction && secondaryAction) {\n return (\n <>\n {/* Save */}\n <DocumentActionButton\n {...secondaryAction}\n variant={secondaryAction.variant || 'secondary'}\n />\n {/* Publish */}\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'default'}\n />\n </>\n );\n }\n\n // Otherwise we just have the save action\n return (\n <DocumentActionButton\n {...primaryAction}\n variant={primaryAction.variant || 'secondary'}\n />\n );\n }}\n </DescriptionComponentRenderer>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nconst PreviewHeader = () => {\n // Get the document title\n const title = usePreviewContext('PreviewHeader', (state) => state.title);\n\n const { formatMessage } = useIntl();\n const { toggleNotification } = useNotification();\n const { copy } = useClipboard();\n\n const handleCopyLink = () => {\n copy(window.location.href);\n toggleNotification({\n message: formatMessage({\n id: 'content-manager.preview.copy.success',\n defaultMessage: 'Copied preview link',\n }),\n type: 'success',\n });\n };\n\n return (\n <Grid.Root\n gap={3}\n gridCols={3}\n paddingLeft={2}\n paddingRight={2}\n background=\"neutral0\"\n borderColor=\"neutral150\"\n tag=\"header\"\n >\n {/* Title and status */}\n <Grid.Item xs={1} paddingTop={2} paddingBottom={2} gap={3}>\n <ClosePreviewButton />\n <PreviewTitle tag=\"h1\" fontWeight={600} fontSize={2} maxWidth=\"200px\" title={title}>\n {title}\n </PreviewTitle>\n <Status />\n </Grid.Item>\n {/* Tabs */}\n <Grid.Item xs={1} marginBottom=\"-1px\" alignItems=\"end\" margin=\"auto\">\n <PreviewTabs />\n </Grid.Item>\n {/* Copy link */}\n <Grid.Item xs={1} justifyContent=\"end\" paddingTop={2} paddingBottom={2}>\n <IconButton\n type=\"button\"\n label={formatMessage({\n id: 'preview.copy.label',\n defaultMessage: 'Copy preview link',\n })}\n onClick={handleCopyLink}\n >\n <LinkIcon />\n </IconButton>\n </Grid.Item>\n </Grid.Root>\n );\n};\n\nconst PreviewTitle = styled(Typography)`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst StatusTab = styled(Tabs.Trigger)`\n text-transform: uppercase;\n`;\n\nconst TitleContainer = styled(Flex)`\n border-right: 1px solid ${({ theme }) => theme.colors.neutral150};\n`;\n\nexport { PreviewHeader, UnstablePreviewHeader };\n","import * as React from 'react';\n\nimport {\n Page,\n useQueryParams,\n useRBAC,\n createContext,\n Form as FormContext,\n Blocker,\n} from '@strapi/admin/strapi-admin';\nimport { Box, Flex, FocusTrap, IconButton, Portal } from '@strapi/design-system';\nimport { ArrowLineLeft } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { useLocation, useParams } from 'react-router-dom';\nimport { styled } from 'styled-components';\n\nimport { GetPreviewUrl } from '../../../../shared/contracts/preview';\nimport { COLLECTION_TYPES } from '../../constants/collections';\nimport { DocumentContextProvider } from '../../features/DocumentContext';\nimport { DocumentRBAC } from '../../features/DocumentRBAC';\nimport { type UseDocument, useDocument } from '../../hooks/useDocument';\nimport { type EditLayout, useDocumentLayout } from '../../hooks/useDocumentLayout';\nimport { FormLayout } from '../../pages/EditView/components/FormLayout';\nimport { buildValidParams } from '../../utils/api';\nimport { createYupSchema } from '../../utils/validation';\nimport { PreviewContent } from '../components/PreviewContent';\nimport { PreviewHeader, UnstablePreviewHeader } from '../components/PreviewHeader';\nimport { useGetPreviewUrlQuery } from '../services/preview';\n\nimport type { UID } from '@strapi/types';\n\n/* -------------------------------------------------------------------------------------------------\n * PreviewProvider\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 layout: EditLayout;\n}\n\nconst [PreviewProvider, usePreviewContext] = createContext<PreviewContextValue>('PreviewPage');\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\n const iframeRef = React.useRef<HTMLIFrameElement>(null);\n const [isSideEditorOpen, setIsSideEditorOpen] = React.useState(true);\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?: Record<string, unknown>;\n status?: string;\n }>();\n\n const params = React.useMemo(() => buildValidParams(query), [query]);\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,\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) {\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 yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validateSync(values, { 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 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 <DocumentContextProvider\n initialDocument={{\n documentId: documentId || '',\n model,\n collectionType,\n }}\n onPreview={onPreview}\n >\n <PreviewProvider\n url={previewUrl}\n document={documentResponse.document}\n title={documentTitle}\n meta={documentResponse.meta}\n schema={documentResponse.schema}\n layout={documentLayoutResponse.edit}\n >\n <FormContext\n method=\"PUT\"\n disabled={\n query.status === 'published' &&\n documentResponse &&\n documentResponse.document.status === 'published'\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 yupSchema = createYupSchema(\n documentResponse.schema?.attributes,\n documentResponse.components,\n {\n status: documentResponse.document?.status,\n ...options,\n }\n );\n\n return yupSchema.validate(values, { abortEarly: false });\n }}\n >\n {({ resetForm }) => (\n <Flex direction=\"column\" height=\"100%\" alignItems=\"stretch\">\n {window.strapi.future.isEnabled('unstablePreviewSideEditor') ? (\n <>\n <Blocker onProceed={resetForm} />\n <UnstablePreviewHeader />\n <Flex flex={1} overflow=\"auto\" alignItems=\"stretch\">\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 <Box position=\"relative\" flex={1} height=\"100%\" overflow=\"hidden\">\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=\"100%\"\n height=\"100%\"\n borderWidth={0}\n tag=\"iframe\"\n />\n <IconButton\n variant=\"tertiary\"\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 position=\"absolute\"\n top={2}\n left={2}\n >\n <AnimatedArrow isSideEditorOpen={isSideEditorOpen} />\n </IconButton>\n </Box>\n </Flex>\n </>\n ) : (\n <>\n <PreviewHeader />\n <PreviewContent />\n </>\n )}\n </Flex>\n )}\n </FormContext>\n </PreviewProvider>\n </DocumentContextProvider>\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=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\n background=\"neutral0\"\n >\n <Page.Error />\n </Box>\n );\n }\n\n return (\n <Box\n height=\"100vh\"\n width=\"100vw\"\n position=\"fixed\"\n top={0}\n left={0}\n zIndex={2}\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 };\n"],"names":["PreviewContent","previewUrl","usePreviewContext","state","url","formatMessage","useIntl","_jsx","Box","src","title","id","defaultMessage","width","height","borderWidth","tag","ClosePreviewButton","query","useQueryParams","canGoBack","useHistory","goBack","history","locationIndex","currentLocationIndex","historyTo","at","undefined","fallback","pathname","search","stringify","encode","toWithFallback","handleClick","e","preventDefault","IconButton","variant","Link","relative","to","onClick","label","Cross","Status","document","schema","meta","hasDraftAndPublished","options","draftAndPublish","status","getDocumentStatus","DocumentStatus","size","PreviewTabs","setQuery","hasDraftAndPublish","documentStatus","handleTabChange","Tabs","Root","value","onValueChange","_jsxs","List","aria-label","StatusTab","disabled","UnstablePreviewHeader","plugins","useStrapiApp","onPreview","useDocumentContext","toggleNotification","useNotification","copy","useClipboard","handleCopyLink","window","location","href","message","type","documentActionProps","activeTab","collectionType","kind","model","uid","documentId","Flex","gap","background","borderColor","TitleContainer","paddingLeft","paddingRight","PreviewTitle","maxWidth","fontSize","fontWeight","flex","justifyContent","LinkIcon","InjectionZone","area","DescriptionComponentRenderer","props","descriptions","apis","getDocumentActions","actions","filteredActions","filter","action","position","flat","includes","primaryAction","secondaryAction","_Fragment","DocumentActionButton","PreviewHeader","Grid","gridCols","Item","xs","paddingTop","paddingBottom","marginBottom","alignItems","margin","styled","Typography","Trigger","theme","colors","neutral150","PreviewProvider","createContext","AnimatedArrow","ArrowLineLeft","isSideEditorOpen","PreviewPage","useLocation","iframeRef","React","useRef","setIsSideEditorOpen","useState","slug","useParams","params","useMemo","buildValidParams","Error","COLLECTION_TYPES","previewUrlResponse","useGetPreviewUrlQuery","contentType","locale","documentResponse","useDocument","documentLayoutResponse","useDocumentLayout","isLoading","Page","Loading","initialValues","getInitialFormValues","error","data","NoData","documentTitle","getTitle","edit","settings","mainField","validateSync","values","yupSchema","createYupSchema","attributes","components","abortEarly","current","contentWindow","postMessage","URL","origin","Title","DocumentContextProvider","initialDocument","layout","FormContext","method","initialErrors","forceValidation","validate","resetForm","direction","strapi","future","isEnabled","Blocker","onProceed","overflow","transition","FormLayout","hasBackground","data-testid","ref","prev","top","left","ProtectedPreviewPageImpl","permissions","useRBAC","subject","zIndex","Protect","permission","DocumentRBAC","ProtectedPreviewPage","Portal","FocusTrap"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKA,MAAMA,cAAiB,GAAA,IAAA;AACrB,IAAA,MAAMC,aAAaC,iBAAkB,CAAA,gBAAA,EAAkB,CAACC,KAAAA,GAAUA,MAAMC,GAAG,CAAA;IAE3E,MAAM,EAAEC,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,qBACEC,GAACC,CAAAA,GAAAA,EAAAA;QACCC,GAAKR,EAAAA,UAAAA;AASLS,QAAAA,KAAAA,EAAOL,aAAc,CAAA;YACnBM,EAAI,EAAA,qCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;QACAC,KAAM,EAAA,MAAA;QACNC,MAAO,EAAA,MAAA;QACPC,WAAa,EAAA,CAAA;QACbC,GAAI,EAAA;AARCf,KAAAA,EAAAA,UAAAA,CAAAA;AAWX,CAAA;;ACLA;;AAEkG,qGAElG,MAAMgB,kBAAqB,GAAA,IAAA;AACzB,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IAGpB,MAAM,EAAEd,aAAa,EAAE,GAAGC,OAAAA,EAAAA;AAE1B,IAAA,MAAMc,YAAYC,UAAW,CAAA,YAAA,EAAc,CAAClB,KAAAA,GAAUA,MAAMiB,SAAS,CAAA;AACrE,IAAA,MAAME,SAASD,UAAW,CAAA,YAAA,EAAc,CAAClB,KAAAA,GAAUA,MAAMmB,MAAM,CAAA;AAC/D,IAAA,MAAMC,UAAUF,UAAW,CAAA,YAAA,EAAc,CAAClB,KAAAA,GAAUA,MAAMoB,OAAO,CAAA;AACjE,IAAA,MAAMC,gBAAgBH,UAAW,CAAA,YAAA,EAAc,CAAClB,KAAAA,GAAUA,MAAMsB,oBAAoB,CAAA;AAEpF;;;AAGC,MACD,MAAMC,SAAYN,GAAAA,SAAAA,GAAYG,QAAQI,EAAE,CAACH,gBAAgB,CAAKI,CAAAA,GAAAA,SAAAA;AAC9D,IAAA,MAAMC,QAAW,GAAA;QACfC,QAAU,EAAA,IAAA;AACVC,QAAAA,MAAAA,EAAQC,UAAUd,KAAO,EAAA;YAAEe,MAAQ,EAAA;AAAM,SAAA;AAC3C,KAAA;AACA,IAAA,MAAMC,iBAAiBR,SAAaG,IAAAA,QAAAA;AAEpC,IAAA,MAAMM,cAAc,CAACC,CAAAA,GAAAA;AACnB,QAAA,IAAIhB,SAAW,EAAA;;AAEbgB,YAAAA,CAAAA,CAAEC,cAAc,EAAA;AAChBf,YAAAA,MAAAA,EAAAA;AACA,YAAA;AACF;;;AAIF,KAAA;AAEA,IAAA,qBACEf,GAAC+B,CAAAA,UAAAA,EAAAA;QACCC,OAAQ,EAAA,OAAA;QACRvB,GAAKwB,EAAAA,MAAAA;QACLC,QAAS,EAAA,MAAA;QACTC,EAAIR,EAAAA,cAAAA;QACJS,OAASR,EAAAA,WAAAA;AACTS,QAAAA,KAAAA,EAAOvC,aAAc,CAAA;YACnBM,EAAI,EAAA,sCAAA;YACJC,cAAgB,EAAA;AAClB,SAAA,CAAA;AAEA,QAAA,QAAA,gBAAAL,GAACsC,CAAAA,KAAAA,EAAAA,EAAAA;;AAGP,CAAA;AAEA;;AAEkG,qGAElG,MAAMC,MAAS,GAAA,IAAA;;AAEb,IAAA,MAAMC,WAAW7C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM4C,QAAQ,CAAA;AAC7E,IAAA,MAAMC,SAAS9C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM6C,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAO/C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM8C,IAAI,CAAA;IACrE,MAAMC,oBAAAA,GAAuBF,MAAQG,EAAAA,OAAAA,EAASC,eAAmB,IAAA,KAAA;AAEjE,IAAA,IAAI,CAACF,oBAAsB,EAAA;QACzB,OAAO,IAAA;AACT;IAEA,MAAMG,MAAAA,GAASC,kBAAkBP,QAAUE,EAAAA,IAAAA,CAAAA;AAE3C,IAAA,qBAAO1C,GAACgD,CAAAA,cAAAA,EAAAA;QAAeF,MAAQA,EAAAA,MAAAA;QAAQG,IAAK,EAAA;;AAC9C,CAAA;AAEA,MAAMC,WAAc,GAAA,IAAA;IAClB,MAAM,EAAEpD,aAAa,EAAE,GAAGC,OAAAA,EAAAA;;AAG1B,IAAA,MAAM,CAAC,EAAEY,KAAK,EAAE,EAAEwC,SAAS,GAAGvC,cAAAA,EAAAA;;AAG9B,IAAA,MAAM4B,WAAW7C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM4C,QAAQ,CAAA;AAC7E,IAAA,MAAMC,SAAS9C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM6C,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAO/C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM8C,IAAI,CAAA;IACrE,MAAMU,kBAAAA,GAAqBX,MAAQG,EAAAA,OAAAA,EAASC,eAAmB,IAAA,KAAA;IAC/D,MAAMQ,cAAAA,GAAiBN,kBAAkBP,QAAUE,EAAAA,IAAAA,CAAAA;AAEnD,IAAA,MAAMY,kBAAkB,CAACR,MAAAA,GAAAA;QACvB,IAAIA,MAAAA,KAAW,WAAeA,IAAAA,MAAAA,KAAW,OAAS,EAAA;YAChDK,QAAS,CAAA;AAAEL,gBAAAA;AAAO,aAAA,EAAG,MAAQ,EAAA,IAAA,CAAA;AAC/B;AACF,KAAA;AAEA,IAAA,IAAI,CAACM,kBAAoB,EAAA;QACvB,OAAO,IAAA;AACT;IAEA,qBACEpD,GAAA,CAACuD,KAAKC,IAAI,EAAA;QAACxB,OAAQ,EAAA,QAAA;QAASyB,KAAO9C,EAAAA,KAAAA,CAAMmC,MAAM,IAAI,OAAA;QAASY,aAAeJ,EAAAA,eAAAA;gCACzEK,IAAA,CAACJ,KAAKK,IAAI,EAAA;AACRC,YAAAA,YAAAA,EAAY/D,aAAc,CAAA;gBACxBM,EAAI,EAAA,oBAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;;8BAEAL,GAAC8D,CAAAA,SAAAA,EAAAA;oBAAUL,KAAM,EAAA,OAAA;8BACd3D,aAAc,CAAA;wBACbM,EAAI,EAAA,uCAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;8BAEFL,GAAC8D,CAAAA,SAAAA,EAAAA;oBAAUL,KAAM,EAAA,WAAA;AAAYM,oBAAAA,QAAAA,EAAUV,cAAmB,KAAA,OAAA;8BACvDvD,aAAc,CAAA;wBACbM,EAAI,EAAA,2CAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA;;;;;AAKV,CAAA;AAEA;;AAEkG,qGAElG,MAAM2D,qBAAwB,GAAA,IAAA;AAC5B,IAAA,MAAM7D,QAAQR,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAMO,KAAK,CAAA;AACvE,IAAA,MAAMqC,WAAW7C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM4C,QAAQ,CAAA;AAC7E,IAAA,MAAMC,SAAS9C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM6C,MAAM,CAAA;AACzE,IAAA,MAAMC,OAAO/C,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAM8C,IAAI,CAAA;AACrE,IAAA,MAAMuB,UAAUC,YAAa,CAAA,eAAA,EAAiB,CAACtE,KAAAA,GAAUA,MAAMqE,OAAO,CAAA;AACtE,IAAA,MAAME,YAAYC,kBAAmB,CAAA,eAAA,EAAiB,CAACxE,KAAAA,GAAUA,MAAMuE,SAAS,CAAA;AAEhF,IAAA,MAAM,CAAC,EAAExD,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;IAGpB,MAAM,EAAEd,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEsE,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,EAAAA;AAEjB,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBF,IAAKG,CAAAA,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;QACzBP,kBAAmB,CAAA;AACjBQ,YAAAA,OAAAA,EAAS/E,aAAc,CAAA;gBACrBM,EAAI,EAAA,sCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAyE,IAAM,EAAA;AACR,SAAA,CAAA;AACF,KAAA;AAEA,IAAA,MAAM1B,kBAAqBX,GAAAA,MAAAA,CAAOG,OAAO,EAAEC,eAAmB,IAAA,KAAA;AAC9D,IAAA,MAAMkC,mBAAsB,GAAA;QAC1BC,SAAWrE,EAAAA,KAAAA,CAAMmC,MAAM,IAAI,IAAA;AAC3BmC,QAAAA,cAAAA,EAAgBxC,MAAOyC,CAAAA,IAAI,KAAK,gBAAA,GAAmB,kBAAqB,GAAA,cAAA;AACxEC,QAAAA,KAAAA,EAAO1C,OAAO2C,GAAG;AACjBC,QAAAA,UAAAA,EAAY7C,SAAS6C,UAAU;AAC/B7C,QAAAA,QAAAA;AACAE,QAAAA,IAAAA;AACAyB,QAAAA;AACF,KAAA;AAEA,IAAA,qBACER,IAAC2B,CAAAA,IAAAA,EAAAA;QAAK/E,MAAO,EAAA,MAAA;QAAOgF,GAAK,EAAA,CAAA;QAAGC,UAAW,EAAA,UAAA;QAAWC,WAAY,EAAA,YAAA;QAAahF,GAAI,EAAA,QAAA;;0BAE7EkD,IAAC+B,CAAAA,cAAAA,EAAAA;gBAAenF,MAAO,EAAA,MAAA;gBAAOoF,WAAa,EAAA,CAAA;gBAAGC,YAAc,EAAA,CAAA;;kCAC1D5F,GAACU,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;kCACDV,GAAC6F,CAAAA,YAAAA,EAAAA;wBACCpF,GAAI,EAAA,IAAA;wBACJN,KAAOA,EAAAA,KAAAA;wBACP2F,QAAS,EAAA,OAAA;wBACTC,QAAU,EAAA,CAAA;wBACVJ,WAAa,EAAA,CAAA;wBACbC,YAAc,EAAA,CAAA;wBACdI,UAAY,EAAA,GAAA;AAEX7F,wBAAAA,QAAAA,EAAAA;;kCAEHH,GAACuC,CAAAA,MAAAA,EAAAA,EAAAA;;;0BAIHoB,IAAC2B,CAAAA,IAAAA,EAAAA;gBACCW,IAAM,EAAA,CAAA;gBACNL,YAAc,EAAA,CAAA;gBACdL,GAAK,EAAA,CAAA;AACLW,gBAAAA,cAAAA,EAAgB9C,qBAAqB,eAAkB,GAAA,UAAA;;kCAEvDpD,GAACsF,CAAAA,IAAAA,EAAAA;wBAAKW,IAAK,EAAA,SAAA;AACT,wBAAA,QAAA,gBAAAjG,GAACkD,CAAAA,WAAAA,EAAAA,EAAAA;;kCAEHS,IAAC2B,CAAAA,IAAAA,EAAAA;wBAAKC,GAAK,EAAA,CAAA;;0CACTvF,GAAC+B,CAAAA,UAAAA,EAAAA;gCACC+C,IAAK,EAAA,QAAA;AACLzC,gCAAAA,KAAAA,EAAOvC,aAAc,CAAA;oCACnBM,EAAI,EAAA,oBAAA;oCACJC,cAAgB,EAAA;AAClB,iCAAA,CAAA;gCACA+B,OAASqC,EAAAA,cAAAA;AAET,gCAAA,QAAA,gBAAAzE,GAACmG,CAAAA,IAAAA,EAAAA,EAAAA;;0CAEHnG,GAACoG,CAAAA,aAAAA,EAAAA;gCAAcC,IAAK,EAAA;;0CACpBrG,GAACsG,CAAAA,4BAAAA,EAAAA;gCACCC,KAAOxB,EAAAA,mBAAAA;gCACPyB,YAAc,EACZvC,OAAO,CAAC,iBAAA,CAAkB,CAACwC,IAAI,CAC/BC,kBAAkB,CAAC,SAAA,CAAA;0CAEpB,CAACC,OAAAA,GAAAA;AACA,oCAAA,MAAMC,eAAkBD,GAAAA,OAAAA,CAAQE,MAAM,CAAC,CAACC,MACtC,GAAA;AAACA,4CAAAA,MAAAA,CAAOC;yCAAS,CAACC,IAAI,EAAGC,CAAAA,QAAQ,CAAC,SAAA,CAAA,CAAA;oCAEpC,MAAM,CAACC,aAAeC,EAAAA,eAAAA,CAAgB,GAAGP,eAAAA;AAEzC,oCAAA,IAAI,CAACM,aAAAA,IAAiB,CAACC,eAAAA,EAAiB,OAAO,IAAA;;AAG/C,oCAAA,IAAID,iBAAiBC,eAAiB,EAAA;wCACpC,qBACExD,IAAA,CAAAyD,QAAA,EAAA;;8DAEEpH,GAACqH,CAAAA,oBAAAA,EAAAA;AACE,oDAAA,GAAGF,eAAe;oDACnBnF,OAASmF,EAAAA,eAAAA,CAAgBnF,OAAO,IAAI;;8DAGtChC,GAACqH,CAAAA,oBAAAA,EAAAA;AACE,oDAAA,GAAGH,aAAa;oDACjBlF,OAASkF,EAAAA,aAAAA,CAAclF,OAAO,IAAI;;;;AAI1C;;AAGA,oCAAA,qBACEhC,GAACqH,CAAAA,oBAAAA,EAAAA;AACE,wCAAA,GAAGH,aAAa;wCACjBlF,OAASkF,EAAAA,aAAAA,CAAclF,OAAO,IAAI;;AAGxC;;;;;;;;AAMZ,CAAA;AAEA,MAAMsF,aAAgB,GAAA,IAAA;;AAEpB,IAAA,MAAMnH,QAAQR,iBAAkB,CAAA,eAAA,EAAiB,CAACC,KAAAA,GAAUA,MAAMO,KAAK,CAAA;IAEvE,MAAM,EAAEL,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAC1B,MAAM,EAAEsE,kBAAkB,EAAE,GAAGC,eAAAA,EAAAA;IAC/B,MAAM,EAAEC,IAAI,EAAE,GAAGC,YAAAA,EAAAA;AAEjB,IAAA,MAAMC,cAAiB,GAAA,IAAA;QACrBF,IAAKG,CAAAA,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAAA;QACzBP,kBAAmB,CAAA;AACjBQ,YAAAA,OAAAA,EAAS/E,aAAc,CAAA;gBACrBM,EAAI,EAAA,sCAAA;gBACJC,cAAgB,EAAA;AAClB,aAAA,CAAA;YACAyE,IAAM,EAAA;AACR,SAAA,CAAA;AACF,KAAA;IAEA,qBACEnB,IAAA,CAAC4D,KAAK/D,IAAI,EAAA;QACR+B,GAAK,EAAA,CAAA;QACLiC,QAAU,EAAA,CAAA;QACV7B,WAAa,EAAA,CAAA;QACbC,YAAc,EAAA,CAAA;QACdJ,UAAW,EAAA,UAAA;QACXC,WAAY,EAAA,YAAA;QACZhF,GAAI,EAAA,QAAA;;AAGJ,0BAAAkD,IAAA,CAAC4D,KAAKE,IAAI,EAAA;gBAACC,EAAI,EAAA,CAAA;gBAAGC,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;gBAAGrC,GAAK,EAAA,CAAA;;kCACtDvF,GAACU,CAAAA,kBAAAA,EAAAA,EAAAA,CAAAA;kCACDV,GAAC6F,CAAAA,YAAAA,EAAAA;wBAAapF,GAAI,EAAA,IAAA;wBAAKuF,UAAY,EAAA,GAAA;wBAAKD,QAAU,EAAA,CAAA;wBAAGD,QAAS,EAAA,OAAA;wBAAQ3F,KAAOA,EAAAA,KAAAA;AAC1EA,wBAAAA,QAAAA,EAAAA;;kCAEHH,GAACuC,CAAAA,MAAAA,EAAAA,EAAAA;;;AAGH,0BAAAvC,GAAA,CAACuH,KAAKE,IAAI,EAAA;gBAACC,EAAI,EAAA,CAAA;gBAAGG,YAAa,EAAA,MAAA;gBAAOC,UAAW,EAAA,KAAA;gBAAMC,MAAO,EAAA,MAAA;AAC5D,gBAAA,QAAA,gBAAA/H,GAACkD,CAAAA,WAAAA,EAAAA,EAAAA;;AAGH,0BAAAlD,GAAA,CAACuH,KAAKE,IAAI,EAAA;gBAACC,EAAI,EAAA,CAAA;gBAAGxB,cAAe,EAAA,KAAA;gBAAMyB,UAAY,EAAA,CAAA;gBAAGC,aAAe,EAAA,CAAA;AACnE,gBAAA,QAAA,gBAAA5H,GAAC+B,CAAAA,UAAAA,EAAAA;oBACC+C,IAAK,EAAA,QAAA;AACLzC,oBAAAA,KAAAA,EAAOvC,aAAc,CAAA;wBACnBM,EAAI,EAAA,oBAAA;wBACJC,cAAgB,EAAA;AAClB,qBAAA,CAAA;oBACA+B,OAASqC,EAAAA,cAAAA;AAET,oBAAA,QAAA,gBAAAzE,GAACmG,CAAAA,IAAAA,EAAAA,EAAAA;;;;;AAKX,CAAA;AAEA,MAAMN,YAAAA,GAAemC,MAAOC,CAAAA,UAAAA,CAAW;;;;AAIvC,CAAC;AAED,MAAMnE,SAAYkE,GAAAA,MAAAA,CAAOzE,IAAK2E,CAAAA,OAAO,CAAC;;AAEtC,CAAC;AAED,MAAMxC,cAAAA,GAAiBsC,MAAO1C,CAAAA,IAAAA,CAAK;0BACT,EAAE,CAAC,EAAE6C,KAAK,EAAE,GAAKA,KAAMC,CAAAA,MAAM,CAACC,UAAU,CAAC;AACnE,CAAC;;AChTD,MAAM,CAACC,eAAAA,EAAiB3I,iBAAkB,CAAA,GAAG4I,aAAmC,CAAA,aAAA;AAEhF;;AAEkG,qGAElG,MAAMC,aAAAA,GAAgBR,MAAOS,CAAAA,aAAAA,CAA6C;;AAEhE,UAAA,EAAE,CAAClC,KAAWA,GAAAA,KAAAA,CAAMmC,gBAAgB,GAAG,SAAS,QAAU,CAAA;;AAEpE,CAAC;AAED,MAAMC,WAAc,GAAA,IAAA;AAClB,IAAA,MAAMhE,QAAWiE,GAAAA,WAAAA,EAAAA;IACjB,MAAM,EAAE9I,aAAa,EAAE,GAAGC,OAAAA,EAAAA;IAE1B,MAAM8I,SAAAA,GAAYC,KAAMC,CAAAA,MAAM,CAAoB,IAAA,CAAA;AAClD,IAAA,MAAM,CAACL,gBAAkBM,EAAAA,mBAAAA,CAAoB,GAAGF,KAAAA,CAAMG,QAAQ,CAAC,IAAA,CAAA;;IAG/D,MAAM,EACJC,MAAM/D,KAAK,EACX/E,IAAIiF,UAAU,EACdJ,cAAc,EACf,GAAGkE,SAAAA,EAAAA;AAKJ,IAAA,MAAM,CAAC,EAAExI,KAAK,EAAE,CAAC,GAAGC,cAAAA,EAAAA;AAKpB,IAAA,MAAMwI,SAASN,KAAMO,CAAAA,OAAO,CAAC,IAAMC,iBAAiB3I,KAAQ,CAAA,EAAA;AAACA,QAAAA;AAAM,KAAA,CAAA;AAEnE,IAAA,IAAI,CAACsE,cAAgB,EAAA;AACnB,QAAA,MAAM,IAAIsE,KAAM,CAAA,6CAAA,CAAA;AAClB;AAEA,IAAA,IAAI,CAACpE,KAAO,EAAA;AACV,QAAA,MAAM,IAAIoE,KAAM,CAAA,oCAAA,CAAA;AAClB;;IAGA,IAAItE,cAAAA,KAAmBuE,gBAAoB,IAAA,CAACnE,UAAY,EAAA;AACtD,QAAA,MAAM,IAAIkE,KAAM,CAAA,yCAAA,CAAA;AAClB;AAEA,IAAA,MAAME,qBAAqBC,qBAAsB,CAAA;QAC/CN,MAAQ,EAAA;YACNO,WAAaxE,EAAAA;AACf,SAAA;QACAxE,KAAO,EAAA;AACL0E,YAAAA,UAAAA;AACAuE,YAAAA,MAAAA,EAAQR,OAAOQ,MAAM;AACrB9G,YAAAA,MAAAA,EAAQsG,OAAOtG;AACjB;AACF,KAAA,CAAA;AACA,IAAA,MAAM+G,mBAAmBC,WAAY,CAAA;AACnC3E,QAAAA,KAAAA;AACAF,QAAAA,cAAAA;AACAI,QAAAA,UAAAA;AACA+D,QAAAA;AACF,KAAA,CAAA;AACA,IAAA,MAAMW,yBAAyBC,iBAAkB7E,CAAAA,KAAAA,CAAAA;IAEjD,MAAM8E,SAAAA,GACJR,mBAAmBQ,SAAS,IAAIF,uBAAuBE,SAAS,IAAIJ,iBAAiBI,SAAS;AAChG,IAAA,IAAIA,SAAa,IAAA,CAACJ,gBAAiBrH,CAAAA,QAAQ,EAAE6C,UAAY,EAAA;QACvD,qBAAOrF,GAAA,CAACkK,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,MAAMC,aAAAA,GAAgBP,iBAAiBQ,oBAAoB,EAAA;AAE3D,IAAA,IACEZ,mBAAmBa,KAAK,IACxBP,uBAAuBO,KAAK,IAC5B,CAACT,gBAAiBrH,CAAAA,QAAQ,IAC1B,CAACqH,gBAAAA,CAAiBnH,IAAI,IACtB,CAACmH,iBAAiBpH,MAAM,IACxB,CAAC2H,aACD,EAAA;QACA,qBAAOpK,GAAA,CAACkK,KAAKX,KAAK,EAAA,EAAA,CAAA;AACpB;AAEA,IAAA,IAAI,CAACE,kBAAAA,CAAmBc,IAAI,EAAEA,MAAM1K,GAAK,EAAA;QACvC,qBAAOG,GAAA,CAACkK,KAAKM,MAAM,EAAA,EAAA,CAAA;AACrB;IAEA,MAAMC,aAAAA,GAAgBZ,iBAAiBa,QAAQ,CAACX,uBAAuBY,IAAI,CAACC,QAAQ,CAACC,SAAS,CAAA;IAE9F,MAAMC,YAAAA,GAAe,CAACC,MAAiCnI,EAAAA,OAAAA,GAAAA;QACrD,MAAMoI,SAAAA,GAAYC,gBAChBpB,gBAAiBpH,CAAAA,MAAM,EAAEyI,UACzBrB,EAAAA,gBAAAA,CAAiBsB,UAAU,EAC3B;YACErI,MAAQ+G,EAAAA,gBAAAA,CAAiBrH,QAAQ,EAAEM,MAAAA;AACnC,YAAA,GAAGF;AACL,SAAA,CAAA;QAGF,OAAOoI,SAAAA,CAAUF,YAAY,CAACC,MAAQ,EAAA;YAAEK,UAAY,EAAA;AAAM,SAAA,CAAA;AAC5D,KAAA;AAEA,IAAA,MAAM1L,aAAa+J,kBAAmBc,CAAAA,IAAI,CAACA,IAAI,CAAC1K,GAAG;AAEnD,IAAA,MAAMsE,SAAY,GAAA,IAAA;QAChB0E,SAAWwC,EAAAA,OAAAA,EAASC,eAAeC,WACjC,CAAA;YAAEzG,IAAM,EAAA;AAAe,SAAA;AAEvB,QAAA,IAAI0G,IAAI3C,SAAUwC,CAAAA,OAAO,CAACnL,GAAG,EAAEuL,MAAM,CAAA;AAEzC,KAAA;IAEA,qBACE9H,IAAA,CAAAyD,QAAA,EAAA;;AACE,0BAAApH,GAAA,CAACkK,KAAKwB,KAAK,EAAA;0BACR5L,aACC,CAAA;oBACEM,EAAI,EAAA,oCAAA;oBACJC,cAAgB,EAAA;iBAElB,EAAA;oBACEsJ,WAAac,EAAAA;AACf,iBAAA;;0BAGJzK,GAAC2L,CAAAA,uBAAAA,EAAAA;gBACCC,eAAiB,EAAA;AACfvG,oBAAAA,UAAAA,EAAYA,UAAc,IAAA,EAAA;AAC1BF,oBAAAA,KAAAA;AACAF,oBAAAA;AACF,iBAAA;gBACAd,SAAWA,EAAAA,SAAAA;AAEX,gBAAA,QAAA,gBAAAnE,GAACsI,CAAAA,eAAAA,EAAAA;oBACCzI,GAAKH,EAAAA,UAAAA;AACL8C,oBAAAA,QAAAA,EAAUqH,iBAAiBrH,QAAQ;oBACnCrC,KAAOsK,EAAAA,aAAAA;AACP/H,oBAAAA,IAAAA,EAAMmH,iBAAiBnH,IAAI;AAC3BD,oBAAAA,MAAAA,EAAQoH,iBAAiBpH,MAAM;AAC/BoJ,oBAAAA,MAAAA,EAAQ9B,uBAAuBY,IAAI;AAEnC,oBAAA,QAAA,gBAAA3K,GAAC8L,CAAAA,IAAAA,EAAAA;wBACCC,MAAO,EAAA,KAAA;wBACPhI,QACEpD,EAAAA,KAAAA,CAAMmC,MAAM,KAAK,WAAA,IACjB+G,oBACAA,gBAAiBrH,CAAAA,QAAQ,CAACM,MAAM,KAAK,WAAA;AAEvCsH,wBAAAA,aAAAA,EAAeP,iBAAiBQ,oBAAoB,EAAA;AACpD2B,wBAAAA,aAAAA,EAAerH,UAAU/E,KAAOqM,EAAAA,eAAAA,GAAkBnB,aAAaV,aAAe,EAAA,MAAM,EAAC;wBACrF7J,MAAO,EAAA,MAAA;AACP2L,wBAAAA,QAAAA,EAAU,CAACnB,MAAiCnI,EAAAA,OAAAA,GAAAA;4BAC1C,MAAMoI,SAAAA,GAAYC,gBAChBpB,gBAAiBpH,CAAAA,MAAM,EAAEyI,UACzBrB,EAAAA,gBAAAA,CAAiBsB,UAAU,EAC3B;gCACErI,MAAQ+G,EAAAA,gBAAAA,CAAiBrH,QAAQ,EAAEM,MAAAA;AACnC,gCAAA,GAAGF;AACL,6BAAA,CAAA;4BAGF,OAAOoI,SAAAA,CAAUkB,QAAQ,CAACnB,MAAQ,EAAA;gCAAEK,UAAY,EAAA;AAAM,6BAAA,CAAA;AACxD,yBAAA;AAEC,wBAAA,QAAA,EAAA,CAAC,EAAEe,SAAS,EAAE,iBACbnM,GAACsF,CAAAA,IAAAA,EAAAA;gCAAK8G,SAAU,EAAA,QAAA;gCAAS7L,MAAO,EAAA,MAAA;gCAAOuH,UAAW,EAAA,SAAA;AAC/CpD,gCAAAA,QAAAA,EAAAA,MAAAA,CAAO2H,MAAM,CAACC,MAAM,CAACC,SAAS,CAAC,2BAC9B,CAAA,iBAAA5I,IAAA,CAAAyD,QAAA,EAAA;;sDACEpH,GAACwM,CAAAA,OAAAA,EAAAA;4CAAQC,SAAWN,EAAAA;;sDACpBnM,GAACgE,CAAAA,qBAAAA,EAAAA,EAAAA,CAAAA;sDACDL,IAAC2B,CAAAA,IAAAA,EAAAA;4CAAKW,IAAM,EAAA,CAAA;4CAAGyG,QAAS,EAAA,MAAA;4CAAO5E,UAAW,EAAA,SAAA;;8DACxC9H,GAACC,CAAAA,GAAAA,EAAAA;oDACCyM,QAAS,EAAA,MAAA;AACTpM,oDAAAA,KAAAA,EAAOoI,mBAAmB,KAAQ,GAAA,CAAA;oDAClClI,WAAY,EAAA,WAAA;oDACZiF,WAAY,EAAA,YAAA;oDACZkC,UAAY,EAAA,CAAA;oDACZC,aAAe,EAAA,CAAA;;AAEfjC,oDAAAA,WAAAA,EAAa+C,mBAAmB,CAAI,GAAA,CAAA;AACpC9C,oDAAAA,YAAAA,EAAc8C,mBAAmB,CAAI,GAAA,CAAA;oDACrCiE,UAAW,EAAA,sBAAA;AAEX,oDAAA,QAAA,gBAAA3M,GAAC4M,CAAAA,UAAAA,EAAAA;wDACCf,MAAQ9B,EAAAA,sBAAAA,CAAuBY,IAAI,CAACkB,MAAM;wDAC1CrJ,QAAUqH,EAAAA,gBAAAA;wDACVgD,aAAe,EAAA;;;8DAGnBlJ,IAAC1D,CAAAA,GAAAA,EAAAA;oDAAI8G,QAAS,EAAA,UAAA;oDAAWd,IAAM,EAAA,CAAA;oDAAG1F,MAAO,EAAA,MAAA;oDAAOmM,QAAS,EAAA,QAAA;;sEACvD1M,GAACC,CAAAA,GAAAA,EAAAA;4DACC6M,aAAY,EAAA,gBAAA;4DACZC,GAAKlE,EAAAA,SAAAA;4DACL3I,GAAKR,EAAAA,UAAAA;AASLS,4DAAAA,KAAAA,EAAOL,aAAc,CAAA;gEACnBM,EAAI,EAAA,qCAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;4DACAC,KAAM,EAAA,MAAA;4DACNC,MAAO,EAAA,MAAA;4DACPC,WAAa,EAAA,CAAA;4DACbC,GAAI,EAAA;AARCf,yDAAAA,EAAAA,UAAAA,CAAAA;sEAUPM,GAAC+B,CAAAA,UAAAA,EAAAA;4DACCC,OAAQ,EAAA,UAAA;AACRK,4DAAAA,KAAAA,EAAOvC,cACL4I,gBACI,GAAA;gEACEtI,EAAI,EAAA,8CAAA;gEACJC,cAAgB,EAAA;6DAElB,GAAA;gEACED,EAAI,EAAA,6CAAA;gEACJC,cAAgB,EAAA;AAClB,6DAAA,CAAA;AAEN+B,4DAAAA,OAAAA,EAAS,IAAM4G,mBAAAA,CAAoB,CAACgE,IAAAA,GAAS,CAACA,IAAAA,CAAAA;4DAC9CjG,QAAS,EAAA,UAAA;4DACTkG,GAAK,EAAA,CAAA;4DACLC,IAAM,EAAA,CAAA;AAEN,4DAAA,QAAA,gBAAAlN,GAACwI,CAAAA,aAAAA,EAAAA;gEAAcE,gBAAkBA,EAAAA;;;;;;;;AAMzC,iCAAA,CAAA,iBAAA/E,IAAA,CAAAyD,QAAA,EAAA;;sDACEpH,GAACsH,CAAAA,aAAAA,EAAAA,EAAAA,CAAAA;sDACDtH,GAACP,CAAAA,cAAAA,EAAAA,EAAAA;;;;;;;;;AAUrB,CAAA;AAEA;;AAEkG,qGAElG,MAAM0N,wBAA2B,GAAA,IAAA;AAC/B,IAAA,MAAM,EAAEjE,IAAAA,EAAM/D,KAAK,EAAE,GAAGgE,SAAAA,EAAAA;IAGxB,MAAM,EACJiE,cAAc,EAAE,EAChBnD,SAAS,EACTK,KAAK,EACN,GAAG+C,OAAQ,CAAA;AACV,QAAA;YAAEvG,MAAQ,EAAA,uCAAA;YAAyCwG,OAASnI,EAAAA;AAAM,SAAA;AAClE,QAAA;YAAE2B,MAAQ,EAAA,yCAAA;YAA2CwG,OAASnI,EAAAA;AAAM,SAAA;AACpE,QAAA;YAAE2B,MAAQ,EAAA,0CAAA;YAA4CwG,OAASnI,EAAAA;AAAM;AACtE,KAAA,CAAA;AAED,IAAA,IAAI8E,SAAW,EAAA;QACb,qBAAOjK,GAAA,CAACkK,KAAKC,OAAO,EAAA,EAAA,CAAA;AACtB;IAEA,IAAIG,KAAAA,IAAS,CAACnF,KAAO,EAAA;AACnB,QAAA,qBACEnF,GAACC,CAAAA,GAAAA,EAAAA;YACCM,MAAO,EAAA,OAAA;YACPD,KAAM,EAAA,OAAA;YACNyG,QAAS,EAAA,OAAA;YACTkG,GAAK,EAAA,CAAA;YACLC,IAAM,EAAA,CAAA;YACNK,MAAQ,EAAA,CAAA;YACR/H,UAAW,EAAA,UAAA;oCAEXxF,GAAA,CAACkK,KAAKX,KAAK,EAAA,EAAA;;AAGjB;AAEA,IAAA,qBACEvJ,GAACC,CAAAA,GAAAA,EAAAA;QACCM,MAAO,EAAA,OAAA;QACPD,KAAM,EAAA,OAAA;QACNyG,QAAS,EAAA,OAAA;QACTkG,GAAK,EAAA,CAAA;QACLC,IAAM,EAAA,CAAA;QACNK,MAAQ,EAAA,CAAA;QACR/H,UAAW,EAAA,UAAA;gCAEXxF,GAAA,CAACkK,KAAKsD,OAAO,EAAA;YACXJ,WAAaA,EAAAA,WAAAA,CAAYvG,MAAM,CAAC,CAAC4G,aAC/BA,UAAW3G,CAAAA,MAAM,CAACG,QAAQ,CAAC,eAAA,CAAA,CAAA;AAG7B,YAAA,QAAA,gBAAAjH,GAAC0N,CAAAA,YAAAA,EAAAA;gBAAaN,WAAaA,EAAAA,WAAAA;AACzB,gBAAA,QAAA,gBAAApN,GAAC2I,CAAAA,WAAAA,EAAAA,EAAAA;;;;AAKX,CAAA;AAEA,MAAMgF,oBAAuB,GAAA,IAAA;AAC3B,IAAA,qBACE3N,GAAC4N,CAAAA,MAAAA,EAAAA;AACC,QAAA,QAAA,gBAAA5N,GAAC6N,CAAAA,SAAAA,EAAAA;AACC,YAAA,QAAA,gBAAA7N,GAACmN,CAAAA,wBAAAA,EAAAA,EAAAA;;;AAIT;;;;"}
|