@payloadcms/next 3.19.0 → 3.20.0-canary.260f830

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 (100) hide show
  1. package/dist/prod/styles.css +1 -1
  2. package/dist/views/Account/index.d.ts.map +1 -1
  3. package/dist/views/Account/index.js +2 -1
  4. package/dist/views/Account/index.js.map +1 -1
  5. package/dist/views/CreateFirstUser/index.client.d.ts.map +1 -1
  6. package/dist/views/CreateFirstUser/index.client.js +4 -2
  7. package/dist/views/CreateFirstUser/index.client.js.map +1 -1
  8. package/dist/views/CreateFirstUser/index.d.ts.map +1 -1
  9. package/dist/views/CreateFirstUser/index.js +2 -1
  10. package/dist/views/CreateFirstUser/index.js.map +1 -1
  11. package/dist/views/Document/getDocumentPermissions.js +2 -2
  12. package/dist/views/Document/getDocumentPermissions.js.map +1 -1
  13. package/dist/views/Document/index.d.ts.map +1 -1
  14. package/dist/views/Document/index.js +2 -1
  15. package/dist/views/Document/index.js.map +1 -1
  16. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  17. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +2 -0
  18. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  19. package/dist/views/LivePreview/index.client.d.ts.map +1 -1
  20. package/dist/views/LivePreview/index.client.js +5 -2
  21. package/dist/views/LivePreview/index.client.js.map +1 -1
  22. package/dist/views/Version/Default/index.js +1 -1
  23. package/dist/views/Version/Default/index.js.map +1 -1
  24. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts +27 -0
  25. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.d.ts.map +1 -0
  26. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js +76 -0
  27. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -0
  28. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.scss +46 -0
  29. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts +4 -0
  30. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.d.ts.map +1 -0
  31. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +41 -0
  32. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -0
  33. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts +5 -0
  34. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.d.ts.map +1 -0
  35. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +45 -0
  36. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -0
  37. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.scss +14 -0
  38. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts +1 -2
  39. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.d.ts.map +1 -1
  40. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +60 -55
  41. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  42. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.scss +3 -12
  43. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts +1 -2
  44. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.d.ts.map +1 -1
  45. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +1 -2
  46. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  47. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts +4 -0
  48. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.d.ts.map +1 -0
  49. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js +34 -0
  50. package/dist/views/Version/RenderFieldsToDiff/fields/Row/index.js.map +1 -0
  51. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts +1 -2
  52. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  53. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +1 -2
  54. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  55. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts +2 -2
  56. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.d.ts.map +1 -1
  57. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +81 -34
  58. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  59. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.scss +20 -0
  60. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts +1 -2
  61. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.d.ts.map +1 -1
  62. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +1 -2
  63. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  64. package/dist/views/Version/RenderFieldsToDiff/fields/index.d.ts.map +1 -1
  65. package/dist/views/Version/RenderFieldsToDiff/fields/index.js +11 -9
  66. package/dist/views/Version/RenderFieldsToDiff/fields/index.js.map +1 -1
  67. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts +0 -1
  68. package/dist/views/Version/RenderFieldsToDiff/fields/types.d.ts.map +1 -1
  69. package/dist/views/Version/RenderFieldsToDiff/fields/types.js.map +1 -1
  70. package/dist/views/Version/RenderFieldsToDiff/index.d.ts +1 -2
  71. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  72. package/dist/views/Version/RenderFieldsToDiff/index.js +4 -6
  73. package/dist/views/Version/RenderFieldsToDiff/index.js.map +1 -1
  74. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts +21 -0
  75. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.d.ts.map +1 -0
  76. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js +188 -0
  77. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.js.map +1 -0
  78. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js +860 -0
  79. package/dist/views/Version/RenderFieldsToDiff/utilities/countChangedFields.spec.js.map +1 -0
  80. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.d.ts +2 -0
  81. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.d.ts.map +1 -0
  82. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js +4 -0
  83. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.js.map +1 -0
  84. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js +46 -0
  85. package/dist/views/Version/RenderFieldsToDiff/utilities/fieldHasChanges.spec.js.map +1 -0
  86. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts +13 -0
  87. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.d.ts.map +1 -0
  88. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js +35 -0
  89. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.js.map +1 -0
  90. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js +104 -0
  91. package/dist/views/Version/RenderFieldsToDiff/utilities/getFieldsForRowComparison.spec.js.map +1 -0
  92. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  93. package/dist/views/Version/Restore/index.js +2 -2
  94. package/dist/views/Version/Restore/index.js.map +1 -1
  95. package/package.json +6 -6
  96. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts +0 -6
  97. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.d.ts.map +0 -1
  98. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js +0 -43
  99. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.js.map +0 -1
  100. package/dist/views/Version/RenderFieldsToDiff/fields/Nested/index.scss +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","DocumentLocked","DocumentTakeOver","Form","LeaveWithoutSaving","OperationProvider","SetDocumentStepNav","SetDocumentTitle","useAuth","useConfig","useDocumentDrawerContext","useDocumentEvents","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","useUploadEdits","abortAndIgnore","formatAdminURL","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","collectionConfig","config","Description","fields","globalConfig","PreviewButton","PublishButton","SaveButton","SaveDraftButton","schemaPath","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","initialState","isEditing","isInitializing","lastUpdateTime","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","onSave","onSaveFromContext","operation","admin","user","userSlug","routes","adminRoute","router","params","locale","get","t","previewWindowType","refreshCookieAsync","reportUpdate","resetUploadEdits","getFormState","docConfig","entitySlug","slug","depth","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","Boolean","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","abortOnChangeRef","abortOnSaveRef","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","controller","updatedAt","result","toISOString","doc","redirectRoute","path","push","docPreferences","state","data","renderAllFields","returnLockStatus","signal","current","onChange","formState","prevFormState","currentTime","timeSinceLastUpdate","updateLastEdited","lockedState","previousOwnerID","lockedUserID","currentPath","window","location","pathname","documentID","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","customComponents","permissions","readOnlyForIncomingUser","filter","join","forceSidebarWrap","readOnly","schemaPathSegments","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","serverURL","api","apiRoute","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","Upload","children","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentSlots,\n FormState,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n DocumentLocked,\n DocumentTakeOver,\n Form,\n LeaveWithoutSaving,\n OperationProvider,\n SetDocumentStepNav,\n SetDocumentTitle,\n useAuth,\n useConfig,\n useDocumentDrawerContext,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n abortAndIgnore,\n formatAdminURL,\n handleAbortRef,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useLivePreviewContext } from './Context/context.js'\nimport './index.scss'\nimport { LivePreviewProvider } from './Context/index.js'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n} & DocumentSlots\n\nconst PreviewView: React.FC<Props> = ({\n collectionConfig,\n config,\n Description,\n fields,\n globalConfig,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n schemaPath,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const params = useSearchParams()\n const locale = params.get('locale')\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const docConfig = collectionConfig || globalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const depth = useEditDepth()\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: entitySlug,\n signal: controller.signal,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n signal: controller.signal,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerID =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPath,\n setDocumentIsLocked,\n user?.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentID = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentID && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n })\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n Description={Description}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={[collectionSlug || globalSlug]}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<\n {\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n } & DocumentSlots\n> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const globalConfig = getEntityConfig({ globalSlug })\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n Description={props.Description}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n PreviewButton={props.PreviewButton}\n PublishButton={props.PublishButton}\n SaveButton={props.SaveButton}\n SaveDraftButton={props.SaveDraftButton}\n schemaPath={schemaPath}\n serverURL={serverURL}\n Upload={props.Upload}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.client.js","names":["c","_c","DocumentControls","DocumentFields","DocumentLocked","DocumentTakeOver","Form","LeaveWithoutSaving","OperationProvider","SetDocumentStepNav","SetDocumentTitle","useAuth","useConfig","useDocumentDrawerContext","useDocumentEvents","useDocumentInfo","useEditDepth","useServerFunctions","useTranslation","useUploadEdits","abortAndIgnore","formatAdminURL","handleAbortRef","handleBackToDashboard","handleGoBack","handleTakeOver","useRouter","useSearchParams","React","Fragment","useCallback","useEffect","useRef","useState","useLivePreviewContext","LivePreviewProvider","LivePreview","usePopupWindow","baseClass","PreviewView","collectionConfig","config","Description","fields","globalConfig","PreviewButton","PublishButton","SaveButton","SaveDraftButton","schemaPath","id","action","AfterDocument","AfterFields","apiURL","BeforeFields","collectionSlug","currentEditor","disableActions","disableLeaveWithoutSaving","docPermissions","documentIsLocked","getDocPermissions","getDocPreferences","globalSlug","hasPublishPermission","hasSavePermission","incrementVersionCount","initialData","initialState","isEditing","isInitializing","lastUpdateTime","setCurrentEditor","setDocumentIsLocked","unlockDocument","updateDocumentEditor","updateSavedDocumentData","onSave","onSaveFromContext","operation","admin","user","userSlug","routes","adminRoute","router","params","locale","get","t","previewWindowType","refreshCookieAsync","reportUpdate","resetUploadEdits","getFormState","docConfig","entitySlug","slug","depth","lockDocumentsProp","lockDocuments","undefined","isLockingEnabled","lockDurationDefault","lockDuration","duration","lockDurationInMilliseconds","autosaveEnabled","Boolean","versions","drafts","autosave","preventLeaveWithoutSaving","isReadOnlyForIncomingUser","setIsReadOnlyForIncomingUser","showTakeOverModal","setShowTakeOverModal","abortOnChangeRef","abortOnSaveRef","editSessionStartTime","setEditSessionStartTime","Date","now","lockExpiryTime","isLockExpired","documentLockStateRef","hasShownLockedModal","isLocked","json","controller","updatedAt","result","toISOString","doc","redirectRoute","path","push","docPreferences","state","data","renderAllFields","returnLockStatus","signal","skipValidation","current","onChange","formState","prevFormState","submitted","currentTime","timeSinceLastUpdate","updateLastEdited","lockedState","previousOwnerID","lockedUserID","currentPath","window","location","pathname","documentID","stayWithinDocumentPaths","isStayingWithinDocument","some","includes","abortOnChange","abortOnSave","shouldShowDocumentLockedModal","_jsx","_jsxs","className","disabled","method","onSuccess","isActive","onReadOnly","onTakeOver","globalLabel","label","pluralLabel","labels","plural","useAsTitle","view","fallback","toString","customComponents","permissions","readOnlyForIncomingUser","filter","join","forceSidebarWrap","readOnly","schemaPathSegments","LivePreviewClient","props","$","breakpoints","url","t0","getEntityConfig","t1","serverURL","api","apiRoute","t2","eventType","isPopupOpen","openPopupWindow","popupRef","t3","Upload","children","fieldSchema"],"sources":["../../../src/views/LivePreview/index.client.tsx"],"sourcesContent":["'use client'\nimport type { FormProps } from '@payloadcms/ui'\nimport type {\n ClientCollectionConfig,\n ClientConfig,\n ClientField,\n ClientGlobalConfig,\n ClientUser,\n Data,\n DocumentSlots,\n FormState,\n LivePreviewConfig,\n} from 'payload'\n\nimport {\n DocumentControls,\n DocumentFields,\n DocumentLocked,\n DocumentTakeOver,\n Form,\n LeaveWithoutSaving,\n OperationProvider,\n SetDocumentStepNav,\n SetDocumentTitle,\n useAuth,\n useConfig,\n useDocumentDrawerContext,\n useDocumentEvents,\n useDocumentInfo,\n useEditDepth,\n useServerFunctions,\n useTranslation,\n useUploadEdits,\n} from '@payloadcms/ui'\nimport {\n abortAndIgnore,\n formatAdminURL,\n handleAbortRef,\n handleBackToDashboard,\n handleGoBack,\n handleTakeOver,\n} from '@payloadcms/ui/shared'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useLivePreviewContext } from './Context/context.js'\nimport './index.scss'\nimport { LivePreviewProvider } from './Context/index.js'\nimport { LivePreview } from './Preview/index.js'\nimport { usePopupWindow } from './usePopupWindow.js'\n\nconst baseClass = 'live-preview'\n\ntype Props = {\n readonly apiRoute: string\n readonly collectionConfig?: ClientCollectionConfig\n readonly config: ClientConfig\n readonly fields: ClientField[]\n readonly globalConfig?: ClientGlobalConfig\n readonly schemaPath: string\n readonly serverURL: string\n} & DocumentSlots\n\nconst PreviewView: React.FC<Props> = ({\n collectionConfig,\n config,\n Description,\n fields,\n globalConfig,\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n schemaPath,\n}) => {\n const {\n id,\n action,\n AfterDocument,\n AfterFields,\n apiURL,\n BeforeFields,\n collectionSlug,\n currentEditor,\n disableActions,\n disableLeaveWithoutSaving,\n docPermissions,\n documentIsLocked,\n getDocPermissions,\n getDocPreferences,\n globalSlug,\n hasPublishPermission,\n hasSavePermission,\n incrementVersionCount,\n initialData,\n initialState,\n isEditing,\n isInitializing,\n lastUpdateTime,\n setCurrentEditor,\n setDocumentIsLocked,\n unlockDocument,\n updateDocumentEditor,\n updateSavedDocumentData,\n } = useDocumentInfo()\n\n const { onSave: onSaveFromContext } = useDocumentDrawerContext()\n\n const operation = id ? 'update' : 'create'\n\n const {\n config: {\n admin: { user: userSlug },\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const router = useRouter()\n const params = useSearchParams()\n const locale = params.get('locale')\n const { t } = useTranslation()\n const { previewWindowType } = useLivePreviewContext()\n const { refreshCookieAsync, user } = useAuth()\n const { reportUpdate } = useDocumentEvents()\n const { resetUploadEdits } = useUploadEdits()\n const { getFormState } = useServerFunctions()\n\n const docConfig = collectionConfig || globalConfig\n\n const entitySlug = collectionConfig?.slug || globalConfig?.slug\n\n const depth = useEditDepth()\n\n const lockDocumentsProp = docConfig?.lockDocuments !== undefined ? docConfig?.lockDocuments : true\n const isLockingEnabled = lockDocumentsProp !== false\n\n const lockDurationDefault = 300 // Default 5 minutes in seconds\n const lockDuration =\n typeof lockDocumentsProp === 'object' ? lockDocumentsProp.duration : lockDurationDefault\n const lockDurationInMilliseconds = lockDuration * 1000\n\n const autosaveEnabled = Boolean(\n (collectionConfig?.versions?.drafts && collectionConfig?.versions?.drafts?.autosave) ||\n (globalConfig?.versions?.drafts && globalConfig?.versions?.drafts?.autosave),\n )\n\n const preventLeaveWithoutSaving =\n typeof disableLeaveWithoutSaving !== 'undefined' ? !disableLeaveWithoutSaving : !autosaveEnabled\n\n const [isReadOnlyForIncomingUser, setIsReadOnlyForIncomingUser] = useState(false)\n const [showTakeOverModal, setShowTakeOverModal] = useState(false)\n\n const abortOnChangeRef = useRef<AbortController>(null)\n const abortOnSaveRef = useRef<AbortController>(null)\n\n const [editSessionStartTime, setEditSessionStartTime] = useState(Date.now())\n\n const lockExpiryTime = lastUpdateTime + lockDurationInMilliseconds\n\n const isLockExpired = Date.now() > lockExpiryTime\n\n const documentLockStateRef = useRef<{\n hasShownLockedModal: boolean\n isLocked: boolean\n user: ClientUser | number | string\n } | null>({\n hasShownLockedModal: false,\n isLocked: false,\n user: null,\n })\n\n const onSave = useCallback(\n async (json): Promise<FormState> => {\n const controller = handleAbortRef(abortOnSaveRef)\n\n reportUpdate({\n id,\n entitySlug,\n updatedAt: json?.result?.updatedAt || new Date().toISOString(),\n })\n\n // If we're editing the doc of the logged-in user,\n // Refresh the cookie to get new permissions\n if (user && collectionSlug === userSlug && id === user.id) {\n void refreshCookieAsync()\n }\n\n incrementVersionCount()\n\n if (typeof updateSavedDocumentData === 'function') {\n void updateSavedDocumentData(json?.doc || {})\n }\n\n if (typeof onSaveFromContext === 'function') {\n void onSaveFromContext({\n ...json,\n operation: id ? 'update' : 'create',\n })\n }\n\n if (!isEditing && depth < 2) {\n // Redirect to the same locale if it's been set\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}/${json?.doc?.id}${locale ? `?locale=${locale}` : ''}`,\n })\n router.push(redirectRoute)\n } else {\n resetUploadEdits()\n }\n\n await getDocPermissions(json)\n\n if ((id || globalSlug) && !autosaveEnabled) {\n const docPreferences = await getDocPreferences()\n\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: json?.doc || json?.result,\n docPermissions,\n docPreferences,\n globalSlug,\n operation,\n renderAllFields: true,\n returnLockStatus: false,\n schemaPath: entitySlug,\n signal: controller.signal,\n skipValidation: true,\n })\n\n // Unlock the document after save\n if (isLockingEnabled) {\n setDocumentIsLocked(false)\n }\n\n abortOnSaveRef.current = null\n\n return state\n }\n },\n [\n adminRoute,\n collectionSlug,\n depth,\n docPermissions,\n entitySlug,\n getDocPermissions,\n getDocPreferences,\n getFormState,\n globalSlug,\n id,\n incrementVersionCount,\n isEditing,\n isLockingEnabled,\n locale,\n onSaveFromContext,\n operation,\n refreshCookieAsync,\n reportUpdate,\n resetUploadEdits,\n router,\n setDocumentIsLocked,\n updateSavedDocumentData,\n user,\n userSlug,\n autosaveEnabled,\n ],\n )\n\n const onChange: FormProps['onChange'][0] = useCallback(\n async ({ formState: prevFormState, submitted }) => {\n const controller = handleAbortRef(abortOnChangeRef)\n\n const currentTime = Date.now()\n const timeSinceLastUpdate = currentTime - editSessionStartTime\n\n const updateLastEdited = isLockingEnabled && timeSinceLastUpdate >= 10000 // 10 seconds\n\n if (updateLastEdited) {\n setEditSessionStartTime(currentTime)\n }\n\n const docPreferences = await getDocPreferences()\n\n const { lockedState, state } = await getFormState({\n id,\n collectionSlug,\n docPermissions,\n docPreferences,\n formState: prevFormState,\n globalSlug,\n operation,\n returnLockStatus: isLockingEnabled ? true : false,\n schemaPath,\n signal: controller.signal,\n skipValidation: !submitted,\n updateLastEdited,\n })\n\n setDocumentIsLocked(true)\n\n if (isLockingEnabled) {\n const previousOwnerID =\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id\n : documentLockStateRef.current?.user\n\n if (lockedState) {\n const lockedUserID =\n typeof lockedState.user === 'string' || typeof lockedState.user === 'number'\n ? lockedState.user\n : lockedState.user.id\n\n if (!documentLockStateRef.current || lockedUserID !== previousOwnerID) {\n if (previousOwnerID === user.id && lockedUserID !== user.id) {\n setShowTakeOverModal(true)\n documentLockStateRef.current.hasShownLockedModal = true\n }\n\n documentLockStateRef.current = documentLockStateRef.current = {\n hasShownLockedModal: documentLockStateRef.current?.hasShownLockedModal || false,\n isLocked: true,\n user: lockedState.user as ClientUser,\n }\n\n setCurrentEditor(lockedState.user as ClientUser)\n }\n }\n }\n\n abortOnChangeRef.current = null\n\n return state\n },\n [\n editSessionStartTime,\n isLockingEnabled,\n getDocPreferences,\n getFormState,\n id,\n collectionSlug,\n docPermissions,\n globalSlug,\n operation,\n schemaPath,\n setDocumentIsLocked,\n user?.id,\n setCurrentEditor,\n ],\n )\n\n // Clean up when the component unmounts or when the document is unlocked\n useEffect(() => {\n return () => {\n if (!isLockingEnabled) {\n return\n }\n\n const currentPath = window.location.pathname\n\n const documentID = id || globalSlug\n\n // Routes where we do NOT want to unlock the document\n const stayWithinDocumentPaths = ['preview', 'api', 'versions']\n\n const isStayingWithinDocument = stayWithinDocumentPaths.some((path) =>\n currentPath.includes(path),\n )\n\n // Unlock the document only if we're actually navigating away from the document\n if (documentID && documentIsLocked && !isStayingWithinDocument) {\n // Check if this user is still the current editor\n if (\n typeof documentLockStateRef.current?.user === 'object'\n ? documentLockStateRef.current?.user?.id === user?.id\n : documentLockStateRef.current?.user === user?.id\n ) {\n void unlockDocument(id, collectionSlug ?? globalSlug)\n setDocumentIsLocked(false)\n setCurrentEditor(null)\n }\n }\n\n setShowTakeOverModal(false)\n }\n }, [\n collectionSlug,\n globalSlug,\n id,\n unlockDocument,\n user,\n setCurrentEditor,\n isLockingEnabled,\n documentIsLocked,\n setDocumentIsLocked,\n ])\n\n useEffect(() => {\n const abortOnChange = abortOnChangeRef.current\n const abortOnSave = abortOnSaveRef.current\n\n return () => {\n abortAndIgnore(abortOnChange)\n abortAndIgnore(abortOnSave)\n }\n })\n\n const shouldShowDocumentLockedModal =\n documentIsLocked &&\n currentEditor &&\n (typeof currentEditor === 'object'\n ? currentEditor.id !== user?.id\n : currentEditor !== user?.id) &&\n !isReadOnlyForIncomingUser &&\n !showTakeOverModal &&\n // eslint-disable-next-line react-compiler/react-compiler\n !documentLockStateRef.current?.hasShownLockedModal &&\n !isLockExpired\n\n return (\n <OperationProvider operation={operation}>\n <Form\n action={action}\n className={`${baseClass}__form`}\n disabled={isReadOnlyForIncomingUser || !hasSavePermission}\n initialState={initialState}\n isInitializing={isInitializing}\n method={id ? 'PATCH' : 'POST'}\n onChange={[onChange]}\n onSuccess={onSave}\n >\n {isLockingEnabled && shouldShowDocumentLockedModal && !isReadOnlyForIncomingUser && (\n <DocumentLocked\n handleGoBack={() => handleGoBack({ adminRoute, collectionSlug, router })}\n isActive={shouldShowDocumentLockedModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n false,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n )\n }\n updatedAt={lastUpdateTime}\n user={currentEditor}\n />\n )}\n {isLockingEnabled && showTakeOverModal && (\n <DocumentTakeOver\n handleBackToDashboard={() => handleBackToDashboard({ adminRoute, router })}\n isActive={showTakeOverModal}\n onReadOnly={() => {\n setIsReadOnlyForIncomingUser(true)\n setShowTakeOverModal(false)\n }}\n />\n )}\n {!isReadOnlyForIncomingUser && preventLeaveWithoutSaving && <LeaveWithoutSaving />}\n <SetDocumentStepNav\n collectionSlug={collectionSlug}\n globalLabel={globalConfig?.label}\n globalSlug={globalSlug}\n id={id}\n pluralLabel={collectionConfig ? collectionConfig?.labels?.plural : undefined}\n useAsTitle={collectionConfig ? collectionConfig?.admin?.useAsTitle : undefined}\n view={t('general:livePreview')}\n />\n <SetDocumentTitle\n collectionConfig={collectionConfig}\n config={config}\n fallback={id?.toString() || ''}\n globalConfig={globalConfig}\n />\n <DocumentControls\n apiURL={apiURL}\n customComponents={{\n PreviewButton,\n PublishButton,\n SaveButton,\n SaveDraftButton,\n }}\n data={initialData}\n disableActions={disableActions}\n hasPublishPermission={hasPublishPermission}\n hasSavePermission={hasSavePermission}\n id={id}\n isEditing={isEditing}\n onTakeOver={() =>\n handleTakeOver(\n id,\n collectionSlug,\n globalSlug,\n user,\n true,\n updateDocumentEditor,\n setCurrentEditor,\n documentLockStateRef,\n isLockingEnabled,\n setIsReadOnlyForIncomingUser,\n )\n }\n permissions={docPermissions}\n readOnlyForIncomingUser={isReadOnlyForIncomingUser}\n slug={collectionConfig?.slug || globalConfig?.slug}\n user={currentEditor}\n />\n <div\n className={[baseClass, previewWindowType === 'popup' && `${baseClass}--detached`]\n .filter(Boolean)\n .join(' ')}\n >\n <div\n className={[\n `${baseClass}__main`,\n previewWindowType === 'popup' && `${baseClass}__main--popup-open`,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <DocumentFields\n AfterFields={AfterFields}\n BeforeFields={BeforeFields}\n Description={Description}\n docPermissions={docPermissions}\n fields={fields}\n forceSidebarWrap\n readOnly={isReadOnlyForIncomingUser || !hasSavePermission}\n schemaPathSegments={[collectionSlug || globalSlug]}\n />\n {AfterDocument}\n </div>\n <LivePreview collectionSlug={collectionSlug} globalSlug={globalSlug} />\n </div>\n </Form>\n </OperationProvider>\n )\n}\n\nexport const LivePreviewClient: React.FC<\n {\n readonly breakpoints: LivePreviewConfig['breakpoints']\n readonly initialData: Data\n readonly url: string\n } & DocumentSlots\n> = (props) => {\n const { breakpoints, url } = props\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const {\n config,\n config: {\n routes: { api: apiRoute },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const collectionConfig = getEntityConfig({ collectionSlug })\n\n const globalConfig = getEntityConfig({ globalSlug })\n\n const schemaPath = collectionSlug || globalSlug\n\n return (\n <Fragment>\n <LivePreviewProvider\n breakpoints={breakpoints}\n fieldSchema={collectionConfig?.fields || globalConfig?.fields}\n isPopupOpen={isPopupOpen}\n openPopupWindow={openPopupWindow}\n popupRef={popupRef}\n url={url}\n >\n <PreviewView\n apiRoute={apiRoute}\n collectionConfig={collectionConfig}\n config={config}\n Description={props.Description}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n PreviewButton={props.PreviewButton}\n PublishButton={props.PublishButton}\n SaveButton={props.SaveButton}\n SaveDraftButton={props.SaveDraftButton}\n schemaPath={schemaPath}\n serverURL={serverURL}\n Upload={props.Upload}\n />\n </LivePreviewProvider>\n </Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -6,7 +6,7 @@ import { Gutter, useConfig, useDocumentInfo, usePayloadAPI, useTranslation } fro
6
6
  import { formatDate } from '@payloadcms/ui/shared';
7
7
  import React, { useState } from 'react';
8
8
  import { diffComponents } from '../RenderFieldsToDiff/fields/index.js';
9
- import RenderFieldsToDiff from '../RenderFieldsToDiff/index.js';
9
+ import { RenderFieldsToDiff } from '../RenderFieldsToDiff/index.js';
10
10
  import Restore from '../Restore/index.js';
11
11
  import { SelectComparison } from '../SelectComparison/index.js';
12
12
  import { SelectLocales } from '../SelectLocales/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","Gutter","useConfig","useDocumentInfo","usePayloadAPI","useTranslation","formatDate","React","useState","diffComponents","RenderFieldsToDiff","Restore","SelectComparison","SelectLocales","SetStepNav","baseClass","DefaultVersionView","t0","$","doc","docPermissions","initialComparisonDoc","latestDraftVersion","latestPublishedVersion","localeOptions","versionID","config","getEntityConfig","i18n","id","collectionSlug","globalSlug","t1","collectionConfig","t2","globalConfig","locales","setLocales","compareValue","setCompareValue","admin","t3","localization","routes","t4","serverURL","dateFormat","api","apiRoute","versionCreatedAt","updatedAt","date","pattern","compareBaseURL","compareFetchURL","value","t5","Symbol","for","depth","draft","locale","t6","initialData","initialParams","t7","data","currentComparisonDoc","comparison","version","canUpdate","update","t8","map","_temp","localeValues","draftsEnabled","Boolean","versions","drafts","t9","_jsx","onChange","options","t10","fieldPermissions","fields","createdAt","_jsxs","className","children","t","autosave","label","labels","singular","originalDocID","status","_status","versionDate","baseURL","parentID"],"sources":["../../../../src/views/Version/Default/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload'\n\nimport { Gutter, useConfig, useDocumentInfo, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport { formatDate } from '@payloadcms/ui/shared'\nimport React, { useState } from 'react'\n\nimport type { CompareOption, DefaultVersionsViewProps } from './types.js'\n\nimport { diffComponents } from '../RenderFieldsToDiff/fields/index.js'\nimport RenderFieldsToDiff from '../RenderFieldsToDiff/index.js'\nimport Restore from '../Restore/index.js'\nimport { SelectComparison } from '../SelectComparison/index.js'\nimport { SelectLocales } from '../SelectLocales/index.js'\nimport './index.scss'\nimport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'view-version'\n\nexport const DefaultVersionView: React.FC<DefaultVersionsViewProps> = ({\n doc,\n docPermissions,\n initialComparisonDoc,\n latestDraftVersion,\n latestPublishedVersion,\n localeOptions,\n versionID,\n}) => {\n const { config, getEntityConfig } = useConfig()\n\n const { i18n } = useTranslation()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const [globalConfig] = useState(() => getEntityConfig({ globalSlug }))\n\n const [locales, setLocales] = useState<OptionObject[]>(localeOptions)\n\n const [compareValue, setCompareValue] = useState<CompareOption>()\n\n const {\n admin: { dateFormat },\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const versionCreatedAt = doc?.updatedAt\n ? formatDate({ date: doc.updatedAt, i18n, pattern: dateFormat })\n : ''\n\n const compareBaseURL = `${serverURL}${apiRoute}/${globalSlug ? 'globals/' : ''}${\n collectionSlug || globalSlug\n }/versions`\n\n const compareFetchURL = compareValue?.value && `${compareBaseURL}/${compareValue.value}`\n\n const [{ data: currentComparisonDoc }] = usePayloadAPI(compareFetchURL, {\n initialData: initialComparisonDoc,\n initialParams: { depth: 1, draft: 'true', locale: 'all' },\n })\n\n const comparison = compareValue?.value && currentComparisonDoc?.version // the `version` key is only present on `versions` documents\n\n const canUpdate = docPermissions?.update\n\n const localeValues = locales && locales.map((locale) => locale.value)\n\n const draftsEnabled = Boolean((collectionConfig || globalConfig)?.versions.drafts)\n\n return (\n <main className={baseClass}>\n <SetStepNav\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n doc={doc}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n globalSlug={globalSlug}\n id={id}\n />\n <Gutter className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__header-wrap`}>\n <p className={`${baseClass}__created-at`}>\n {i18n.t('version:versionCreatedOn', {\n version: i18n.t(doc?.autosave ? 'version:autosavedVersion' : 'version:version'),\n })}\n </p>\n <header className={`${baseClass}__header`}>\n <h2>{versionCreatedAt}</h2>\n {canUpdate && (\n <Restore\n className={`${baseClass}__restore`}\n collectionSlug={collectionSlug}\n globalSlug={globalSlug}\n label={collectionConfig?.labels.singular || globalConfig?.label}\n originalDocID={id}\n status={doc?.version?._status}\n versionDate={versionCreatedAt}\n versionID={versionID}\n />\n )}\n </header>\n </div>\n <div className={`${baseClass}__controls`}>\n <SelectComparison\n baseURL={compareBaseURL}\n draftsEnabled={draftsEnabled}\n latestDraftVersion={latestDraftVersion}\n latestPublishedVersion={latestPublishedVersion}\n onChange={setCompareValue}\n parentID={id}\n value={compareValue}\n versionID={versionID}\n />\n {localization && (\n <SelectLocales onChange={setLocales} options={localeOptions} value={locales} />\n )}\n </div>\n {doc?.version && (\n <RenderFieldsToDiff\n comparison={comparison}\n diffComponents={diffComponents}\n fieldPermissions={docPermissions?.fields}\n fields={(collectionConfig || globalConfig)?.fields}\n i18n={i18n}\n locales={localeValues}\n version={\n globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version\n }\n />\n )}\n </Gutter>\n </main>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,MAAM,EAAEC,SAAS,EAAEC,eAAe,EAAEC,aAAa,EAAEC,cAAc,QAAQ;AAClF,SAASC,UAAU,QAAQ;AAC3B,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAIhC,SAASC,cAAc,QAAQ;AAC/B,OAAOC,kBAAA,MAAwB;AAC/B,OAAOC,OAAA,MAAa;AACpB,SAASC,gBAAgB,QAAQ;AACjC,SAASC,aAAa,QAAQ;AAE9B,SAASC,UAAU,QAAQ;AAE3B,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,kBAAA,GAAyDC,EAAA;EAAA,MAAAC,CAAA,GAAAlB,EAAA;EAAC;IAAAmB,GAAA;IAAAC,cAAA;IAAAC,oBAAA;IAAAC,kBAAA;IAAAC,sBAAA;IAAAC,aAAA;IAAAC;EAAA,IAAAR,EAQtE;EACC;IAAAS,MAAA;IAAAC;EAAA,IAAoCzB,SAAA;EAEpC;IAAA0B;EAAA,IAAiBvB,cAAA;EACjB;IAAAwB,EAAA;IAAAC,cAAA;IAAAC;EAAA,IAA2C5B,eAAA;EAAA,IAAA6B,EAAA;EAAA,IAAAd,CAAA,QAAAY,cAAA,IAAAZ,CAAA,QAAAS,eAAA;IAEPK,EAAA,GAAAA,CAAA,KAAML,eAAA;MAAAG;IAAA,CAAiC;IAAAZ,CAAA,MAAAY,cAAA;IAAAZ,CAAA,MAAAS,eAAA;IAAAT,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAA3E,OAAAe,gBAAA,IAA2BzB,QAAA,CAASwB,EAAuC;EAAA,IAAAE,EAAA;EAAA,IAAAhB,CAAA,QAAAS,eAAA,IAAAT,CAAA,QAAAa,UAAA;IAE3CG,EAAA,GAAAA,CAAA,KAAMP,eAAA;MAAAI;IAAA,CAA6B;IAAAb,CAAA,MAAAS,eAAA;IAAAT,CAAA,MAAAa,UAAA;IAAAb,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAAnE,OAAAiB,YAAA,IAAuB3B,QAAA,CAAS0B,EAAmC;EAEnE,OAAAE,OAAA,EAAAC,UAAA,IAA8B7B,QAAA,CAAyBgB,aAAA;EAEvD,OAAAc,YAAA,EAAAC,eAAA,IAAwC/B,QAAA;EAExC;IAAAgC,KAAA,EAAAC,EAAA;IAAAC,YAAA;IAAAC,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAKInB,MAAA;EAJK;IAAAoB;EAAA,IAAAL,EAAc;EAEb;IAAAM,GAAA,EAAAC;EAAA,IAAAJ,EAAiB;EAI3B,MAAAK,gBAAA,GAAyB9B,GAAA,EAAA+B,SAAA,GACrB5C,UAAA;IAAA6C,IAAA,EAAmBhC,GAAA,CAAA+B,SAAA;IAAAtB,IAAA;IAAAwB,OAAA,EAA8BN;EAAA,CAAW,IAC5D;EAEJ,MAAAO,cAAA,GAAuB,GAAGR,SAAA,GAAYG,QAAA,IAAYjB,UAAA,GAAa,aAAa,KAC1ED,cAAA,IAAkBC,UAAA,WACT;EAEX,MAAAuB,eAAA,GAAwBhB,YAAA,EAAAiB,KAAA,IAAuB,GAAGF,cAAA,IAAkBf,YAAA,CAAAiB,KAAA,EAAoB;EAAA,IAAAC,EAAA;EAAA,IAAAtC,CAAA,QAAAuC,MAAA,CAAAC,GAAA;IAIvEF,EAAA;MAAAG,KAAA;MAAAC,KAAA,EAAmB;MAAAC,MAAA,EAAgB;IAAA;IAAM3C,CAAA,MAAAsC,EAAA;EAAA;IAAAA,EAAA,GAAAtC,CAAA;EAAA;EAAA,IAAA4C,EAAA;EAAA,IAAA5C,CAAA,QAAAG,oBAAA;IAFcyC,EAAA;MAAAC,WAAA,EACzD1C,oBAAA;MAAA2C,aAAA,EACER;IAAyC;IAC1DtC,CAAA,MAAAG,oBAAA;IAAAH,CAAA,MAAA4C,EAAA;EAAA;IAAAA,EAAA,GAAA5C,CAAA;EAAA;EAHA,OAAA+C,EAAA,IAAyC7D,aAAA,CAAckD,eAAA,EAAiBQ,EAGxE;EAHO;IAAAI,IAAA,EAAAC;EAAA,IAAAF,EAA8B;EAKrC,MAAAG,UAAA,GAAmB9B,YAAA,EAAAiB,KAAA,IAAuBY,oBAAA,EAAAE,OAAsB;EAEhE,MAAAC,SAAA,GAAkBlD,cAAA,EAAAmD,MAAA;EAAgB,IAAAC,EAAA;EAAA,IAAAtD,CAAA,QAAAkB,OAAA;IAEboC,EAAA,GAAApC,OAAA,IAAWA,OAAA,CAAAqC,GAAA,CAAAC,KAAoC;IAAAxD,CAAA,MAAAkB,OAAA;IAAAlB,CAAA,OAAAsD,EAAA;EAAA;IAAAA,EAAA,GAAAtD,CAAA;EAAA;EAApE,MAAAyD,YAAA,GAAqBH,EAA+C;EAEpE,MAAAI,aAAA,GAAsBC,OAAA,EAAS5C,gBAAA,IAAoBE,YAAW,GAAA2C,QAAA,CAAAC,MAAa;EAAA,IAAAC,EAAA;EAAA,IAAA9D,CAAA,SAAAM,aAAA,IAAAN,CAAA,SAAAkB,OAAA,IAAAlB,CAAA,SAAAwB,YAAA;IA+ClEsC,EAAA,GAAAtC,YAAA,IACCuC,IAAA,CAAApE,aAAA;MAAAqE,QAAA,EAAyB7C,UAAA;MAAA8C,OAAA,EAAqB3D,aAAA;MAAA+B,KAAA,EAAsBnB;IAAA,C;;;;;;;;;;IAGvEgD,GAAA,GAAAjE,GAAA,EAAAkD,OAAA,IACCY,IAAA,CAAAvE,kBAAA;MAAA0D,UAAA;MAAA3D,cAAA;MAAA4E,gBAAA,EAGoBjE,cAAA,EAAAkE,MAAA;MAAAA,MAAA,GACTrD,gBAAA,IAAoBE,YAAW,GAAAmD,MAAA;MAAA1D,IAAA;MAAAQ,OAAA,EAE/BuC,YAAA;MAAAN,OAAA,EAEPlC,YAAA;QAAA,GAEShB,GAAA,EAAAkD,OAAA;QAAAkB,SAAA,EACQpE,GAAA,EAAAkD,OAAA,EAAAkB,SAAA,IAA2BpE,GAAA,CAAAoE,SAAa;QAAArC,SAAA,EACxC/B,GAAA,EAAAkD,OAAA,EAAAnB,SAAA,IAA2B/B,GAAA,CAAA+B;MAAa,IAErD/B,GAAA,EAAAkD;IAAK,C;;;;;;;;;;;;SA/DnBmB,KAAA,CAAC;IAAAC,SAAA,EAAA1E,SAAA;IAAA2E,QAAA,GACCT,IAAA,CAAAnE,UAAA;MAAAmB,gBAAA;MAAAH,cAAA;MAAAX,GAAA;MAAAmE,MAAA,GAIWrD,gBAAA,IAAoBE,YAAW,GAAAmD,MAAA;MAAAnD,YAAA;MAAAJ,UAAA;MAAAF;IAAA,C,GAK1C2D,KAAA,CAAAvF,MAAA;MAAAwF,SAAA,EAAmB,GAAA1E,SAAA,QAAoB;MAAA2E,QAAA,GACrCF,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA1E,SAAA,eAA2B;QAAA2E,QAAA,GACzCT,IAAA,CAAC;UAAAQ,SAAA,EAAa,GAAA1E,SAAA,cAA0B;UAAA2E,QAAA,EACrC9D,IAAA,CAAA+D,CAAA,CAAO;YAAAtB,OAAA,EACGzC,IAAA,CAAA+D,CAAA,CAAOxE,GAAA,EAAAyE,QAAA,GAAgB,6BAA6B;UAAA,CAC/D;QAAA,C,GAEFJ,KAAA,CAAC;UAAAC,SAAA,EAAkB,GAAA1E,SAAA,UAAsB;UAAA2E,QAAA,GACvCT,IAAA,CAAC;YAAAS,QAAA,EAAIzC;UAAA,C,GACJqB,SAAA,IACCW,IAAA,CAAAtE,OAAA;YAAA8E,SAAA,EACa,GAAA1E,SAAA,WAAuB;YAAAe,cAAA;YAAAC,UAAA;YAAA8D,KAAA,EAG3B5D,gBAAA,EAAA6D,MAAA,CAAAC,QAAA,IAAqC5D,YAAA,EAAA0D,KAAc;YAAAG,aAAA,EAC3CnE,EAAA;YAAAoE,MAAA,EACP9E,GAAA,EAAAkD,OAAA,EAAA6B,OAAA;YAAAC,WAAA,EACKlD,gBAAA;YAAAxB;UAAA,C;;UAMrB+D,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA1E,SAAA,YAAwB;QAAA2E,QAAA,GACtCT,IAAA,CAAArE,gBAAA;UAAAwF,OAAA,EACW/C,cAAA;UAAAuB,aAAA;UAAAtD,kBAAA;UAAAC,sBAAA;UAAA2D,QAAA,EAIC3C,eAAA;UAAA8D,QAAA,EACAxE,EAAA;UAAA0B,KAAA,EACHjB,YAAA;UAAAb;QAAA,C,GAGRuD,E;UAIFI,G;;;CAsBT;AA3HsE,SAAAV,MAAAb,MAAA;EAAA,OAgDZA,MAAA,CAAAN,KAAA;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","Gutter","useConfig","useDocumentInfo","usePayloadAPI","useTranslation","formatDate","React","useState","diffComponents","RenderFieldsToDiff","Restore","SelectComparison","SelectLocales","SetStepNav","baseClass","DefaultVersionView","t0","$","doc","docPermissions","initialComparisonDoc","latestDraftVersion","latestPublishedVersion","localeOptions","versionID","config","getEntityConfig","i18n","id","collectionSlug","globalSlug","t1","collectionConfig","t2","globalConfig","locales","setLocales","compareValue","setCompareValue","admin","t3","localization","routes","t4","serverURL","dateFormat","api","apiRoute","versionCreatedAt","updatedAt","date","pattern","compareBaseURL","compareFetchURL","value","t5","Symbol","for","depth","draft","locale","t6","initialData","initialParams","t7","data","currentComparisonDoc","comparison","version","canUpdate","update","t8","map","_temp","localeValues","draftsEnabled","Boolean","versions","drafts","t9","_jsx","onChange","options","t10","fieldPermissions","fields","createdAt","_jsxs","className","children","t","autosave","label","labels","singular","originalDocID","status","_status","versionDate","baseURL","parentID"],"sources":["../../../../src/views/Version/Default/index.tsx"],"sourcesContent":["'use client'\nimport type { OptionObject } from 'payload'\n\nimport { Gutter, useConfig, useDocumentInfo, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport { formatDate } from '@payloadcms/ui/shared'\nimport React, { useState } from 'react'\n\nimport type { CompareOption, DefaultVersionsViewProps } from './types.js'\n\nimport { diffComponents } from '../RenderFieldsToDiff/fields/index.js'\nimport { RenderFieldsToDiff } from '../RenderFieldsToDiff/index.js'\nimport Restore from '../Restore/index.js'\nimport { SelectComparison } from '../SelectComparison/index.js'\nimport { SelectLocales } from '../SelectLocales/index.js'\nimport './index.scss'\nimport { SetStepNav } from './SetStepNav.js'\n\nconst baseClass = 'view-version'\n\nexport const DefaultVersionView: React.FC<DefaultVersionsViewProps> = ({\n doc,\n docPermissions,\n initialComparisonDoc,\n latestDraftVersion,\n latestPublishedVersion,\n localeOptions,\n versionID,\n}) => {\n const { config, getEntityConfig } = useConfig()\n\n const { i18n } = useTranslation()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n\n const [collectionConfig] = useState(() => getEntityConfig({ collectionSlug }))\n\n const [globalConfig] = useState(() => getEntityConfig({ globalSlug }))\n\n const [locales, setLocales] = useState<OptionObject[]>(localeOptions)\n\n const [compareValue, setCompareValue] = useState<CompareOption>()\n\n const {\n admin: { dateFormat },\n localization,\n routes: { api: apiRoute },\n serverURL,\n } = config\n\n const versionCreatedAt = doc?.updatedAt\n ? formatDate({ date: doc.updatedAt, i18n, pattern: dateFormat })\n : ''\n\n const compareBaseURL = `${serverURL}${apiRoute}/${globalSlug ? 'globals/' : ''}${\n collectionSlug || globalSlug\n }/versions`\n\n const compareFetchURL = compareValue?.value && `${compareBaseURL}/${compareValue.value}`\n\n const [{ data: currentComparisonDoc }] = usePayloadAPI(compareFetchURL, {\n initialData: initialComparisonDoc,\n initialParams: { depth: 1, draft: 'true', locale: 'all' },\n })\n\n const comparison = compareValue?.value && currentComparisonDoc?.version // the `version` key is only present on `versions` documents\n\n const canUpdate = docPermissions?.update\n\n const localeValues = locales && locales.map((locale) => locale.value)\n\n const draftsEnabled = Boolean((collectionConfig || globalConfig)?.versions.drafts)\n\n return (\n <main className={baseClass}>\n <SetStepNav\n collectionConfig={collectionConfig}\n collectionSlug={collectionSlug}\n doc={doc}\n fields={(collectionConfig || globalConfig)?.fields}\n globalConfig={globalConfig}\n globalSlug={globalSlug}\n id={id}\n />\n <Gutter className={`${baseClass}__wrap`}>\n <div className={`${baseClass}__header-wrap`}>\n <p className={`${baseClass}__created-at`}>\n {i18n.t('version:versionCreatedOn', {\n version: i18n.t(doc?.autosave ? 'version:autosavedVersion' : 'version:version'),\n })}\n </p>\n <header className={`${baseClass}__header`}>\n <h2>{versionCreatedAt}</h2>\n {canUpdate && (\n <Restore\n className={`${baseClass}__restore`}\n collectionSlug={collectionSlug}\n globalSlug={globalSlug}\n label={collectionConfig?.labels.singular || globalConfig?.label}\n originalDocID={id}\n status={doc?.version?._status}\n versionDate={versionCreatedAt}\n versionID={versionID}\n />\n )}\n </header>\n </div>\n <div className={`${baseClass}__controls`}>\n <SelectComparison\n baseURL={compareBaseURL}\n draftsEnabled={draftsEnabled}\n latestDraftVersion={latestDraftVersion}\n latestPublishedVersion={latestPublishedVersion}\n onChange={setCompareValue}\n parentID={id}\n value={compareValue}\n versionID={versionID}\n />\n {localization && (\n <SelectLocales onChange={setLocales} options={localeOptions} value={locales} />\n )}\n </div>\n {doc?.version && (\n <RenderFieldsToDiff\n comparison={comparison}\n diffComponents={diffComponents}\n fieldPermissions={docPermissions?.fields}\n fields={(collectionConfig || globalConfig)?.fields}\n i18n={i18n}\n locales={localeValues}\n version={\n globalConfig\n ? {\n ...doc?.version,\n createdAt: doc?.version?.createdAt || doc.createdAt,\n updatedAt: doc?.version?.updatedAt || doc.updatedAt,\n }\n : doc?.version\n }\n />\n )}\n </Gutter>\n </main>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,27 @@
1
+ import type { ClientField } from 'payload';
2
+ import React from 'react';
3
+ import './index.scss';
4
+ type Props = {
5
+ children: React.ReactNode;
6
+ comparison: unknown;
7
+ field?: never;
8
+ fields: ClientField[];
9
+ initCollapsed?: boolean;
10
+ isIterable?: false;
11
+ label: React.ReactNode;
12
+ locales: string[] | undefined;
13
+ version: unknown;
14
+ } | {
15
+ children: React.ReactNode;
16
+ comparison?: unknown;
17
+ field: ClientField;
18
+ fields?: never;
19
+ initCollapsed?: boolean;
20
+ isIterable: true;
21
+ label: React.ReactNode;
22
+ locales: string[] | undefined;
23
+ version: unknown;
24
+ };
25
+ export declare const DiffCollapser: React.FC<Props>;
26
+ export {};
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/views/Version/RenderFieldsToDiff/DiffCollapser/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAI1C,OAAO,KAAmB,MAAM,OAAO,CAAA;AAGvC,OAAO,cAAc,CAAA;AAKrB,KAAK,KAAK,GACN;IAEE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,EAAE,WAAW,EAAE,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,CAAC,EAAE,KAAK,CAAA;IAClB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,GACD;IAEE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,WAAW,CAAA;IAClB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,UAAU,EAAE,IAAI,CAAA;IAChB,KAAK,EAAE,KAAK,CAAC,SAAS,CAAA;IACtB,OAAO,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAEL,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0EzC,CAAA"}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { ChevronIcon, Pill, useTranslation } from '@payloadcms/ui';
3
+ import { fieldIsArrayType, fieldIsBlockType } from 'payload/shared';
4
+ import React, { useState } from 'react';
5
+ import Label from '../Label/index.js';
6
+ import { countChangedFields, countChangedFieldsInRows } from '../utilities/countChangedFields.js';
7
+ const baseClass = 'diff-collapser';
8
+ export const DiffCollapser = ({
9
+ children,
10
+ comparison,
11
+ field,
12
+ fields,
13
+ initCollapsed = false,
14
+ isIterable = false,
15
+ label,
16
+ locales,
17
+ version
18
+ }) => {
19
+ const {
20
+ t
21
+ } = useTranslation();
22
+ const [isCollapsed, setIsCollapsed] = useState(initCollapsed);
23
+ let changeCount = 0;
24
+ if (isIterable) {
25
+ if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {
26
+ throw new Error('DiffCollapser: field must be an array or blocks field when isIterable is true');
27
+ }
28
+ const comparisonRows = comparison ?? [];
29
+ const versionRows = version ?? [];
30
+ if (!Array.isArray(comparisonRows) || !Array.isArray(versionRows)) {
31
+ throw new Error('DiffCollapser: comparison and version must be arrays when isIterable is true');
32
+ }
33
+ changeCount = countChangedFieldsInRows({
34
+ comparisonRows,
35
+ field,
36
+ locales,
37
+ versionRows
38
+ });
39
+ } else {
40
+ changeCount = countChangedFields({
41
+ comparison,
42
+ fields,
43
+ locales,
44
+ version
45
+ });
46
+ }
47
+ const contentClassNames = [`${baseClass}__content`, isCollapsed && `${baseClass}__content--is-collapsed`].filter(Boolean).join(' ');
48
+ return /*#__PURE__*/_jsxs("div", {
49
+ className: baseClass,
50
+ children: [/*#__PURE__*/_jsxs(Label, {
51
+ children: [/*#__PURE__*/_jsx("button", {
52
+ "aria-label": isCollapsed ? 'Expand' : 'Collapse',
53
+ className: `${baseClass}__toggle-button`,
54
+ onClick: () => setIsCollapsed(!isCollapsed),
55
+ type: "button",
56
+ children: /*#__PURE__*/_jsx(ChevronIcon, {
57
+ direction: isCollapsed ? 'right' : 'down'
58
+ })
59
+ }), /*#__PURE__*/_jsx("span", {
60
+ className: `${baseClass}__label`,
61
+ children: label
62
+ }), changeCount > 0 && /*#__PURE__*/_jsx(Pill, {
63
+ className: `${baseClass}__field-change-count`,
64
+ pillStyle: "light-gray",
65
+ size: "small",
66
+ children: t('version:changedFieldsCount', {
67
+ count: changeCount
68
+ })
69
+ })]
70
+ }), /*#__PURE__*/_jsx("div", {
71
+ className: contentClassNames,
72
+ children: children
73
+ })]
74
+ });
75
+ };
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["ChevronIcon","Pill","useTranslation","fieldIsArrayType","fieldIsBlockType","React","useState","Label","countChangedFields","countChangedFieldsInRows","baseClass","DiffCollapser","children","comparison","field","fields","initCollapsed","isIterable","label","locales","version","t","isCollapsed","setIsCollapsed","changeCount","Error","comparisonRows","versionRows","Array","isArray","contentClassNames","filter","Boolean","join","_jsxs","className","_jsx","onClick","type","direction","pillStyle","size","count"],"sources":["../../../../../src/views/Version/RenderFieldsToDiff/DiffCollapser/index.tsx"],"sourcesContent":["import type { ClientField } from 'payload'\n\nimport { ChevronIcon, Pill, useTranslation } from '@payloadcms/ui'\nimport { fieldIsArrayType, fieldIsBlockType } from 'payload/shared'\nimport React, { useState } from 'react'\n\nimport Label from '../Label/index.js'\nimport './index.scss'\nimport { countChangedFields, countChangedFieldsInRows } from '../utilities/countChangedFields.js'\n\nconst baseClass = 'diff-collapser'\n\ntype Props =\n | {\n // fields collapser\n children: React.ReactNode\n comparison: unknown\n field?: never\n fields: ClientField[]\n initCollapsed?: boolean\n isIterable?: false\n label: React.ReactNode\n locales: string[] | undefined\n version: unknown\n }\n | {\n // iterable collapser\n children: React.ReactNode\n comparison?: unknown\n field: ClientField\n fields?: never\n initCollapsed?: boolean\n isIterable: true\n label: React.ReactNode\n locales: string[] | undefined\n version: unknown\n }\n\nexport const DiffCollapser: React.FC<Props> = ({\n children,\n comparison,\n field,\n fields,\n initCollapsed = false,\n isIterable = false,\n label,\n locales,\n version,\n}) => {\n const { t } = useTranslation()\n const [isCollapsed, setIsCollapsed] = useState(initCollapsed)\n\n let changeCount = 0\n\n if (isIterable) {\n if (!fieldIsArrayType(field) && !fieldIsBlockType(field)) {\n throw new Error(\n 'DiffCollapser: field must be an array or blocks field when isIterable is true',\n )\n }\n const comparisonRows = comparison ?? []\n const versionRows = version ?? []\n\n if (!Array.isArray(comparisonRows) || !Array.isArray(versionRows)) {\n throw new Error(\n 'DiffCollapser: comparison and version must be arrays when isIterable is true',\n )\n }\n\n changeCount = countChangedFieldsInRows({\n comparisonRows,\n field,\n locales,\n versionRows,\n })\n } else {\n changeCount = countChangedFields({\n comparison,\n fields,\n locales,\n version,\n })\n }\n\n const contentClassNames = [\n `${baseClass}__content`,\n isCollapsed && `${baseClass}__content--is-collapsed`,\n ]\n .filter(Boolean)\n .join(' ')\n\n return (\n <div className={baseClass}>\n <Label>\n <button\n aria-label={isCollapsed ? 'Expand' : 'Collapse'}\n className={`${baseClass}__toggle-button`}\n onClick={() => setIsCollapsed(!isCollapsed)}\n type=\"button\"\n >\n <ChevronIcon direction={isCollapsed ? 'right' : 'down'} />\n </button>\n <span className={`${baseClass}__label`}>{label}</span>\n {changeCount > 0 && (\n <Pill className={`${baseClass}__field-change-count`} pillStyle=\"light-gray\" size=\"small\">\n {t('version:changedFieldsCount', { count: changeCount })}\n </Pill>\n )}\n </Label>\n <div className={contentClassNames}>{children}</div>\n </div>\n )\n}\n"],"mappings":";AAEA,SAASA,WAAW,EAAEC,IAAI,EAAEC,cAAc,QAAQ;AAClD,SAASC,gBAAgB,EAAEC,gBAAgB,QAAQ;AACnD,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,OAAOC,KAAA,MAAW;AAElB,SAASC,kBAAkB,EAAEC,wBAAwB,QAAQ;AAE7D,MAAMC,SAAA,GAAY;AA4BlB,OAAO,MAAMC,aAAA,GAAiCA,CAAC;EAC7CC,QAAQ;EACRC,UAAU;EACVC,KAAK;EACLC,MAAM;EACNC,aAAA,GAAgB,KAAK;EACrBC,UAAA,GAAa,KAAK;EAClBC,KAAK;EACLC,OAAO;EACPC;AAAO,CACR;EACC,MAAM;IAAEC;EAAC,CAAE,GAAGnB,cAAA;EACd,MAAM,CAACoB,WAAA,EAAaC,cAAA,CAAe,GAAGjB,QAAA,CAASU,aAAA;EAE/C,IAAIQ,WAAA,GAAc;EAElB,IAAIP,UAAA,EAAY;IACd,IAAI,CAACd,gBAAA,CAAiBW,KAAA,KAAU,CAACV,gBAAA,CAAiBU,KAAA,GAAQ;MACxD,MAAM,IAAIW,KAAA,CACR;IAEJ;IACA,MAAMC,cAAA,GAAiBb,UAAA,IAAc,EAAE;IACvC,MAAMc,WAAA,GAAcP,OAAA,IAAW,EAAE;IAEjC,IAAI,CAACQ,KAAA,CAAMC,OAAO,CAACH,cAAA,KAAmB,CAACE,KAAA,CAAMC,OAAO,CAACF,WAAA,GAAc;MACjE,MAAM,IAAIF,KAAA,CACR;IAEJ;IAEAD,WAAA,GAAcf,wBAAA,CAAyB;MACrCiB,cAAA;MACAZ,KAAA;MACAK,OAAA;MACAQ;IACF;EACF,OAAO;IACLH,WAAA,GAAchB,kBAAA,CAAmB;MAC/BK,UAAA;MACAE,MAAA;MACAI,OAAA;MACAC;IACF;EACF;EAEA,MAAMU,iBAAA,GAAoB,CACxB,GAAGpB,SAAA,WAAoB,EACvBY,WAAA,IAAe,GAAGZ,SAAA,yBAAkC,CACrD,CACEqB,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;EAER,oBACEC,KAAA,CAAC;IAAIC,SAAA,EAAWzB,SAAA;4BACdwB,KAAA,CAAC3B,KAAA;8BACC6B,IAAA,CAAC;QACC,cAAYd,WAAA,GAAc,WAAW;QACrCa,SAAA,EAAW,GAAGzB,SAAA,iBAA0B;QACxC2B,OAAA,EAASA,CAAA,KAAMd,cAAA,CAAe,CAACD,WAAA;QAC/BgB,IAAA,EAAK;kBAEL,aAAAF,IAAA,CAACpC,WAAA;UAAYuC,SAAA,EAAWjB,WAAA,GAAc,UAAU;;uBAElDc,IAAA,CAAC;QAAKD,SAAA,EAAW,GAAGzB,SAAA,SAAkB;kBAAGQ;UACxCM,WAAA,GAAc,kBACbY,IAAA,CAACnC,IAAA;QAAKkC,SAAA,EAAW,GAAGzB,SAAA,sBAA+B;QAAE8B,SAAA,EAAU;QAAaC,IAAA,EAAK;kBAC9EpB,CAAA,CAAE,8BAA8B;UAAEqB,KAAA,EAAOlB;QAAY;;qBAI5DY,IAAA,CAAC;MAAID,SAAA,EAAWL,iBAAA;gBAAoBlB;;;AAG1C","ignoreList":[]}
@@ -0,0 +1,46 @@
1
+ @layer payload-default {
2
+ .diff-collapser {
3
+ &__toggle-button {
4
+ all: unset;
5
+ cursor: pointer;
6
+ // Align the chevron visually with the label text
7
+ vertical-align: 1px;
8
+ }
9
+
10
+ &__label {
11
+ // Add space between label, chevron, and change count
12
+ margin: 0 calc(var(--base) * 0.25);
13
+ }
14
+
15
+ &__field-change-count {
16
+ // Reset the font weight of the change count to normal
17
+ font-weight: normal;
18
+ }
19
+
20
+ &__content {
21
+ [dir='ltr'] & {
22
+ // Vertical gutter
23
+ border-left: 3px solid var(--theme-elevation-50);
24
+ // Center-align the gutter with the chevron
25
+ margin-left: 3px;
26
+ // Content indentation
27
+ padding-left: calc(var(--base) * 0.5);
28
+ }
29
+ [dir='rtl'] & {
30
+ // Vertical gutter
31
+ border-right: 3px solid var(--theme-elevation-50);
32
+ // Center-align the gutter with the chevron
33
+ margin-right: 3px;
34
+ // Content indentation
35
+ padding-right: calc(var(--base) * 0.5);
36
+ }
37
+ }
38
+
39
+ &__content--is-collapsed {
40
+ // Hide the content when collapsed. We use display: none instead of
41
+ // conditional rendering to avoid loosing children's collapsed state when
42
+ // remounting.
43
+ display: none;
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { DiffComponentProps } from '../types.js';
3
+ export declare const Collapsible: React.FC<DiffComponentProps>;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAOrD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmCpD,CAAA"}
@@ -0,0 +1,41 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { getTranslation } from '@payloadcms/translations';
5
+ import React from 'react';
6
+ import { DiffCollapser } from '../../DiffCollapser/index.js';
7
+ import { RenderFieldsToDiff } from '../../index.js';
8
+ const baseClass = 'collapsible-diff';
9
+ export const Collapsible = ({
10
+ comparison,
11
+ diffComponents,
12
+ field,
13
+ fieldPermissions,
14
+ fields,
15
+ i18n,
16
+ locales,
17
+ version
18
+ }) => {
19
+ return /*#__PURE__*/_jsx("div", {
20
+ className: baseClass,
21
+ children: /*#__PURE__*/_jsx(DiffCollapser, {
22
+ comparison: comparison,
23
+ fields: fields,
24
+ label: 'label' in field && field.label && typeof field.label !== 'function' && /*#__PURE__*/_jsx("span", {
25
+ children: getTranslation(field.label, i18n)
26
+ }),
27
+ locales: locales,
28
+ version: version,
29
+ children: /*#__PURE__*/_jsx(RenderFieldsToDiff, {
30
+ comparison: comparison,
31
+ diffComponents: diffComponents,
32
+ fieldPermissions: fieldPermissions,
33
+ fields: fields,
34
+ i18n: i18n,
35
+ locales: locales,
36
+ version: version
37
+ })
38
+ })
39
+ });
40
+ };
41
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","DiffCollapser","RenderFieldsToDiff","baseClass","Collapsible","comparison","diffComponents","field","fieldPermissions","fields","i18n","locales","version","_jsx","className","label"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Collapsible/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport type { DiffComponentProps } from '../types.js'\n\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderFieldsToDiff } from '../../index.js'\n\nconst baseClass = 'collapsible-diff'\n\nexport const Collapsible: React.FC<DiffComponentProps> = ({\n comparison,\n diffComponents,\n field,\n fieldPermissions,\n fields,\n i18n,\n locales,\n version,\n}) => {\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparison}\n fields={fields}\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && <span>{getTranslation(field.label, i18n)}</span>\n }\n locales={locales}\n version={version}\n >\n <RenderFieldsToDiff\n comparison={comparison}\n diffComponents={diffComponents}\n fieldPermissions={fieldPermissions}\n fields={fields}\n i18n={i18n}\n locales={locales}\n version={version}\n />\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAIlB,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AAEnC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,WAAA,GAA4CA,CAAC;EACxDC,UAAU;EACVC,cAAc;EACdC,KAAK;EACLC,gBAAgB;EAChBC,MAAM;EACNC,IAAI;EACJC,OAAO;EACPC;AAAO,CACR;EACC,oBACEC,IAAA,CAAC;IAAIC,SAAA,EAAWX,SAAA;cACd,aAAAU,IAAA,CAACZ,aAAA;MACCI,UAAA,EAAYA,UAAA;MACZI,MAAA,EAAQA,MAAA;MACRM,KAAA,EACE,WAAWR,KAAA,IACXA,KAAA,CAAMQ,KAAK,IACX,OAAOR,KAAA,CAAMQ,KAAK,KAAK,2BAAcF,IAAA,CAAC;kBAAMd,cAAA,CAAeQ,KAAA,CAAMQ,KAAK,EAAEL,IAAA;;MAE1EC,OAAA,EAASA,OAAA;MACTC,OAAA,EAASA,OAAA;gBAET,aAAAC,IAAA,CAACX,kBAAA;QACCG,UAAA,EAAYA,UAAA;QACZC,cAAA,EAAgBA,cAAA;QAChBE,gBAAA,EAAkBA,gBAAA;QAClBC,MAAA,EAAQA,MAAA;QACRC,IAAA,EAAMA,IAAA;QACNC,OAAA,EAASA,OAAA;QACTC,OAAA,EAASA;;;;AAKnB","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import './index.scss';
3
+ import type { DiffComponentProps } from '../types.js';
4
+ export declare const Group: React.FC<DiffComponentProps>;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Group/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAOrD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyC9C,CAAA"}
@@ -0,0 +1,45 @@
1
+ 'use client';
2
+
3
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
+ import { getTranslation } from '@payloadcms/translations';
5
+ import React from 'react';
6
+ import { DiffCollapser } from '../../DiffCollapser/index.js';
7
+ import { RenderFieldsToDiff } from '../../index.js';
8
+ const baseClass = 'group-diff';
9
+ export const Group = ({
10
+ comparison,
11
+ diffComponents,
12
+ field,
13
+ fieldPermissions,
14
+ fields,
15
+ i18n,
16
+ locale,
17
+ locales,
18
+ version
19
+ }) => {
20
+ return /*#__PURE__*/_jsx("div", {
21
+ className: baseClass,
22
+ children: /*#__PURE__*/_jsx(DiffCollapser, {
23
+ comparison: comparison,
24
+ fields: fields,
25
+ label: 'label' in field && field.label && typeof field.label !== 'function' && /*#__PURE__*/_jsxs("span", {
26
+ children: [locale && /*#__PURE__*/_jsx("span", {
27
+ className: `${baseClass}__locale-label`,
28
+ children: locale
29
+ }), getTranslation(field.label, i18n)]
30
+ }),
31
+ locales: locales,
32
+ version: version,
33
+ children: /*#__PURE__*/_jsx(RenderFieldsToDiff, {
34
+ comparison: comparison,
35
+ diffComponents: diffComponents,
36
+ fieldPermissions: fieldPermissions,
37
+ fields: fields,
38
+ i18n: i18n,
39
+ locales: locales,
40
+ version: version
41
+ })
42
+ })
43
+ });
44
+ };
45
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","DiffCollapser","RenderFieldsToDiff","baseClass","Group","comparison","diffComponents","field","fieldPermissions","fields","i18n","locale","locales","version","_jsx","className","label","_jsxs"],"sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Group/index.tsx"],"sourcesContent":["'use client'\nimport { getTranslation } from '@payloadcms/translations'\nimport React from 'react'\n\nimport './index.scss'\n\nimport type { DiffComponentProps } from '../types.js'\n\nimport { DiffCollapser } from '../../DiffCollapser/index.js'\nimport { RenderFieldsToDiff } from '../../index.js'\n\nconst baseClass = 'group-diff'\n\nexport const Group: React.FC<DiffComponentProps> = ({\n comparison,\n diffComponents,\n field,\n fieldPermissions,\n fields,\n i18n,\n locale,\n locales,\n version,\n}) => {\n return (\n <div className={baseClass}>\n <DiffCollapser\n comparison={comparison}\n fields={fields}\n label={\n 'label' in field &&\n field.label &&\n typeof field.label !== 'function' && (\n <span>\n {locale && <span className={`${baseClass}__locale-label`}>{locale}</span>}\n {getTranslation(field.label, i18n)}\n </span>\n )\n }\n locales={locales}\n version={version}\n >\n <RenderFieldsToDiff\n comparison={comparison}\n diffComponents={diffComponents}\n fieldPermissions={fieldPermissions}\n fields={fields}\n i18n={i18n}\n locales={locales}\n version={version}\n />\n </DiffCollapser>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AACA,SAASA,cAAc,QAAQ;AAC/B,OAAOC,KAAA,MAAW;AAMlB,SAASC,aAAa,QAAQ;AAC9B,SAASC,kBAAkB,QAAQ;AAEnC,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,KAAA,GAAsCA,CAAC;EAClDC,UAAU;EACVC,cAAc;EACdC,KAAK;EACLC,gBAAgB;EAChBC,MAAM;EACNC,IAAI;EACJC,MAAM;EACNC,OAAO;EACPC;AAAO,CACR;EACC,oBACEC,IAAA,CAAC;IAAIC,SAAA,EAAWZ,SAAA;cACd,aAAAW,IAAA,CAACb,aAAA;MACCI,UAAA,EAAYA,UAAA;MACZI,MAAA,EAAQA,MAAA;MACRO,KAAA,EACE,WAAWT,KAAA,IACXA,KAAA,CAAMS,KAAK,IACX,OAAOT,KAAA,CAAMS,KAAK,KAAK,2BACrBC,KAAA,CAAC;mBACEN,MAAA,iBAAUG,IAAA,CAAC;UAAKC,SAAA,EAAW,GAAGZ,SAAA,gBAAyB;oBAAGQ;YAC1DZ,cAAA,CAAeQ,KAAA,CAAMS,KAAK,EAAEN,IAAA;;MAInCE,OAAA,EAASA,OAAA;MACTC,OAAA,EAASA,OAAA;gBAET,aAAAC,IAAA,CAACZ,kBAAA;QACCG,UAAA,EAAYA,UAAA;QACZC,cAAA,EAAgBA,cAAA;QAChBE,gBAAA,EAAkBA,gBAAA;QAClBC,MAAA,EAAQA,MAAA;QACRC,IAAA,EAAMA,IAAA;QACNE,OAAA,EAASA,OAAA;QACTC,OAAA,EAASA;;;;AAKnB","ignoreList":[]}
@@ -0,0 +1,14 @@
1
+ @layer payload-default {
2
+ .group-diff {
3
+ &__locale-label {
4
+ background: var(--theme-elevation-100);
5
+ padding: calc(var(--base) * 0.25);
6
+ [dir='ltr'] & {
7
+ margin-right: calc(var(--base) * 0.25);
8
+ }
9
+ [dir='rtl'] & {
10
+ margin-left: calc(var(--base) * 0.25);
11
+ }
12
+ }
13
+ }
14
+ }
@@ -1,6 +1,5 @@
1
1
  import React from 'react';
2
2
  import type { DiffComponentProps } from '../types.js';
3
3
  import './index.scss';
4
- declare const Iterable: React.FC<DiffComponentProps>;
5
- export default Iterable;
4
+ export declare const Iterable: React.FC<DiffComponentProps>;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAIrD,OAAO,cAAc,CAAA;AAIrB,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAgG1C,CAAA;AAED,eAAe,QAAQ,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/views/Version/RenderFieldsToDiff/fields/Iterable/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAGrD,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAyFjD,CAAA"}