@payloadcms/next 3.44.0 → 3.45.0-canary.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 (94) hide show
  1. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  2. package/dist/elements/DocumentHeader/Tabs/tabs/index.js +0 -23
  3. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  4. package/dist/prod/styles.css +1 -1
  5. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  6. package/dist/views/Document/getDocumentView.js +0 -19
  7. package/dist/views/Document/getDocumentView.js.map +1 -1
  8. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  9. package/dist/views/Document/getMetaBySegment.js +0 -9
  10. package/dist/views/Document/getMetaBySegment.js.map +1 -1
  11. package/dist/views/Document/index.d.ts.map +1 -1
  12. package/dist/views/Document/index.js +46 -21
  13. package/dist/views/Document/index.js.map +1 -1
  14. package/dist/views/Root/getDocumentViewInfo.d.ts.map +1 -1
  15. package/dist/views/Root/getDocumentViewInfo.js +0 -5
  16. package/dist/views/Root/getDocumentViewInfo.js.map +1 -1
  17. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  18. package/dist/views/Root/getRouteData.js +0 -2
  19. package/dist/views/Root/getRouteData.js.map +1 -1
  20. package/dist/views/Root/metadata.d.ts.map +1 -1
  21. package/dist/views/Root/metadata.js +0 -2
  22. package/dist/views/Root/metadata.js.map +1 -1
  23. package/package.json +6 -6
  24. package/dist/views/LivePreview/Context/collisionDetection.d.ts +0 -3
  25. package/dist/views/LivePreview/Context/collisionDetection.d.ts.map +0 -1
  26. package/dist/views/LivePreview/Context/collisionDetection.js +0 -29
  27. package/dist/views/LivePreview/Context/collisionDetection.js.map +0 -1
  28. package/dist/views/LivePreview/Context/context.d.ts +0 -51
  29. package/dist/views/LivePreview/Context/context.d.ts.map +0 -1
  30. package/dist/views/LivePreview/Context/context.js +0 -41
  31. package/dist/views/LivePreview/Context/context.js.map +0 -1
  32. package/dist/views/LivePreview/Context/index.d.ts +0 -19
  33. package/dist/views/LivePreview/Context/index.d.ts.map +0 -1
  34. package/dist/views/LivePreview/Context/index.js +0 -154
  35. package/dist/views/LivePreview/Context/index.js.map +0 -1
  36. package/dist/views/LivePreview/Context/sizeReducer.d.ts +0 -20
  37. package/dist/views/LivePreview/Context/sizeReducer.d.ts.map +0 -1
  38. package/dist/views/LivePreview/Context/sizeReducer.js +0 -30
  39. package/dist/views/LivePreview/Context/sizeReducer.js.map +0 -1
  40. package/dist/views/LivePreview/Device/index.d.ts +0 -5
  41. package/dist/views/LivePreview/Device/index.d.ts.map +0 -1
  42. package/dist/views/LivePreview/Device/index.js +0 -94
  43. package/dist/views/LivePreview/Device/index.js.map +0 -1
  44. package/dist/views/LivePreview/DeviceContainer/index.d.ts +0 -5
  45. package/dist/views/LivePreview/DeviceContainer/index.d.ts.map +0 -1
  46. package/dist/views/LivePreview/DeviceContainer/index.js +0 -55
  47. package/dist/views/LivePreview/DeviceContainer/index.js.map +0 -1
  48. package/dist/views/LivePreview/IFrame/index.d.ts +0 -10
  49. package/dist/views/LivePreview/IFrame/index.d.ts.map +0 -1
  50. package/dist/views/LivePreview/IFrame/index.js +0 -29
  51. package/dist/views/LivePreview/IFrame/index.js.map +0 -1
  52. package/dist/views/LivePreview/IFrame/index.scss +0 -9
  53. package/dist/views/LivePreview/Preview/index.d.ts +0 -5
  54. package/dist/views/LivePreview/Preview/index.d.ts.map +0 -1
  55. package/dist/views/LivePreview/Preview/index.js +0 -167
  56. package/dist/views/LivePreview/Preview/index.js.map +0 -1
  57. package/dist/views/LivePreview/Preview/index.scss +0 -43
  58. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts +0 -5
  59. package/dist/views/LivePreview/Toolbar/Controls/index.d.ts.map +0 -1
  60. package/dist/views/LivePreview/Toolbar/Controls/index.js +0 -151
  61. package/dist/views/LivePreview/Toolbar/Controls/index.js.map +0 -1
  62. package/dist/views/LivePreview/Toolbar/Controls/index.scss +0 -61
  63. package/dist/views/LivePreview/Toolbar/SizeInput/index.d.ts +0 -6
  64. package/dist/views/LivePreview/Toolbar/SizeInput/index.d.ts.map +0 -1
  65. package/dist/views/LivePreview/Toolbar/SizeInput/index.js +0 -100
  66. package/dist/views/LivePreview/Toolbar/SizeInput/index.js.map +0 -1
  67. package/dist/views/LivePreview/Toolbar/SizeInput/index.scss +0 -12
  68. package/dist/views/LivePreview/Toolbar/index.d.ts +0 -7
  69. package/dist/views/LivePreview/Toolbar/index.d.ts.map +0 -1
  70. package/dist/views/LivePreview/Toolbar/index.js +0 -96
  71. package/dist/views/LivePreview/Toolbar/index.js.map +0 -1
  72. package/dist/views/LivePreview/Toolbar/index.scss +0 -43
  73. package/dist/views/LivePreview/ToolbarArea/index.d.ts +0 -6
  74. package/dist/views/LivePreview/ToolbarArea/index.d.ts.map +0 -1
  75. package/dist/views/LivePreview/ToolbarArea/index.js +0 -40
  76. package/dist/views/LivePreview/ToolbarArea/index.js.map +0 -1
  77. package/dist/views/LivePreview/ToolbarArea/index.scss +0 -6
  78. package/dist/views/LivePreview/index.client.d.ts +0 -9
  79. package/dist/views/LivePreview/index.client.d.ts.map +0 -1
  80. package/dist/views/LivePreview/index.client.js +0 -472
  81. package/dist/views/LivePreview/index.client.js.map +0 -1
  82. package/dist/views/LivePreview/index.d.ts +0 -5
  83. package/dist/views/LivePreview/index.d.ts.map +0 -1
  84. package/dist/views/LivePreview/index.js +0 -76
  85. package/dist/views/LivePreview/index.js.map +0 -1
  86. package/dist/views/LivePreview/index.scss +0 -68
  87. package/dist/views/LivePreview/metadata.d.ts +0 -3
  88. package/dist/views/LivePreview/metadata.d.ts.map +0 -1
  89. package/dist/views/LivePreview/metadata.js +0 -16
  90. package/dist/views/LivePreview/metadata.js.map +0 -1
  91. package/dist/views/LivePreview/usePopupWindow.d.ts +0 -20
  92. package/dist/views/LivePreview/usePopupWindow.d.ts.map +0 -1
  93. package/dist/views/LivePreview/usePopupWindow.js +0 -144
  94. package/dist/views/LivePreview/usePopupWindow.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getRouteData.js","names":["formatAdminURL","Account","BrowseByFolder","CollectionFolderView","CreateFirstUserView","Dashboard","Document","DocumentView","forgotPasswordBaseClass","ForgotPasswordView","ListView","loginBaseClass","LoginView","LogoutInactivity","LogoutView","ResetPassword","resetPasswordBaseClass","UnauthorizedView","Verify","verifyBaseClass","attachViewActions","getViewActions","getCustomViewByRoute","getDocumentViewInfo","isPathMatchingRoute","baseClasses","account","folders","forgot","login","reset","verify","oneSegmentViews","browseByFolder","createFirstUser","inactivity","logout","unauthorized","getRouteData","adminRoute","config","currentRoute","importMap","searchParams","segments","ViewToRender","templateClassName","templateType","documentSubViewType","viewType","folderID","initPageOptions","route","routeParams","segmentOne","segmentTwo","segmentThree","segmentFour","segmentFive","isGlobal","isCollection","matchedCollection","undefined","matchedGlobal","isBrowseByFolderEnabled","browseByFolderSlugs","collections","reduce","acc","slug","serverProps","viewActions","admin","components","actions","find","collectionConfig","globals","globalConfig","length","Component","viewKey","routes","matchedRoute","Object","entries","exact","path","collection","concat","views","list","global","editConfig","edit","folderCollection","id","versionID","viewInfo","collectionOrGlobal","viewKeyArg","view","reverse","DefaultView"],"sources":["../../../src/views/Root/getRouteData.ts"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionSlug,\n DocumentSubViewTypes,\n ImportMap,\n PayloadComponent,\n SanitizedConfig,\n ServerPropsFromView,\n ViewTypes,\n} from 'payload'\nimport type React from 'react'\n\nimport { formatAdminURL } from 'payload/shared'\n\nimport type { initPage } from '../../utilities/initPage/index.js'\n\nimport { Account } from '../Account/index.js'\nimport { BrowseByFolder } from '../BrowseByFolder/index.js'\nimport { CollectionFolderView } from '../CollectionFolders/index.js'\nimport { CreateFirstUserView } from '../CreateFirstUser/index.js'\nimport { Dashboard } from '../Dashboard/index.js'\nimport { Document as DocumentView } from '../Document/index.js'\nimport { forgotPasswordBaseClass, ForgotPasswordView } from '../ForgotPassword/index.js'\nimport { ListView } from '../List/index.js'\nimport { loginBaseClass, LoginView } from '../Login/index.js'\nimport { LogoutInactivity, LogoutView } from '../Logout/index.js'\nimport { ResetPassword, resetPasswordBaseClass } from '../ResetPassword/index.js'\nimport { UnauthorizedView } from '../Unauthorized/index.js'\nimport { Verify, verifyBaseClass } from '../Verify/index.js'\nimport { attachViewActions, getViewActions } from './attachViewActions.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\nimport { getDocumentViewInfo } from './getDocumentViewInfo.js'\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nconst baseClasses = {\n account: 'account',\n folders: 'folders',\n forgot: forgotPasswordBaseClass,\n login: loginBaseClass,\n reset: resetPasswordBaseClass,\n verify: verifyBaseClass,\n}\n\ntype OneSegmentViews = {\n [K in Exclude<keyof SanitizedConfig['admin']['routes'], 'reset'>]: React.FC<AdminViewServerProps>\n}\n\nexport type ViewFromConfig = {\n Component?: React.FC<AdminViewServerProps>\n payloadComponent?: PayloadComponent<AdminViewServerProps>\n}\n\nconst oneSegmentViews: OneSegmentViews = {\n account: Account,\n browseByFolder: BrowseByFolder,\n createFirstUser: CreateFirstUserView,\n forgot: ForgotPasswordView,\n inactivity: LogoutInactivity,\n login: LoginView,\n logout: LogoutView,\n unauthorized: UnauthorizedView,\n}\n\ntype GetRouteDataArgs = {\n adminRoute: string\n config: SanitizedConfig\n currentRoute: string\n importMap: ImportMap\n searchParams: {\n [key: string]: string | string[]\n }\n segments: string[]\n}\n\ntype GetRouteDataResult = {\n browseByFolderSlugs: CollectionSlug[]\n DefaultView: ViewFromConfig\n documentSubViewType?: DocumentSubViewTypes\n folderID?: string\n initPageOptions: Parameters<typeof initPage>[0]\n serverProps: ServerPropsFromView\n templateClassName: string\n templateType: 'default' | 'minimal'\n viewType?: ViewTypes\n}\n\nexport const getRouteData = ({\n adminRoute,\n config,\n currentRoute,\n importMap,\n searchParams,\n segments,\n}: GetRouteDataArgs): GetRouteDataResult => {\n let ViewToRender: ViewFromConfig = null\n let templateClassName: string\n let templateType: 'default' | 'minimal' | undefined\n let documentSubViewType: DocumentSubViewTypes\n let viewType: ViewTypes\n let folderID: string\n\n const initPageOptions: Parameters<typeof initPage>[0] = {\n config,\n importMap,\n route: currentRoute,\n routeParams: {},\n searchParams,\n }\n\n const [segmentOne, segmentTwo, segmentThree, segmentFour, segmentFive] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n let matchedCollection: SanitizedConfig['collections'][number] = undefined\n let matchedGlobal: SanitizedConfig['globals'][number] = undefined\n\n const isBrowseByFolderEnabled = config.folders && config.folders.browseByFolder\n const browseByFolderSlugs =\n (isBrowseByFolderEnabled &&\n config.collections.reduce((acc, { slug, folders }) => {\n if (folders && folders.browseByFolder) {\n return [...acc, slug]\n }\n return acc\n }, [])) ||\n []\n\n const serverProps: ServerPropsFromView = {\n viewActions: config?.admin?.components?.actions || [],\n }\n\n if (isCollection) {\n matchedCollection = config.collections.find(({ slug }) => slug === segmentTwo)\n serverProps.collectionConfig = matchedCollection\n }\n\n if (isGlobal) {\n matchedGlobal = config.globals.find(({ slug }) => slug === segmentTwo)\n serverProps.globalConfig = matchedGlobal\n }\n\n switch (segments.length) {\n case 0: {\n if (currentRoute === adminRoute) {\n ViewToRender = {\n Component: Dashboard,\n }\n templateClassName = 'dashboard'\n templateType = 'default'\n viewType = 'dashboard'\n }\n break\n }\n case 1: {\n // users can override the default routes via `admin.routes` config\n // i.e.{ admin: { routes: { logout: '/sign-out', inactivity: '/idle' }}}\n let viewKey: keyof typeof oneSegmentViews\n\n if (config.admin.routes) {\n const matchedRoute = Object.entries(config.admin.routes).find(([, route]) => {\n return isPathMatchingRoute({\n currentRoute,\n exact: true,\n path: formatAdminURL({ adminRoute, path: route }),\n })\n })\n\n if (matchedRoute) {\n viewKey = matchedRoute[0] as keyof typeof oneSegmentViews\n }\n }\n\n if (oneSegmentViews[viewKey]) {\n // --> /account\n // --> /create-first-user\n // --> /browse-by-folder\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n\n ViewToRender = {\n Component: oneSegmentViews[viewKey],\n }\n\n templateClassName = baseClasses[viewKey]\n templateType = 'minimal'\n\n if (viewKey === 'account') {\n templateType = 'default'\n viewType = 'account'\n }\n\n if (isBrowseByFolderEnabled && viewKey === 'browseByFolder') {\n templateType = 'default'\n viewType = 'folders'\n }\n }\n break\n }\n case 2: {\n if (`/${segmentOne}` === config.admin.routes.reset) {\n // --> /reset/:token\n ViewToRender = {\n Component: ResetPassword,\n }\n templateClassName = baseClasses[segmentTwo]\n templateType = 'minimal'\n viewType = 'reset'\n } else if (\n isBrowseByFolderEnabled &&\n `/${segmentOne}` === config.admin.routes.browseByFolder\n ) {\n // --> /browse-by-folder/:folderID\n initPageOptions.routeParams.folderID = folderID\n\n ViewToRender = {\n Component: oneSegmentViews.browseByFolder,\n }\n templateClassName = baseClasses.folders\n templateType = 'default'\n viewType = 'folders'\n folderID = segmentTwo\n } else if (isCollection && matchedCollection) {\n // --> /collections/:collectionSlug\n initPageOptions.routeParams.collection = matchedCollection.slug\n\n ViewToRender = {\n Component: ListView,\n }\n\n templateClassName = `${segmentTwo}-list`\n templateType = 'default'\n viewType = 'list'\n serverProps.viewActions = serverProps.viewActions.concat(\n matchedCollection.admin.components?.views?.list?.actions,\n )\n } else if (isGlobal && matchedGlobal) {\n // --> /globals/:globalSlug\n initPageOptions.routeParams.global = matchedGlobal.slug\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = 'global-edit'\n templateType = 'default'\n viewType = 'document'\n\n // add default view actions\n serverProps.viewActions = serverProps.viewActions.concat(\n getViewActions({\n editConfig: matchedGlobal.admin?.components?.views?.edit,\n viewKey: 'default',\n }),\n )\n }\n break\n }\n default:\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n initPageOptions.routeParams.collection = segmentOne\n\n ViewToRender = {\n Component: Verify,\n }\n\n templateClassName = 'verify'\n templateType = 'minimal'\n viewType = 'verify'\n } else if (isCollection && matchedCollection) {\n initPageOptions.routeParams.collection = matchedCollection.slug\n if (config.folders && segmentThree === config.folders.slug && matchedCollection.folders) {\n // Collection Folder Views\n // --> /collections/:collectionSlug/:folderCollectionSlug\n // --> /collections/:collectionSlug/:folderCollectionSlug/:folderID\n initPageOptions.routeParams.folderCollection = segmentThree\n initPageOptions.routeParams.folderID = segmentFour\n\n ViewToRender = {\n Component: CollectionFolderView,\n }\n\n templateClassName = `collection-folders`\n templateType = 'default'\n viewType = 'collection-folders'\n folderID = segmentFour\n } else {\n // Collection Edit Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/api\n // --> /collections/:collectionSlug/:id/preview\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:versionID\n initPageOptions.routeParams.id = segmentThree\n initPageOptions.routeParams.versionID = segmentFive\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `collection-default-edit`\n templateType = 'default'\n\n const viewInfo = getDocumentViewInfo([segmentFour, segmentFive])\n viewType = viewInfo.viewType\n documentSubViewType = viewInfo.documentSubViewType\n\n attachViewActions({\n collectionOrGlobal: matchedCollection,\n serverProps,\n viewKeyArg: documentSubViewType,\n })\n }\n } else if (isGlobal && matchedGlobal) {\n // Global Edit Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/preview\n // --> /globals/:globalSlug/versions/:versionID\n // --> /globals/:globalSlug/api\n initPageOptions.routeParams.global = matchedGlobal.slug\n initPageOptions.routeParams.versionID = segmentFour\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `global-edit`\n templateType = 'default'\n\n const viewInfo = getDocumentViewInfo([segmentThree, segmentFour])\n viewType = viewInfo.viewType\n documentSubViewType = viewInfo.documentSubViewType\n\n attachViewActions({\n collectionOrGlobal: matchedGlobal,\n serverProps,\n viewKeyArg: documentSubViewType,\n })\n }\n break\n }\n\n if (!ViewToRender) {\n ViewToRender = getCustomViewByRoute({ config, currentRoute })?.view\n }\n\n serverProps.viewActions.reverse()\n\n return {\n browseByFolderSlugs,\n DefaultView: ViewToRender,\n documentSubViewType,\n folderID,\n initPageOptions,\n serverProps,\n templateClassName,\n templateType,\n viewType,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"getRouteData.js","names":["formatAdminURL","Account","BrowseByFolder","CollectionFolderView","CreateFirstUserView","Dashboard","Document","DocumentView","forgotPasswordBaseClass","ForgotPasswordView","ListView","loginBaseClass","LoginView","LogoutInactivity","LogoutView","ResetPassword","resetPasswordBaseClass","UnauthorizedView","Verify","verifyBaseClass","attachViewActions","getViewActions","getCustomViewByRoute","getDocumentViewInfo","isPathMatchingRoute","baseClasses","account","folders","forgot","login","reset","verify","oneSegmentViews","browseByFolder","createFirstUser","inactivity","logout","unauthorized","getRouteData","adminRoute","config","currentRoute","importMap","searchParams","segments","ViewToRender","templateClassName","templateType","documentSubViewType","viewType","folderID","initPageOptions","route","routeParams","segmentOne","segmentTwo","segmentThree","segmentFour","segmentFive","isGlobal","isCollection","matchedCollection","undefined","matchedGlobal","isBrowseByFolderEnabled","browseByFolderSlugs","collections","reduce","acc","slug","serverProps","viewActions","admin","components","actions","find","collectionConfig","globals","globalConfig","length","Component","viewKey","routes","matchedRoute","Object","entries","exact","path","collection","concat","views","list","global","editConfig","edit","folderCollection","id","versionID","viewInfo","collectionOrGlobal","viewKeyArg","view","reverse","DefaultView"],"sources":["../../../src/views/Root/getRouteData.ts"],"sourcesContent":["import type {\n AdminViewServerProps,\n CollectionSlug,\n DocumentSubViewTypes,\n ImportMap,\n PayloadComponent,\n SanitizedConfig,\n ServerPropsFromView,\n ViewTypes,\n} from 'payload'\nimport type React from 'react'\n\nimport { formatAdminURL } from 'payload/shared'\n\nimport type { initPage } from '../../utilities/initPage/index.js'\n\nimport { Account } from '../Account/index.js'\nimport { BrowseByFolder } from '../BrowseByFolder/index.js'\nimport { CollectionFolderView } from '../CollectionFolders/index.js'\nimport { CreateFirstUserView } from '../CreateFirstUser/index.js'\nimport { Dashboard } from '../Dashboard/index.js'\nimport { Document as DocumentView } from '../Document/index.js'\nimport { forgotPasswordBaseClass, ForgotPasswordView } from '../ForgotPassword/index.js'\nimport { ListView } from '../List/index.js'\nimport { loginBaseClass, LoginView } from '../Login/index.js'\nimport { LogoutInactivity, LogoutView } from '../Logout/index.js'\nimport { ResetPassword, resetPasswordBaseClass } from '../ResetPassword/index.js'\nimport { UnauthorizedView } from '../Unauthorized/index.js'\nimport { Verify, verifyBaseClass } from '../Verify/index.js'\nimport { attachViewActions, getViewActions } from './attachViewActions.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\nimport { getDocumentViewInfo } from './getDocumentViewInfo.js'\nimport { isPathMatchingRoute } from './isPathMatchingRoute.js'\n\nconst baseClasses = {\n account: 'account',\n folders: 'folders',\n forgot: forgotPasswordBaseClass,\n login: loginBaseClass,\n reset: resetPasswordBaseClass,\n verify: verifyBaseClass,\n}\n\ntype OneSegmentViews = {\n [K in Exclude<keyof SanitizedConfig['admin']['routes'], 'reset'>]: React.FC<AdminViewServerProps>\n}\n\nexport type ViewFromConfig = {\n Component?: React.FC<AdminViewServerProps>\n payloadComponent?: PayloadComponent<AdminViewServerProps>\n}\n\nconst oneSegmentViews: OneSegmentViews = {\n account: Account,\n browseByFolder: BrowseByFolder,\n createFirstUser: CreateFirstUserView,\n forgot: ForgotPasswordView,\n inactivity: LogoutInactivity,\n login: LoginView,\n logout: LogoutView,\n unauthorized: UnauthorizedView,\n}\n\ntype GetRouteDataArgs = {\n adminRoute: string\n config: SanitizedConfig\n currentRoute: string\n importMap: ImportMap\n searchParams: {\n [key: string]: string | string[]\n }\n segments: string[]\n}\n\ntype GetRouteDataResult = {\n browseByFolderSlugs: CollectionSlug[]\n DefaultView: ViewFromConfig\n documentSubViewType?: DocumentSubViewTypes\n folderID?: string\n initPageOptions: Parameters<typeof initPage>[0]\n serverProps: ServerPropsFromView\n templateClassName: string\n templateType: 'default' | 'minimal'\n viewType?: ViewTypes\n}\n\nexport const getRouteData = ({\n adminRoute,\n config,\n currentRoute,\n importMap,\n searchParams,\n segments,\n}: GetRouteDataArgs): GetRouteDataResult => {\n let ViewToRender: ViewFromConfig = null\n let templateClassName: string\n let templateType: 'default' | 'minimal' | undefined\n let documentSubViewType: DocumentSubViewTypes\n let viewType: ViewTypes\n let folderID: string\n\n const initPageOptions: Parameters<typeof initPage>[0] = {\n config,\n importMap,\n route: currentRoute,\n routeParams: {},\n searchParams,\n }\n\n const [segmentOne, segmentTwo, segmentThree, segmentFour, segmentFive] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n let matchedCollection: SanitizedConfig['collections'][number] = undefined\n let matchedGlobal: SanitizedConfig['globals'][number] = undefined\n\n const isBrowseByFolderEnabled = config.folders && config.folders.browseByFolder\n const browseByFolderSlugs =\n (isBrowseByFolderEnabled &&\n config.collections.reduce((acc, { slug, folders }) => {\n if (folders && folders.browseByFolder) {\n return [...acc, slug]\n }\n return acc\n }, [])) ||\n []\n\n const serverProps: ServerPropsFromView = {\n viewActions: config?.admin?.components?.actions || [],\n }\n\n if (isCollection) {\n matchedCollection = config.collections.find(({ slug }) => slug === segmentTwo)\n serverProps.collectionConfig = matchedCollection\n }\n\n if (isGlobal) {\n matchedGlobal = config.globals.find(({ slug }) => slug === segmentTwo)\n serverProps.globalConfig = matchedGlobal\n }\n\n switch (segments.length) {\n case 0: {\n if (currentRoute === adminRoute) {\n ViewToRender = {\n Component: Dashboard,\n }\n templateClassName = 'dashboard'\n templateType = 'default'\n viewType = 'dashboard'\n }\n break\n }\n case 1: {\n // users can override the default routes via `admin.routes` config\n // i.e.{ admin: { routes: { logout: '/sign-out', inactivity: '/idle' }}}\n let viewKey: keyof typeof oneSegmentViews\n\n if (config.admin.routes) {\n const matchedRoute = Object.entries(config.admin.routes).find(([, route]) => {\n return isPathMatchingRoute({\n currentRoute,\n exact: true,\n path: formatAdminURL({ adminRoute, path: route }),\n })\n })\n\n if (matchedRoute) {\n viewKey = matchedRoute[0] as keyof typeof oneSegmentViews\n }\n }\n\n if (oneSegmentViews[viewKey]) {\n // --> /account\n // --> /create-first-user\n // --> /browse-by-folder\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n\n ViewToRender = {\n Component: oneSegmentViews[viewKey],\n }\n\n templateClassName = baseClasses[viewKey]\n templateType = 'minimal'\n\n if (viewKey === 'account') {\n templateType = 'default'\n viewType = 'account'\n }\n\n if (isBrowseByFolderEnabled && viewKey === 'browseByFolder') {\n templateType = 'default'\n viewType = 'folders'\n }\n }\n break\n }\n case 2: {\n if (`/${segmentOne}` === config.admin.routes.reset) {\n // --> /reset/:token\n ViewToRender = {\n Component: ResetPassword,\n }\n templateClassName = baseClasses[segmentTwo]\n templateType = 'minimal'\n viewType = 'reset'\n } else if (\n isBrowseByFolderEnabled &&\n `/${segmentOne}` === config.admin.routes.browseByFolder\n ) {\n // --> /browse-by-folder/:folderID\n initPageOptions.routeParams.folderID = folderID\n\n ViewToRender = {\n Component: oneSegmentViews.browseByFolder,\n }\n templateClassName = baseClasses.folders\n templateType = 'default'\n viewType = 'folders'\n folderID = segmentTwo\n } else if (isCollection && matchedCollection) {\n // --> /collections/:collectionSlug\n initPageOptions.routeParams.collection = matchedCollection.slug\n\n ViewToRender = {\n Component: ListView,\n }\n\n templateClassName = `${segmentTwo}-list`\n templateType = 'default'\n viewType = 'list'\n serverProps.viewActions = serverProps.viewActions.concat(\n matchedCollection.admin.components?.views?.list?.actions,\n )\n } else if (isGlobal && matchedGlobal) {\n // --> /globals/:globalSlug\n initPageOptions.routeParams.global = matchedGlobal.slug\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = 'global-edit'\n templateType = 'default'\n viewType = 'document'\n\n // add default view actions\n serverProps.viewActions = serverProps.viewActions.concat(\n getViewActions({\n editConfig: matchedGlobal.admin?.components?.views?.edit,\n viewKey: 'default',\n }),\n )\n }\n break\n }\n default:\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n initPageOptions.routeParams.collection = segmentOne\n\n ViewToRender = {\n Component: Verify,\n }\n\n templateClassName = 'verify'\n templateType = 'minimal'\n viewType = 'verify'\n } else if (isCollection && matchedCollection) {\n initPageOptions.routeParams.collection = matchedCollection.slug\n if (config.folders && segmentThree === config.folders.slug && matchedCollection.folders) {\n // Collection Folder Views\n // --> /collections/:collectionSlug/:folderCollectionSlug\n // --> /collections/:collectionSlug/:folderCollectionSlug/:folderID\n initPageOptions.routeParams.folderCollection = segmentThree\n initPageOptions.routeParams.folderID = segmentFour\n\n ViewToRender = {\n Component: CollectionFolderView,\n }\n\n templateClassName = `collection-folders`\n templateType = 'default'\n viewType = 'collection-folders'\n folderID = segmentFour\n } else {\n // Collection Edit Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/api\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:versionID\n initPageOptions.routeParams.id = segmentThree\n initPageOptions.routeParams.versionID = segmentFive\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `collection-default-edit`\n templateType = 'default'\n\n const viewInfo = getDocumentViewInfo([segmentFour, segmentFive])\n viewType = viewInfo.viewType\n documentSubViewType = viewInfo.documentSubViewType\n\n attachViewActions({\n collectionOrGlobal: matchedCollection,\n serverProps,\n viewKeyArg: documentSubViewType,\n })\n }\n } else if (isGlobal && matchedGlobal) {\n // Global Edit Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/versions/:versionID\n // --> /globals/:globalSlug/api\n initPageOptions.routeParams.global = matchedGlobal.slug\n initPageOptions.routeParams.versionID = segmentFour\n\n ViewToRender = {\n Component: DocumentView,\n }\n\n templateClassName = `global-edit`\n templateType = 'default'\n\n const viewInfo = getDocumentViewInfo([segmentThree, segmentFour])\n viewType = viewInfo.viewType\n documentSubViewType = viewInfo.documentSubViewType\n\n attachViewActions({\n collectionOrGlobal: matchedGlobal,\n serverProps,\n viewKeyArg: documentSubViewType,\n })\n }\n break\n }\n\n if (!ViewToRender) {\n ViewToRender = getCustomViewByRoute({ config, currentRoute })?.view\n }\n\n serverProps.viewActions.reverse()\n\n return {\n browseByFolderSlugs,\n DefaultView: ViewToRender,\n documentSubViewType,\n folderID,\n initPageOptions,\n serverProps,\n templateClassName,\n templateType,\n viewType,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/views/Root/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AA6B9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE,OAAO,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAC,CAAA;IACF,YAAY,EAAE,OAAO,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAC,CAAA;CACH,CAAA;AAED,eAAO,MAAM,oBAAoB,sDAG9B,IAAI,sBAkJN,CAAA"}
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../../src/views/Root/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AACpC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AA6B9C,KAAK,IAAI,GAAG;IACV,MAAM,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAChC,MAAM,EAAE,OAAO,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAC,CAAA;IACF,YAAY,EAAE,OAAO,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KACjC,CAAC,CAAA;CACH,CAAA;AAED,eAAO,MAAM,oBAAoB,sDAG9B,IAAI,sBAgJN,CAAA"}
@@ -145,7 +145,6 @@ export const generatePageMetadata = async ({
145
145
  } else {
146
146
  // Collection Document Views
147
147
  // --> /collections/:collectionSlug/:id
148
- // --> /collections/:collectionSlug/:id/preview
149
148
  // --> /collections/:collectionSlug/:id/versions
150
149
  // --> /collections/:collectionSlug/:id/versions/:version
151
150
  // --> /collections/:collectionSlug/:id/api
@@ -160,7 +159,6 @@ export const generatePageMetadata = async ({
160
159
  // Global Document Views
161
160
  // --> /globals/:globalSlug/versions
162
161
  // --> /globals/:globalSlug/versions/:version
163
- // --> /globals/:globalSlug/preview
164
162
  // --> /globals/:globalSlug/api
165
163
  meta = await generateDocumentViewMetadata({
166
164
  config,
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","names":["getNextRequestI18n","generateAccountViewMetadata","generateBrowseByFolderMetadata","generateCollectionFolderMetadata","generateCreateFirstUserViewMetadata","generateDashboardViewMetadata","generateDocumentViewMetadata","generateForgotPasswordViewMetadata","generateListViewMetadata","generateLoginViewMetadata","generateNotFoundViewMetadata","generateResetPasswordViewMetadata","generateUnauthorizedViewMetadata","generateVerifyViewMetadata","generateCustomViewMetadata","getCustomViewByRoute","oneSegmentMeta","folders","forgot","login","logout","unauthorized","generatePageMetadata","config","configPromise","params","paramsPromise","folderCollectionSlugs","collections","reduce","acc","slug","segments","Array","isArray","currentRoute","join","segmentOne","segmentTwo","segmentThree","isGlobal","isCollection","i18n","meta","collectionConfig","length","find","collection","globalConfig","globals","global","admin","routes","browseByFolder","reset","includes","viewConfig","viewKey"],"sources":["../../../src/views/Root/metadata.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { SanitizedConfig } from 'payload'\n\nimport { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'\nimport { generateAccountViewMetadata } from '../Account/metadata.js'\nimport { generateBrowseByFolderMetadata } from '../BrowseByFolder/metadata.js'\nimport { generateCollectionFolderMetadata } from '../CollectionFolders/metadata.js'\nimport { generateCreateFirstUserViewMetadata } from '../CreateFirstUser/metadata.js'\nimport { generateDashboardViewMetadata } from '../Dashboard/metadata.js'\nimport { generateDocumentViewMetadata } from '../Document/metadata.js'\nimport { generateForgotPasswordViewMetadata } from '../ForgotPassword/metadata.js'\nimport { generateListViewMetadata } from '../List/metadata.js'\nimport { generateLoginViewMetadata } from '../Login/metadata.js'\nimport { generateNotFoundViewMetadata } from '../NotFound/metadata.js'\nimport { generateResetPasswordViewMetadata } from '../ResetPassword/metadata.js'\nimport { generateUnauthorizedViewMetadata } from '../Unauthorized/metadata.js'\nimport { generateVerifyViewMetadata } from '../Verify/metadata.js'\nimport { generateCustomViewMetadata } from './generateCustomViewMetadata.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\n\nconst oneSegmentMeta = {\n 'create-first-user': generateCreateFirstUserViewMetadata,\n folders: generateBrowseByFolderMetadata,\n forgot: generateForgotPasswordViewMetadata,\n login: generateLoginViewMetadata,\n logout: generateUnauthorizedViewMetadata,\n 'logout-inactivity': generateUnauthorizedViewMetadata,\n unauthorized: generateUnauthorizedViewMetadata,\n}\n\ntype Args = {\n config: Promise<SanitizedConfig>\n params: Promise<{\n [key: string]: string | string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generatePageMetadata = async ({\n config: configPromise,\n params: paramsPromise,\n}: Args) => {\n const config = await configPromise\n const params = await paramsPromise\n\n const folderCollectionSlugs = config.collections.reduce((acc, { slug, folders }) => {\n if (folders) {\n return [...acc, slug]\n }\n return acc\n }, [])\n const segments = Array.isArray(params.segments) ? params.segments : []\n\n const currentRoute = `/${segments.join('/')}`\n const [segmentOne, segmentTwo, segmentThree] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n\n const i18n = await getNextRequestI18n({\n config,\n })\n\n let meta: Metadata\n\n // TODO: handle custom routes\n\n const collectionConfig =\n isCollection &&\n segments.length > 1 &&\n config?.collections?.find((collection) => collection.slug === segmentTwo)\n\n const globalConfig =\n isGlobal && segments.length > 1 && config?.globals?.find((global) => global.slug === segmentTwo)\n\n switch (segments.length) {\n case 0: {\n meta = await generateDashboardViewMetadata({ config, i18n })\n break\n }\n case 1: {\n if (folderCollectionSlugs.length && `/${segmentOne}` === config.admin.routes.browseByFolder) {\n // --> /:folderCollectionSlug\n meta = await oneSegmentMeta.folders({ config, i18n })\n } else if (segmentOne === 'account') {\n // --> /account\n meta = await generateAccountViewMetadata({ config, i18n })\n break\n } else if (oneSegmentMeta[segmentOne]) {\n // --> /create-first-user\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n meta = await oneSegmentMeta[segmentOne]({ config, i18n })\n break\n }\n break\n }\n case 2: {\n if (`/${segmentOne}` === config.admin.routes.reset) {\n // --> /reset/:token\n meta = await generateResetPasswordViewMetadata({ config, i18n })\n } else if (\n folderCollectionSlugs.length &&\n `/${segmentOne}` === config.admin.routes.browseByFolder\n ) {\n // --> /browse-by-folder/:folderID\n meta = await generateBrowseByFolderMetadata({ config, i18n })\n } else if (isCollection) {\n // --> /collections/:collectionSlug\n meta = await generateListViewMetadata({ collectionConfig, config, i18n })\n } else if (isGlobal) {\n // --> /globals/:globalSlug\n meta = await generateDocumentViewMetadata({\n config,\n globalConfig,\n i18n,\n params,\n })\n }\n break\n }\n default: {\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n meta = await generateVerifyViewMetadata({ config, i18n })\n } else if (isCollection) {\n if (config.folders && segmentThree === config.folders.slug) {\n if (folderCollectionSlugs.includes(collectionConfig.slug)) {\n // Collection Folder Views\n // --> /collections/:collectionSlug/:folderCollectionSlug\n // --> /collections/:collectionSlug/:folderCollectionSlug/:id\n meta = await generateCollectionFolderMetadata({\n collectionConfig,\n config,\n i18n,\n params,\n })\n }\n } else {\n // Collection Document Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/preview\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:version\n // --> /collections/:collectionSlug/:id/api\n meta = await generateDocumentViewMetadata({ collectionConfig, config, i18n, params })\n }\n } else if (isGlobal) {\n // Global Document Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/versions/:version\n // --> /globals/:globalSlug/preview\n // --> /globals/:globalSlug/api\n meta = await generateDocumentViewMetadata({\n config,\n globalConfig,\n i18n,\n params,\n })\n }\n break\n }\n }\n\n if (!meta) {\n const { viewConfig, viewKey } = getCustomViewByRoute({\n config,\n currentRoute,\n })\n\n if (viewKey) {\n // Custom Views\n // --> /:path\n meta = await generateCustomViewMetadata({\n config,\n i18n,\n viewConfig,\n })\n } else {\n meta = await generateNotFoundViewMetadata({ config, i18n })\n }\n }\n\n return meta\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"metadata.js","names":["getNextRequestI18n","generateAccountViewMetadata","generateBrowseByFolderMetadata","generateCollectionFolderMetadata","generateCreateFirstUserViewMetadata","generateDashboardViewMetadata","generateDocumentViewMetadata","generateForgotPasswordViewMetadata","generateListViewMetadata","generateLoginViewMetadata","generateNotFoundViewMetadata","generateResetPasswordViewMetadata","generateUnauthorizedViewMetadata","generateVerifyViewMetadata","generateCustomViewMetadata","getCustomViewByRoute","oneSegmentMeta","folders","forgot","login","logout","unauthorized","generatePageMetadata","config","configPromise","params","paramsPromise","folderCollectionSlugs","collections","reduce","acc","slug","segments","Array","isArray","currentRoute","join","segmentOne","segmentTwo","segmentThree","isGlobal","isCollection","i18n","meta","collectionConfig","length","find","collection","globalConfig","globals","global","admin","routes","browseByFolder","reset","includes","viewConfig","viewKey"],"sources":["../../../src/views/Root/metadata.ts"],"sourcesContent":["import type { Metadata } from 'next'\nimport type { SanitizedConfig } from 'payload'\n\nimport { getNextRequestI18n } from '../../utilities/getNextRequestI18n.js'\nimport { generateAccountViewMetadata } from '../Account/metadata.js'\nimport { generateBrowseByFolderMetadata } from '../BrowseByFolder/metadata.js'\nimport { generateCollectionFolderMetadata } from '../CollectionFolders/metadata.js'\nimport { generateCreateFirstUserViewMetadata } from '../CreateFirstUser/metadata.js'\nimport { generateDashboardViewMetadata } from '../Dashboard/metadata.js'\nimport { generateDocumentViewMetadata } from '../Document/metadata.js'\nimport { generateForgotPasswordViewMetadata } from '../ForgotPassword/metadata.js'\nimport { generateListViewMetadata } from '../List/metadata.js'\nimport { generateLoginViewMetadata } from '../Login/metadata.js'\nimport { generateNotFoundViewMetadata } from '../NotFound/metadata.js'\nimport { generateResetPasswordViewMetadata } from '../ResetPassword/metadata.js'\nimport { generateUnauthorizedViewMetadata } from '../Unauthorized/metadata.js'\nimport { generateVerifyViewMetadata } from '../Verify/metadata.js'\nimport { generateCustomViewMetadata } from './generateCustomViewMetadata.js'\nimport { getCustomViewByRoute } from './getCustomViewByRoute.js'\n\nconst oneSegmentMeta = {\n 'create-first-user': generateCreateFirstUserViewMetadata,\n folders: generateBrowseByFolderMetadata,\n forgot: generateForgotPasswordViewMetadata,\n login: generateLoginViewMetadata,\n logout: generateUnauthorizedViewMetadata,\n 'logout-inactivity': generateUnauthorizedViewMetadata,\n unauthorized: generateUnauthorizedViewMetadata,\n}\n\ntype Args = {\n config: Promise<SanitizedConfig>\n params: Promise<{\n [key: string]: string | string[]\n }>\n searchParams: Promise<{\n [key: string]: string | string[]\n }>\n}\n\nexport const generatePageMetadata = async ({\n config: configPromise,\n params: paramsPromise,\n}: Args) => {\n const config = await configPromise\n const params = await paramsPromise\n\n const folderCollectionSlugs = config.collections.reduce((acc, { slug, folders }) => {\n if (folders) {\n return [...acc, slug]\n }\n return acc\n }, [])\n const segments = Array.isArray(params.segments) ? params.segments : []\n\n const currentRoute = `/${segments.join('/')}`\n const [segmentOne, segmentTwo, segmentThree] = segments\n\n const isGlobal = segmentOne === 'globals'\n const isCollection = segmentOne === 'collections'\n\n const i18n = await getNextRequestI18n({\n config,\n })\n\n let meta: Metadata\n\n // TODO: handle custom routes\n\n const collectionConfig =\n isCollection &&\n segments.length > 1 &&\n config?.collections?.find((collection) => collection.slug === segmentTwo)\n\n const globalConfig =\n isGlobal && segments.length > 1 && config?.globals?.find((global) => global.slug === segmentTwo)\n\n switch (segments.length) {\n case 0: {\n meta = await generateDashboardViewMetadata({ config, i18n })\n break\n }\n case 1: {\n if (folderCollectionSlugs.length && `/${segmentOne}` === config.admin.routes.browseByFolder) {\n // --> /:folderCollectionSlug\n meta = await oneSegmentMeta.folders({ config, i18n })\n } else if (segmentOne === 'account') {\n // --> /account\n meta = await generateAccountViewMetadata({ config, i18n })\n break\n } else if (oneSegmentMeta[segmentOne]) {\n // --> /create-first-user\n // --> /forgot\n // --> /login\n // --> /logout\n // --> /logout-inactivity\n // --> /unauthorized\n meta = await oneSegmentMeta[segmentOne]({ config, i18n })\n break\n }\n break\n }\n case 2: {\n if (`/${segmentOne}` === config.admin.routes.reset) {\n // --> /reset/:token\n meta = await generateResetPasswordViewMetadata({ config, i18n })\n } else if (\n folderCollectionSlugs.length &&\n `/${segmentOne}` === config.admin.routes.browseByFolder\n ) {\n // --> /browse-by-folder/:folderID\n meta = await generateBrowseByFolderMetadata({ config, i18n })\n } else if (isCollection) {\n // --> /collections/:collectionSlug\n meta = await generateListViewMetadata({ collectionConfig, config, i18n })\n } else if (isGlobal) {\n // --> /globals/:globalSlug\n meta = await generateDocumentViewMetadata({\n config,\n globalConfig,\n i18n,\n params,\n })\n }\n break\n }\n default: {\n if (segmentTwo === 'verify') {\n // --> /:collectionSlug/verify/:token\n meta = await generateVerifyViewMetadata({ config, i18n })\n } else if (isCollection) {\n if (config.folders && segmentThree === config.folders.slug) {\n if (folderCollectionSlugs.includes(collectionConfig.slug)) {\n // Collection Folder Views\n // --> /collections/:collectionSlug/:folderCollectionSlug\n // --> /collections/:collectionSlug/:folderCollectionSlug/:id\n meta = await generateCollectionFolderMetadata({\n collectionConfig,\n config,\n i18n,\n params,\n })\n }\n } else {\n // Collection Document Views\n // --> /collections/:collectionSlug/:id\n // --> /collections/:collectionSlug/:id/versions\n // --> /collections/:collectionSlug/:id/versions/:version\n // --> /collections/:collectionSlug/:id/api\n meta = await generateDocumentViewMetadata({ collectionConfig, config, i18n, params })\n }\n } else if (isGlobal) {\n // Global Document Views\n // --> /globals/:globalSlug/versions\n // --> /globals/:globalSlug/versions/:version\n // --> /globals/:globalSlug/api\n meta = await generateDocumentViewMetadata({\n config,\n globalConfig,\n i18n,\n params,\n })\n }\n break\n }\n }\n\n if (!meta) {\n const { viewConfig, viewKey } = getCustomViewByRoute({\n config,\n currentRoute,\n })\n\n if (viewKey) {\n // Custom Views\n // --> /:path\n meta = await generateCustomViewMetadata({\n config,\n i18n,\n viewConfig,\n })\n } else {\n meta = await generateNotFoundViewMetadata({ config, i18n })\n }\n }\n\n return meta\n}\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payloadcms/next",
3
- "version": "3.44.0",
3
+ "version": "3.45.0-canary.0",
4
4
  "homepage": "https://payloadcms.com",
5
5
  "repository": {
6
6
  "type": "git",
@@ -87,9 +87,9 @@
87
87
  "qs-esm": "7.0.2",
88
88
  "sass": "1.77.4",
89
89
  "uuid": "10.0.0",
90
- "@payloadcms/graphql": "3.44.0",
91
- "@payloadcms/translations": "3.44.0",
92
- "@payloadcms/ui": "3.44.0"
90
+ "@payloadcms/graphql": "3.45.0-canary.0",
91
+ "@payloadcms/ui": "3.45.0-canary.0",
92
+ "@payloadcms/translations": "3.45.0-canary.0"
93
93
  },
94
94
  "devDependencies": {
95
95
  "@babel/cli": "7.27.2",
@@ -107,12 +107,12 @@
107
107
  "esbuild-sass-plugin": "3.3.1",
108
108
  "swc-plugin-transform-remove-imports": "4.0.4",
109
109
  "@payloadcms/eslint-config": "3.28.0",
110
- "payload": "3.44.0"
110
+ "payload": "3.45.0-canary.0"
111
111
  },
112
112
  "peerDependencies": {
113
113
  "graphql": "^16.8.1",
114
114
  "next": "^15.2.3",
115
- "payload": "3.44.0"
115
+ "payload": "3.45.0-canary.0"
116
116
  },
117
117
  "engines": {
118
118
  "node": "^18.20.2 || >=20.9.0"
@@ -1,3 +0,0 @@
1
- import type { CollisionDetection } from '@dnd-kit/core';
2
- export declare const customCollisionDetection: CollisionDetection;
3
- //# sourceMappingURL=collisionDetection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collisionDetection.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/collisionDetection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAMvD,eAAO,MAAM,wBAAwB,EAAE,kBA+BtC,CAAA"}
@@ -1,29 +0,0 @@
1
- import { rectIntersection } from '@dnd-kit/core';
2
- // If the toolbar exits the preview area, we need to reset its position
3
- // This will prevent the toolbar from getting stuck outside the preview area
4
- export const customCollisionDetection = ({
5
- collisionRect,
6
- droppableContainers,
7
- ...args
8
- }) => {
9
- const droppableContainer = droppableContainers.find(({
10
- id
11
- }) => id === 'live-preview-area');
12
- const rectIntersectionCollisions = rectIntersection({
13
- ...args,
14
- collisionRect,
15
- droppableContainers: [droppableContainer]
16
- });
17
- // Collision detection algorithms return an array of collisions
18
- if (rectIntersectionCollisions.length === 0) {
19
- // The preview area is not intersecting, return early
20
- return rectIntersectionCollisions;
21
- }
22
- // Compute whether the draggable element is completely contained within the preview area
23
- const previewAreaRect = droppableContainer?.rect?.current;
24
- const isContained = collisionRect.top >= previewAreaRect.top && collisionRect.left >= previewAreaRect.left && collisionRect.bottom <= previewAreaRect.bottom && collisionRect.right <= previewAreaRect.right;
25
- if (isContained) {
26
- return rectIntersectionCollisions;
27
- }
28
- };
29
- //# sourceMappingURL=collisionDetection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collisionDetection.js","names":["rectIntersection","customCollisionDetection","collisionRect","droppableContainers","args","droppableContainer","find","id","rectIntersectionCollisions","length","previewAreaRect","rect","current","isContained","top","left","bottom","right"],"sources":["../../../../src/views/LivePreview/Context/collisionDetection.ts"],"sourcesContent":["import type { CollisionDetection } from '@dnd-kit/core'\n\nimport { rectIntersection } from '@dnd-kit/core'\n\n// If the toolbar exits the preview area, we need to reset its position\n// This will prevent the toolbar from getting stuck outside the preview area\nexport const customCollisionDetection: CollisionDetection = ({\n collisionRect,\n droppableContainers,\n ...args\n}) => {\n const droppableContainer = droppableContainers.find(({ id }) => id === 'live-preview-area')\n\n const rectIntersectionCollisions = rectIntersection({\n ...args,\n collisionRect,\n droppableContainers: [droppableContainer],\n })\n\n // Collision detection algorithms return an array of collisions\n if (rectIntersectionCollisions.length === 0) {\n // The preview area is not intersecting, return early\n return rectIntersectionCollisions\n }\n\n // Compute whether the draggable element is completely contained within the preview area\n const previewAreaRect = droppableContainer?.rect?.current\n\n const isContained =\n collisionRect.top >= previewAreaRect.top &&\n collisionRect.left >= previewAreaRect.left &&\n collisionRect.bottom <= previewAreaRect.bottom &&\n collisionRect.right <= previewAreaRect.right\n\n if (isContained) {\n return rectIntersectionCollisions\n }\n}\n"],"mappings":"AAEA,SAASA,gBAAgB,QAAQ;AAEjC;AACA;AACA,OAAO,MAAMC,wBAAA,GAA+CA,CAAC;EAC3DC,aAAa;EACbC,mBAAmB;EACnB,GAAGC;AAAA,CACJ;EACC,MAAMC,kBAAA,GAAqBF,mBAAA,CAAoBG,IAAI,CAAC,CAAC;IAAEC;EAAE,CAAE,KAAKA,EAAA,KAAO;EAEvE,MAAMC,0BAAA,GAA6BR,gBAAA,CAAiB;IAClD,GAAGI,IAAI;IACPF,aAAA;IACAC,mBAAA,EAAqB,CAACE,kBAAA;EACxB;EAEA;EACA,IAAIG,0BAAA,CAA2BC,MAAM,KAAK,GAAG;IAC3C;IACA,OAAOD,0BAAA;EACT;EAEA;EACA,MAAME,eAAA,GAAkBL,kBAAA,EAAoBM,IAAA,EAAMC,OAAA;EAElD,MAAMC,WAAA,GACJX,aAAA,CAAcY,GAAG,IAAIJ,eAAA,CAAgBI,GAAG,IACxCZ,aAAA,CAAca,IAAI,IAAIL,eAAA,CAAgBK,IAAI,IAC1Cb,aAAA,CAAcc,MAAM,IAAIN,eAAA,CAAgBM,MAAM,IAC9Cd,aAAA,CAAce,KAAK,IAAIP,eAAA,CAAgBO,KAAK;EAE9C,IAAIJ,WAAA,EAAa;IACf,OAAOL,0BAAA;EACT;AACF","ignoreList":[]}
@@ -1,51 +0,0 @@
1
- import type { LivePreviewConfig } from 'payload';
2
- import type { fieldSchemaToJSON } from 'payload/shared';
3
- import type { Dispatch } from 'react';
4
- import type React from 'react';
5
- import type { usePopupWindow } from '../usePopupWindow.js';
6
- import type { SizeReducerAction } from './sizeReducer.js';
7
- export interface LivePreviewContextType {
8
- appIsReady: boolean;
9
- breakpoint: LivePreviewConfig['breakpoints'][number]['name'];
10
- breakpoints: LivePreviewConfig['breakpoints'];
11
- fieldSchemaJSON?: ReturnType<typeof fieldSchemaToJSON>;
12
- iframeHasLoaded: boolean;
13
- iframeRef: React.RefObject<HTMLIFrameElement | null>;
14
- isPopupOpen: boolean;
15
- measuredDeviceSize: {
16
- height: number;
17
- width: number;
18
- };
19
- openPopupWindow: ReturnType<typeof usePopupWindow>['openPopupWindow'];
20
- popupRef?: React.RefObject<null | Window>;
21
- previewWindowType: 'iframe' | 'popup';
22
- setAppIsReady: (appIsReady: boolean) => void;
23
- setBreakpoint: (breakpoint: LivePreviewConfig['breakpoints'][number]['name']) => void;
24
- setHeight: (height: number) => void;
25
- setIframeHasLoaded: (loaded: boolean) => void;
26
- setMeasuredDeviceSize: (size: {
27
- height: number;
28
- width: number;
29
- }) => void;
30
- setPreviewWindowType: (previewWindowType: 'iframe' | 'popup') => void;
31
- setSize: Dispatch<SizeReducerAction>;
32
- setToolbarPosition: (position: {
33
- x: number;
34
- y: number;
35
- }) => void;
36
- setWidth: (width: number) => void;
37
- setZoom: (zoom: number) => void;
38
- size: {
39
- height: number;
40
- width: number;
41
- };
42
- toolbarPosition: {
43
- x: number;
44
- y: number;
45
- };
46
- url: string | undefined;
47
- zoom: number;
48
- }
49
- export declare const LivePreviewContext: React.Context<LivePreviewContextType>;
50
- export declare const useLivePreviewContext: () => LivePreviewContextType;
51
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAEzD,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,OAAO,CAAA;IACnB,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAA;IAC5D,WAAW,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAC7C,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;IACtD,eAAe,EAAE,OAAO,CAAA;IACxB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAA;IACpD,WAAW,EAAE,OAAO,CAAA;IACpB,kBAAkB,EAAE;QAClB,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,eAAe,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACrE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,CAAA;IACzC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,CAAA;IACrC,aAAa,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAA;IAC5C,aAAa,EAAE,CAAC,UAAU,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IACrF,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,kBAAkB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IAC7C,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACxE,oBAAoB,EAAE,CAAC,iBAAiB,EAAE,QAAQ,GAAG,OAAO,KAAK,IAAI,CAAA;IACrE,OAAO,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IACpC,kBAAkB,EAAE,CAAC,QAAQ,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAChE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,eAAe,EAAE;QACf,CAAC,EAAE,MAAM,CAAA;QACT,CAAC,EAAE,MAAM,CAAA;KACV,CAAA;IACD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,kBAAkB,uCAmC7B,CAAA;AAEF,eAAO,MAAM,qBAAqB,8BAAgC,CAAA"}
@@ -1,41 +0,0 @@
1
- 'use client';
2
-
3
- import { createContext, use } from 'react';
4
- export const LivePreviewContext = createContext({
5
- appIsReady: false,
6
- breakpoint: undefined,
7
- breakpoints: undefined,
8
- fieldSchemaJSON: undefined,
9
- iframeHasLoaded: false,
10
- iframeRef: undefined,
11
- isPopupOpen: false,
12
- measuredDeviceSize: {
13
- height: 0,
14
- width: 0
15
- },
16
- openPopupWindow: () => {},
17
- popupRef: undefined,
18
- previewWindowType: 'iframe',
19
- setAppIsReady: () => {},
20
- setBreakpoint: () => {},
21
- setHeight: () => {},
22
- setIframeHasLoaded: () => {},
23
- setMeasuredDeviceSize: () => {},
24
- setPreviewWindowType: () => {},
25
- setSize: () => {},
26
- setToolbarPosition: () => {},
27
- setWidth: () => {},
28
- setZoom: () => {},
29
- size: {
30
- height: 0,
31
- width: 0
32
- },
33
- toolbarPosition: {
34
- x: 0,
35
- y: 0
36
- },
37
- url: undefined,
38
- zoom: 1
39
- });
40
- export const useLivePreviewContext = () => use(LivePreviewContext);
41
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","names":["createContext","use","LivePreviewContext","appIsReady","breakpoint","undefined","breakpoints","fieldSchemaJSON","iframeHasLoaded","iframeRef","isPopupOpen","measuredDeviceSize","height","width","openPopupWindow","popupRef","previewWindowType","setAppIsReady","setBreakpoint","setHeight","setIframeHasLoaded","setMeasuredDeviceSize","setPreviewWindowType","setSize","setToolbarPosition","setWidth","setZoom","size","toolbarPosition","x","y","url","zoom","useLivePreviewContext"],"sources":["../../../../src/views/LivePreview/Context/context.ts"],"sourcesContent":["'use client'\nimport type { LivePreviewConfig } from 'payload'\nimport type { fieldSchemaToJSON } from 'payload/shared'\nimport type { Dispatch } from 'react'\nimport type React from 'react'\n\nimport { createContext, use } from 'react'\n\nimport type { usePopupWindow } from '../usePopupWindow.js'\nimport type { SizeReducerAction } from './sizeReducer.js'\n\nexport interface LivePreviewContextType {\n appIsReady: boolean\n breakpoint: LivePreviewConfig['breakpoints'][number]['name']\n breakpoints: LivePreviewConfig['breakpoints']\n fieldSchemaJSON?: ReturnType<typeof fieldSchemaToJSON>\n iframeHasLoaded: boolean\n iframeRef: React.RefObject<HTMLIFrameElement | null>\n isPopupOpen: boolean\n measuredDeviceSize: {\n height: number\n width: number\n }\n openPopupWindow: ReturnType<typeof usePopupWindow>['openPopupWindow']\n popupRef?: React.RefObject<null | Window>\n previewWindowType: 'iframe' | 'popup'\n setAppIsReady: (appIsReady: boolean) => void\n setBreakpoint: (breakpoint: LivePreviewConfig['breakpoints'][number]['name']) => void\n setHeight: (height: number) => void\n setIframeHasLoaded: (loaded: boolean) => void\n setMeasuredDeviceSize: (size: { height: number; width: number }) => void\n setPreviewWindowType: (previewWindowType: 'iframe' | 'popup') => void\n setSize: Dispatch<SizeReducerAction>\n setToolbarPosition: (position: { x: number; y: number }) => void\n setWidth: (width: number) => void\n setZoom: (zoom: number) => void\n size: {\n height: number\n width: number\n }\n toolbarPosition: {\n x: number\n y: number\n }\n url: string | undefined\n zoom: number\n}\n\nexport const LivePreviewContext = createContext<LivePreviewContextType>({\n appIsReady: false,\n breakpoint: undefined,\n breakpoints: undefined,\n fieldSchemaJSON: undefined,\n iframeHasLoaded: false,\n iframeRef: undefined,\n isPopupOpen: false,\n measuredDeviceSize: {\n height: 0,\n width: 0,\n },\n openPopupWindow: () => {},\n popupRef: undefined,\n previewWindowType: 'iframe',\n setAppIsReady: () => {},\n setBreakpoint: () => {},\n setHeight: () => {},\n setIframeHasLoaded: () => {},\n setMeasuredDeviceSize: () => {},\n setPreviewWindowType: () => {},\n setSize: () => {},\n setToolbarPosition: () => {},\n setWidth: () => {},\n setZoom: () => {},\n size: {\n height: 0,\n width: 0,\n },\n toolbarPosition: {\n x: 0,\n y: 0,\n },\n url: undefined,\n zoom: 1,\n})\n\nexport const useLivePreviewContext = () => use(LivePreviewContext)\n"],"mappings":"AAAA;;AAMA,SAASA,aAAa,EAAEC,GAAG,QAAQ;AA0CnC,OAAO,MAAMC,kBAAA,GAAqBF,aAAA,CAAsC;EACtEG,UAAA,EAAY;EACZC,UAAA,EAAYC,SAAA;EACZC,WAAA,EAAaD,SAAA;EACbE,eAAA,EAAiBF,SAAA;EACjBG,eAAA,EAAiB;EACjBC,SAAA,EAAWJ,SAAA;EACXK,WAAA,EAAa;EACbC,kBAAA,EAAoB;IAClBC,MAAA,EAAQ;IACRC,KAAA,EAAO;EACT;EACAC,eAAA,EAAiBA,CAAA,MAAO;EACxBC,QAAA,EAAUV,SAAA;EACVW,iBAAA,EAAmB;EACnBC,aAAA,EAAeA,CAAA,MAAO;EACtBC,aAAA,EAAeA,CAAA,MAAO;EACtBC,SAAA,EAAWA,CAAA,MAAO;EAClBC,kBAAA,EAAoBA,CAAA,MAAO;EAC3BC,qBAAA,EAAuBA,CAAA,MAAO;EAC9BC,oBAAA,EAAsBA,CAAA,MAAO;EAC7BC,OAAA,EAASA,CAAA,MAAO;EAChBC,kBAAA,EAAoBA,CAAA,MAAO;EAC3BC,QAAA,EAAUA,CAAA,MAAO;EACjBC,OAAA,EAASA,CAAA,MAAO;EAChBC,IAAA,EAAM;IACJf,MAAA,EAAQ;IACRC,KAAA,EAAO;EACT;EACAe,eAAA,EAAiB;IACfC,CAAA,EAAG;IACHC,CAAA,EAAG;EACL;EACAC,GAAA,EAAK1B,SAAA;EACL2B,IAAA,EAAM;AACR;AAEA,OAAO,MAAMC,qBAAA,GAAwBA,CAAA,KAAMhC,GAAA,CAAIC,kBAAA","ignoreList":[]}
@@ -1,19 +0,0 @@
1
- import type { ClientField, LivePreviewConfig } from 'payload';
2
- import React from 'react';
3
- import type { usePopupWindow } from '../usePopupWindow.js';
4
- export type LivePreviewProviderProps = {
5
- appIsReady?: boolean;
6
- breakpoints?: LivePreviewConfig['breakpoints'];
7
- children: React.ReactNode;
8
- deviceSize?: {
9
- height: number;
10
- width: number;
11
- };
12
- fieldSchema: ClientField[];
13
- isPopupOpen?: boolean;
14
- openPopupWindow?: ReturnType<typeof usePopupWindow>['openPopupWindow'];
15
- popupRef?: React.RefObject<Window>;
16
- url?: string;
17
- };
18
- export declare const LivePreviewProvider: React.FC<LivePreviewProviderProps>;
19
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAK7D,OAAO,KAA2C,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAM1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAA;IAC9C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE;QACX,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,WAAW,EAAE,WAAW,EAAE,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,eAAe,CAAC,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC,iBAAiB,CAAC,CAAA;IACtE,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA6KlE,CAAA"}
@@ -1,154 +0,0 @@
1
- 'use client';
2
-
3
- import { jsx as _jsx } from "react/jsx-runtime";
4
- import { DndContext } from '@dnd-kit/core';
5
- import { useConfig } from '@payloadcms/ui';
6
- import { fieldSchemaToJSON } from 'payload/shared';
7
- import React, { useCallback, useEffect, useState } from 'react';
8
- import { customCollisionDetection } from './collisionDetection.js';
9
- import { LivePreviewContext } from './context.js';
10
- import { sizeReducer } from './sizeReducer.js';
11
- export const LivePreviewProvider = ({
12
- breakpoints,
13
- children,
14
- fieldSchema,
15
- isPopupOpen,
16
- openPopupWindow,
17
- popupRef,
18
- url
19
- }) => {
20
- const [previewWindowType, setPreviewWindowType] = useState('iframe');
21
- const [appIsReady, setAppIsReady] = useState(false);
22
- const [listeningForMessages, setListeningForMessages] = useState(false);
23
- const iframeRef = React.useRef(null);
24
- const [iframeHasLoaded, setIframeHasLoaded] = useState(false);
25
- const {
26
- config
27
- } = useConfig();
28
- const [zoom, setZoom] = useState(1);
29
- const [position, setPosition] = useState({
30
- x: 0,
31
- y: 0
32
- });
33
- const [size, setSize] = React.useReducer(sizeReducer, {
34
- height: 0,
35
- width: 0
36
- });
37
- const [measuredDeviceSize, setMeasuredDeviceSize] = useState({
38
- height: 0,
39
- width: 0
40
- });
41
- const [breakpoint, setBreakpoint] = React.useState('responsive');
42
- const [fieldSchemaJSON] = useState(() => {
43
- return fieldSchemaToJSON(fieldSchema, config);
44
- });
45
- // The toolbar needs to freely drag and drop around the page
46
- const handleDragEnd = ev => {
47
- // only update position if the toolbar is completely within the preview area
48
- // otherwise reset it back to the previous position
49
- // TODO: reset to the nearest edge of the preview area
50
- if (ev.over && ev.over.id === 'live-preview-area') {
51
- const newPos = {
52
- x: position.x + ev.delta.x,
53
- y: position.y + ev.delta.y
54
- };
55
- setPosition(newPos);
56
- } else {
57
- // reset
58
- }
59
- };
60
- const setWidth = useCallback(width => {
61
- setSize({
62
- type: 'width',
63
- value: width
64
- });
65
- }, [setSize]);
66
- const setHeight = useCallback(height => {
67
- setSize({
68
- type: 'height',
69
- value: height
70
- });
71
- }, [setSize]);
72
- // explicitly set new width and height when as new breakpoints are selected
73
- // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly
74
- useEffect(() => {
75
- const foundBreakpoint = breakpoints?.find(bp => bp.name === breakpoint);
76
- if (foundBreakpoint && breakpoint !== 'responsive' && breakpoint !== 'custom' && typeof foundBreakpoint?.width === 'number' && typeof foundBreakpoint?.height === 'number') {
77
- setSize({
78
- type: 'reset',
79
- value: {
80
- height: foundBreakpoint.height,
81
- width: foundBreakpoint.width
82
- }
83
- });
84
- }
85
- }, [breakpoint, breakpoints]);
86
- // Receive the `ready` message from the popup window
87
- // This indicates that the app is ready to receive `window.postMessage` events
88
- // This is also the only cross-origin way of detecting when a popup window has loaded
89
- // Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups
90
- useEffect(() => {
91
- const handleMessage = event => {
92
- if (url?.startsWith(event.origin) && event.data && typeof event.data === 'object' && event.data.type === 'payload-live-preview') {
93
- if (event.data.ready) {
94
- setAppIsReady(true);
95
- }
96
- }
97
- };
98
- window.addEventListener('message', handleMessage);
99
- setListeningForMessages(true);
100
- return () => {
101
- window.removeEventListener('message', handleMessage);
102
- };
103
- }, [url, listeningForMessages]);
104
- const handleWindowChange = useCallback(type => {
105
- setAppIsReady(false);
106
- setPreviewWindowType(type);
107
- if (type === 'popup') {
108
- openPopupWindow();
109
- }
110
- }, [openPopupWindow]);
111
- // when the user closes the popup window, switch back to the iframe
112
- // the `usePopupWindow` reports the `isPopupOpen` state for us to use here
113
- useEffect(() => {
114
- const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe';
115
- if (newPreviewWindowType !== previewWindowType) {
116
- handleWindowChange('iframe');
117
- }
118
- }, [previewWindowType, isPopupOpen, handleWindowChange]);
119
- return /*#__PURE__*/_jsx(LivePreviewContext, {
120
- value: {
121
- appIsReady,
122
- breakpoint,
123
- breakpoints,
124
- fieldSchemaJSON,
125
- iframeHasLoaded,
126
- iframeRef,
127
- isPopupOpen,
128
- measuredDeviceSize,
129
- openPopupWindow,
130
- popupRef,
131
- previewWindowType,
132
- setAppIsReady,
133
- setBreakpoint,
134
- setHeight,
135
- setIframeHasLoaded,
136
- setMeasuredDeviceSize,
137
- setPreviewWindowType: handleWindowChange,
138
- setSize,
139
- setToolbarPosition: setPosition,
140
- setWidth,
141
- setZoom,
142
- size,
143
- toolbarPosition: position,
144
- url,
145
- zoom
146
- },
147
- children: /*#__PURE__*/_jsx(DndContext, {
148
- collisionDetection: customCollisionDetection,
149
- onDragEnd: handleDragEnd,
150
- children: listeningForMessages && children
151
- })
152
- });
153
- };
154
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","names":["DndContext","useConfig","fieldSchemaToJSON","React","useCallback","useEffect","useState","customCollisionDetection","LivePreviewContext","sizeReducer","LivePreviewProvider","breakpoints","children","fieldSchema","isPopupOpen","openPopupWindow","popupRef","url","previewWindowType","setPreviewWindowType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","iframeRef","useRef","iframeHasLoaded","setIframeHasLoaded","config","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","height","width","measuredDeviceSize","setMeasuredDeviceSize","breakpoint","setBreakpoint","fieldSchemaJSON","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","name","handleMessage","event","startsWith","origin","data","ready","window","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","_jsx","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"sources":["../../../../src/views/LivePreview/Context/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientField, LivePreviewConfig } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport { useConfig } from '@payloadcms/ui'\nimport { fieldSchemaToJSON } from 'payload/shared'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { usePopupWindow } from '../usePopupWindow.js'\n\nimport { customCollisionDetection } from './collisionDetection.js'\nimport { LivePreviewContext } from './context.js'\nimport { sizeReducer } from './sizeReducer.js'\n\nexport type LivePreviewProviderProps = {\n appIsReady?: boolean\n breakpoints?: LivePreviewConfig['breakpoints']\n children: React.ReactNode\n deviceSize?: {\n height: number\n width: number\n }\n fieldSchema: ClientField[]\n isPopupOpen?: boolean\n openPopupWindow?: ReturnType<typeof usePopupWindow>['openPopupWindow']\n popupRef?: React.RefObject<Window>\n url?: string\n}\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints,\n children,\n fieldSchema,\n isPopupOpen,\n openPopupWindow,\n popupRef,\n url,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [iframeHasLoaded, setIframeHasLoaded] = useState(false)\n const { config } = useConfig()\n\n const [zoom, setZoom] = useState(1)\n\n const [position, setPosition] = useState({ x: 0, y: 0 })\n\n const [size, setSize] = React.useReducer(sizeReducer, { height: 0, width: 0 })\n\n const [measuredDeviceSize, setMeasuredDeviceSize] = useState({\n height: 0,\n width: 0,\n })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n const [fieldSchemaJSON] = useState(() => {\n return fieldSchemaToJSON(fieldSchema, config)\n })\n\n // The toolbar needs to freely drag and drop around the page\n const handleDragEnd = (ev) => {\n // only update position if the toolbar is completely within the preview area\n // otherwise reset it back to the previous position\n // TODO: reset to the nearest edge of the preview area\n if (ev.over && ev.over.id === 'live-preview-area') {\n const newPos = {\n x: position.x + ev.delta.x,\n y: position.y + ev.delta.y,\n }\n\n setPosition(newPos)\n } else {\n // reset\n }\n }\n\n const setWidth = useCallback(\n (width) => {\n setSize({ type: 'width', value: width })\n },\n [setSize],\n )\n\n const setHeight = useCallback(\n (height) => {\n setSize({ type: 'height', value: height })\n },\n [setSize],\n )\n\n // explicitly set new width and height when as new breakpoints are selected\n // exclude `custom` breakpoint as it is handled by the `setWidth` and `setHeight` directly\n useEffect(() => {\n const foundBreakpoint = breakpoints?.find((bp) => bp.name === breakpoint)\n\n if (\n foundBreakpoint &&\n breakpoint !== 'responsive' &&\n breakpoint !== 'custom' &&\n typeof foundBreakpoint?.width === 'number' &&\n typeof foundBreakpoint?.height === 'number'\n ) {\n setSize({\n type: 'reset',\n value: {\n height: foundBreakpoint.height,\n width: foundBreakpoint.width,\n },\n })\n }\n }, [breakpoint, breakpoints])\n\n // Receive the `ready` message from the popup window\n // This indicates that the app is ready to receive `window.postMessage` events\n // This is also the only cross-origin way of detecting when a popup window has loaded\n // Unlike iframe elements which have an `onLoad` handler, there is no way to access `window.open` on popups\n useEffect(() => {\n const handleMessage = (event: MessageEvent) => {\n if (\n url?.startsWith(event.origin) &&\n event.data &&\n typeof event.data === 'object' &&\n event.data.type === 'payload-live-preview'\n ) {\n if (event.data.ready) {\n setAppIsReady(true)\n }\n }\n }\n\n window.addEventListener('message', handleMessage)\n\n setListeningForMessages(true)\n\n return () => {\n window.removeEventListener('message', handleMessage)\n }\n }, [url, listeningForMessages])\n\n const handleWindowChange = useCallback(\n (type: 'iframe' | 'popup') => {\n setAppIsReady(false)\n setPreviewWindowType(type)\n if (type === 'popup') {\n openPopupWindow()\n }\n },\n [openPopupWindow],\n )\n\n // when the user closes the popup window, switch back to the iframe\n // the `usePopupWindow` reports the `isPopupOpen` state for us to use here\n useEffect(() => {\n const newPreviewWindowType = isPopupOpen ? 'popup' : 'iframe'\n\n if (newPreviewWindowType !== previewWindowType) {\n handleWindowChange('iframe')\n }\n }, [previewWindowType, isPopupOpen, handleWindowChange])\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isPopupOpen,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIframeHasLoaded,\n setMeasuredDeviceSize,\n setPreviewWindowType: handleWindowChange,\n setSize,\n setToolbarPosition: setPosition,\n setWidth,\n setZoom,\n size,\n toolbarPosition: position,\n url,\n zoom,\n }}\n >\n <DndContext collisionDetection={customCollisionDetection} onDragEnd={handleDragEnd}>\n {listeningForMessages && children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,20 +0,0 @@
1
- type SizeReducerState = {
2
- height: number;
3
- width: number;
4
- };
5
- export type SizeReducerAction = {
6
- type: 'height' | 'width';
7
- value: number;
8
- } | {
9
- type: 'reset';
10
- value: {
11
- height: number;
12
- width: number;
13
- };
14
- };
15
- export declare const sizeReducer: (state: SizeReducerState, action: SizeReducerAction) => {
16
- height: number;
17
- width: number;
18
- };
19
- export {};
20
- //# sourceMappingURL=sizeReducer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sizeReducer.d.ts","sourceRoot":"","sources":["../../../../src/views/LivePreview/Context/sizeReducer.ts"],"names":[],"mappings":"AAWA,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAEL,eAAO,MAAM,WAAW,UAAW,gBAAgB,UAAU,iBAAiB;;WAhBrE,MAAM;CAyBd,CAAA"}