@payloadcms/ui 4.0.0-canary.38 → 4.0.0-canary.39

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 (114) hide show
  1. package/dist/elements/Autosave/index.d.ts.map +1 -1
  2. package/dist/elements/Autosave/index.js +10 -3
  3. package/dist/elements/Autosave/index.js.map +1 -1
  4. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  5. package/dist/elements/CodeEditor/CodeEditor.js +5 -0
  6. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  7. package/dist/elements/DocumentDrawer/types.d.ts +1 -5
  8. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  9. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  10. package/dist/elements/EditUpload/library.css +6 -13
  11. package/dist/elements/FileManager/index.d.ts.map +1 -1
  12. package/dist/elements/FileManager/index.js +6 -1
  13. package/dist/elements/FileManager/index.js.map +1 -1
  14. package/dist/elements/ListControls/types.d.ts +0 -10
  15. package/dist/elements/ListControls/types.d.ts.map +1 -1
  16. package/dist/elements/ListControls/types.js.map +1 -1
  17. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  18. package/dist/elements/ListDrawer/DrawerContent.js +1 -2
  19. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  20. package/dist/elements/ListDrawer/Provider.d.ts +0 -6
  21. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  22. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  23. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  24. package/dist/elements/PublishButton/index.js +71 -8
  25. package/dist/elements/PublishButton/index.js.map +1 -1
  26. package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
  27. package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
  28. package/dist/elements/PublishButton/validateAllLocales.js +263 -0
  29. package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
  30. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  31. package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
  32. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  33. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  34. package/dist/elements/SaveDraftButton/index.js +15 -2
  35. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  36. package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
  37. package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
  38. package/dist/elements/Upload/getEditorFileSrc.js +6 -0
  39. package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
  40. package/dist/elements/Upload/index.d.ts.map +1 -1
  41. package/dist/elements/Upload/index.js +6 -1
  42. package/dist/elements/Upload/index.js.map +1 -1
  43. package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-S7MOGZSR.js} +2 -2
  44. package/dist/exports/client/chunk-Z42OBP5U.js +27 -0
  45. package/dist/exports/client/chunk-Z42OBP5U.js.map +7 -0
  46. package/dist/exports/client/index.js +27 -27
  47. package/dist/exports/client/index.js.map +4 -4
  48. package/dist/exports/shared/index.js +2 -2
  49. package/dist/exports/shared/index.js.map +3 -3
  50. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  51. package/dist/forms/Form/fieldReducer.js +6 -9
  52. package/dist/forms/Form/fieldReducer.js.map +1 -1
  53. package/dist/forms/Form/index.d.ts.map +1 -1
  54. package/dist/forms/Form/index.js +0 -1
  55. package/dist/forms/Form/index.js.map +1 -1
  56. package/dist/forms/Form/types.d.ts +0 -5
  57. package/dist/forms/Form/types.d.ts.map +1 -1
  58. package/dist/forms/Form/types.js.map +1 -1
  59. package/dist/forms/useField/types.d.ts +0 -4
  60. package/dist/forms/useField/types.d.ts.map +1 -1
  61. package/dist/forms/useField/types.js.map +1 -1
  62. package/dist/layouts/Root/getRootLayoutData.d.ts +2 -2
  63. package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
  64. package/dist/layouts/Root/getRootLayoutData.js +8 -4
  65. package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
  66. package/dist/layouts/Root/index.js +1 -5
  67. package/dist/layouts/Root/index.js.map +1 -1
  68. package/dist/providers/ListQuery/types.d.ts +0 -4
  69. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  70. package/dist/providers/ListQuery/types.js.map +1 -1
  71. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  72. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
  73. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  74. package/dist/providers/TableColumns/types.d.ts +1 -34
  75. package/dist/providers/TableColumns/types.d.ts.map +1 -1
  76. package/dist/providers/TableColumns/types.js.map +1 -1
  77. package/dist/styles.css +1 -1
  78. package/dist/utilities/appendCacheTag.d.ts +1 -0
  79. package/dist/utilities/appendCacheTag.d.ts.map +1 -1
  80. package/dist/utilities/appendCacheTag.js +2 -1
  81. package/dist/utilities/appendCacheTag.js.map +1 -1
  82. package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
  83. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  84. package/dist/utilities/traverseForLocalizedFields.js +22 -8
  85. package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
  86. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
  87. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  88. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
  89. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  90. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
  91. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  92. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
  93. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  94. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
  95. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  96. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
  97. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  98. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
  99. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
  100. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  101. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
  102. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  103. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
  104. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  105. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
  106. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  107. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
  108. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
  109. package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
  110. package/dist/widgets/RecentlyViewed/index.css +3 -2
  111. package/package.json +4 -4
  112. package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
  113. package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
  114. /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-S7MOGZSR.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAUzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAmB5E,OAAO,aAAa,CAAA;AAMpB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsMpC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Autosave/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAUzE,OAAO,KAAwD,MAAM,OAAO,CAAA;AAoB5E,OAAO,aAAa,CAAA;AAMpB,MAAM,MAAM,KAAK,GAAG;IAClB,UAAU,CAAC,EAAE,sBAAsB,CAAA;IACnC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACpB,qBAAqB,EAAE,MAAM,CAAA;CAC9B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA0MpC,CAAA"}
@@ -13,6 +13,7 @@ import { useConfig } from '../../providers/Config/index.js';
13
13
  import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
14
14
  import { useLocale } from '../../providers/Locale/index.js';
15
15
  import { useTranslation } from '../../providers/Translation/index.js';
16
+ import { useUploadEdits } from '../../providers/UploadEdits/index.js';
16
17
  import { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js';
17
18
  import { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js';
18
19
  import './index.css';
@@ -50,6 +51,9 @@ export const Autosave = ({
50
51
  const {
51
52
  t
52
53
  } = useTranslation();
54
+ const {
55
+ uploadEdits
56
+ } = useUploadEdits();
53
57
  const interval = getAutosaveInterval(docConfig);
54
58
  const validateOnDraft = hasDraftValidationEnabled(docConfig);
55
59
  const [_saving, setSaving] = useState(false);
@@ -86,7 +90,8 @@ export const Autosave = ({
86
90
  depth: 0,
87
91
  draft: true,
88
92
  'fallback-locale': 'null',
89
- locale
93
+ locale,
94
+ uploadEdits: uploadEdits || undefined
90
95
  }, {
91
96
  addQueryPrefix: true
92
97
  });
@@ -149,6 +154,7 @@ export const Autosave = ({
149
154
  });
150
155
  const didMount = useRef(false);
151
156
  const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState));
157
+ const previousUploadEdits = useRef(uploadEdits);
152
158
  // When debounced fields change, autosave
153
159
  useEffect(() => {
154
160
  /**
@@ -170,12 +176,13 @@ export const Autosave = ({
170
176
  updatedAt: __,
171
177
  ...prevFormData
172
178
  } = previousDebouncedData.current;
173
- if (dequal(formData, prevFormData)) {
179
+ if (dequal(formData, prevFormData) && dequal(uploadEdits, previousUploadEdits.current)) {
174
180
  return;
175
181
  }
176
182
  previousDebouncedData.current = formData;
183
+ previousUploadEdits.current = uploadEdits;
177
184
  handleAutosave();
178
- }, [debouncedFormState]);
185
+ }, [debouncedFormState, uploadEdits]);
179
186
  /**
180
187
  * If component unmounts, clear the autosave timeout
181
188
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["dequal","formatAdminURL","getAutosaveInterval","hasDraftValidationEnabled","reduceFieldsToValues","qs","React","useDeferredValue","useEffect","useRef","useState","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueue","useConfig","useDocumentInfo","useLocale","useTranslation","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","docConfig","mostRecentVersionIsAutosaved","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","isValid","setBackgroundProcessing","submit","formState","modified","submitted","currentLocale","locale","code","t","interval","validateOnDraft","_saving","setSaving","saving","debouncedFormState","queueTask","autosaveTimeoutRef","handleAutosave","current","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","params","stringify","autosave","depth","draft","addQueryPrefix","slug","apiRoute","path","valid","skipSubmission","result","acceptValues","overrideLocalChanges","action","context","getDocPermissions","incrementVersionCount","disableFormWhileProcessing","disableSuccessStatus","overrides","_status","skipValidation","res","ok","prev","newDate","afterProcess","beforeProcess","didMount","previousDebouncedData","updatedAt","_","formData","__","prevFormData","clearTimeout","_jsxs","Fragment","_jsx","className"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport {\n formatAdminURL,\n getAutosaveInterval,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport type { OnSaveContext } from '../../views/Edit/index.js'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.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 { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.css'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const {\n docConfig,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { t } = useTranslation()\n\n const interval = getAutosaveInterval(docConfig)\n const validateOnDraft = hasDraftValidationEnabled(docConfig)\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const { queueTask } = useQueue()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n const params = qs.stringify(\n {\n autosave: true,\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n if (collection && id) {\n entitySlug = collection.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/${entitySlug}/${id}${params}`,\n })\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/globals/${entitySlug}${params}`,\n })\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formState, true)\n\n const skipSubmission = submitted && !valid && validateOnDraft\n\n if (!skipSubmission && modified && url) {\n const result = await submit<any, OnSaveContext>({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n getDocPermissions: false,\n incrementVersionCount: !mostRecentVersionIsAutosaved,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: !validateOnDraft,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData)) {\n return\n }\n\n previousDebouncedData.current = formData\n\n handleAutosave()\n }, [debouncedFormState])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <React.Fragment>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && <div className={baseClass}>{t('general:saving')}</div>}\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;;AAGA,SAASA,MAAM,QAAQ;AACvB,SACEC,cAAc,EACdC,mBAAmB,EACnBC,yBAAyB,EACzBC,oBAAoB,QACf;AACP,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,gBAAgB,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAIrE,SACEC,gBAAgB,EAChBC,OAAO,EACPC,eAAe,EACfC,gBAAgB,QACX;AACP,SAASC,WAAW,QAAQ;AAC5B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,kCAAkC,QAAQ;AACnD,SAASC,kBAAkB,QAAQ;AACnC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAClB;AACA,MAAMC,oBAAA,GAAuB;AAS7B,OAAO,MAAMC,QAAA,GAA4BA,CAAC;EAAEC,EAAE;EAAEC,UAAU;EAAEC,MAAA,EAAQC;AAAS,CAAE;EAC7E,MAAM;IACJC,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG;IAAE;EAChB,CACF,GAAGf,SAAA;EAEJ,MAAM;IACJgB,SAAS;IACTC,4BAA4B;IAC5BC,+BAA+B;IAC/BC;EAA0B,CAC3B,GAAGlB,eAAA;EAEJ,MAAM;IAAEmB,OAAO;IAAEC,uBAAuB;IAAEC;EAAM,CAAE,GAAG5B,OAAA;EAErD,MAAM,CAAC6B,SAAA,CAAU,GAAG9B,gBAAA;EACpB,MAAM+B,QAAA,GAAW7B,eAAA;EACjB,MAAM8B,SAAA,GAAY7B,gBAAA;EAElB,MAAM8B,aAAA,GAAgBxB,SAAA;EACtB,MAAMyB,MAAA,GAASD,aAAA,EAAeE,IAAA;EAC9B,MAAM;IAAEC;EAAC,CAAE,GAAG1B,cAAA;EAEd,MAAM2B,QAAA,GAAW9C,mBAAA,CAAoBgC,SAAA;EACrC,MAAMe,eAAA,GAAkB9C,yBAAA,CAA0B+B,SAAA;EAElD,MAAM,CAACgB,OAAA,EAASC,SAAA,CAAU,GAAGzC,QAAA,CAAS;EAEtC,MAAM0C,MAAA,GAAS7C,gBAAA,CAAiB2C,OAAA;EAEhC,MAAMG,kBAAA,GAAqBtC,WAAA,CAAY0B,SAAA,EAAWO,QAAA;EAElD,MAAM;IAAEM;EAAS,CAAE,GAAGrC,QAAA;EAEtB,MAAMsC,kBAAA,GAAqB9C,MAAA,CAA8B;EAEzD,MAAM+C,cAAA,GAAiBxC,cAAA,CAAe;IACpCuC,kBAAA,CAAmBE,OAAO,GAAGC,SAAA;IAC7B;IACA,IAAIC,cAAA,GAAiBD,SAAA;IACrB,IAAIE,YAAA,GAAeF,SAAA;IAEnB,MAAMG,aAAA,GAAgBA,CAAA;MACpB;MACA,IAAID,YAAA,GAAeD,cAAA,GAAiBlC,oBAAA,EAAsB;QACxD8B,kBAAA,CAAmBE,OAAO,GAAGK,UAAA,CAC3B;UACEX,SAAA,CAAU;QACZ,GACA1B,oBAAA,IAAwBmC,YAAA,GAAeD,cAAa;MAExD,OAAO;QACLI,qBAAA;MACF;IACF;IAEAT,SAAA,CACE;MACE,IAAIZ,QAAA,EAAU;QACZiB,cAAA,GAAiB,IAAIK,IAAA,GAAOC,OAAO;QAEnCd,SAAA,CAAU;QAEV,IAAIe,GAAA;QACJ,IAAIC,MAAA;QACJ,IAAIC,UAAA;QACJ,MAAMC,MAAA,GAAShE,EAAA,CAAGiE,SAAS,CACzB;UACEC,QAAA,EAAU;UACVC,KAAA,EAAO;UACPC,KAAA,EAAO;UACP,mBAAmB;UACnB5B;QACF,GACA;UACE6B,cAAA,EAAgB;QAClB;QAGF,IAAI9C,UAAA,IAAcD,EAAA,EAAI;UACpByC,UAAA,GAAaxC,UAAA,CAAW+C,IAAI;UAC5BT,GAAA,GAAMjE,cAAA,CAAe;YACnB2E,QAAA,EAAU3C,GAAA;YACV4C,IAAA,EAAM,IAAIT,UAAA,IAAczC,EAAA,GAAK0C,MAAA;UAC/B;UACAF,MAAA,GAAS;QACX;QAEA,IAAIrC,SAAA,EAAW;UACbsC,UAAA,GAAatC,SAAA,CAAU6C,IAAI;UAC3BT,GAAA,GAAMjE,cAAA,CAAe;YACnB2E,QAAA,EAAU3C,GAAA;YACV4C,IAAA,EAAM,YAAYT,UAAA,GAAaC,MAAA;UACjC;UACAF,MAAA,GAAS;QACX;QAEA,MAAM;UAAEW;QAAK,CAAE,GAAGxD,kCAAA,CAAmCmB,SAAA,EAAW;QAEhE,MAAMsC,cAAA,GAAiBpC,SAAA,IAAa,CAACmC,KAAA,IAAS7B,eAAA;QAE9C,IAAI,CAAC8B,cAAA,IAAkBrC,QAAA,IAAYwB,GAAA,EAAK;UACtC,MAAMc,MAAA,GAAS,MAAMxC,MAAA,CAA2B;YAC9CyC,YAAA,EAAc;cACZC,oBAAA,EAAsB;YACxB;YACAC,MAAA,EAAQjB,GAAA;YACRkB,OAAA,EAAS;cACPC,iBAAA,EAAmB;cACnBC,qBAAA,EAAuB,CAACnD;YAC1B;YACAoD,0BAAA,EAA4B;YAC5BC,oBAAA,EAAsB;YACtBrB,MAAA;YACAsB,SAAA,EAAW;cACTC,OAAA,EAAS;YACX;YACAC,cAAA,EAAgB,CAAC1C;UACnB;UAEA,IAAI+B,MAAA,IAAUA,MAAA,EAAQY,GAAA,EAAKC,EAAA,IAAM,CAAC1D,4BAAA,EAA8B;YAC9DC,+BAAA,CAAgC;YAChCC,0BAAA,CAA4ByD,IAAA,IAASA,IAAA,GAAO;UAC9C;UAEA,MAAMC,OAAA,GAAU,IAAI/B,IAAA;UAEpB;UACAJ,YAAA,GAAemC,OAAA,CAAQ9B,OAAO;UAE9BJ,aAAA;QACF;MACF;IACF,GACA;MACEmC,YAAA,EAAcA,CAAA;QACZzD,uBAAA,CAAwB;MAC1B;MACA0D,aAAA,EAAeA,CAAA;QACb1D,uBAAA,CAAwB;MAC1B;IACF;EAEJ;EAEA,MAAM2D,QAAA,GAAWzF,MAAA,CAAO;EACxB,MAAM0F,qBAAA,GAAwB1F,MAAA,CAAOL,oBAAA,CAAqBiD,kBAAA;EAE1D;EACA7C,SAAA,CAAU;IACR;;;IAGA,IAAI,CAAC0F,QAAA,CAASzC,OAAO,EAAE;MACrByC,QAAA,CAASzC,OAAO,GAAG;MACnB;IACF;IAEA;;;;IAIA,MAAM;MAAE2C,SAAA,EAAWC,CAAC;MAAE,GAAGC;IAAA,CAAU,GAAGlG,oBAAA,CAAqBiD,kBAAA;IAC3D,MAAM;MAAE+C,SAAA,EAAWG,EAAE;MAAE,GAAGC;IAAA,CAAc,GAAGL,qBAAA,CAAsB1C,OAAO;IAExE,IAAIzD,MAAA,CAAOsG,QAAA,EAAUE,YAAA,GAAe;MAClC;IACF;IAEAL,qBAAA,CAAsB1C,OAAO,GAAG6C,QAAA;IAEhC9C,cAAA;EACF,GAAG,CAACH,kBAAA,CAAmB;EAEvB;;;EAGA7C,SAAA,CAAU;IACR,OAAO;MACLuD,qBAAA;IACF;EACF,GAAG,EAAE;EAEL,MAAMA,qBAAA,GAAwB/C,cAAA,CAAe;IAC3C,IAAIuC,kBAAA,CAAmBE,OAAO,EAAE;MAC9BgD,YAAA,CAAalD,kBAAA,CAAmBE,OAAO;IACzC;IAEAN,SAAA,CAAU;EACZ;EAEA,oBACEuD,KAAA,CAACpG,KAAA,CAAMqG,QAAQ;eACZ1D,eAAA,IAAmB,CAACX,OAAA,iBAAWsE,IAAA,CAACrF,kBAAA,OAChC6B,MAAA,iBAAUwD,IAAA,CAAC;MAAIC,SAAA,EAAWrF,SAAA;gBAAYuB,CAAA,CAAE;;;AAG/C","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["dequal","formatAdminURL","getAutosaveInterval","hasDraftValidationEnabled","reduceFieldsToValues","qs","React","useDeferredValue","useEffect","useRef","useState","useAllFormFields","useForm","useFormModified","useFormSubmitted","useDebounce","useEffectEvent","useQueue","useConfig","useDocumentInfo","useLocale","useTranslation","useUploadEdits","reduceFieldsToValuesWithValidation","LeaveWithoutSaving","baseClass","minimumAnimationTime","Autosave","id","collection","global","globalDoc","config","routes","api","docConfig","mostRecentVersionIsAutosaved","setMostRecentVersionIsAutosaved","setUnpublishedVersionCount","isValid","setBackgroundProcessing","submit","formState","modified","submitted","currentLocale","locale","code","t","uploadEdits","interval","validateOnDraft","_saving","setSaving","saving","debouncedFormState","queueTask","autosaveTimeoutRef","handleAutosave","current","undefined","startTimestamp","endTimestamp","hideIndicator","setTimeout","stopAutoSaveIndicator","Date","getTime","url","method","entitySlug","params","stringify","autosave","depth","draft","addQueryPrefix","slug","apiRoute","path","valid","skipSubmission","result","acceptValues","overrideLocalChanges","action","context","getDocPermissions","incrementVersionCount","disableFormWhileProcessing","disableSuccessStatus","overrides","_status","skipValidation","res","ok","prev","newDate","afterProcess","beforeProcess","didMount","previousDebouncedData","previousUploadEdits","updatedAt","_","formData","__","prevFormData","clearTimeout","_jsxs","Fragment","_jsx","className"],"sources":["../../../src/elements/Autosave/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, ClientGlobalConfig } from 'payload'\n\nimport { dequal } from 'dequal/lite'\nimport {\n formatAdminURL,\n getAutosaveInterval,\n hasDraftValidationEnabled,\n reduceFieldsToValues,\n} from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useDeferredValue, useEffect, useRef, useState } from 'react'\n\nimport type { OnSaveContext } from '../../views/Edit/index.js'\n\nimport {\n useAllFormFields,\n useForm,\n useFormModified,\n useFormSubmitted,\n} from '../../forms/Form/context.js'\nimport { useDebounce } from '../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useQueue } from '../../hooks/useQueue.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 { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { reduceFieldsToValuesWithValidation } from '../../utilities/reduceFieldsToValuesWithValidation.js'\nimport { LeaveWithoutSaving } from '../LeaveWithoutSaving/index.js'\nimport './index.css'\n\nconst baseClass = 'autosave'\n// The minimum time the saving state should be shown\nconst minimumAnimationTime = 1000\n\nexport type Props = {\n collection?: ClientCollectionConfig\n global?: ClientGlobalConfig\n id?: number | string\n publishedDocUpdatedAt: string\n}\n\nexport const Autosave: React.FC<Props> = ({ id, collection, global: globalDoc }) => {\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const {\n docConfig,\n mostRecentVersionIsAutosaved,\n setMostRecentVersionIsAutosaved,\n setUnpublishedVersionCount,\n } = useDocumentInfo()\n\n const { isValid, setBackgroundProcessing, submit } = useForm()\n\n const [formState] = useAllFormFields()\n const modified = useFormModified()\n const submitted = useFormSubmitted()\n\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const { t } = useTranslation()\n const { uploadEdits } = useUploadEdits()\n\n const interval = getAutosaveInterval(docConfig)\n const validateOnDraft = hasDraftValidationEnabled(docConfig)\n\n const [_saving, setSaving] = useState(false)\n\n const saving = useDeferredValue(_saving)\n\n const debouncedFormState = useDebounce(formState, interval)\n\n const { queueTask } = useQueue()\n\n const autosaveTimeoutRef = useRef<NodeJS.Timeout | null>(null)\n\n const handleAutosave = useEffectEvent(() => {\n autosaveTimeoutRef.current = undefined\n // We need to log the time in order to figure out if we need to trigger the state off later\n let startTimestamp = undefined\n let endTimestamp = undefined\n\n const hideIndicator = () => {\n // If request was faster than minimum animation time, animate the difference\n if (endTimestamp - startTimestamp < minimumAnimationTime) {\n autosaveTimeoutRef.current = setTimeout(\n () => {\n setSaving(false)\n },\n minimumAnimationTime - (endTimestamp - startTimestamp),\n )\n } else {\n stopAutoSaveIndicator()\n }\n }\n\n queueTask(\n async () => {\n if (modified) {\n startTimestamp = new Date().getTime()\n\n setSaving(true)\n\n let url: string\n let method: string\n let entitySlug: string\n const params = qs.stringify(\n {\n autosave: true,\n depth: 0,\n draft: true,\n 'fallback-locale': 'null',\n locale,\n uploadEdits: uploadEdits || undefined,\n },\n {\n addQueryPrefix: true,\n },\n )\n\n if (collection && id) {\n entitySlug = collection.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/${entitySlug}/${id}${params}`,\n })\n method = 'PATCH'\n }\n\n if (globalDoc) {\n entitySlug = globalDoc.slug\n url = formatAdminURL({\n apiRoute: api,\n path: `/globals/${entitySlug}${params}`,\n })\n method = 'POST'\n }\n\n const { valid } = reduceFieldsToValuesWithValidation(formState, true)\n\n const skipSubmission = submitted && !valid && validateOnDraft\n\n if (!skipSubmission && modified && url) {\n const result = await submit<any, OnSaveContext>({\n acceptValues: {\n overrideLocalChanges: false,\n },\n action: url,\n context: {\n getDocPermissions: false,\n incrementVersionCount: !mostRecentVersionIsAutosaved,\n },\n disableFormWhileProcessing: false,\n disableSuccessStatus: true,\n method,\n overrides: {\n _status: 'draft',\n },\n skipValidation: !validateOnDraft,\n })\n\n if (result && result?.res?.ok && !mostRecentVersionIsAutosaved) {\n setMostRecentVersionIsAutosaved(true)\n setUnpublishedVersionCount((prev) => prev + 1)\n }\n\n const newDate = new Date()\n\n // We need to log the time in order to figure out if we need to trigger the state off later\n endTimestamp = newDate.getTime()\n\n hideIndicator()\n }\n }\n },\n {\n afterProcess: () => {\n setBackgroundProcessing(false)\n },\n beforeProcess: () => {\n setBackgroundProcessing(true)\n },\n },\n )\n })\n\n const didMount = useRef(false)\n const previousDebouncedData = useRef(reduceFieldsToValues(debouncedFormState))\n const previousUploadEdits = useRef(uploadEdits)\n\n // When debounced fields change, autosave\n useEffect(() => {\n /**\n * Ensure autosave doesn't run on mount\n */\n if (!didMount.current) {\n didMount.current = true\n return\n }\n\n /**\n * Ensure autosave only runs if the form data changes, not every time the entire form state changes\n * Remove `updatedAt` from comparison as it changes on every autosave interval.\n */\n const { updatedAt: _, ...formData } = reduceFieldsToValues(debouncedFormState)\n const { updatedAt: __, ...prevFormData } = previousDebouncedData.current\n\n if (dequal(formData, prevFormData) && dequal(uploadEdits, previousUploadEdits.current)) {\n return\n }\n\n previousDebouncedData.current = formData\n previousUploadEdits.current = uploadEdits\n\n handleAutosave()\n }, [debouncedFormState, uploadEdits])\n\n /**\n * If component unmounts, clear the autosave timeout\n */\n useEffect(() => {\n return () => {\n stopAutoSaveIndicator()\n }\n }, [])\n\n const stopAutoSaveIndicator = useEffectEvent(() => {\n if (autosaveTimeoutRef.current) {\n clearTimeout(autosaveTimeoutRef.current)\n }\n\n setSaving(false)\n })\n\n return (\n <React.Fragment>\n {validateOnDraft && !isValid && <LeaveWithoutSaving />}\n {saving && <div className={baseClass}>{t('general:saving')}</div>}\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,OAAO,aAAa,CAAA;AA4CpB,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAyI/B,CAAA;eAGc,UAAU"}
1
+ {"version":3,"file":"CodeEditor.d.ts","sourceRoot":"","sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAKvC,OAAO,aAAa,CAAA;AA6CpB,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAgJ/B,CAAA;eAGc,UAAU"}
@@ -10,6 +10,7 @@ import { defaultGlobalEditorOptions, defaultOptions } from './constants.js';
10
10
  import './index.css';
11
11
  const Editor = 'default' in EditorImport ? EditorImport.default : EditorImport;
12
12
  const baseClass = 'code-editor';
13
+ const initializedTabFocusModes = new WeakSet();
13
14
  function definePayloadThemes(monaco) {
14
15
  monaco.editor.defineTheme('payload-light', {
15
16
  base: 'vs',
@@ -145,6 +146,10 @@ const CodeEditor = props => {
145
146
  setDynamicHeight(value_0 ? Math.max(minHeight, value_0.split("\n").length * 16 + 2 + paddingFromProps + 16) : minHeight);
146
147
  },
147
148
  onMount: (editor, monaco) => {
149
+ if (!initializedTabFocusModes.has(monaco) && options?.tabFocusMode === undefined) {
150
+ initializedTabFocusModes.add(monaco);
151
+ editor.trigger("payload", "editor.action.toggleTabFocusMode", null);
152
+ }
148
153
  rest.onMount?.(editor, monaco);
149
154
  const domNode = editor.getDomNode();
150
155
  if (domNode?.closest("[contenteditable=\"true\"]")) {
@@ -1 +1 @@
1
- {"version":3,"file":"CodeEditor.js","names":["c","_c","EditorImport","React","useState","useTheme","ShimmerEffect","defaultGlobalEditorOptions","defaultOptions","Editor","default","baseClass","definePayloadThemes","monaco","editor","defineTheme","base","colors","inherit","rules","foreground","token","CodeEditor","props","$","className","maxHeight","minHeight","t0","options","readOnly","recalculatedHeightAt","value","rest","undefined","prevCalculatedHeightAt","useRef","insertSpaces","tabSize","trimAutoWhitespace","globalEditorOptions","paddingFromProps","padding","top","bottom","dynamicHeight","setDynamicHeight","theme","t1","defaultLanguage","t2","t3","filter","Boolean","classes","join","t4","t5","current","Math","max","split","length","useEffect","_jsx","beforeMount","height","min","loading","detectIndentation","onChange","value_0","ev","onMount","domNode","getDomNode","closest","updateOptions","editContext","clipboardEvents","stopPropagation","_temp","eventName","addEventListener","onDidDispose","eventName_0","removeEventListener","model","getModel","getValue","event"],"sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"sourcesContent":["'use client'\nimport type { Monaco } from '@monaco-editor/react'\n\nimport EditorImport from '@monaco-editor/react'\nimport React, { useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { defaultGlobalEditorOptions, defaultOptions } from './constants.js'\nimport './index.css'\n\nconst Editor = 'default' in EditorImport ? EditorImport.default : EditorImport\n\nconst baseClass = 'code-editor'\n\nfunction definePayloadThemes(monaco: Monaco) {\n monaco.editor.defineTheme('payload-light', {\n base: 'vs',\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editor.lineHighlightBorder': '#00000000',\n 'editorGutter.background': '#00000000',\n 'editorLineNumber.activeForeground': '#0000004d', // black at 30% opacity\n 'editorLineNumber.foreground': '#0000004d', // black at 30% opacity\n },\n inherit: true,\n rules: [\n { foreground: 'cb0b96', token: 'keyword' },\n { foreground: '005cc5', token: 'identifier' },\n { foreground: '093077', token: 'type.identifier' },\n { foreground: '093077', token: 'delimiter' },\n { foreground: '093077', token: 'delimiter.bracket' },\n { foreground: 'c53e0d', token: 'string' },\n { foreground: '093077', token: 'number' },\n { foreground: '6a737d', token: 'comment' },\n ],\n })\n monaco.editor.defineTheme('payload-dark', {\n base: 'vs-dark',\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editor.lineHighlightBorder': '#00000000',\n 'editorGutter.background': '#00000000',\n 'editorLineNumber.activeForeground': '#ffffffb3', // var(--color-text-secondary) - white at 70% opacity\n 'editorLineNumber.foreground': '#ffffffb3', // var(--color-text-secondary) - white at 70% opacity\n },\n inherit: true,\n rules: [],\n })\n}\n\nconst CodeEditor: React.FC<Props> = (props) => {\n const {\n className,\n maxHeight,\n minHeight = 48,\n options,\n readOnly,\n recalculatedHeightAt,\n value,\n ...rest\n } = props\n const LINE_HEIGHT = 16 // Monaco editor line height at fontSize 11\n const EDITOR_BORDER = 2 // 1px top + 1px bottom border\n const CSS_CONTAINER_PADDING = 16 // 8px top + 8px bottom from CSS\n const prevCalculatedHeightAt = React.useRef<number | undefined>(recalculatedHeightAt)\n\n // Extract per-model settings to avoid global conflicts\n const { insertSpaces, tabSize, trimAutoWhitespace, ...globalEditorOptions } = options || {}\n const paddingFromProps = options?.padding\n ? (options.padding.top || 0) + (options.padding?.bottom || 0)\n : 0\n\n const [dynamicHeight, setDynamicHeight] = useState(minHeight)\n const { theme } = useTheme()\n\n const classes = [\n baseClass,\n className,\n rest?.defaultLanguage ? `language--${rest.defaultLanguage}` : '',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (recalculatedHeightAt && recalculatedHeightAt > prevCalculatedHeightAt.current) {\n setDynamicHeight(\n value\n ? Math.max(\n minHeight,\n value.split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n )\n : minHeight,\n )\n prevCalculatedHeightAt.current = recalculatedHeightAt\n }\n }, [value, minHeight, paddingFromProps, recalculatedHeightAt])\n\n return (\n <Editor\n beforeMount={definePayloadThemes}\n className={classes}\n height={maxHeight ? Math.min(dynamicHeight, maxHeight) : dynamicHeight}\n loading={<ShimmerEffect height={minHeight} />}\n options={{\n ...defaultGlobalEditorOptions,\n ...globalEditorOptions,\n readOnly: Boolean(readOnly),\n /**\n * onMount the model will set:\n * - insertSpaces\n * - tabSize\n * - trimAutoWhitespace\n */\n detectIndentation: false,\n insertSpaces: undefined,\n tabSize: undefined,\n trimAutoWhitespace: undefined,\n }}\n theme={theme === 'dark' ? 'payload-dark' : 'payload-light'}\n value={value}\n {...rest}\n // Since we are not building an IDE and the container\n // can already have scrolling, we want the height of the\n // editor to fit its content.\n // See: https://github.com/microsoft/monaco-editor/discussions/3677\n onChange={(value, ev) => {\n rest.onChange?.(value, ev)\n setDynamicHeight(\n value\n ? Math.max(\n minHeight,\n value.split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n )\n : minHeight,\n )\n }}\n onMount={(editor, monaco) => {\n rest.onMount?.(editor, monaco)\n\n // Required to prevent copy/cut/paste from being hijacked by Lexical rich text editor\n const domNode = editor.getDomNode()\n if (domNode?.closest('[contenteditable=\"true\"]')) {\n editor.updateOptions({ editContext: false })\n\n const clipboardEvents = ['copy', 'cut', 'paste']\n const stopPropagation = (event: Event) => {\n event.stopPropagation()\n }\n for (const eventName of clipboardEvents) {\n domNode.addEventListener(eventName, stopPropagation)\n }\n editor.onDidDispose(() => {\n for (const eventName of clipboardEvents) {\n domNode.removeEventListener(eventName, stopPropagation)\n }\n })\n }\n\n // Set per-model options to avoid global conflicts\n const model = editor.getModel()\n if (model) {\n model.updateOptions({\n insertSpaces: insertSpaces ?? defaultOptions.insertSpaces,\n tabSize: tabSize ?? defaultOptions.tabSize,\n trimAutoWhitespace: trimAutoWhitespace ?? defaultOptions.trimAutoWhitespace,\n })\n }\n\n setDynamicHeight(\n Math.max(\n minHeight,\n editor.getValue().split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n ),\n )\n }}\n />\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default CodeEditor\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,YAAA,MAAkB;AACzB,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAIhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,0BAA0B,EAAEC,cAAc,QAAQ;AAC3D,OAAO;AAEP,MAAMC,MAAA,GAAS,aAAaP,YAAA,GAAeA,YAAA,CAAaQ,OAAO,GAAGR,YAAA;AAElE,MAAMS,SAAA,GAAY;AAElB,SAASC,oBAAoBC,MAAc;EACzCA,MAAA,CAAOC,MAAM,CAACC,WAAW,CAAC,iBAAiB;IACzCC,IAAA,EAAM;IACNC,MAAA,EAAQ;MACN,qBAAqB;MACrB,kCAAkC;MAClC,8BAA8B;MAC9B,2BAA2B;MAC3B,qCAAqC;MACrC,+BAA+B;IACjC;IACAC,OAAA,EAAS;IACTC,KAAA,EAAO,CACL;MAAEC,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAU,GACzC;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAa,GAC5C;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAkB,GACjD;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAY,GAC3C;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAoB,GACnD;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAS,GACxC;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAS,GACxC;MAAED,UAAA,EAAY;MAAUC,KAAA,EAAO;IAAU;EAE7C;EACAR,MAAA,CAAOC,MAAM,CAACC,WAAW,CAAC,gBAAgB;IACxCC,IAAA,EAAM;IACNC,MAAA,EAAQ;MACN,qBAAqB;MACrB,kCAAkC;MAClC,8BAA8B;MAC9B,2BAA2B;MAC3B,qCAAqC;MACrC,+BAA+B;IACjC;IACAC,OAAA,EAAS;IACTC,KAAA,EAAO;EACT;AACF;AAEA,MAAMG,UAAA,GAA8BC,KAAA;EAAA,MAAAC,CAAA,GAAAvB,EAAA;EAClC;IAAAwB,SAAA;IAAAC,SAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC,OAAA;IAAAC,QAAA;IAAAC,oBAAA;IAAAC,KAAA;IAAA,GAAAC;EAAA,IASIV,KAAA;EANF,MAAAI,SAAA,GAAAC,EAAc,KAAAM,SAAA,QAAdN,EAAc;EAUhB,MAAAO,sBAAA,GAA+BhC,KAAA,CAAAiC,MAAA,CAAiCL,oBAAA;EAGhE;IAAAM,YAAA;IAAAC,OAAA;IAAAC,kBAAA;IAAA,GAAAC;EAAA,IAA8EX,OAAA,MAAY;EAC1F,MAAAY,gBAAA,GAAyBZ,OAAA,EAAAa,OAAA,GACrB,CAACb,OAAA,CAAAa,OAAA,CAAAC,GAAA,KAAuB,KAAMd,OAAA,CAAAa,OAAA,EAAAE,MAAA,KAA2B,KACzD;EAEJ,OAAAC,aAAA,EAAAC,gBAAA,IAA0C1C,QAAA,CAASuB,SAAA;EACnD;IAAAoB;EAAA,IAAkB1C,QAAA;EAKhB,MAAA2C,EAAA,GAAAf,IAAA,EAAAgB,eAAA,GAAwB,aAAahB,IAAA,CAAAgB,eAAA,EAAsB,GAAG;EAC9D,MAAAC,EAAA,GAAApB,QAAA,IAAY;EAAA,IAAAqB,EAAA;EAAA,IAAA3B,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAwB,EAAA,IAAAxB,CAAA,QAAA0B,EAAA;IAJEC,EAAA,IAAAxC,SAAA,EAEdc,SAAA,EACAuB,EAA8D,EAC9DE,EAAY,EAAAE,MAAA,CAAAC,OAEJ;IAAA7B,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAwB,EAAA;IAAAxB,CAAA,MAAA0B,EAAA;IAAA1B,CAAA,MAAA2B,EAAA;EAAA;IAAAA,EAAA,GAAA3B,CAAA;EAAA;EANV,MAAA8B,OAAA,GAAgBH,EAMN,CAAAI,IAAA,CACF;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAjC,CAAA,QAAAG,SAAA,IAAAH,CAAA,QAAAiB,gBAAA,IAAAjB,CAAA,QAAAO,oBAAA,IAAAP,CAAA,QAAAQ,KAAA;IAEQwB,EAAA,GAAAA,CAAA;MAAA,IACVzB,oBAAA,IAAwBA,oBAAA,GAAuBI,sBAAA,CAAAuB,OAA8B;QAC/EZ,gBAAA,CACEd,KAAA,GACI2B,IAAA,CAAAC,GAAA,CACEjC,SAAA,EACAK,KAAA,CAAA6B,KAAA,CAAY,MAAAC,MAAA,KAAe,IACzB,GACArB,gBAAA,KACA,IAEJd,SAAA;QAENQ,sBAAA,CAAAuB,OAAA,GAAiC3B,oBAAA;MAAA;IAAA;IAElC0B,EAAA,IAACzB,KAAA,EAAOL,SAAA,EAAWc,gBAAA,EAAkBV,oBAAA;IAAqBP,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAiB,gBAAA;IAAAjB,CAAA,MAAAO,oBAAA;IAAAP,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAgC,EAAA;IAAAhC,CAAA,MAAAiC,EAAA;EAAA;IAAAD,EAAA,GAAAhC,CAAA;IAAAiC,EAAA,GAAAjC,CAAA;EAAA;EAf7DrB,KAAA,CAAA4D,SAAA,CAAgBP,EAehB,EAAGC,EAA0D;EAAA,OAG3DO,IAAA,CAAAvD,MAAA;IAAAwD,WAAA,EAAArD,mBAAA;IAAAa,SAAA,EAEa6B,OAAA;IAAAY,MAAA,EACHxC,SAAA,GAAYiC,IAAA,CAAAQ,GAAA,CAAStB,aAAA,EAAenB,SAAA,IAAamB,aAAA;IAAAuB,OAAA,EAChDJ,IAAA,CAAA1D,aAAA;MAAA4D,MAAA,EAAuBvC;IAAA,C;;;SAG3Ba,mBAAmB;MAAAV,QAAA,EACZuB,OAAA,CAAQvB,QAAA;MAAAuC,iBAAA;MAAAhC,YAAA,EAAAH,SAAA;MAAAI,OAAA,EAAAJ,SAAA;MAAAK,kBAAA,EAAAL;IAAA;IAAAa,KAAA,EAYbA,KAAA,KAAU,SAAS,iBAAiB;IAAAf,KAAA;IAAA,GAEvCC,IAAI;IAAAqC,QAAA,EAAAA,CAAAC,OAAA,EAAAC,EAAA;MAMNvC,IAAA,CAAAqC,QAAA,GAAgBtC,OAAA,EAAOwC,EAAA;MACvB1B,gBAAA,CACEd,OAAA,GACI2B,IAAA,CAAAC,GAAA,CACEjC,SAAA,EACAK,OAAA,CAAA6B,KAAA,CAAY,MAAAC,MAAA,KAAe,IACzB,GACArB,gBAAA,KACA,IAEJd,SAAA;IAAA;IAAA8C,OAAA,EAAAA,CAAA3D,MAAA,EAAAD,MAAA;MAINoB,IAAA,CAAAwC,OAAA,GAAe3D,MAAA,EAAQD,MAAA;MAGvB,MAAA6D,OAAA,GAAgB5D,MAAA,CAAA6D,UAAA,CAAiB;MAAA,IAC7BD,OAAA,EAAAE,OAAA,CAAiB;QACnB9D,MAAA,CAAA+D,aAAA;UAAAC,WAAA;QAAA,CAA0C;QAE1C,MAAAC,eAAA,IAAyB,QAAQ,OAAO;QACxC,MAAAC,eAAA,GAAAC,KAAA;QAEA,KACK,MAAAC,SAAM,IAAaH,eAAA;UACtBL,OAAA,CAAAS,gBAAA,CAAyBD,SAAA,EAAWF,eAAA;QAAA;QAEtClE,MAAA,CAAAsE,YAAA;UAAA,KACO,MAAAC,WAAM,IAAaN,eAAA;YACtBL,OAAA,CAAAY,mBAAA,CAA4BJ,WAAA,EAAWF,eAAA;UAAA;QAAA,CAE3C;MAAA;MAIF,MAAAO,KAAA,GAAczE,MAAA,CAAA0E,QAAA,CAAe;MAAA,IACzBD,KAAA;QACFA,KAAA,CAAAV,aAAA;UAAAxC,YAAA,EACgBA,YAAA,IAAA7B,cAAA,CAAA6B,YAA2C;UAAAC,OAAA,EAChDA,OAAA,IAAA9B,cAAA,CAAA8B,OAAiC;UAAAC,kBAAA,EACtBA,kBAAA,IAAA/B,cAAA,CAAA+B;QAAuD,CAC7E;MAAA;MAGFO,gBAAA,CACEa,IAAA,CAAAC,GAAA,CACEjC,SAAA,EACAb,MAAA,CAAA2E,QAAA,CAAe,EAAA5B,KAAA,CAAS,MAAAC,MAAA,KAAe,IACrC,GACArB,gBAAA,KACA;IAAA;EAAA,C;CAMd;AAEA;AACA,eAAenB,UAAA;AA5IqB,SAAA2D,MAAAS,KAAA;EAuGxBA,KAAA,CAAAV,eAAA,CAAqB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"CodeEditor.js","names":["c","_c","EditorImport","React","useState","useTheme","ShimmerEffect","defaultGlobalEditorOptions","defaultOptions","Editor","default","baseClass","initializedTabFocusModes","WeakSet","definePayloadThemes","monaco","editor","defineTheme","base","colors","inherit","rules","foreground","token","CodeEditor","props","$","className","maxHeight","minHeight","t0","options","readOnly","recalculatedHeightAt","value","rest","undefined","prevCalculatedHeightAt","useRef","insertSpaces","tabSize","trimAutoWhitespace","globalEditorOptions","paddingFromProps","padding","top","bottom","dynamicHeight","setDynamicHeight","theme","t1","defaultLanguage","t2","t3","filter","Boolean","classes","join","t4","t5","current","Math","max","split","length","useEffect","_jsx","beforeMount","height","min","loading","detectIndentation","onChange","value_0","ev","onMount","has","tabFocusMode","add","trigger","domNode","getDomNode","closest","updateOptions","editContext","clipboardEvents","stopPropagation","_temp","eventName","addEventListener","onDidDispose","eventName_0","removeEventListener","model","getModel","getValue","event"],"sources":["../../../src/elements/CodeEditor/CodeEditor.tsx"],"sourcesContent":["'use client'\nimport type { Monaco } from '@monaco-editor/react'\n\nimport EditorImport from '@monaco-editor/react'\nimport React, { useState } from 'react'\n\nimport type { Props } from './types.js'\n\nimport { useTheme } from '../../providers/Theme/index.js'\nimport { ShimmerEffect } from '../ShimmerEffect/index.js'\nimport { defaultGlobalEditorOptions, defaultOptions } from './constants.js'\nimport './index.css'\n\nconst Editor = 'default' in EditorImport ? EditorImport.default : EditorImport\n\nconst baseClass = 'code-editor'\nconst initializedTabFocusModes = new WeakSet<Monaco>()\n\nfunction definePayloadThemes(monaco: Monaco) {\n monaco.editor.defineTheme('payload-light', {\n base: 'vs',\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editor.lineHighlightBorder': '#00000000',\n 'editorGutter.background': '#00000000',\n 'editorLineNumber.activeForeground': '#0000004d', // black at 30% opacity\n 'editorLineNumber.foreground': '#0000004d', // black at 30% opacity\n },\n inherit: true,\n rules: [\n { foreground: 'cb0b96', token: 'keyword' },\n { foreground: '005cc5', token: 'identifier' },\n { foreground: '093077', token: 'type.identifier' },\n { foreground: '093077', token: 'delimiter' },\n { foreground: '093077', token: 'delimiter.bracket' },\n { foreground: 'c53e0d', token: 'string' },\n { foreground: '093077', token: 'number' },\n { foreground: '6a737d', token: 'comment' },\n ],\n })\n monaco.editor.defineTheme('payload-dark', {\n base: 'vs-dark',\n colors: {\n 'editor.background': '#00000000',\n 'editor.lineHighlightBackground': '#00000000',\n 'editor.lineHighlightBorder': '#00000000',\n 'editorGutter.background': '#00000000',\n 'editorLineNumber.activeForeground': '#ffffffb3', // var(--color-text-secondary) - white at 70% opacity\n 'editorLineNumber.foreground': '#ffffffb3', // var(--color-text-secondary) - white at 70% opacity\n },\n inherit: true,\n rules: [],\n })\n}\n\nconst CodeEditor: React.FC<Props> = (props) => {\n const {\n className,\n maxHeight,\n minHeight = 48,\n options,\n readOnly,\n recalculatedHeightAt,\n value,\n ...rest\n } = props\n const LINE_HEIGHT = 16 // Monaco editor line height at fontSize 11\n const EDITOR_BORDER = 2 // 1px top + 1px bottom border\n const CSS_CONTAINER_PADDING = 16 // 8px top + 8px bottom from CSS\n const prevCalculatedHeightAt = React.useRef<number | undefined>(recalculatedHeightAt)\n\n // Extract per-model settings to avoid global conflicts\n const { insertSpaces, tabSize, trimAutoWhitespace, ...globalEditorOptions } = options || {}\n const paddingFromProps = options?.padding\n ? (options.padding.top || 0) + (options.padding?.bottom || 0)\n : 0\n\n const [dynamicHeight, setDynamicHeight] = useState(minHeight)\n const { theme } = useTheme()\n\n const classes = [\n baseClass,\n className,\n rest?.defaultLanguage ? `language--${rest.defaultLanguage}` : '',\n readOnly && 'read-only',\n ]\n .filter(Boolean)\n .join(' ')\n\n React.useEffect(() => {\n if (recalculatedHeightAt && recalculatedHeightAt > prevCalculatedHeightAt.current) {\n setDynamicHeight(\n value\n ? Math.max(\n minHeight,\n value.split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n )\n : minHeight,\n )\n prevCalculatedHeightAt.current = recalculatedHeightAt\n }\n }, [value, minHeight, paddingFromProps, recalculatedHeightAt])\n\n return (\n <Editor\n beforeMount={definePayloadThemes}\n className={classes}\n height={maxHeight ? Math.min(dynamicHeight, maxHeight) : dynamicHeight}\n loading={<ShimmerEffect height={minHeight} />}\n options={{\n ...defaultGlobalEditorOptions,\n ...globalEditorOptions,\n readOnly: Boolean(readOnly),\n /**\n * onMount the model will set:\n * - insertSpaces\n * - tabSize\n * - trimAutoWhitespace\n */\n detectIndentation: false,\n insertSpaces: undefined,\n tabSize: undefined,\n trimAutoWhitespace: undefined,\n }}\n theme={theme === 'dark' ? 'payload-dark' : 'payload-light'}\n value={value}\n {...rest}\n // Since we are not building an IDE and the container\n // can already have scrolling, we want the height of the\n // editor to fit its content.\n // See: https://github.com/microsoft/monaco-editor/discussions/3677\n onChange={(value, ev) => {\n rest.onChange?.(value, ev)\n setDynamicHeight(\n value\n ? Math.max(\n minHeight,\n value.split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n )\n : minHeight,\n )\n }}\n onMount={(editor, monaco) => {\n // Set Monaco's shared default once, so its native toggle and announcements stay in sync.\n // Mounting another editor must not reset the user's chosen mode.\n if (!initializedTabFocusModes.has(monaco) && options?.tabFocusMode === undefined) {\n initializedTabFocusModes.add(monaco)\n editor.trigger('payload', 'editor.action.toggleTabFocusMode', null)\n }\n\n rest.onMount?.(editor, monaco)\n\n // Required to prevent copy/cut/paste from being hijacked by Lexical rich text editor\n const domNode = editor.getDomNode()\n if (domNode?.closest('[contenteditable=\"true\"]')) {\n editor.updateOptions({ editContext: false })\n\n const clipboardEvents = ['copy', 'cut', 'paste']\n const stopPropagation = (event: Event) => {\n event.stopPropagation()\n }\n for (const eventName of clipboardEvents) {\n domNode.addEventListener(eventName, stopPropagation)\n }\n editor.onDidDispose(() => {\n for (const eventName of clipboardEvents) {\n domNode.removeEventListener(eventName, stopPropagation)\n }\n })\n }\n\n // Set per-model options to avoid global conflicts\n const model = editor.getModel()\n if (model) {\n model.updateOptions({\n insertSpaces: insertSpaces ?? defaultOptions.insertSpaces,\n tabSize: tabSize ?? defaultOptions.tabSize,\n trimAutoWhitespace: trimAutoWhitespace ?? defaultOptions.trimAutoWhitespace,\n })\n }\n\n setDynamicHeight(\n Math.max(\n minHeight,\n editor.getValue().split('\\n').length * LINE_HEIGHT +\n EDITOR_BORDER +\n paddingFromProps +\n CSS_CONTAINER_PADDING,\n ),\n )\n }}\n />\n )\n}\n\n// eslint-disable-next-line no-restricted-exports\nexport default CodeEditor\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Data, DefaultDocumentIDType, FormState, Operation } from 'payload';
1
+ import type { Data, DefaultDocumentIDType, Operation } from 'payload';
2
2
  import type React from 'react';
3
3
  import type { HTMLAttributes } from 'react';
4
4
  import type { Props as DrawerProps } from '../Drawer/types.js';
@@ -18,10 +18,6 @@ export type DocumentDrawerProps = {
18
18
  */
19
19
  readonly id?: DefaultDocumentIDType | null;
20
20
  readonly initialData?: Data;
21
- /**
22
- * @deprecated
23
- */
24
- readonly initialState?: FormState;
25
21
  readonly overrideEntityVisibility?: boolean;
26
22
  readonly redirectAfterCreate?: boolean;
27
23
  readonly redirectAfterDelete?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/DocumentDrawer/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type { Data, DefaultDocumentIDType, FormState, Operation } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { Props as DrawerProps } from '../Drawer/types.js'\nimport type { DocumentDrawerContextProps } from './Provider.js'\n\nexport type DocumentDrawerProps = {\n readonly AfterFields?: React.ReactNode\n /**\n * The slug of the collection to which the document belongs.\n */\n readonly collectionSlug: string\n readonly disableActions?: boolean\n readonly drawerSlug?: string\n /**\n * The ID of the document to be edited.\n * When provided, will be fetched and displayed in the drawer.\n * If omitted, will render the \"create new\" view for the given collection.\n */\n readonly id?: DefaultDocumentIDType | null\n readonly initialData?: Data\n /**\n * @deprecated\n */\n readonly initialState?: FormState\n readonly overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n} & Pick<DocumentDrawerContextProps, 'onDelete' | 'onDuplicate' | 'onSave'> &\n Pick<DrawerProps, 'Header'>\n\nexport type DocumentTogglerProps = {\n readonly buttonStyle?:\n | 'dashed'\n | 'destructive'\n | 'ghost'\n | 'link'\n | 'pill'\n | 'primary'\n | 'secondary'\n readonly children?: React.ReactNode\n readonly className?: string\n readonly collectionSlug: string\n readonly disabled?: boolean\n readonly drawerSlug?: string\n readonly extraButtonProps?: Record<string, any>\n readonly onClick?: () => void\n readonly operation: Operation\n readonly tooltip?: string\n} & Readonly<HTMLAttributes<HTMLButtonElement>>\n\nexport type UseDocumentDrawerContext = {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n}\n\nexport type UseDocumentDrawer = (\n args: {\n /**\n * Optional custom drawer slug. If provided, this will be used instead of auto-generating one.\n * Useful for ensuring stable slugs in contexts where component remounting can cause issues.\n */\n drawerSlug?: string\n } & Pick<DocumentDrawerProps, 'collectionSlug' | 'id' | 'overrideEntityVisibility'>,\n) => [\n // drawer\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentDrawerProps, 'collectionSlug' | 'operation'>\n >,\n // toggler\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentTogglerProps, 'collectionSlug' | 'operation'>\n >,\n // context\n UseDocumentDrawerContext,\n]\n"],"mappings":"AA+DA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/DocumentDrawer/types.ts"],"sourcesContent":["import type { Data, DefaultDocumentIDType, Operation } from 'payload'\nimport type React from 'react'\nimport type { HTMLAttributes } from 'react'\n\nimport type { Props as DrawerProps } from '../Drawer/types.js'\nimport type { DocumentDrawerContextProps } from './Provider.js'\n\nexport type DocumentDrawerProps = {\n readonly AfterFields?: React.ReactNode\n /**\n * The slug of the collection to which the document belongs.\n */\n readonly collectionSlug: string\n readonly disableActions?: boolean\n readonly drawerSlug?: string\n /**\n * The ID of the document to be edited.\n * When provided, will be fetched and displayed in the drawer.\n * If omitted, will render the \"create new\" view for the given collection.\n */\n readonly id?: DefaultDocumentIDType | null\n readonly initialData?: Data\n readonly overrideEntityVisibility?: boolean\n readonly redirectAfterCreate?: boolean\n readonly redirectAfterDelete?: boolean\n readonly redirectAfterDuplicate?: boolean\n readonly redirectAfterRestore?: boolean\n} & Pick<DocumentDrawerContextProps, 'onDelete' | 'onDuplicate' | 'onSave'> &\n Pick<DrawerProps, 'Header'>\n\nexport type DocumentTogglerProps = {\n readonly buttonStyle?:\n | 'dashed'\n | 'destructive'\n | 'ghost'\n | 'link'\n | 'pill'\n | 'primary'\n | 'secondary'\n readonly children?: React.ReactNode\n readonly className?: string\n readonly collectionSlug: string\n readonly disabled?: boolean\n readonly drawerSlug?: string\n readonly extraButtonProps?: Record<string, any>\n readonly onClick?: () => void\n readonly operation: Operation\n readonly tooltip?: string\n} & Readonly<HTMLAttributes<HTMLButtonElement>>\n\nexport type UseDocumentDrawerContext = {\n closeDrawer: () => void\n drawerDepth: number\n drawerSlug: string\n isDrawerOpen: boolean\n openDrawer: () => void\n toggleDrawer: () => void\n}\n\nexport type UseDocumentDrawer = (\n args: {\n /**\n * Optional custom drawer slug. If provided, this will be used instead of auto-generating one.\n * Useful for ensuring stable slugs in contexts where component remounting can cause issues.\n */\n drawerSlug?: string\n } & Pick<DocumentDrawerProps, 'collectionSlug' | 'id' | 'overrideEntityVisibility'>,\n) => [\n // drawer\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentDrawerProps, 'collectionSlug' | 'operation'>\n >,\n // toggler\n React.FC<\n {\n children?: React.ReactNode\n } & Omit<DocumentTogglerProps, 'collectionSlug' | 'operation'>\n >,\n // context\n UseDocumentDrawerContext,\n]\n"],"mappings":"AA2DA","ignoreList":[]}
@@ -88,10 +88,9 @@
88
88
  border-radius: 50%;
89
89
  }
90
90
 
91
- .ReactCrop__crop-selection:focus {
92
- outline: none;
93
- border-color: var(--color-border-selected);
94
- border-style: solid;
91
+ .ReactCrop__crop-selection:focus-visible {
92
+ outline: var(--stroke-width-medium) solid var(--color-border-selected);
93
+ outline-offset: calc(var(--stroke-width-medium) * -1);
95
94
  }
96
95
 
97
96
  .ReactCrop--invisible-crop .ReactCrop__crop-selection {
@@ -148,15 +147,9 @@
148
147
  outline: 1px solid transparent;
149
148
  }
150
149
 
151
- .ReactCrop__drag-handle:focus:after {
152
- border-color: var(--color-border-selected-strong);
153
- }
154
-
155
- .ReactCrop .ord-n:focus:after,
156
- .ReactCrop .ord-e:focus:after,
157
- .ReactCrop .ord-s:focus:after,
158
- .ReactCrop .ord-w:focus:after {
159
- background-color: var(--color-border-selected-strong);
150
+ .ReactCrop .ReactCrop__drag-handle:focus-visible:after {
151
+ outline: var(--stroke-width-medium) solid var(--color-border-selected-strong);
152
+ outline-offset: var(--stroke-width-small);
160
153
  }
161
154
 
162
155
  .ReactCrop .ord-nw {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/FileManager/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrE,OAAO,KAAqD,MAAM,OAAO,CAAA;AA6BzE,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,SAAS,EAAE,SAAS,CAAA;IACnD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+XlD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/FileManager/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIrE,OAAO,KAAqD,MAAM,OAAO,CAAA;AA8BzE,OAAO,aAAa,CAAA;AAIpB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,SAAS,EAAE,SAAS,CAAA;IACnD;;;OAGG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,YAAY,EAAE,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAC,CAAA;IACtF,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC7C,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CA+XlD,CAAA"}
@@ -22,6 +22,7 @@ import { Dropzone } from '../Dropzone/index.js';
22
22
  import { EditUpload } from '../EditUpload/index.js';
23
23
  import { PreviewSizes } from '../PreviewSizes/index.js';
24
24
  import { Thumbnail } from '../Thumbnail/index.js';
25
+ import { getEditorFileSrc } from '../Upload/getEditorFileSrc.js';
25
26
  import { editDrawerSlug, sizePreviewSlug } from '../Upload/index.js';
26
27
  import { UploadFromURLModal } from '../Upload/UploadFromURLModal/index.js';
27
28
  import { usePasteFromClipboard } from '../Upload/usePasteFromClipboard.js';
@@ -427,7 +428,11 @@ export const FileManager = t0 => {
427
428
  children: [(value || data?.filename) && _jsx(EditDepthProvider, {
428
429
  children: _jsx(EditUpload, {
429
430
  fileName: value?.name || data?.filename,
430
- fileSrc: data?.url || fileSrc,
431
+ fileSrc: getEditorFileSrc({
432
+ data,
433
+ fileSrc,
434
+ hasSelectedFile: Boolean(value)
435
+ }),
431
436
  imageCacheTag,
432
437
  initialCrop: uploadEdits?.crop ?? undefined,
433
438
  initialFocalPoint: {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","formatFilesize","isImage","validateMimeType","React","Fragment","useCallback","useEffect","useState","toast","FieldError","fieldBaseClass","TextInput","useForm","useField","useDocumentInfo","EditDepthProvider","useTranslation","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","PreviewSizes","Thumbnail","editDrawerSlug","sizePreviewSlug","UploadFromURLModal","usePasteFromClipboard","useUploadFromUrl","UploadDropzoneContent","AudioPreview","FilePreview","PdfPreview","VideoPreview","FileToolbar","baseClass","FileManager","t0","$","collectionSlug","initialState","resetUploadEdits","resetUploadEditsFromProps","updateUploadEdits","updateUploadEditsFromProps","uploadConfig","UploadControls","uploadEdits","uploadEditsFromProps","UploadFilePreview","openModal","t","setModified","data","t1","mimeTypes","file","undefined","name","File","length","type","validate","t2","path","errorMessage","setValue","showError","value","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileUrl","uploadEditsContext","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","selectedSize","setSelectedSize","acceptMimeTypes","join","imageCacheTag","cacheTags","updatedAt","hasVariants","variants","hasImageAdjustments","Boolean","focalPointEnabled","focalPoint","crop","t3","t4","showCrop","showFocalPoint","selectedSizeData","sidePanelFileSrc","url","thumbnailURL","sidePanelMimeType","mimeType","fileTypeIsAdjustable","renameFile","_temp","t5","t6","file_0","isNewFile","t7","error","URL","createObjectURL","handleFileChange","e","updatedFileName","target","handleFileNameChange","files","handleFileSelection","t8","file_1","handleFileFetchedFromUrl","t9","onFileFetched","fileUrl","handleUrlSubmit","isValidUrl","setFileUrl","t10","handlePasteFromClipboard","t11","handleFileRemoval","t12","args","onEditsSave","t13","Symbol","for","t14","t15","t16","t17","t18","t19","t20","startsWith","revokeObjectURL","t21","t22","handleControlFileUrl","t23","t24","t25","src","fileType","_jsx","className","children","title","size","renderSelectedFilePreview","drawers","_jsxs","fileName","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","slug","label","doc","pasteURL","showUploadInput","hideFileInputOnCreate","t26","filter","message","hideRemoveFile","isAdjustable","onEditImage","onReplace","buttonStyle","icon","onClick","round","tooltip","onChange","extraControls","onFilesSelected","onPasteFromClipboard","pasteButtonClassName","pasteTooltip","id","fileToChange","newName","lastModified"],"sources":["../../../src/elements/FileManager/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatFilesize, isImage, validateMimeType } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { TextInput } from '../../fields/Text/Input.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { editDrawerSlug, sizePreviewSlug } from '../Upload/index.js'\nimport { UploadFromURLModal } from '../Upload/UploadFromURLModal/index.js'\nimport { usePasteFromClipboard } from '../Upload/usePasteFromClipboard.js'\nimport { useUploadFromUrl } from '../Upload/useUploadFromUrl.js'\nimport { UploadDropzoneContent } from '../UploadDropzoneContent/index.js'\nimport { AudioPreview } from './FilePreview/AudioPreview/index.js'\nimport { FilePreview } from './FilePreview/index.js'\nimport { PdfPreview } from './FilePreview/PdfPreview/index.js'\nimport { VideoPreview } from './FilePreview/VideoPreview/index.js'\nimport { FileToolbar } from './FileToolbar/index.js'\nimport './index.css'\n\nconst baseClass = 'file-manager'\n\nexport type FileManagerProps = {\n readonly collectionSlug: string\n readonly initialState?: import('payload').FormState\n /**\n * When provided, upload edits are sourced from these props instead of the `useUploadEdits`\n * context. The bulk upload drawer uses this to drive per-file edits from its FormsManager.\n */\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadConfig: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n readonly UploadControls?: React.ReactNode\n readonly uploadEdits?: UploadEdits\n readonly UploadFilePreview?: React.ReactNode\n}\n\nexport const FileManager: React.FC<FileManagerProps> = ({\n collectionSlug,\n initialState,\n resetUploadEdits: resetUploadEditsFromProps,\n updateUploadEdits: updateUploadEditsFromProps,\n uploadConfig,\n UploadControls,\n uploadEdits: uploadEditsFromProps,\n UploadFilePreview,\n}) => {\n const { openModal } = useModal()\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { data } = useDocumentInfo()\n const validate = useCallback(\n (file: File | null | undefined) => {\n if (!file && file !== undefined) {\n return 'A file is required.'\n }\n if (file && (!file.name || file.name === '')) {\n return 'A file name is required.'\n }\n if (\n file instanceof File &&\n uploadConfig.mimeTypes?.length &&\n !validateMimeType(file.type, uploadConfig.mimeTypes)\n ) {\n return t('error:invalidFileType')\n }\n return true\n },\n [t, uploadConfig.mimeTypes],\n )\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileUrl,\n } = useUploadControls()\n const uploadEditsContext = useUploadEdits()\n const resetUploadEdits = resetUploadEditsFromProps ?? uploadEditsContext.resetUploadEdits\n const updateUploadEdits = updateUploadEditsFromProps ?? uploadEditsContext.updateUploadEdits\n const uploadEdits = uploadEditsFromProps ?? uploadEditsContext.uploadEdits\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [selectedSize, setSelectedSize] = useState<null | string>(null)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n const hasVariants = uploadConfig?.variants?.length > 0\n const hasImageAdjustments = Boolean(uploadConfig?.hasImageAdjustments)\n const focalPointEnabled = uploadConfig?.focalPoint === true\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n const showFocalPoint = focalPoint && (hasVariants || hasImageAdjustments || focalPointEnabled)\n\n const selectedSizeData = selectedSize\n ? (data?.variants?.[selectedSize] as Record<string, unknown>)\n : null\n const sidePanelFileSrc = (selectedSizeData?.url ?? data?.thumbnailURL ?? data?.url ?? null) as\n | null\n | string\n const sidePanelMimeType = data?.mimeType as string | undefined\n const fileTypeIsAdjustable =\n !!sidePanelMimeType &&\n isImage(sidePanelMimeType) &&\n sidePanelMimeType !== 'image/svg+xml' &&\n sidePanelMimeType !== 'image/jxl'\n\n const renameFile = (fileToChange: File, newName: string): File =>\n new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (\n file instanceof File &&\n uploadConfig.mimeTypes?.length &&\n !validateMimeType(file.type, uploadConfig.mimeTypes)\n ) {\n toast.error(t('error:invalidFileType'))\n return\n }\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n setValue(file)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n },\n [\n setValue,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n t,\n uploadConfig.mimeTypes,\n ],\n )\n\n const handleFileNameChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => handleFileChange({ file: files?.[0] }),\n [handleFileChange],\n )\n\n const handleFileFetchedFromUrl = useCallback(\n (file: File) => handleFileChange({ file }),\n [handleFileChange],\n )\n\n const { fileUrl, handleUrlSubmit, isValidUrl, setFileUrl } = useUploadFromUrl({\n collectionSlug,\n onFileFetched: handleFileFetchedFromUrl,\n uploadConfig,\n })\n\n const handlePasteFromClipboard = usePasteFromClipboard({\n handleFileSelection,\n handleUrlSubmit,\n setFileUrl,\n uploadConfig,\n })\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n setSelectedSize(null)\n resetUploadEdits()\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setFileUrl,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n // Reset states for when replacing the file with a new upload\n useEffect(() => {\n setSelectedSize(null)\n setRemovedFile(false)\n setFileSrc('')\n }, [data?.url, data?.filename])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n return () => {\n if (fileSrc?.startsWith('blob:')) {\n URL.revokeObjectURL(fileSrc)\n }\n }\n }, [fileSrc])\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit, setFileUrl])\n\n useEffect(() => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }, [uploadControlFile, handleFileChange])\n\n // Preview a freshly-selected (not-yet-saved) file from its local object URL, so video/audio/PDF\n // are playable/viewable just like images. Sizing is capped in CSS so large files stay contained.\n const renderSelectedFilePreview = (src: string) => {\n const fileType = value?.type ?? ''\n\n if (fileType.startsWith('video/')) {\n return (\n <div className={`${baseClass}__selected-preview`}>\n <VideoPreview fileSrc={src} />\n </div>\n )\n }\n\n if (fileType.startsWith('audio/')) {\n return (\n <div className={`${baseClass}__selected-preview ${baseClass}__selected-preview--audio`}>\n <AudioPreview fileSrc={src} />\n </div>\n )\n }\n\n if (fileType === 'application/pdf') {\n return (\n <div className={`${baseClass}__selected-preview`}>\n <PdfPreview fileSrc={src} title={value?.name} />\n </div>\n )\n }\n\n return (\n <div className={`${baseClass}__selected-preview`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(fileType) ? src : null}\n size=\"expand\"\n />\n </div>\n )\n }\n\n const drawers = (\n <Fragment>\n {(value || data?.filename) && (\n <EditDepthProvider>\n <EditUpload\n fileName={value?.name || (data?.filename as string)}\n fileSrc={(data?.url as string) || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || (data?.focalX as number) || 50,\n y: uploadEdits?.focalPoint?.y || (data?.focalY as number) || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </EditDepthProvider>\n )}\n {data && hasVariants && (\n <Drawer\n className={`${baseClass}__preview-drawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n {uploadConfig?.pasteURL !== false && (\n <UploadFromURLModal\n fileUrl={fileUrl}\n handleUrlSubmit={handleUrlSubmit}\n isValidUrl={isValidUrl}\n setFileUrl={setFileUrl}\n />\n )}\n </Fragment>\n )\n\n // Hide the create file input when the collection opts out of it (unless the user has explicitly\n // removed an existing file or already selected a new one).\n const showUploadInput = Boolean(value) || removedFile || !uploadConfig?.hideFileInputOnCreate\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} path=\"filename\" showError={showError} />\n <div className={`${baseClass}__panel`}>\n {data?.filename && !removedFile && (\n <FileToolbar\n filename={data.filename as string}\n fileSrc={sidePanelFileSrc}\n fileUrl={data?.url as string}\n hideRemoveFile={uploadConfig?.hideRemoveFile}\n isAdjustable={fileTypeIsAdjustable}\n onEditImage={() => openModal(editDrawerSlug)}\n onReplace={handleFileRemoval}\n />\n )}\n <div className={`${baseClass}__content`}>\n {data?.filename && !removedFile ? (\n <FilePreview\n collectionSlug={collectionSlug}\n data={data as Record<string, unknown>}\n imageCacheTag={imageCacheTag}\n selectedSize={selectedSize}\n selectedSizeData={selectedSizeData}\n setSelectedSize={setSelectedSize}\n uploadConfig={uploadConfig}\n UploadFilePreview={UploadFilePreview}\n />\n ) : showUploadInput ? (\n <div className={`${baseClass}__upload`}>\n {!value && removedFile && data?.filename && (\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={() => setRemovedFile(false)}\n round\n tooltip={t('general:cancel')}\n />\n )}\n {!value && (\n <Dropzone onChange={handleFileSelection}>\n <UploadDropzoneContent\n acceptMimeTypes={acceptMimeTypes}\n extraControls={UploadControls}\n onFilesSelected={handleFileSelection}\n onPasteFromClipboard={handlePasteFromClipboard}\n pasteButtonClassName={`${baseClass}__pasteFromClipboard`}\n pasteTooltip={t('upload:pasteURL')}\n />\n </Dropzone>\n )}\n {value && fileSrc && (\n <Fragment>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n {renderSelectedFilePreview(fileSrc)}\n <div className={`${baseClass}__file-adjustments`}>\n {/* Custom id so this editor doesn't collide with the hidden auto `filename` field. */}\n <TextInput\n id=\"field-filemanager-filename\"\n label={t('upload:fileName')}\n onChange={handleFileNameChange}\n path=\"filename\"\n value={filename || value.name}\n />\n {(value.size || value.type) && (\n <span className={`${baseClass}__selected-meta`}>\n {[value.size ? formatFilesize(value.size) : null, value.type]\n .filter(Boolean)\n .join(' – ')}\n </span>\n )}\n </div>\n </Fragment>\n )}\n </div>\n ) : null}\n </div>\n </div>\n {drawers}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","formatFilesize","isImage","validateMimeType","React","Fragment","useCallback","useEffect","useState","toast","FieldError","fieldBaseClass","TextInput","useForm","useField","useDocumentInfo","EditDepthProvider","useTranslation","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","PreviewSizes","Thumbnail","getEditorFileSrc","editDrawerSlug","sizePreviewSlug","UploadFromURLModal","usePasteFromClipboard","useUploadFromUrl","UploadDropzoneContent","AudioPreview","FilePreview","PdfPreview","VideoPreview","FileToolbar","baseClass","FileManager","t0","$","collectionSlug","initialState","resetUploadEdits","resetUploadEditsFromProps","updateUploadEdits","updateUploadEditsFromProps","uploadConfig","UploadControls","uploadEdits","uploadEditsFromProps","UploadFilePreview","openModal","t","setModified","data","t1","mimeTypes","file","undefined","name","File","length","type","validate","t2","path","errorMessage","setValue","showError","value","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileUrl","uploadEditsContext","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","selectedSize","setSelectedSize","acceptMimeTypes","join","imageCacheTag","cacheTags","updatedAt","hasVariants","variants","hasImageAdjustments","Boolean","focalPointEnabled","focalPoint","crop","t3","t4","showCrop","showFocalPoint","selectedSizeData","sidePanelFileSrc","url","thumbnailURL","sidePanelMimeType","mimeType","fileTypeIsAdjustable","renameFile","_temp","t5","t6","file_0","isNewFile","t7","error","URL","createObjectURL","handleFileChange","e","updatedFileName","target","handleFileNameChange","files","handleFileSelection","t8","file_1","handleFileFetchedFromUrl","t9","onFileFetched","fileUrl","handleUrlSubmit","isValidUrl","setFileUrl","t10","handlePasteFromClipboard","t11","handleFileRemoval","t12","args","onEditsSave","t13","Symbol","for","t14","t15","t16","t17","t18","t19","t20","startsWith","revokeObjectURL","t21","t22","handleControlFileUrl","t23","t24","t25","src","fileType","_jsx","className","children","title","size","renderSelectedFilePreview","drawers","_jsxs","fileName","hasSelectedFile","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","slug","label","doc","pasteURL","showUploadInput","hideFileInputOnCreate","t26","filter","message","hideRemoveFile","isAdjustable","onEditImage","onReplace","buttonStyle","icon","onClick","round","tooltip","onChange","extraControls","onFilesSelected","onPasteFromClipboard","pasteButtonClassName","pasteTooltip","id","fileToChange","newName","lastModified"],"sources":["../../../src/elements/FileManager/index.tsx"],"sourcesContent":["'use client'\nimport type { SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatFilesize, isImage, validateMimeType } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { TextInput } from '../../fields/Text/Input.js'\nimport { useForm } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport { getEditorFileSrc } from '../Upload/getEditorFileSrc.js'\nimport { editDrawerSlug, sizePreviewSlug } from '../Upload/index.js'\nimport { UploadFromURLModal } from '../Upload/UploadFromURLModal/index.js'\nimport { usePasteFromClipboard } from '../Upload/usePasteFromClipboard.js'\nimport { useUploadFromUrl } from '../Upload/useUploadFromUrl.js'\nimport { UploadDropzoneContent } from '../UploadDropzoneContent/index.js'\nimport { AudioPreview } from './FilePreview/AudioPreview/index.js'\nimport { FilePreview } from './FilePreview/index.js'\nimport { PdfPreview } from './FilePreview/PdfPreview/index.js'\nimport { VideoPreview } from './FilePreview/VideoPreview/index.js'\nimport { FileToolbar } from './FileToolbar/index.js'\nimport './index.css'\n\nconst baseClass = 'file-manager'\n\nexport type FileManagerProps = {\n readonly collectionSlug: string\n readonly initialState?: import('payload').FormState\n /**\n * When provided, upload edits are sourced from these props instead of the `useUploadEdits`\n * context. The bulk upload drawer uses this to drive per-file edits from its FormsManager.\n */\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadConfig: Omit<SanitizedCollectionConfig['upload'], 'uploadInstructions'>\n readonly UploadControls?: React.ReactNode\n readonly uploadEdits?: UploadEdits\n readonly UploadFilePreview?: React.ReactNode\n}\n\nexport const FileManager: React.FC<FileManagerProps> = ({\n collectionSlug,\n initialState,\n resetUploadEdits: resetUploadEditsFromProps,\n updateUploadEdits: updateUploadEditsFromProps,\n uploadConfig,\n UploadControls,\n uploadEdits: uploadEditsFromProps,\n UploadFilePreview,\n}) => {\n const { openModal } = useModal()\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { data } = useDocumentInfo()\n const validate = useCallback(\n (file: File | null | undefined) => {\n if (!file && file !== undefined) {\n return 'A file is required.'\n }\n if (file && (!file.name || file.name === '')) {\n return 'A file name is required.'\n }\n if (\n file instanceof File &&\n uploadConfig.mimeTypes?.length &&\n !validateMimeType(file.type, uploadConfig.mimeTypes)\n ) {\n return t('error:invalidFileType')\n }\n return true\n },\n [t, uploadConfig.mimeTypes],\n )\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileUrl,\n } = useUploadControls()\n const uploadEditsContext = useUploadEdits()\n const resetUploadEdits = resetUploadEditsFromProps ?? uploadEditsContext.resetUploadEdits\n const updateUploadEdits = updateUploadEditsFromProps ?? uploadEditsContext.updateUploadEdits\n const uploadEdits = uploadEditsFromProps ?? uploadEditsContext.uploadEdits\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [selectedSize, setSelectedSize] = useState<null | string>(null)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n const hasVariants = uploadConfig?.variants?.length > 0\n const hasImageAdjustments = Boolean(uploadConfig?.hasImageAdjustments)\n const focalPointEnabled = uploadConfig?.focalPoint === true\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n const showFocalPoint = focalPoint && (hasVariants || hasImageAdjustments || focalPointEnabled)\n\n const selectedSizeData = selectedSize\n ? (data?.variants?.[selectedSize] as Record<string, unknown>)\n : null\n const sidePanelFileSrc = (selectedSizeData?.url ?? data?.thumbnailURL ?? data?.url ?? null) as\n | null\n | string\n const sidePanelMimeType = data?.mimeType as string | undefined\n const fileTypeIsAdjustable =\n !!sidePanelMimeType &&\n isImage(sidePanelMimeType) &&\n sidePanelMimeType !== 'image/svg+xml' &&\n sidePanelMimeType !== 'image/jxl'\n\n const renameFile = (fileToChange: File, newName: string): File =>\n new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (\n file instanceof File &&\n uploadConfig.mimeTypes?.length &&\n !validateMimeType(file.type, uploadConfig.mimeTypes)\n ) {\n toast.error(t('error:invalidFileType'))\n return\n }\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n setValue(file)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n },\n [\n setValue,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n t,\n uploadConfig.mimeTypes,\n ],\n )\n\n const handleFileNameChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => handleFileChange({ file: files?.[0] }),\n [handleFileChange],\n )\n\n const handleFileFetchedFromUrl = useCallback(\n (file: File) => handleFileChange({ file }),\n [handleFileChange],\n )\n\n const { fileUrl, handleUrlSubmit, isValidUrl, setFileUrl } = useUploadFromUrl({\n collectionSlug,\n onFileFetched: handleFileFetchedFromUrl,\n uploadConfig,\n })\n\n const handlePasteFromClipboard = usePasteFromClipboard({\n handleFileSelection,\n handleUrlSubmit,\n setFileUrl,\n uploadConfig,\n })\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n setSelectedSize(null)\n resetUploadEdits()\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setFileUrl,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n // Reset states for when replacing the file with a new upload\n useEffect(() => {\n setSelectedSize(null)\n setRemovedFile(false)\n setFileSrc('')\n }, [data?.url, data?.filename])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n return () => {\n if (fileSrc?.startsWith('blob:')) {\n URL.revokeObjectURL(fileSrc)\n }\n }\n }, [fileSrc])\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit, setFileUrl])\n\n useEffect(() => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }, [uploadControlFile, handleFileChange])\n\n // Preview a freshly-selected (not-yet-saved) file from its local object URL, so video/audio/PDF\n // are playable/viewable just like images. Sizing is capped in CSS so large files stay contained.\n const renderSelectedFilePreview = (src: string) => {\n const fileType = value?.type ?? ''\n\n if (fileType.startsWith('video/')) {\n return (\n <div className={`${baseClass}__selected-preview`}>\n <VideoPreview fileSrc={src} />\n </div>\n )\n }\n\n if (fileType.startsWith('audio/')) {\n return (\n <div className={`${baseClass}__selected-preview ${baseClass}__selected-preview--audio`}>\n <AudioPreview fileSrc={src} />\n </div>\n )\n }\n\n if (fileType === 'application/pdf') {\n return (\n <div className={`${baseClass}__selected-preview`}>\n <PdfPreview fileSrc={src} title={value?.name} />\n </div>\n )\n }\n\n return (\n <div className={`${baseClass}__selected-preview`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(fileType) ? src : null}\n size=\"expand\"\n />\n </div>\n )\n }\n\n const drawers = (\n <Fragment>\n {(value || data?.filename) && (\n <EditDepthProvider>\n <EditUpload\n fileName={value?.name || (data?.filename as string)}\n fileSrc={getEditorFileSrc({ data, fileSrc, hasSelectedFile: Boolean(value) })}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || (data?.focalX as number) || 50,\n y: uploadEdits?.focalPoint?.y || (data?.focalY as number) || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </EditDepthProvider>\n )}\n {data && hasVariants && (\n <Drawer\n className={`${baseClass}__preview-drawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n {uploadConfig?.pasteURL !== false && (\n <UploadFromURLModal\n fileUrl={fileUrl}\n handleUrlSubmit={handleUrlSubmit}\n isValidUrl={isValidUrl}\n setFileUrl={setFileUrl}\n />\n )}\n </Fragment>\n )\n\n // Hide the create file input when the collection opts out of it (unless the user has explicitly\n // removed an existing file or already selected a new one).\n const showUploadInput = Boolean(value) || removedFile || !uploadConfig?.hideFileInputOnCreate\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} path=\"filename\" showError={showError} />\n <div className={`${baseClass}__panel`}>\n {data?.filename && !removedFile && (\n <FileToolbar\n filename={data.filename as string}\n fileSrc={sidePanelFileSrc}\n fileUrl={data?.url as string}\n hideRemoveFile={uploadConfig?.hideRemoveFile}\n isAdjustable={fileTypeIsAdjustable}\n onEditImage={() => openModal(editDrawerSlug)}\n onReplace={handleFileRemoval}\n />\n )}\n <div className={`${baseClass}__content`}>\n {data?.filename && !removedFile ? (\n <FilePreview\n collectionSlug={collectionSlug}\n data={data as Record<string, unknown>}\n imageCacheTag={imageCacheTag}\n selectedSize={selectedSize}\n selectedSizeData={selectedSizeData}\n setSelectedSize={setSelectedSize}\n uploadConfig={uploadConfig}\n UploadFilePreview={UploadFilePreview}\n />\n ) : showUploadInput ? (\n <div className={`${baseClass}__upload`}>\n {!value && removedFile && data?.filename && (\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={() => setRemovedFile(false)}\n round\n tooltip={t('general:cancel')}\n />\n )}\n {!value && (\n <Dropzone onChange={handleFileSelection}>\n <UploadDropzoneContent\n acceptMimeTypes={acceptMimeTypes}\n extraControls={UploadControls}\n onFilesSelected={handleFileSelection}\n onPasteFromClipboard={handlePasteFromClipboard}\n pasteButtonClassName={`${baseClass}__pasteFromClipboard`}\n pasteTooltip={t('upload:pasteURL')}\n />\n </Dropzone>\n )}\n {value && fileSrc && (\n <Fragment>\n <Button\n aria-label={t('general:cancel')}\n buttonStyle=\"secondary\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n {renderSelectedFilePreview(fileSrc)}\n <div className={`${baseClass}__file-adjustments`}>\n {/* Custom id so this editor doesn't collide with the hidden auto `filename` field. */}\n <TextInput\n id=\"field-filemanager-filename\"\n label={t('upload:fileName')}\n onChange={handleFileNameChange}\n path=\"filename\"\n value={filename || value.name}\n />\n {(value.size || value.type) && (\n <span className={`${baseClass}__selected-meta`}>\n {[value.size ? formatFilesize(value.size) : null, value.type]\n .filter(Boolean)\n .join(' – ')}\n </span>\n )}\n </div>\n </Fragment>\n )}\n </div>\n ) : null}\n </div>\n </div>\n {drawers}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,16 +3,6 @@ export type ListControlsProps = {
3
3
  readonly beforeActions?: React.ReactNode[];
4
4
  readonly collectionConfig: ClientCollectionConfig;
5
5
  readonly collectionSlug: string;
6
- /**
7
- * @deprecated
8
- * These are now handled by the `ListSelection` component
9
- */
10
- readonly disableBulkDelete?: boolean;
11
- /**
12
- * @deprecated
13
- * These are now handled by the `ListSelection` component
14
- */
15
- readonly disableBulkEdit?: boolean;
16
6
  readonly disableQueryPresets?: boolean;
17
7
  readonly enableColumns?: boolean;
18
8
  readonly enableFilters?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;IACpC;;;OAGG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,6BAA6B,CAAA;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/elements/ListControls/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,WAAW,EACX,qBAAqB,EACrB,6BAA6B,EAC7B,SAAS,EACT,KAAK,EACN,MAAM,SAAS,CAAA;AAEhB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAA;IACjD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAA;IACnD,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,6BAA6B,CAAA;IAC/D,QAAQ,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IACvD,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAA;IACnE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAC9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ListControls/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n QueryPreset,\n ResolvedFilterOptions,\n SanitizedCollectionPermission,\n ViewTypes,\n Where,\n} from 'payload'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkDelete?: boolean\n /**\n * @deprecated\n * These are now handled by the `ListSelection` component\n */\n readonly disableBulkEdit?: boolean\n readonly disableQueryPresets?: boolean\n readonly enableColumns?: boolean\n readonly enableFilters?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly hasCreatePermission?: boolean\n readonly hasDeletePermission?: boolean\n readonly isWhereOpen?: boolean\n readonly layoutToggle?: React.ReactNode\n readonly listMenuItems?: React.ReactNode[]\n readonly newDocumentURL?: string\n readonly onWhereToggle?: () => void\n readonly queryPreset?: QueryPreset\n readonly queryPresetPermissions?: SanitizedCollectionPermission\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n readonly viewType?: ViewTypes\n}\n"],"mappings":"AASA","ignoreList":[]}
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../../src/elements/ListControls/types.ts"],"sourcesContent":["import type {\n ClientCollectionConfig,\n QueryPreset,\n ResolvedFilterOptions,\n SanitizedCollectionPermission,\n ViewTypes,\n Where,\n} from 'payload'\n\nexport type ListControlsProps = {\n readonly beforeActions?: React.ReactNode[]\n readonly collectionConfig: ClientCollectionConfig\n readonly collectionSlug: string\n readonly disableQueryPresets?: boolean\n readonly enableColumns?: boolean\n readonly enableFilters?: boolean\n readonly enableSort?: boolean\n readonly handleSearchChange?: (search: string) => void\n readonly handleSortChange?: (sort: string) => void\n readonly handleWhereChange?: (where: Where) => void\n readonly hasCreatePermission?: boolean\n readonly hasDeletePermission?: boolean\n readonly isWhereOpen?: boolean\n readonly layoutToggle?: React.ReactNode\n readonly listMenuItems?: React.ReactNode[]\n readonly newDocumentURL?: string\n readonly onWhereToggle?: () => void\n readonly queryPreset?: QueryPreset\n readonly queryPresetPermissions?: SanitizedCollectionPermission\n readonly renderedFilters?: Map<string, React.ReactNode>\n readonly resolvedFilterOptions?: Map<string, ResolvedFilterOptions>\n readonly viewType?: ViewTypes\n}\n"],"mappings":"AASA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,YAAY,CAAA;AAUnB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAiMvD,CAAA"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/ListDrawer/DrawerContent.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAG/D,OAAO,KAAK,EACV,eAAe,EAGhB,MAAM,YAAY,CAAA;AAUnB,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAgMvD,CAAA"}
@@ -130,8 +130,7 @@ export const ListDrawerContent = ({
130
130
  if (typeof onSelect === 'function') {
131
131
  onSelect({
132
132
  collectionSlug: selectedOption?.value,
133
- doc,
134
- docID: doc.id
133
+ doc
135
134
  });
136
135
  }
137
136
  closeModal(documentDrawerSlug);