@payloadcms/ui 3.47.0-internal.b17506e → 3.47.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 (83) hide show
  1. package/dist/elements/ArrayAction/index.d.ts +2 -0
  2. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  3. package/dist/elements/ArrayAction/index.js +37 -13
  4. package/dist/elements/ArrayAction/index.js.map +1 -1
  5. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts +5 -0
  6. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -0
  7. package/dist/elements/ClipboardAction/ClipboardActionLabel.js +44 -0
  8. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -0
  9. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +10 -0
  10. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -0
  11. package/dist/elements/ClipboardAction/clipboardUtilities.js +53 -0
  12. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -0
  13. package/dist/elements/ClipboardAction/index.d.ts +21 -0
  14. package/dist/elements/ClipboardAction/index.d.ts.map +1 -0
  15. package/dist/elements/ClipboardAction/index.js +197 -0
  16. package/dist/elements/ClipboardAction/index.js.map +1 -0
  17. package/dist/elements/ClipboardAction/isClipboardDataValid.d.ts +10 -0
  18. package/dist/elements/ClipboardAction/isClipboardDataValid.d.ts.map +1 -0
  19. package/dist/elements/ClipboardAction/isClipboardDataValid.js +86 -0
  20. package/dist/elements/ClipboardAction/isClipboardDataValid.js.map +1 -0
  21. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +14 -0
  22. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -0
  23. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +100 -0
  24. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -0
  25. package/dist/elements/ClipboardAction/types.d.ts +45 -0
  26. package/dist/elements/ClipboardAction/types.d.ts.map +1 -0
  27. package/dist/elements/ClipboardAction/types.js +2 -0
  28. package/dist/elements/ClipboardAction/types.js.map +1 -0
  29. package/dist/elements/DatePicker/index.scss +18 -0
  30. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  31. package/dist/elements/PublishButton/ScheduleDrawer/index.js +10 -1
  32. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  33. package/dist/elements/ReactSelect/ClearIndicator/index.scss +1 -0
  34. package/dist/elements/ReactSelect/DropdownIndicator/index.scss +1 -0
  35. package/dist/exports/client/index.js +22 -22
  36. package/dist/exports/client/index.js.map +4 -4
  37. package/dist/exports/shared/index.js +2 -2
  38. package/dist/exports/shared/index.js.map +4 -4
  39. package/dist/fields/Array/ArrayRow.d.ts +2 -0
  40. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  41. package/dist/fields/Array/ArrayRow.js +49 -43
  42. package/dist/fields/Array/ArrayRow.js.map +1 -1
  43. package/dist/fields/Array/index.d.ts.map +1 -1
  44. package/dist/fields/Array/index.js +176 -43
  45. package/dist/fields/Array/index.js.map +1 -1
  46. package/dist/fields/Array/index.scss +17 -3
  47. package/dist/fields/Blocks/BlockRow.d.ts +2 -0
  48. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  49. package/dist/fields/Blocks/BlockRow.js +41 -35
  50. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  51. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  52. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  53. package/dist/fields/Blocks/RowActions.js +32 -26
  54. package/dist/fields/Blocks/RowActions.js.map +1 -1
  55. package/dist/fields/Blocks/index.d.ts.map +1 -1
  56. package/dist/fields/Blocks/index.js +295 -348
  57. package/dist/fields/Blocks/index.js.map +1 -1
  58. package/dist/fields/Hidden/index.js +19 -17
  59. package/dist/fields/Hidden/index.js.map +1 -1
  60. package/dist/forms/useField/index.d.ts.map +1 -1
  61. package/dist/forms/useField/index.js +1 -2
  62. package/dist/forms/useField/index.js.map +1 -1
  63. package/dist/providers/LivePreview/index.d.ts +1 -1
  64. package/dist/providers/LivePreview/index.d.ts.map +1 -1
  65. package/dist/providers/LivePreview/index.js +1 -2
  66. package/dist/providers/LivePreview/index.js.map +1 -1
  67. package/dist/styles.css +1 -1
  68. package/dist/utilities/buildFormState.js +1 -1
  69. package/dist/utilities/buildFormState.js.map +1 -1
  70. package/dist/utilities/buildTableState.js +1 -0
  71. package/dist/utilities/buildTableState.js.map +1 -1
  72. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts +2 -0
  73. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -0
  74. package/dist/utilities/formatDocTitle/formatRelationshipTitle.js +15 -0
  75. package/dist/utilities/formatDocTitle/formatRelationshipTitle.js.map +1 -0
  76. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  77. package/dist/utilities/formatDocTitle/index.js +6 -0
  78. package/dist/utilities/formatDocTitle/index.js.map +1 -1
  79. package/dist/views/Edit/Auth/APIKey.d.ts.map +1 -1
  80. package/dist/views/Edit/Auth/APIKey.js +27 -10
  81. package/dist/views/Edit/Auth/APIKey.js.map +1 -1
  82. package/dist/views/Edit/Auth/index.scss +31 -5
  83. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","getTranslation","React","Fragment","useCallback","Banner","Button","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","RenderCustomComponent","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","$","i18n","t","field","t0","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","name","admin","t1","blockReferences","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","t2","undefined","className","description","isSortable","t3","setDocFieldPreferences","addFieldRow","dispatchFields","moveFieldRow","removeFieldRow","setModified","code","locale","config","t4","localization","drawerSlug","submitted","plural","singular","t5","bb0","fallback","defaultLocale","editingDefaultLocale","t6","value","options","memoizedValidate","t7","hasRows","potentiallyStalePath","customComponents","t8","disabled","errorPaths","rows","t9","showError","valid","value_0","t10","AfterInput","BeforeInput","Description","Error","Label","t11","t12","rowIndex","blockType","setTimeout","addRow","t13","rowIndex_0","type","duplicateRow","t14","rowIndex_1","removeRow","t15","moveFromIndex","moveToIndex","moveRow","t16","collapsed","collapsedIDs","updatedRows","toggleCollapseAll","t17","rowID","collapsed_0","collapsedIDs_0","updatedRows_0","setCollapse","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","t18","t19","filter","Boolean","t20","_jsx","CustomComponent","Fallback","t21","count","withMessage","_jsxs","join","id","replace","children","onClick","fieldValue","ids","map","_temp","onDragEnd","t22","moveFromIndex_0","moveToIndex_0","row_0","i","blockType_0","isLoading","row","blockConfig","blocksMap","find","block","slug","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","errorCount","fields","RowLabel","parentPath","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlocksFieldClientComponent, ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback } from 'react'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\nimport './index.scss'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: BlocksFieldClientComponent = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n field: {\n name,\n admin: { className, description, isSortable = true } = {},\n blockReferences,\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const { addFieldRow, dispatchFields, moveFieldRow, removeFieldRow, setModified } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n config,\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number, blockType: string) => {\n addFieldRow({\n blockType,\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({\n path,\n rowIndex,\n })\n },\n [path, removeFieldRow],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({ moveFromIndex, moveToIndex, path })\n },\n [moveFieldRow, path],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n {rows.length > 0 && (\n <ul className={`${baseClass}__header-actions`}>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </ul>\n )}\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n {BeforeInput}\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType, isLoading } = row\n const blockConfig: ClientBlock =\n config.blocksMap[blockType] ??\n ((blockReferences ?? blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockType,\n ) as ClientBlock)\n\n if (blockConfig) {\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={row.id}\n key={row.id}\n >\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockConfig}\n blocks={blockReferences ?? blocks}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={blockConfig.fields}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n Label={rows?.[i]?.customComponents?.RowLabel}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath + blockConfig.slug}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && (\n <Fragment>\n <DrawerToggler\n className={`${baseClass}__drawer-toggler`}\n disabled={readOnly || disabled}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={readOnly || disabled}\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blockReferences ?? blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["getTranslation","React","Fragment","useCallback","useMemo","toast","Banner","Button","clipboardCopy","clipboardPaste","ClipboardAction","mergeFormStateFromClipboard","reduceFormStateByPath","DraggableSortableItem","DraggableSortable","DrawerToggler","useDrawerSlug","ErrorPill","RenderCustomComponent","useForm","useFormSubmitted","extractRowsAndCollapsedIDs","toggleAllRows","NullifyLocaleField","useField","withCondition","useConfig","useDocumentInfo","useLocale","useTranslation","scrollToID","FieldDescription","FieldError","FieldLabel","fieldBaseClass","BlockRow","BlocksDrawer","baseClass","BlocksFieldComponent","props","i18n","t","field","name","type","admin","className","description","isSortable","blockReferences","blocks","label","labels","labelsFromProps","localized","maxRows","minRows","minRowsProp","required","path","pathFromProps","permissions","readOnly","schemaPath","schemaPathFromProps","validate","setDocFieldPreferences","addFieldRow","dispatchFields","getFields","moveFieldRow","removeFieldRow","replaceState","setModified","code","locale","config","localization","drawerSlug","submitted","plural","singular","editingDefaultLocale","fallback","defaultLocale","clientBlocks","resolvedBlocks","blockReference","block","blocksMap","push","memoizedValidate","value","options","customComponents","AfterInput","BeforeInput","Description","Error","Label","disabled","errorPaths","rows","showError","valid","hasRows","potentiallyStalePath","addRow","rowIndex","blockType","setTimeout","duplicateRow","removeRow","moveRow","moveFromIndex","moveToIndex","toggleCollapseAll","collapsed","collapsedIDs","updatedRows","setCollapse","rowID","copyRow","clipboardResult","getDataToCopy","formState","error","success","pasteRow","pasteArgs","onPaste","dataFromClipboard","newState","schemaBlocks","pasteBlocks","hasMaxRows","length","fieldErrorCount","fieldHasErrors","showMinRows","showRequired","_jsxs","filter","Boolean","join","id","replace","_jsx","CustomComponent","Fallback","count","withMessage","onClick","allowCopy","allowPaste","fieldValue","ids","map","row","onDragEnd","i","isLoading","blockConfig","find","slug","rowPath","rowErrorCount","errorPath","startsWith","draggableSortableItemProps","errorCount","fields","RowLabel","parentPath","rowCount","buttonStyle","el","icon","iconPosition","iconStyle","addRowIndex","BlocksField"],"sources":["../../../src/fields/Blocks/index.tsx"],"sourcesContent":["'use client'\nimport type { BlocksFieldClientComponent, ClientBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport React, { Fragment, useCallback, useMemo } from 'react'\nimport { toast } from 'sonner'\n\nimport type { ClipboardPasteData } from '../../elements/ClipboardAction/types.js'\n\nimport { Banner } from '../../elements/Banner/index.js'\nimport { Button } from '../../elements/Button/index.js'\nimport { clipboardCopy, clipboardPaste } from '../../elements/ClipboardAction/clipboardUtilities.js'\nimport { ClipboardAction } from '../../elements/ClipboardAction/index.js'\nimport {\n mergeFormStateFromClipboard,\n reduceFormStateByPath,\n} from '../../elements/ClipboardAction/mergeFormStateFromClipboard.js'\nimport { DraggableSortableItem } from '../../elements/DraggableSortable/DraggableSortableItem/index.js'\nimport { DraggableSortable } from '../../elements/DraggableSortable/index.js'\nimport { DrawerToggler } from '../../elements/Drawer/index.js'\nimport { useDrawerSlug } from '../../elements/Drawer/useDrawerSlug.js'\nimport { ErrorPill } from '../../elements/ErrorPill/index.js'\nimport { RenderCustomComponent } from '../../elements/RenderCustomComponent/index.js'\nimport { useForm, useFormSubmitted } from '../../forms/Form/context.js'\nimport { extractRowsAndCollapsedIDs, toggleAllRows } from '../../forms/Form/rowHelpers.js'\nimport { NullifyLocaleField } from '../../forms/NullifyField/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { scrollToID } from '../../utilities/scrollToID.js'\nimport './index.scss'\nimport { FieldDescription } from '../FieldDescription/index.js'\nimport { FieldError } from '../FieldError/index.js'\nimport { FieldLabel } from '../FieldLabel/index.js'\nimport { fieldBaseClass } from '../shared/index.js'\nimport { BlockRow } from './BlockRow.js'\nimport { BlocksDrawer } from './BlocksDrawer/index.js'\n\nconst baseClass = 'blocks-field'\n\nconst BlocksFieldComponent: BlocksFieldClientComponent = (props) => {\n const { i18n, t } = useTranslation()\n\n const {\n field: {\n name,\n type,\n admin: { className, description, isSortable = true } = {},\n blockReferences,\n blocks,\n label,\n labels: labelsFromProps,\n localized,\n maxRows,\n minRows: minRowsProp,\n required,\n },\n path: pathFromProps,\n permissions,\n readOnly,\n schemaPath: schemaPathFromProps,\n validate,\n } = props\n\n const schemaPath = schemaPathFromProps ?? name\n\n const minRows = (minRowsProp ?? required) ? 1 : 0\n\n const { setDocFieldPreferences } = useDocumentInfo()\n const {\n addFieldRow,\n dispatchFields,\n getFields,\n moveFieldRow,\n removeFieldRow,\n replaceState,\n setModified,\n } = useForm()\n const { code: locale } = useLocale()\n const {\n config: { localization },\n config,\n } = useConfig()\n const drawerSlug = useDrawerSlug('blocks-drawer')\n const submitted = useFormSubmitted()\n\n const labels = {\n plural: t('fields:blocks'),\n singular: t('fields:block'),\n ...labelsFromProps,\n }\n\n const editingDefaultLocale = (() => {\n if (localization && localization.fallback) {\n const defaultLocale = localization.defaultLocale\n return locale === defaultLocale\n }\n\n return true\n })()\n\n const clientBlocks = useMemo(() => {\n if (!blockReferences) {\n return blocks\n }\n\n const resolvedBlocks: ClientBlock[] = []\n for (const blockReference of blockReferences) {\n const block =\n typeof blockReference === 'string' ? config.blocksMap[blockReference] : blockReference\n if (block) {\n resolvedBlocks.push(block)\n }\n }\n\n return resolvedBlocks\n }, [blockReferences, blocks, config.blocksMap])\n\n const memoizedValidate = useCallback(\n (value, options) => {\n // alternative locales can be null\n if (!editingDefaultLocale && value === null) {\n return true\n }\n if (typeof validate === 'function') {\n return validate(value, { ...options, maxRows, minRows, required })\n }\n },\n [maxRows, minRows, required, validate, editingDefaultLocale],\n )\n\n const {\n customComponents: { AfterInput, BeforeInput, Description, Error, Label } = {},\n disabled,\n errorPaths,\n path,\n rows = [],\n showError,\n valid,\n value,\n } = useField<number>({\n hasRows: true,\n potentiallyStalePath: pathFromProps,\n validate: memoizedValidate,\n })\n\n const addRow = useCallback(\n (rowIndex: number, blockType: string) => {\n addFieldRow({\n blockType,\n path,\n rowIndex,\n schemaPath,\n })\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [addFieldRow, path, schemaPath],\n )\n\n const duplicateRow = useCallback(\n (rowIndex: number) => {\n dispatchFields({ type: 'DUPLICATE_ROW', path, rowIndex })\n setModified(true)\n\n setTimeout(() => {\n scrollToID(`${path}-row-${rowIndex + 1}`)\n }, 0)\n },\n [dispatchFields, path, setModified],\n )\n\n const removeRow = useCallback(\n (rowIndex: number) => {\n removeFieldRow({\n path,\n rowIndex,\n })\n },\n [path, removeFieldRow],\n )\n\n const moveRow = useCallback(\n (moveFromIndex: number, moveToIndex: number) => {\n moveFieldRow({ moveFromIndex, moveToIndex, path })\n },\n [moveFieldRow, path],\n )\n\n const toggleCollapseAll = useCallback(\n (collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = toggleAllRows({\n collapsed,\n rows,\n })\n\n dispatchFields({ type: 'SET_ALL_ROWS_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const setCollapse = useCallback(\n (rowID: string, collapsed: boolean) => {\n const { collapsedIDs, updatedRows } = extractRowsAndCollapsedIDs({\n collapsed,\n rowID,\n rows,\n })\n\n dispatchFields({ type: 'SET_ROW_COLLAPSED', path, updatedRows })\n setDocFieldPreferences(path, { collapsed: collapsedIDs })\n },\n [dispatchFields, path, rows, setDocFieldPreferences],\n )\n\n const copyRow = useCallback(\n (rowIndex: number) => {\n const clipboardResult = clipboardCopy({\n type,\n blocks: clientBlocks,\n getDataToCopy: () =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n rowIndex,\n }),\n path,\n rowIndex,\n t,\n })\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n } else {\n toast.success(t('general:copied'))\n }\n },\n [clientBlocks, path, t, type, getFields],\n )\n\n const pasteRow = useCallback(\n (rowIndex: number) => {\n const pasteArgs = {\n onPaste: (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n rowIndex,\n })\n replaceState(newState)\n setModified(true)\n },\n path,\n schemaBlocks: clientBlocks,\n t,\n }\n\n const clipboardResult = clipboardPaste(pasteArgs)\n\n if (typeof clipboardResult === 'string') {\n toast.error(clipboardResult)\n }\n },\n [clientBlocks, getFields, path, replaceState, setModified, t],\n )\n\n const pasteBlocks = useCallback(\n (dataFromClipboard: ClipboardPasteData) => {\n const formState = { ...getFields() }\n const newState = mergeFormStateFromClipboard({\n dataFromClipboard,\n formState,\n path,\n })\n replaceState(newState)\n setModified(true)\n },\n [getFields, path, replaceState, setModified],\n )\n\n const hasMaxRows = maxRows && rows.length >= maxRows\n\n const fieldErrorCount = errorPaths.length\n const fieldHasErrors = submitted && fieldErrorCount + (valid ? 0 : 1) > 0\n\n const showMinRows = rows.length < minRows || (required && rows.length === 0)\n const showRequired = readOnly && rows.length === 0\n\n return (\n <div\n className={[\n fieldBaseClass,\n baseClass,\n className,\n fieldHasErrors ? `${baseClass}--has-error` : `${baseClass}--has-no-error`,\n ]\n .filter(Boolean)\n .join(' ')}\n id={`field-${path?.replace(/\\./g, '__')}`}\n >\n {showError && (\n <RenderCustomComponent\n CustomComponent={Error}\n Fallback={<FieldError path={path} showError={showError} />}\n />\n )}\n <header className={`${baseClass}__header`}>\n <div className={`${baseClass}__header-wrap`}>\n <div className={`${baseClass}__heading-with-error`}>\n <h3>\n <RenderCustomComponent\n CustomComponent={Label}\n Fallback={\n <FieldLabel label={label} localized={localized} path={path} required={required} />\n }\n />\n </h3>\n {fieldHasErrors && fieldErrorCount > 0 && (\n <ErrorPill count={fieldErrorCount} i18n={i18n} withMessage />\n )}\n </div>\n <ul className={`${baseClass}__header-actions`}>\n {rows.length > 0 && (\n <Fragment>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(true)}\n type=\"button\"\n >\n {t('fields:collapseAll')}\n </button>\n </li>\n <li>\n <button\n className={`${baseClass}__header-action`}\n onClick={() => toggleCollapseAll(false)}\n type=\"button\"\n >\n {t('fields:showAll')}\n </button>\n </li>\n </Fragment>\n )}\n <li>\n <ClipboardAction\n allowCopy={rows?.length > 0}\n allowPaste={!readOnly}\n blocks={clientBlocks}\n className={`${baseClass}__header-action`}\n disabled={disabled}\n getDataToCopy={() =>\n reduceFormStateByPath({\n formState: { ...getFields() },\n path,\n })\n }\n onPaste={pasteBlocks}\n path={path}\n type={type}\n />\n </li>\n </ul>\n </div>\n <RenderCustomComponent\n CustomComponent={Description}\n Fallback={<FieldDescription description={description} path={path} />}\n />\n </header>\n {BeforeInput}\n <NullifyLocaleField fieldValue={value} localized={localized} path={path} />\n {(rows.length > 0 || (!valid && (showRequired || showMinRows))) && (\n <DraggableSortable\n className={`${baseClass}__rows`}\n ids={rows.map((row) => row.id)}\n onDragEnd={({ moveFromIndex, moveToIndex }) => moveRow(moveFromIndex, moveToIndex)}\n >\n {rows.map((row, i) => {\n const { blockType, isLoading } = row\n const blockConfig: ClientBlock =\n config.blocksMap[blockType] ??\n ((blockReferences ?? blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockType,\n ) as ClientBlock)\n\n if (blockConfig) {\n const rowPath = `${path}.${i}`\n\n const rowErrorCount = errorPaths.filter((errorPath) =>\n errorPath.startsWith(rowPath + '.'),\n ).length\n\n return (\n <DraggableSortableItem\n disabled={readOnly || disabled || !isSortable}\n id={row.id}\n key={row.id}\n >\n {(draggableSortableItemProps) => (\n <BlockRow\n {...draggableSortableItemProps}\n addRow={addRow}\n block={blockConfig}\n blocks={blockReferences ?? blocks}\n copyRow={copyRow}\n duplicateRow={duplicateRow}\n errorCount={rowErrorCount}\n fields={blockConfig.fields}\n hasMaxRows={hasMaxRows}\n isLoading={isLoading}\n isSortable={isSortable}\n Label={rows?.[i]?.customComponents?.RowLabel}\n labels={labels}\n moveRow={moveRow}\n parentPath={path}\n pasteRow={pasteRow}\n path={rowPath}\n permissions={permissions}\n readOnly={readOnly || disabled}\n removeRow={removeRow}\n row={row}\n rowCount={rows.length}\n rowIndex={i}\n schemaPath={schemaPath + blockConfig.slug}\n setCollapse={setCollapse}\n />\n )}\n </DraggableSortableItem>\n )\n }\n\n return null\n })}\n {!editingDefaultLocale && (\n <React.Fragment>\n {showMinRows && (\n <Banner type=\"error\">\n {t('validation:requiresAtLeast', {\n count: minRows,\n label:\n getTranslation(minRows > 1 ? labels.plural : labels.singular, i18n) ||\n t(minRows > 1 ? 'general:row' : 'general:rows'),\n })}\n </Banner>\n )}\n {showRequired && (\n <Banner>\n {t('validation:fieldHasNo', { label: getTranslation(labels.plural, i18n) })}\n </Banner>\n )}\n </React.Fragment>\n )}\n </DraggableSortable>\n )}\n {!hasMaxRows && (\n <Fragment>\n <DrawerToggler\n className={`${baseClass}__drawer-toggler`}\n disabled={readOnly || disabled}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n disabled={readOnly || disabled}\n el=\"span\"\n icon=\"plus\"\n iconPosition=\"left\"\n iconStyle=\"with-border\"\n >\n {t('fields:addLabel', { label: getTranslation(labels.singular, i18n) })}\n </Button>\n </DrawerToggler>\n <BlocksDrawer\n addRow={addRow}\n addRowIndex={rows?.length || 0}\n blocks={blockReferences ?? blocks}\n drawerSlug={drawerSlug}\n labels={labels}\n />\n </Fragment>\n )}\n {AfterInput}\n </div>\n )\n}\n\nexport const BlocksField = withCondition(BlocksFieldComponent)\n"],"mappings":"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","ignoreList":[]}
@@ -11,7 +11,7 @@ import { withCondition } from '../../forms/withCondition/index.js';
11
11
  * For example, this sets the `ìd` property of a block in the Blocks field.
12
12
  */
13
13
  const HiddenFieldComponent = props => {
14
- const $ = _c(12);
14
+ const $ = _c(13);
15
15
  const {
16
16
  disableModifyingForm: t0,
17
17
  path: pathFromProps,
@@ -29,33 +29,35 @@ const HiddenFieldComponent = props => {
29
29
  t1 = $[1];
30
30
  }
31
31
  const {
32
+ formInitializing,
32
33
  path,
33
34
  setValue,
34
35
  value
35
36
  } = useField(t1);
36
37
  let t2;
37
38
  let t3;
38
- if ($[2] !== disableModifyingForm || $[3] !== setValue || $[4] !== valueFromProps) {
39
+ if ($[2] !== disableModifyingForm || $[3] !== formInitializing || $[4] !== setValue || $[5] !== valueFromProps) {
39
40
  t2 = () => {
40
- if (valueFromProps !== undefined) {
41
+ if (valueFromProps !== undefined && !formInitializing) {
41
42
  setValue(valueFromProps, disableModifyingForm);
42
43
  }
43
44
  };
44
- t3 = [valueFromProps, setValue, disableModifyingForm];
45
+ t3 = [valueFromProps, setValue, disableModifyingForm, formInitializing];
45
46
  $[2] = disableModifyingForm;
46
- $[3] = setValue;
47
- $[4] = valueFromProps;
48
- $[5] = t2;
49
- $[6] = t3;
47
+ $[3] = formInitializing;
48
+ $[4] = setValue;
49
+ $[5] = valueFromProps;
50
+ $[6] = t2;
51
+ $[7] = t3;
50
52
  } else {
51
- t2 = $[5];
52
- t3 = $[6];
53
+ t2 = $[6];
54
+ t3 = $[7];
53
55
  }
54
56
  useEffect(t2, t3);
55
57
  const t4 = `field-${path?.replace(/\./g, "__")}`;
56
58
  const t5 = value || "";
57
59
  let t6;
58
- if ($[7] !== path || $[8] !== setValue || $[9] !== t4 || $[10] !== t5) {
60
+ if ($[8] !== path || $[9] !== setValue || $[10] !== t4 || $[11] !== t5) {
59
61
  t6 = _jsx("input", {
60
62
  id: t4,
61
63
  name: path,
@@ -63,13 +65,13 @@ const HiddenFieldComponent = props => {
63
65
  type: "hidden",
64
66
  value: t5
65
67
  });
66
- $[7] = path;
67
- $[8] = setValue;
68
- $[9] = t4;
69
- $[10] = t5;
70
- $[11] = t6;
68
+ $[8] = path;
69
+ $[9] = setValue;
70
+ $[10] = t4;
71
+ $[11] = t5;
72
+ $[12] = t6;
71
73
  } else {
72
- t6 = $[11];
74
+ t6 = $[12];
73
75
  }
74
76
  return t6;
75
77
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useField","withCondition","HiddenFieldComponent","props","$","disableModifyingForm","t0","path","pathFromProps","value","valueFromProps","undefined","t1","potentiallyStalePath","setValue","t2","t3","t4","replace","t5","t6","_jsx","id","name","onChange","type","HiddenField"],"sources":["../../../src/fields/Hidden/index.tsx"],"sourcesContent":["'use client'\n\nimport type { HiddenFieldProps } from 'payload'\n\nimport React, { useEffect } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\n\n/**\n * Renders an input with `type=\"hidden\"`.\n * This is mainly used to save a value on the form that is not visible to the user.\n * For example, this sets the `ìd` property of a block in the Blocks field.\n */\nconst HiddenFieldComponent: React.FC<HiddenFieldProps> = (props) => {\n const { disableModifyingForm = true, path: pathFromProps, value: valueFromProps } = props\n\n const { path, setValue, value } = useField({\n potentiallyStalePath: pathFromProps,\n })\n\n useEffect(() => {\n if (valueFromProps !== undefined) {\n setValue(valueFromProps, disableModifyingForm)\n }\n }, [valueFromProps, setValue, disableModifyingForm])\n\n return (\n <input\n id={`field-${path?.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"hidden\"\n value={(value as string) || ''}\n />\n )\n}\n\nexport const HiddenField = withCondition(HiddenFieldComponent)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,IAASC,SAAS,QAAQ;AAEjC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAE9B;;;;;AAKA,MAAMC,oBAAA,GAAmDC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACvD;IAAAQ,oBAAA,EAAAC,EAAA;IAAAC,IAAA,EAAAC,aAAA;IAAAC,KAAA,EAAAC;EAAA,IAAoFP,KAAA;EAA5E,MAAAE,oBAAA,GAAAC,EAA2B,KAAAK,SAAA,UAA3BL,EAA2B;EAAA,IAAAM,EAAA;EAAA,IAAAR,CAAA,QAAAI,aAAA;IAEQI,EAAA;MAAAC,oBAAA,EACnBL;IAAA;IACxBJ,CAAA,MAAAI,aAAA;IAAAJ,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAFA;IAAAG,IAAA;IAAAO,QAAA;IAAAL;EAAA,IAAkCT,QAAA,CAASY,EAE3C;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAZ,CAAA,QAAAC,oBAAA,IAAAD,CAAA,QAAAU,QAAA,IAAAV,CAAA,QAAAM,cAAA;IAEUK,EAAA,GAAAA,CAAA;MAAA,IACJL,cAAA,KAAAC,SAAmB;QACrBG,QAAA,CAASJ,cAAA,EAAgBL,oBAAA;MAAA;IAAA;IAE1BW,EAAA,IAACN,cAAA,EAAgBI,QAAA,EAAUT,oBAAA;IAAqBD,CAAA,MAAAC,oBAAA;IAAAD,CAAA,MAAAU,QAAA;IAAAV,CAAA,MAAAM,cAAA;IAAAN,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;EAAA;IAAAD,EAAA,GAAAX,CAAA;IAAAY,EAAA,GAAAZ,CAAA;EAAA;EAJnDL,SAAA,CAAUgB,EAIV,EAAGC,EAAgD;EAI3C,MAAAC,EAAA,YAASV,IAAA,EAAAW,OAAA,QAAqB,OAAO;EAIlC,MAAAC,EAAA,GAAAV,KAAC,IAAoB;EAAA,IAAAW,EAAA;EAAA,IAAAhB,CAAA,QAAAG,IAAA,IAAAH,CAAA,QAAAU,QAAA,IAAAV,CAAA,QAAAa,EAAA,IAAAb,CAAA,SAAAe,EAAA;IAL9BC,EAAA,GAAAC,IAAA,CAAC;MAAAC,EAAA,EACKL,EAAqC;MAAAM,IAAA,EACnChB,IAAA;MAAAiB,QAAA,EACIV,QAAA;MAAAW,IAAA,EACL;MAAAhB,KAAA,EACEU;IAAqB,C;;;;;;;;;SAL9BC,E;CAQJ;AAEA,OAAO,MAAMM,WAAA,GAAczB,aAAA,CAAcC,oBAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useField","withCondition","HiddenFieldComponent","props","$","disableModifyingForm","t0","path","pathFromProps","value","valueFromProps","undefined","t1","potentiallyStalePath","formInitializing","setValue","t2","t3","t4","replace","t5","t6","_jsx","id","name","onChange","type","HiddenField"],"sources":["../../../src/fields/Hidden/index.tsx"],"sourcesContent":["'use client'\n\nimport type { HiddenFieldProps } from 'payload'\n\nimport React, { useEffect } from 'react'\n\nimport { useField } from '../../forms/useField/index.js'\nimport { withCondition } from '../../forms/withCondition/index.js'\n\n/**\n * Renders an input with `type=\"hidden\"`.\n * This is mainly used to save a value on the form that is not visible to the user.\n * For example, this sets the `ìd` property of a block in the Blocks field.\n */\nconst HiddenFieldComponent: React.FC<HiddenFieldProps> = (props) => {\n const { disableModifyingForm = true, path: pathFromProps, value: valueFromProps } = props\n\n const { formInitializing, path, setValue, value } = useField({\n potentiallyStalePath: pathFromProps,\n })\n\n useEffect(() => {\n if (valueFromProps !== undefined && !formInitializing) {\n setValue(valueFromProps, disableModifyingForm)\n }\n }, [valueFromProps, setValue, disableModifyingForm, formInitializing])\n\n return (\n <input\n id={`field-${path?.replace(/\\./g, '__')}`}\n name={path}\n onChange={setValue}\n type=\"hidden\"\n value={(value as string) || ''}\n />\n )\n}\n\nexport const HiddenField = withCondition(HiddenFieldComponent)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,OAAOC,KAAA,IAASC,SAAS,QAAQ;AAEjC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAE9B;;;;;AAKA,MAAMC,oBAAA,GAAmDC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EACvD;IAAAQ,oBAAA,EAAAC,EAAA;IAAAC,IAAA,EAAAC,aAAA;IAAAC,KAAA,EAAAC;EAAA,IAAoFP,KAAA;EAA5E,MAAAE,oBAAA,GAAAC,EAA2B,KAAAK,SAAA,UAA3BL,EAA2B;EAAA,IAAAM,EAAA;EAAA,IAAAR,CAAA,QAAAI,aAAA;IAE0BI,EAAA;MAAAC,oBAAA,EACrCL;IAAA;IACxBJ,CAAA,MAAAI,aAAA;IAAAJ,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAFA;IAAAU,gBAAA;IAAAP,IAAA;IAAAQ,QAAA;IAAAN;EAAA,IAAoDT,QAAA,CAASY,EAE7D;EAAA,IAAAI,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAb,CAAA,QAAAC,oBAAA,IAAAD,CAAA,QAAAU,gBAAA,IAAAV,CAAA,QAAAW,QAAA,IAAAX,CAAA,QAAAM,cAAA;IAEUM,EAAA,GAAAA,CAAA;MAAA,IACJN,cAAA,KAAAC,SAAmB,KAAcG,gBAAA;QACnCC,QAAA,CAASL,cAAA,EAAgBL,oBAAA;MAAA;IAAA;IAE1BY,EAAA,IAACP,cAAA,EAAgBK,QAAA,EAAUV,oBAAA,EAAsBS,gBAAA;IAAiBV,CAAA,MAAAC,oBAAA;IAAAD,CAAA,MAAAU,gBAAA;IAAAV,CAAA,MAAAW,QAAA;IAAAX,CAAA,MAAAM,cAAA;IAAAN,CAAA,MAAAY,EAAA;IAAAZ,CAAA,MAAAa,EAAA;EAAA;IAAAD,EAAA,GAAAZ,CAAA;IAAAa,EAAA,GAAAb,CAAA;EAAA;EAJrEL,SAAA,CAAUiB,EAIV,EAAGC,EAAkE;EAI7D,MAAAC,EAAA,YAASX,IAAA,EAAAY,OAAA,QAAqB,OAAO;EAIlC,MAAAC,EAAA,GAAAX,KAAC,IAAoB;EAAA,IAAAY,EAAA;EAAA,IAAAjB,CAAA,QAAAG,IAAA,IAAAH,CAAA,QAAAW,QAAA,IAAAX,CAAA,SAAAc,EAAA,IAAAd,CAAA,SAAAgB,EAAA;IAL9BC,EAAA,GAAAC,IAAA,CAAC;MAAAC,EAAA,EACKL,EAAqC;MAAAM,IAAA,EACnCjB,IAAA;MAAAkB,QAAA,EACIV,QAAA;MAAAW,IAAA,EACL;MAAAjB,KAAA,EACEW;IAAqB,C;;;;;;;;;SAL9BC,E;CAQJ;AAEA,OAAO,MAAMM,WAAA,GAAc1B,aAAA,CAAcC,oBAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAmBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,CAwMrE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/forms/useField/index.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpD,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,CAAA;AAkBlC;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GAAI,MAAM,YAAa,OAAO,KAAG,SAAS,CAAC,MAAM,CAuMrE,CAAA"}
@@ -8,7 +8,7 @@ import { useConfig } from '../../providers/Config/index.js';
8
8
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
9
9
  import { useOperation } from '../../providers/Operation/index.js';
10
10
  import { useTranslation } from '../../providers/Translation/index.js';
11
- import { useDocumentForm, useForm, useFormFields, useFormInitializing, useFormModified, useFormProcessing, useFormSubmitted } from '../Form/context.js';
11
+ import { useDocumentForm, useForm, useFormFields, useFormInitializing, useFormProcessing, useFormSubmitted } from '../Form/context.js';
12
12
  import { useFieldPath } from '../RenderFields/context.js';
13
13
  /**
14
14
  * Get and set the value of a form field.
@@ -72,7 +72,6 @@ export const useField = options => {
72
72
  setModified
73
73
  } = useForm();
74
74
  const documentForm = useDocumentForm();
75
- useFormModified();
76
75
  const filterOptions = field?.filterOptions;
77
76
  const value = field?.value;
78
77
  const initialValue = field?.initialValue;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormModified","useFormProcessing","useFormSubmitted","useFieldPath","useField","options","$","t0","disableFormData","t1","hasRows","path","pathFromOptions","potentiallyStalePath","validate","undefined","pathFromContext","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t2","t3","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","split","pathSegments","t4","e","t5","disableModifyingForm","isEvent","preventDefault","stopPropagation","val","target","type","setValue","t6","customComponents","t7","t8","t9","errorPaths","t10","rows","t11","selectFilterOptions","t12","t13","disabled","formInitializing","formProcessing","formSubmitted","result","t14","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t15","t16","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport {\n useDocumentForm,\n useForm,\n useFormFields,\n useFormInitializing,\n useFormModified,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\nimport { useFieldPath } from '../RenderFields/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#usefield\n */\nexport const useField = <TValue,>(options?: Options): FieldType<TValue> => {\n const {\n disableFormData = false,\n hasRows,\n path: pathFromOptions,\n potentiallyStalePath,\n validate,\n } = options || {}\n\n const pathFromContext = useFieldPath()\n\n // This is a workaround for stale props given to server rendered components.\n // See the notes in the `potentiallyStalePath` type definition for more details.\n const path = pathFromOptions || pathFromContext || potentiallyStalePath\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const documentForm = useDocumentForm()\n const modified = useFormModified()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as TValue\n const initialValue = field?.initialValue as TValue\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n const pathSegments = path ? path.split('.') : []\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n // TODO:\n // There are no built-in fields that pass events into `e`.\n // Remove this check in the next major version.\n const isEvent =\n e &&\n typeof e === 'object' &&\n typeof e.preventDefault === 'function' &&\n typeof e.stopPropagation === 'function'\n\n const val = isEvent ? e.target.value : e\n\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n setModified(true)\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\n disabled: processing || initializing,\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n rows: field?.rows,\n selectFilterOptions: field?.selectFilterOptions,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const data = getData()\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n collectionSlug,\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'onChange',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useCallback","useMemo","useRef","useThrottledEffect","useAuth","useConfig","useDocumentInfo","useOperation","useTranslation","useDocumentForm","useForm","useFormFields","useFormInitializing","useFormProcessing","useFormSubmitted","useFieldPath","useField","options","$","t0","disableFormData","t1","hasRows","path","pathFromOptions","potentiallyStalePath","validate","undefined","pathFromContext","submitted","processing","initializing","user","id","collectionSlug","operation","dispatchField","_temp","t2","t3","fields","field","t","config","getData","getDataByPath","getSiblingData","setModified","documentForm","filterOptions","value","initialValue","valid","showError","prevValid","prevErrorMessage","errorMessage","split","pathSegments","t4","e","t5","disableModifyingForm","isEvent","preventDefault","stopPropagation","val","target","type","setValue","t6","customComponents","t7","t8","t9","errorPaths","t10","rows","t11","selectFilterOptions","t12","t13","disabled","formInitializing","formProcessing","formSubmitted","result","t14","validateField","valueToValidate","Array","isArray","current","valid_0","data","isValid","blockData","event","preferences","req","payload","siblingData","update","t15","t16","dispatch"],"sources":["../../../src/forms/useField/index.tsx"],"sourcesContent":["'use client'\nimport type { PayloadRequest } from 'payload'\n\nimport { useCallback, useMemo, useRef } from 'react'\n\nimport type { UPDATE } from '../Form/types.js'\nimport type { FieldType, Options } from './types.js'\n\nexport type { FieldType, Options }\n\nimport { useThrottledEffect } from '../../hooks/useThrottledEffect.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { useOperation } from '../../providers/Operation/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport {\n useDocumentForm,\n useForm,\n useFormFields,\n useFormInitializing,\n useFormProcessing,\n useFormSubmitted,\n} from '../Form/context.js'\nimport { useFieldPath } from '../RenderFields/context.js'\n\n/**\n * Get and set the value of a form field.\n *\n * @see https://payloadcms.com/docs/admin/react-hooks#usefield\n */\nexport const useField = <TValue,>(options?: Options): FieldType<TValue> => {\n const {\n disableFormData = false,\n hasRows,\n path: pathFromOptions,\n potentiallyStalePath,\n validate,\n } = options || {}\n\n const pathFromContext = useFieldPath()\n\n // This is a workaround for stale props given to server rendered components.\n // See the notes in the `potentiallyStalePath` type definition for more details.\n const path = pathFromOptions || pathFromContext || potentiallyStalePath\n\n const submitted = useFormSubmitted()\n const processing = useFormProcessing()\n const initializing = useFormInitializing()\n const { user } = useAuth()\n const { id, collectionSlug } = useDocumentInfo()\n const operation = useOperation()\n\n const dispatchField = useFormFields(([_, dispatch]) => dispatch)\n const field = useFormFields(([fields]) => (fields && fields?.[path]) || null)\n\n const { t } = useTranslation()\n const { config } = useConfig()\n\n const { getData, getDataByPath, getSiblingData, setModified } = useForm()\n const documentForm = useDocumentForm()\n\n const filterOptions = field?.filterOptions\n const value = field?.value as TValue\n const initialValue = field?.initialValue as TValue\n const valid = typeof field?.valid === 'boolean' ? field.valid : true\n const showError = valid === false && submitted\n\n const prevValid = useRef(valid)\n const prevErrorMessage = useRef(field?.errorMessage)\n\n const pathSegments = path ? path.split('.') : []\n\n // Method to return from `useField`, used to\n // update field values from field component(s)\n const setValue = useCallback(\n (e, disableModifyingForm = false) => {\n // TODO:\n // There are no built-in fields that pass events into `e`.\n // Remove this check in the next major version.\n const isEvent =\n e &&\n typeof e === 'object' &&\n typeof e.preventDefault === 'function' &&\n typeof e.stopPropagation === 'function'\n\n const val = isEvent ? e.target.value : e\n\n dispatchField({\n type: 'UPDATE',\n disableFormData: disableFormData || (hasRows && val > 0),\n path,\n value: val,\n })\n\n if (!disableModifyingForm) {\n setModified(true)\n }\n },\n [setModified, path, dispatchField, disableFormData, hasRows],\n )\n\n // Store result from hook as ref\n // to prevent unnecessary rerenders\n const result: FieldType<TValue> = useMemo(\n () => ({\n customComponents: field?.customComponents,\n disabled: processing || initializing,\n errorMessage: field?.errorMessage,\n errorPaths: field?.errorPaths || [],\n filterOptions,\n formInitializing: initializing,\n formProcessing: processing,\n formSubmitted: submitted,\n initialValue,\n path,\n rows: field?.rows,\n selectFilterOptions: field?.selectFilterOptions,\n setValue,\n showError,\n valid: field?.valid,\n value,\n }),\n [\n field,\n processing,\n setValue,\n showError,\n submitted,\n value,\n initialValue,\n path,\n filterOptions,\n initializing,\n ],\n )\n\n // Throttle the validate function\n useThrottledEffect(\n () => {\n const validateField = async () => {\n let valueToValidate = value\n\n if (field?.rows && Array.isArray(field.rows)) {\n valueToValidate = getDataByPath(path)\n }\n\n let errorMessage: string | undefined = prevErrorMessage.current\n let valid: boolean | string = prevValid.current\n\n const data = getData()\n const isValid =\n typeof validate === 'function'\n ? await validate(valueToValidate, {\n id,\n blockData: undefined, // Will be expensive to get - not worth to pass to client-side validation, as this can be obtained by the user using `useFormFields()`\n collectionSlug,\n data: documentForm?.getData ? documentForm.getData() : data,\n event: 'onChange',\n operation,\n path: pathSegments,\n preferences: {} as any,\n req: {\n payload: {\n config,\n },\n t,\n user,\n } as unknown as PayloadRequest,\n siblingData: getSiblingData(path),\n })\n : typeof prevErrorMessage.current === 'string'\n ? prevErrorMessage.current\n : prevValid.current\n\n if (typeof isValid === 'string') {\n valid = false\n errorMessage = isValid\n } else if (typeof isValid === 'boolean') {\n valid = isValid\n errorMessage = undefined\n }\n\n // Only dispatch if the validation result has changed\n // This will prevent unnecessary rerenders\n if (valid !== prevValid.current || errorMessage !== prevErrorMessage.current) {\n prevValid.current = valid\n prevErrorMessage.current = errorMessage\n\n const update: UPDATE = {\n type: 'UPDATE',\n errorMessage,\n path,\n rows: field?.rows,\n valid,\n validate,\n value,\n }\n\n if (disableFormData || (hasRows ? typeof value === 'number' && value > 0 : false)) {\n update.disableFormData = true\n }\n\n if (typeof dispatchField === 'function') {\n dispatchField(update)\n }\n }\n }\n\n void validateField()\n },\n 150,\n [\n value,\n disableFormData,\n dispatchField,\n getData,\n getSiblingData,\n getDataByPath,\n id,\n operation,\n path,\n user,\n validate,\n field?.rows,\n collectionSlug,\n ],\n )\n\n return result\n}\n"],"mappings":"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","ignoreList":[]}
@@ -8,8 +8,8 @@ export type LivePreviewProviderProps = {
8
8
  height: number;
9
9
  width: number;
10
10
  };
11
+ isLivePreviewEnabled?: boolean;
11
12
  isLivePreviewing: boolean;
12
- operation?: 'create' | 'update';
13
13
  url: string;
14
14
  };
15
15
  export declare const LivePreviewProvider: React.FC<LivePreviewProviderProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/LivePreview/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAIvE,OAAO,KAA4D,MAAM,OAAO,CAAA;AAUhF,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,gBAAgB,EAAE,OAAO,CAAA;IACzB,SAAS,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC/B,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAUD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA8OlE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/LivePreview/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAyB,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAIvE,OAAO,KAA4D,MAAM,OAAO,CAAA;AAUhF,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,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,gBAAgB,EAAE,OAAO,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ,CAAA;AAUD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuOlE,CAAA"}
@@ -21,8 +21,8 @@ const getAbsoluteUrl = url => {
21
21
  export const LivePreviewProvider = ({
22
22
  breakpoints: incomingBreakpoints,
23
23
  children,
24
+ isLivePreviewEnabled,
24
25
  isLivePreviewing: incomingIsLivePreviewing,
25
- operation,
26
26
  url: incomingUrl
27
27
  }) => {
28
28
  const [previewWindowType, setPreviewWindowType] = useState('iframe');
@@ -164,7 +164,6 @@ export const LivePreviewProvider = ({
164
164
  editViewType: isLivePreviewing ? 'live-preview' : 'default'
165
165
  }, true);
166
166
  }, [isLivePreviewing, setPreference, collectionSlug, globalSlug]);
167
- const isLivePreviewEnabled = Boolean(operation !== 'create' && (collectionSlug && config?.admin?.livePreview?.collections?.includes(collectionSlug) || globalSlug && config.admin?.livePreview?.globals?.includes(globalSlug) || entityConfig?.admin?.livePreview));
168
167
  return /*#__PURE__*/_jsx(LivePreviewContext, {
169
168
  value: {
170
169
  appIsReady,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DndContext","fieldSchemaToJSON","React","useCallback","useEffect","useMemo","useRef","useState","usePopupWindow","useDocumentInfo","usePreferences","useConfig","customCollisionDetection","LivePreviewContext","sizeReducer","getAbsoluteUrl","url","URL","window","location","origin","href","LivePreviewProvider","breakpoints","incomingBreakpoints","children","isLivePreviewing","incomingIsLivePreviewing","operation","incomingUrl","previewWindowType","setPreviewWindowType","setIsLivePreviewing","name","height","label","width","setURL","startsWith","isPopupOpen","openPopupWindow","popupRef","eventType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","collectionSlug","globalSlug","isFirstRender","setPreference","iframeRef","iframeHasLoaded","setIframeHasLoaded","config","getEntityConfig","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","measuredDeviceSize","setMeasuredDeviceSize","entityConfig","breakpoint","setBreakpoint","fieldSchemaJSON","fields","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","handleMessage","event","data","ready","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","current","editViewType","isLivePreviewEnabled","Boolean","admin","livePreview","collections","includes","globals","_jsx","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"sources":["../../../src/providers/LivePreview/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPreferences, LivePreviewConfig } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport { fieldSchemaToJSON } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useConfig } from '../Config/index.js'\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 isLivePreviewing: boolean\n operation?: 'create' | 'update'\n url: string\n}\n\nconst getAbsoluteUrl = (url) => {\n try {\n return new URL(url, window.location.origin).href\n } catch {\n return url\n }\n}\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints: incomingBreakpoints,\n children,\n isLivePreviewing: incomingIsLivePreviewing,\n operation,\n url: incomingUrl,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n const [isLivePreviewing, setIsLivePreviewing] = useState(incomingIsLivePreviewing)\n\n const breakpoints: LivePreviewConfig['breakpoints'] = useMemo(\n () => [\n ...(incomingBreakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ],\n [incomingBreakpoints],\n )\n\n const [url, setURL] = useState<string>('')\n\n // This needs to be done in a useEffect to prevent hydration issues\n // as the URL may not be absolute when passed in as a prop,\n // and getAbsoluteUrl requires the window object to be available\n useEffect(\n () =>\n setURL(\n incomingUrl?.startsWith('http://') || incomingUrl?.startsWith('https://')\n ? incomingUrl\n : getAbsoluteUrl(incomingUrl),\n ),\n [incomingUrl],\n )\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const isFirstRender = useRef(true)\n\n const { setPreference } = usePreferences()\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [iframeHasLoaded, setIframeHasLoaded] = useState(false)\n\n const { config, getEntityConfig } = 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 entityConfig = getEntityConfig({ collectionSlug, globalSlug })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n const [fieldSchemaJSON] = useState(() => fieldSchemaToJSON(entityConfig?.fields || [], config))\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 useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n\n void setPreference<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n {\n editViewType: isLivePreviewing ? 'live-preview' : 'default',\n },\n true,\n )\n }, [isLivePreviewing, setPreference, collectionSlug, globalSlug])\n\n const isLivePreviewEnabled = Boolean(\n operation !== 'create' &&\n ((collectionSlug && config?.admin?.livePreview?.collections?.includes(collectionSlug)) ||\n (globalSlug && config.admin?.livePreview?.globals?.includes(globalSlug)) ||\n entityConfig?.admin?.livePreview),\n )\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isLivePreviewEnabled,\n isLivePreviewing,\n isPopupOpen,\n listeningForMessages,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIframeHasLoaded,\n setIsLivePreviewing,\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 {children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DndContext","fieldSchemaToJSON","React","useCallback","useEffect","useMemo","useRef","useState","usePopupWindow","useDocumentInfo","usePreferences","useConfig","customCollisionDetection","LivePreviewContext","sizeReducer","getAbsoluteUrl","url","URL","window","location","origin","href","LivePreviewProvider","breakpoints","incomingBreakpoints","children","isLivePreviewEnabled","isLivePreviewing","incomingIsLivePreviewing","incomingUrl","previewWindowType","setPreviewWindowType","setIsLivePreviewing","name","height","label","width","setURL","startsWith","isPopupOpen","openPopupWindow","popupRef","eventType","appIsReady","setAppIsReady","listeningForMessages","setListeningForMessages","collectionSlug","globalSlug","isFirstRender","setPreference","iframeRef","iframeHasLoaded","setIframeHasLoaded","config","getEntityConfig","zoom","setZoom","position","setPosition","x","y","size","setSize","useReducer","measuredDeviceSize","setMeasuredDeviceSize","entityConfig","breakpoint","setBreakpoint","fieldSchemaJSON","fields","handleDragEnd","ev","over","id","newPos","delta","setWidth","type","value","setHeight","foundBreakpoint","find","bp","handleMessage","event","data","ready","addEventListener","removeEventListener","handleWindowChange","newPreviewWindowType","current","editViewType","_jsx","setToolbarPosition","toolbarPosition","collisionDetection","onDragEnd"],"sources":["../../../src/providers/LivePreview/index.tsx"],"sourcesContent":["'use client'\nimport type { CollectionPreferences, LivePreviewConfig } from 'payload'\n\nimport { DndContext } from '@dnd-kit/core'\nimport { fieldSchemaToJSON } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { usePopupWindow } from '../../hooks/usePopupWindow.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { usePreferences } from '../../providers/Preferences/index.js'\nimport { useConfig } from '../Config/index.js'\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 isLivePreviewEnabled?: boolean\n isLivePreviewing: boolean\n url: string\n}\n\nconst getAbsoluteUrl = (url) => {\n try {\n return new URL(url, window.location.origin).href\n } catch {\n return url\n }\n}\n\nexport const LivePreviewProvider: React.FC<LivePreviewProviderProps> = ({\n breakpoints: incomingBreakpoints,\n children,\n isLivePreviewEnabled,\n isLivePreviewing: incomingIsLivePreviewing,\n url: incomingUrl,\n}) => {\n const [previewWindowType, setPreviewWindowType] = useState<'iframe' | 'popup'>('iframe')\n const [isLivePreviewing, setIsLivePreviewing] = useState(incomingIsLivePreviewing)\n\n const breakpoints: LivePreviewConfig['breakpoints'] = useMemo(\n () => [\n ...(incomingBreakpoints || []),\n {\n name: 'responsive',\n height: '100%',\n label: 'Responsive',\n width: '100%',\n },\n ],\n [incomingBreakpoints],\n )\n\n const [url, setURL] = useState<string>('')\n\n // This needs to be done in a useEffect to prevent hydration issues\n // as the URL may not be absolute when passed in as a prop,\n // and getAbsoluteUrl requires the window object to be available\n useEffect(\n () =>\n setURL(\n incomingUrl?.startsWith('http://') || incomingUrl?.startsWith('https://')\n ? incomingUrl\n : getAbsoluteUrl(incomingUrl),\n ),\n [incomingUrl],\n )\n\n const { isPopupOpen, openPopupWindow, popupRef } = usePopupWindow({\n eventType: 'payload-live-preview',\n url,\n })\n\n const [appIsReady, setAppIsReady] = useState(false)\n const [listeningForMessages, setListeningForMessages] = useState(false)\n\n const { collectionSlug, globalSlug } = useDocumentInfo()\n\n const isFirstRender = useRef(true)\n\n const { setPreference } = usePreferences()\n\n const iframeRef = React.useRef<HTMLIFrameElement>(null)\n\n const [iframeHasLoaded, setIframeHasLoaded] = useState(false)\n\n const { config, getEntityConfig } = 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 entityConfig = getEntityConfig({ collectionSlug, globalSlug })\n\n const [breakpoint, setBreakpoint] =\n React.useState<LivePreviewConfig['breakpoints'][0]['name']>('responsive')\n\n const [fieldSchemaJSON] = useState(() => fieldSchemaToJSON(entityConfig?.fields || [], config))\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 useEffect(() => {\n if (isFirstRender.current) {\n isFirstRender.current = false\n return\n }\n\n void setPreference<CollectionPreferences>(\n collectionSlug ? `collection-${collectionSlug}` : `global-${globalSlug}`,\n {\n editViewType: isLivePreviewing ? 'live-preview' : 'default',\n },\n true,\n )\n }, [isLivePreviewing, setPreference, collectionSlug, globalSlug])\n\n return (\n <LivePreviewContext\n value={{\n appIsReady,\n breakpoint,\n breakpoints,\n fieldSchemaJSON,\n iframeHasLoaded,\n iframeRef,\n isLivePreviewEnabled,\n isLivePreviewing,\n isPopupOpen,\n listeningForMessages,\n measuredDeviceSize,\n openPopupWindow,\n popupRef,\n previewWindowType,\n setAppIsReady,\n setBreakpoint,\n setHeight,\n setIframeHasLoaded,\n setIsLivePreviewing,\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 {children}\n </DndContext>\n </LivePreviewContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}