@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.
- package/dist/elements/Autosave/index.d.ts.map +1 -1
- package/dist/elements/Autosave/index.js +10 -3
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +5 -0
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -5
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/EditUpload/library.css +6 -13
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +6 -1
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +0 -10
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +1 -2
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +0 -6
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +71 -8
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishButton/validateAllLocales.d.ts +11 -0
- package/dist/elements/PublishButton/validateAllLocales.d.ts.map +1 -0
- package/dist/elements/PublishButton/validateAllLocales.js +263 -0
- package/dist/elements/PublishButton/validateAllLocales.js.map +1 -0
- package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
- package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
- package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
- package/dist/elements/SaveDraftButton/index.js +15 -2
- package/dist/elements/SaveDraftButton/index.js.map +1 -1
- package/dist/elements/Upload/getEditorFileSrc.d.ts +11 -0
- package/dist/elements/Upload/getEditorFileSrc.d.ts.map +1 -0
- package/dist/elements/Upload/getEditorFileSrc.js +6 -0
- package/dist/elements/Upload/getEditorFileSrc.js.map +1 -0
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +6 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-S7MOGZSR.js} +2 -2
- package/dist/exports/client/chunk-Z42OBP5U.js +27 -0
- package/dist/exports/client/chunk-Z42OBP5U.js.map +7 -0
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +6 -9
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +0 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +0 -5
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/useField/types.d.ts +0 -4
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/layouts/Root/getRootLayoutData.d.ts +2 -2
- package/dist/layouts/Root/getRootLayoutData.d.ts.map +1 -1
- package/dist/layouts/Root/getRootLayoutData.js +8 -4
- package/dist/layouts/Root/getRootLayoutData.js.map +1 -1
- package/dist/layouts/Root/index.js +1 -5
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +0 -4
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
- package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/providers/TableColumns/types.d.ts +1 -34
- package/dist/providers/TableColumns/types.d.ts.map +1 -1
- package/dist/providers/TableColumns/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utilities/appendCacheTag.d.ts +1 -0
- package/dist/utilities/appendCacheTag.d.ts.map +1 -1
- package/dist/utilities/appendCacheTag.js +2 -1
- package/dist/utilities/appendCacheTag.js.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.d.ts +7 -2
- package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
- package/dist/utilities/traverseForLocalizedFields.js +22 -8
- package/dist/utilities/traverseForLocalizedFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +2 -12
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js +8 -8
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js +2 -2
- package/dist/views/Version/RenderFieldsToDiff/fields/Upload/index.js.map +1 -1
- package/dist/widgets/RecentlyViewed/index.css +3 -2
- package/package.json +4 -4
- package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
- package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
- /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;
|
|
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;
|
|
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":"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","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,
|
|
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":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,
|
|
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,
|
|
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:
|
|
93
|
-
|
|
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
|
-
|
|
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;
|
|
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:
|
|
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
|
|
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
|
|
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,
|
|
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"}
|