@payloadcms/ui 3.43.0-internal.c5bbc84 → 3.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/elements/AddNewRelation/index.js +9 -8
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js +1 -0
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/index.js +4 -1
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/Button/index.scss +19 -0
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/ColumnSelector/index.d.ts +0 -1
- package/dist/elements/ColumnSelector/index.d.ts.map +1 -1
- package/dist/elements/ColumnSelector/index.js +34 -38
- package/dist/elements/ColumnSelector/index.js.map +1 -1
- package/dist/elements/Drawer/index.d.ts.map +1 -1
- package/dist/elements/Drawer/index.js +51 -67
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/FieldDiffContainer/index.d.ts +15 -0
- package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -0
- package/dist/elements/FieldDiffContainer/index.js +40 -0
- package/dist/elements/FieldDiffContainer/index.js.map +1 -0
- package/dist/elements/FieldDiffContainer/index.scss +45 -0
- package/dist/elements/FieldDiffLabel/index.scss +6 -1
- package/dist/elements/HTMLDiff/colors.scss +35 -0
- package/dist/elements/HTMLDiff/diff/index.d.ts +75 -0
- package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -0
- package/dist/elements/HTMLDiff/diff/index.js +536 -0
- package/dist/elements/HTMLDiff/diff/index.js.map +1 -0
- package/dist/elements/HTMLDiff/index.d.ts +11 -0
- package/dist/elements/HTMLDiff/index.d.ts.map +1 -0
- package/dist/elements/HTMLDiff/index.js +32 -0
- package/dist/elements/HTMLDiff/index.js.map +1 -0
- package/dist/elements/HTMLDiff/index.scss +170 -0
- package/dist/elements/ListControls/index.scss +2 -2
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js +1 -0
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/index.scss +1 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +4 -1
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Pill/index.d.ts +5 -1
- package/dist/elements/Pill/index.d.ts.map +1 -1
- package/dist/elements/Pill/index.js.map +1 -1
- package/dist/elements/PillSelector/index.d.ts +26 -0
- package/dist/elements/PillSelector/index.d.ts.map +1 -0
- package/dist/elements/PillSelector/index.js +72 -0
- package/dist/elements/PillSelector/index.js.map +1 -0
- package/dist/elements/{ColumnSelector → PillSelector}/index.scss +5 -5
- package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
- package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
- package/dist/elements/Popup/PopupTrigger/index.scss +4 -0
- package/dist/elements/Popup/index.d.ts +1 -1
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/index.scss +11 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js +1 -0
- package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.js.map +1 -1
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.js +1 -0
- package/dist/elements/QueryPresets/cells/ColumnsCell/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.d.ts.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js +1 -0
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js +1 -0
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.d.ts.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js +7 -4
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.scss +8 -0
- package/dist/elements/ReactSelect/types.d.ts +1 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +3 -1
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/SelectMany/index.d.ts.map +1 -1
- package/dist/elements/SelectMany/index.js +1 -0
- package/dist/elements/SelectMany/index.js.map +1 -1
- package/dist/elements/Table/index.js +2 -2
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Upload/index.d.ts +1 -0
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +53 -15
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/index.scss +1 -0
- package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js +7 -7
- package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
- package/dist/exports/client/{DatePicker-JDD2RARJ.js → DatePicker-QBWPYX2E.js} +2 -2
- package/dist/exports/client/{chunk-L7Q3DZ67.js → chunk-TIQCV7VX.js} +1 -1
- package/dist/exports/client/{chunk-L7Q3DZ67.js.map → chunk-TIQCV7VX.js.map} +2 -2
- package/dist/exports/client/index.d.ts +7 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +2 -0
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +2 -0
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.js.map +1 -1
- package/dist/fields/Checkbox/index.scss +1 -1
- package/dist/fields/FieldLabel/index.d.ts.map +1 -1
- package/dist/fields/FieldLabel/index.js +3 -2
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +1 -0
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/Relationship/Input.js +4 -5
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +10 -5
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts +22 -13
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +1 -1
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/renderCell.js +1 -2
- package/dist/providers/TableColumns/buildColumnState/renderCell.js.map +1 -1
- package/dist/providers/Translation/index.d.ts.map +1 -1
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/providers/UploadControls/index.d.ts +14 -0
- package/dist/providers/UploadControls/index.d.ts.map +1 -0
- package/dist/providers/UploadControls/index.js +45 -0
- package/dist/providers/UploadControls/index.js.map +1 -0
- package/dist/styles.css +1 -1
- package/dist/utilities/buildFormState.d.ts +2 -2
- package/dist/utilities/buildFormState.d.ts.map +1 -1
- package/dist/utilities/buildFormState.js.map +1 -1
- package/dist/utilities/buildTableState.d.ts +2 -2
- package/dist/utilities/buildTableState.d.ts.map +1 -1
- package/dist/utilities/buildTableState.js.map +1 -1
- package/dist/utilities/copyDataFromLocale.d.ts +2 -2
- package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
- package/dist/utilities/copyDataFromLocale.js.map +1 -1
- package/dist/utilities/formatDocTitle/formatDateTitle.js +1 -1
- package/dist/utilities/formatDocTitle/formatDateTitle.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js +4 -1
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getFolderResultsComponentAndData.d.ts +2 -2
- package/dist/utilities/getFolderResultsComponentAndData.d.ts.map +1 -1
- package/dist/utilities/getFolderResultsComponentAndData.js.map +1 -1
- package/dist/utilities/renderTable.js +1 -0
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/views/Edit/index.d.ts +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +11 -6
- package/dist/views/Edit/index.js.map +1 -1
- package/package.json +4 -4
- /package/dist/exports/client/{DatePicker-JDD2RARJ.js.map → DatePicker-QBWPYX2E.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","baseClass","Table","appearance","columns","data","activeColumns","filter","col","active","length","_jsx","className","Boolean","join","_jsxs","cellPadding","cellSpacing","map","i","id","accessor","Heading","row","rowIndex","colIndex","renderedCells","String"],"sources":["../../../src/elements/Table/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Column } from 'payload'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'table'\n\nexport type Props = {\n readonly appearance?: 'condensed' | 'default'\n readonly columns?: Column[]\n readonly data: Record<string, unknown>[]\n}\n\nexport const Table: React.FC<Props> = ({ appearance, columns, data }) => {\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (!activeColumns || activeColumns.length === 0) {\n return <div>No columns selected</div>\n }\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor}`} key={i}>\n {col.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data &&\n data.map((row, rowIndex) => (\n <tr\n className={`row-${rowIndex + 1}`}\n key={\n typeof row.id === 'string' || typeof row.id === 'number'\n ? String(row.id)\n : rowIndex\n }\n >\n {activeColumns.map((col, colIndex) => {\n const { accessor } = col\n\n return (\n <td className={`cell-${accessor}`} key={colIndex}>\n {col.renderedCells[rowIndex]}\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAQlB,OAAO,MAAMC,KAAA,GAAyBA,CAAC;EAAEC,UAAU;EAAEC,OAAO;EAAEC;AAAI,CAAE;EAClE,MAAMC,aAAA,GAAgBF,OAAA,EAASG,MAAA,CAAQC,GAAA,IAAQA,GAAA,EAAKC,MAAA;EAEpD,IAAI,CAACH,aAAA,IAAiBA,aAAA,CAAcI,MAAM,KAAK,GAAG;IAChD,oBAAOC,IAAA,CAAC;gBAAI;;EACd;EAEA,oBACEA,IAAA,CAAC;IACCC,SAAA,EAAW,CAACX,SAAA,EAAWE,UAAA,IAAc,GAAGF,SAAA,gBAAyBE,UAAA,EAAY,CAAC,CAC3EI,MAAM,CAACM,OAAA,EACPC,IAAI,CAAC;cAER,aAAAC,KAAA,CAAC;MAAMC,WAAA,EAAY;MAAIC,WAAA,EAAY;8BACjCN,IAAA,CAAC;kBACC,aAAAA,IAAA,CAAC;oBACEL,aAAA,CAAcY,GAAG,CAAC,CAACV,GAAA,EAAKW,CAAA,kBACvBR,IAAA,CAAC;YAAGS,EAAA,EAAI,WAAWZ,GAAA,CAAIa,QAAQ,
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","baseClass","Table","appearance","columns","data","activeColumns","filter","col","active","length","_jsx","className","Boolean","join","_jsxs","cellPadding","cellSpacing","map","i","id","accessor","replace","Heading","row","rowIndex","colIndex","renderedCells","String"],"sources":["../../../src/elements/Table/index.tsx"],"sourcesContent":["'use client'\n\nimport type { Column } from 'payload'\n\nimport React from 'react'\n\nimport './index.scss'\n\nconst baseClass = 'table'\n\nexport type Props = {\n readonly appearance?: 'condensed' | 'default'\n readonly columns?: Column[]\n readonly data: Record<string, unknown>[]\n}\n\nexport const Table: React.FC<Props> = ({ appearance, columns, data }) => {\n const activeColumns = columns?.filter((col) => col?.active)\n\n if (!activeColumns || activeColumns.length === 0) {\n return <div>No columns selected</div>\n }\n\n return (\n <div\n className={[baseClass, appearance && `${baseClass}--appearance-${appearance}`]\n .filter(Boolean)\n .join(' ')}\n >\n <table cellPadding=\"0\" cellSpacing=\"0\">\n <thead>\n <tr>\n {activeColumns.map((col, i) => (\n <th id={`heading-${col.accessor.replace(/\\./g, '__')}`} key={i}>\n {col.Heading}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {data &&\n data.map((row, rowIndex) => (\n <tr\n className={`row-${rowIndex + 1}`}\n key={\n typeof row.id === 'string' || typeof row.id === 'number'\n ? String(row.id)\n : rowIndex\n }\n >\n {activeColumns.map((col, colIndex) => {\n const { accessor } = col\n\n return (\n <td className={`cell-${accessor.replace(/\\./g, '__')}`} key={colIndex}>\n {col.renderedCells[rowIndex]}\n </td>\n )\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n )\n}\n"],"mappings":"AAAA;;;AAIA,OAAOA,KAAA,MAAW;AAElB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAQlB,OAAO,MAAMC,KAAA,GAAyBA,CAAC;EAAEC,UAAU;EAAEC,OAAO;EAAEC;AAAI,CAAE;EAClE,MAAMC,aAAA,GAAgBF,OAAA,EAASG,MAAA,CAAQC,GAAA,IAAQA,GAAA,EAAKC,MAAA;EAEpD,IAAI,CAACH,aAAA,IAAiBA,aAAA,CAAcI,MAAM,KAAK,GAAG;IAChD,oBAAOC,IAAA,CAAC;gBAAI;;EACd;EAEA,oBACEA,IAAA,CAAC;IACCC,SAAA,EAAW,CAACX,SAAA,EAAWE,UAAA,IAAc,GAAGF,SAAA,gBAAyBE,UAAA,EAAY,CAAC,CAC3EI,MAAM,CAACM,OAAA,EACPC,IAAI,CAAC;cAER,aAAAC,KAAA,CAAC;MAAMC,WAAA,EAAY;MAAIC,WAAA,EAAY;8BACjCN,IAAA,CAAC;kBACC,aAAAA,IAAA,CAAC;oBACEL,aAAA,CAAcY,GAAG,CAAC,CAACV,GAAA,EAAKW,CAAA,kBACvBR,IAAA,CAAC;YAAGS,EAAA,EAAI,WAAWZ,GAAA,CAAIa,QAAQ,CAACC,OAAO,CAAC,OAAO,OAAO;sBACnDd,GAAA,CAAIe;aADsDJ,CAAA;;uBAMnER,IAAA,CAAC;kBACEN,IAAA,IACCA,IAAA,CAAKa,GAAG,CAAC,CAACM,GAAA,EAAKC,QAAA,kBACbd,IAAA,CAAC;UACCC,SAAA,EAAW,OAAOa,QAAA,GAAW,GAAG;oBAO/BnB,aAAA,CAAcY,GAAG,CAAC,CAACV,GAAA,EAAKkB,QAAA;YACvB,MAAM;cAAEL;YAAQ,CAAE,GAAGb,GAAA;YAErB,oBACEG,IAAA,CAAC;cAAGC,SAAA,EAAW,QAAQS,QAAA,CAASC,OAAO,CAAC,OAAO,OAAO;wBACnDd,GAAA,CAAImB,aAAa,CAACF,QAAA;eADwCC,QAAA;UAIjE;WAbE,OAAOF,GAAA,CAAIJ,EAAE,KAAK,YAAY,OAAOI,GAAA,CAAIJ,EAAE,KAAK,WAC5CQ,MAAA,CAAOJ,GAAA,CAAIJ,EAAE,IACbK,QAAA;;;;AAkBtB","ignoreList":[]}
|
|
@@ -16,6 +16,7 @@ export type UploadProps = {
|
|
|
16
16
|
readonly initialState?: FormState;
|
|
17
17
|
readonly onChange?: (file?: File) => void;
|
|
18
18
|
readonly uploadConfig: SanitizedCollectionConfig['upload'];
|
|
19
|
+
readonly UploadControls?: React.ReactNode;
|
|
19
20
|
};
|
|
20
21
|
export declare const Upload: React.FC<UploadProps>;
|
|
21
22
|
export type UploadProps_v4 = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAU9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAkDnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA2a9C,CAAA"}
|
|
@@ -14,15 +14,16 @@ import { useConfig } from '../../providers/Config/index.js';
|
|
|
14
14
|
import { useDocumentInfo } from '../../providers/DocumentInfo/index.js';
|
|
15
15
|
import { EditDepthProvider } from '../../providers/EditDepth/index.js';
|
|
16
16
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
17
|
+
import { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js';
|
|
17
18
|
import { useUploadEdits } from '../../providers/UploadEdits/index.js';
|
|
18
19
|
import { Button } from '../Button/index.js';
|
|
19
20
|
import { Drawer } from '../Drawer/index.js';
|
|
20
21
|
import { Dropzone } from '../Dropzone/index.js';
|
|
21
22
|
import { EditUpload } from '../EditUpload/index.js';
|
|
23
|
+
import './index.scss';
|
|
22
24
|
import { FileDetails } from '../FileDetails/index.js';
|
|
23
25
|
import { PreviewSizes } from '../PreviewSizes/index.js';
|
|
24
26
|
import { Thumbnail } from '../Thumbnail/index.js';
|
|
25
|
-
import './index.scss';
|
|
26
27
|
const baseClass = 'file-field';
|
|
27
28
|
export const editDrawerSlug = 'edit-upload';
|
|
28
29
|
export const sizePreviewSlug = 'preview-sizes';
|
|
@@ -115,11 +116,13 @@ export const Upload = props => {
|
|
|
115
116
|
} = useUploadEdits();
|
|
116
117
|
let t0;
|
|
117
118
|
if ($[0] !== props || $[1] !== resetUploadEdits || $[2] !== updateUploadEdits || $[3] !== uploadEdits) {
|
|
118
|
-
t0 = _jsx(
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
t0 = _jsx(UploadControlsProvider, {
|
|
120
|
+
children: _jsx(Upload_v4, {
|
|
121
|
+
...props,
|
|
122
|
+
resetUploadEdits,
|
|
123
|
+
updateUploadEdits,
|
|
124
|
+
uploadEdits
|
|
125
|
+
})
|
|
123
126
|
});
|
|
124
127
|
$[0] = props;
|
|
125
128
|
$[1] = resetUploadEdits;
|
|
@@ -140,8 +143,17 @@ export const Upload_v4 = props => {
|
|
|
140
143
|
resetUploadEdits,
|
|
141
144
|
updateUploadEdits,
|
|
142
145
|
uploadConfig,
|
|
146
|
+
UploadControls,
|
|
143
147
|
uploadEdits
|
|
144
148
|
} = props;
|
|
149
|
+
const {
|
|
150
|
+
setUploadControlFile,
|
|
151
|
+
setUploadControlFileName,
|
|
152
|
+
setUploadControlFileUrl,
|
|
153
|
+
uploadControlFile,
|
|
154
|
+
uploadControlFileName,
|
|
155
|
+
uploadControlFileUrl
|
|
156
|
+
} = useUploadControls();
|
|
145
157
|
const {
|
|
146
158
|
config: {
|
|
147
159
|
routes: {
|
|
@@ -186,10 +198,13 @@ export const Upload_v4 = props => {
|
|
|
186
198
|
}
|
|
187
199
|
setValue(newFile);
|
|
188
200
|
setShowUrlInput(false);
|
|
201
|
+
setUploadControlFileUrl('');
|
|
202
|
+
setUploadControlFileName(null);
|
|
203
|
+
setUploadControlFile(null);
|
|
189
204
|
if (typeof onChange === 'function') {
|
|
190
205
|
onChange(newFile);
|
|
191
206
|
}
|
|
192
|
-
}, [onChange, setValue]);
|
|
207
|
+
}, [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl]);
|
|
193
208
|
const renameFile = (fileToChange, newName) => {
|
|
194
209
|
// Creating a new File object with updated properties
|
|
195
210
|
const newFile_0 = new File([fileToChange], newName, {
|
|
@@ -216,12 +231,15 @@ export const Upload_v4 = props => {
|
|
|
216
231
|
setFileUrl('');
|
|
217
232
|
resetUploadEdits();
|
|
218
233
|
setShowUrlInput(false);
|
|
219
|
-
|
|
234
|
+
setUploadControlFileUrl('');
|
|
235
|
+
setUploadControlFileName(null);
|
|
236
|
+
setUploadControlFile(null);
|
|
237
|
+
}, [handleFileChange, resetUploadEdits, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl]);
|
|
220
238
|
const onEditsSave = useCallback(args => {
|
|
221
239
|
setModified(true);
|
|
222
240
|
updateUploadEdits(args);
|
|
223
241
|
}, [setModified, updateUploadEdits]);
|
|
224
|
-
const handleUrlSubmit = async () => {
|
|
242
|
+
const handleUrlSubmit = useCallback(async () => {
|
|
225
243
|
if (!fileUrl || uploadConfig?.pasteURL === false) {
|
|
226
244
|
return;
|
|
227
245
|
}
|
|
@@ -233,7 +251,7 @@ export const Upload_v4 = props => {
|
|
|
233
251
|
throw new Error(`Fetch failed with status: ${clientResponse.status}`);
|
|
234
252
|
}
|
|
235
253
|
const blob = await clientResponse.blob();
|
|
236
|
-
const fileName = decodeURIComponent(fileUrl.split('/').pop() || '');
|
|
254
|
+
const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '');
|
|
237
255
|
const file = new File([blob], fileName, {
|
|
238
256
|
type: blob.type
|
|
239
257
|
});
|
|
@@ -266,7 +284,7 @@ export const Upload_v4 = props => {
|
|
|
266
284
|
toast.error('The provided URL is not allowed.');
|
|
267
285
|
setUploadStatus('failed');
|
|
268
286
|
}
|
|
269
|
-
};
|
|
287
|
+
}, [fileUrl, uploadConfig, setUploadStatus, handleFileChange, useServerSideFetch, collectionSlug, id, serverURL, api]);
|
|
270
288
|
useEffect(() => {
|
|
271
289
|
if (initialState?.file?.value instanceof File) {
|
|
272
290
|
setFileSrc(URL.createObjectURL(initialState.file.value));
|
|
@@ -295,9 +313,23 @@ export const Upload_v4 = props => {
|
|
|
295
313
|
const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled);
|
|
296
314
|
const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ');
|
|
297
315
|
const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt;
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
316
|
+
useEffect(() => {
|
|
317
|
+
const handleControlFileUrl = async () => {
|
|
318
|
+
if (uploadControlFileUrl) {
|
|
319
|
+
setFileUrl(uploadControlFileUrl);
|
|
320
|
+
await handleUrlSubmit();
|
|
321
|
+
}
|
|
322
|
+
};
|
|
323
|
+
void handleControlFileUrl();
|
|
324
|
+
}, [uploadControlFileUrl, handleUrlSubmit]);
|
|
325
|
+
useEffect(() => {
|
|
326
|
+
const handleControlFile = () => {
|
|
327
|
+
if (uploadControlFile) {
|
|
328
|
+
handleFileChange(uploadControlFile);
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
void handleControlFile();
|
|
332
|
+
}, [uploadControlFile, handleFileChange]);
|
|
301
333
|
return /*#__PURE__*/_jsxs("div", {
|
|
302
334
|
className: [fieldBaseClass, baseClass].filter(Boolean).join(' '),
|
|
303
335
|
children: [/*#__PURE__*/_jsx(FieldError, {
|
|
@@ -350,11 +382,14 @@ export const Upload_v4 = props => {
|
|
|
350
382
|
buttonStyle: "pill",
|
|
351
383
|
onClick: () => {
|
|
352
384
|
setShowUrlInput(true);
|
|
385
|
+
setUploadControlFileUrl('');
|
|
386
|
+
setUploadControlFile(null);
|
|
387
|
+
setUploadControlFileName(null);
|
|
353
388
|
},
|
|
354
389
|
size: "small",
|
|
355
390
|
children: t('upload:pasteURL')
|
|
356
391
|
})]
|
|
357
|
-
})]
|
|
392
|
+
}), UploadControls ? UploadControls : null]
|
|
358
393
|
}), /*#__PURE__*/_jsxs("p", {
|
|
359
394
|
className: `${baseClass}__dragAndDropText`,
|
|
360
395
|
children: [t('general:or'), " ", t('upload:dragAndDrop')]
|
|
@@ -390,6 +425,9 @@ export const Upload_v4 = props => {
|
|
|
390
425
|
iconStyle: "with-border",
|
|
391
426
|
onClick: () => {
|
|
392
427
|
setShowUrlInput(false);
|
|
428
|
+
setUploadControlFileUrl('');
|
|
429
|
+
setUploadControlFile(null);
|
|
430
|
+
setUploadControlFileName(null);
|
|
393
431
|
},
|
|
394
432
|
round: true,
|
|
395
433
|
tooltip: t('general:cancel')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","config","routes","api","serverURL","setModified","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","hideFileInputOnCreate","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/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 { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\nimport './index.scss'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n uploadEdits,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\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 [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n }, [handleFileChange, resetUploadEdits])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }\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 if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n if (uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) {\n return null\n }\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n </div>\n\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && savedDocumentData?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,QAAQ,QAAQ;AACzB,SAASC,OAAO,QAAQ;AACxB,OAAOC,KAAA,IAASC,QAAQ,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAC1E,SAASC,KAAK,QAAQ;AAEtB,SAASC,UAAU,QAAQ;AAC3B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,EAAEC,iBAAiB,QAAQ;AAC3C,SAASC,QAAQ,QAAQ;AACzB,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,iBAAiB,QAAQ;AAClC,SAASC,cAAc,QAAQ;AAC/B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,MAAM,QAAQ;AACvB,SAASC,QAAQ,QAAQ;AACzB,SAASC,UAAU,QAAQ;AAC3B,SAASC,WAAW,QAAQ;AAC5B,SAASC,YAAY,QAAQ;AAC7B,SAASC,SAAS,QAAQ;AAC1B,OAAO;AAEP,MAAMC,SAAA,GAAY;AAClB,OAAO,MAAMC,cAAA,GAAiB;AAC9B,OAAO,MAAMC,eAAA,GAAkB;AAE/B,MAAMC,QAAA,GAAYC,KAAA;EAChB,IAAI,CAACA,KAAA,IAASA,KAAA,KAAUC,SAAA,EAAW;IACjC,OAAO;EACT;EAEA,OAAO;AACT;AASA,OAAO,MAAMC,aAAA,GAAgBC,EAAA;EAAA,MAAAC,CAAA,GAAAnC,EAAA;EAAC;IAAAoC,aAAA;IAAAC,iBAAA;IAAAC,kBAAA;IAAAC;EAAA,IAAAL,EAKV;EAClB;IAAAM;EAAA,IAActB,cAAA;EACd;IAAAuB;EAAA,IAAsBxC,QAAA;EAAA,IAAAyC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,aAAA,IAAAD,CAAA,QAAAE,iBAAA,IAAAF,CAAA,QAAAG,kBAAA,IAAAH,CAAA,QAAAI,QAAA,IAAAJ,CAAA,QAAAM,SAAA,IAAAN,CAAA,QAAAK,CAAA;IAMbG,EAAA,GAAAC,MAAA,CAAAC,GAAA;IAAAC,GAAA;MAJT,MAAAC,oBAAA,GACE7C,OAAA,CAAQqC,QAAA,KAAaA,QAAA,KAAa,mBAAmBA,QAAA,KAAa;MAAA,IAEhE,CAACQ,oBAAA,KAAyB,CAACX,aAAA,IAAiBA,aAAA,CAAAY,MAAA,MAAyB;QAChEL,EAAA;QAAA,MAAAG,GAAA;MAAA;MAAA,IAAAG,EAAA;MAAA,IAAAd,CAAA,QAAAC,aAAA;QAoCJa,EAAA,GAAAb,aAAA,IACCA,aAAA,CAAAc,GAAA,CAAAC,KAEA;QAAAhB,CAAA,MAAAC,aAAA;QAAAD,CAAA,MAAAc,EAAA;MAAA;QAAAA,EAAA,GAAAd,CAAA;MAAA;MAnCJO,EAAA,GAAAU,KAAA,CAAC;QAAAC,SAAA,EAAe,GAAA1B,SAAA,kBAA8B;QAAA2B,QAAA,GAC3CP,oBAAA,IACCK,KAAA,CAAAjD,KAAA,CAAAC,QAAA;UAAAkD,QAAA,GACGhB,kBAAA,IACCiB,IAAA,CAAAnC,MAAA;YAAAoC,WAAA,EACc;YAAAH,SAAA,EACD,GAAA1B,SAAA,gBAA4B;YAAA8B,MAAA;YAAAC,OAAA,EAAAA,CAAA;cAGrCjB,SAAA,CAAAZ,eAAU;YAAA;YAAA8B,IAAA,EAEP;YAAAL,QAAA,EAEJd,CAAA,CAAE;UAAA,C,GAGNH,iBAAA,IACCkB,IAAA,CAAAnC,MAAA;YAAAoC,WAAA,EACc;YAAAH,SAAA,EACD,GAAA1B,SAAA,QAAoB;YAAA8B,MAAA;YAAAC,OAAA,EAAAA,CAAA;cAG7BjB,SAAA,CAAAb,cAAU;YAAA;YAAA+B,IAAA,EAEP;YAAAL,QAAA,EAEJd,CAAA,CAAE;UAAA,C;YAMVS,EAGC;MAAA,C;;;;;;;;;;;;;;;;;SAnCJP,E;CAsCJ;AAUA,OAAO,MAAMkB,MAAA,GAAgCC,KAAA;EAAA,MAAA1B,CAAA,GAAAnC,EAAA;EAC3C;IAAA8D,gBAAA;IAAAC,iBAAA;IAAAC;EAAA,IAA6D7C,cAAA;EAAA,IAAAe,EAAA;EAAA,IAAAC,CAAA,QAAA0B,KAAA,IAAA1B,CAAA,QAAA2B,gBAAA,IAAA3B,CAAA,QAAA4B,iBAAA,IAAA5B,CAAA,QAAA6B,WAAA;IAE3D9B,EAAA,GAAAqB,IAAA,CAAAU,SAAA;MAAA,GACMJ,KAAK;MAAAC,gBAAA;MAAAC,iBAAA;MAAAC;IAAA,C;;;;;;;;;SADX9B,E;CAOJ;AAQA,OAAO,MAAM+B,SAAA,GAAuCJ,KAAA;EAClD,MAAM;IACJK,cAAc;IACd9B,aAAa;IACb+B,YAAY;IACZC,QAAQ;IACRN,gBAAgB;IAChBC,iBAAiB;IACjBM,YAAY;IACZL;EAAW,CACZ,GAAGH,KAAA;EAEJ,MAAM;IACJS,MAAA,EAAQ;MACNC,MAAA,EAAQ;QAAEC;MAAG,CAAE;MACfC;IAAS;EACV,CACF,GAAG1D,SAAA;EAEJ,MAAM;IAAEyB;EAAC,CAAE,GAAGtB,cAAA;EACd,MAAM;IAAEwD;EAAW,CAAE,GAAG9D,OAAA;EACxB,MAAM;IAAE+D,EAAE;IAAEC,cAAc;IAAEC,iBAAiB;IAAEC;EAAe,CAAE,GAAG9D,eAAA;EACnE,MAAM+D,gBAAA,GAAmBlE,iBAAA;EACzB,MAAM;IAAEmE,YAAY;IAAEC,QAAQ;IAAEC,SAAS;IAAEnD;EAAK,CAAE,GAAGjB,QAAA,CAAe;IAClEqE,IAAA,EAAM;IACNrD;EACF;EAEA,MAAM,CAACsD,OAAA,EAASC,UAAA,CAAW,GAAG7E,QAAA,CAAwB;EACtD,MAAM,CAAC8E,WAAA,EAAaC,cAAA,CAAe,GAAG/E,QAAA,CAAS;EAC/C,MAAM,CAACgF,QAAA,EAAUC,WAAA,CAAY,GAAGjF,QAAA,CAAiBuB,KAAA,EAAO2D,IAAA,IAAQ;EAChE,MAAM,CAACC,YAAA,EAAcC,eAAA,CAAgB,GAAGpF,QAAA,CAAS;EACjD,MAAM,CAACqF,OAAA,EAASC,UAAA,CAAW,GAAGtF,QAAA,CAAiB;EAE/C,MAAMuF,WAAA,GAAcxF,MAAA,CAAyB;EAC7C,MAAMyF,QAAA,GAAWzF,MAAA,CAAyB;EAE1C,MAAM0F,kBAAA,GACJ,OAAO5B,YAAA,EAAc6B,QAAA,KAAa,YAAY7B,YAAA,CAAa6B,QAAQ,CAACC,SAAS,EAAEnD,MAAA,GAAS;EAE1F,MAAMoD,gBAAA,GAAmB/F,WAAA,CACtBgG,OAAA;IACC,IAAIA,OAAA,YAAmBC,IAAA,EAAM;MAC3BjB,UAAA,CAAWkB,GAAA,CAAIC,eAAe,CAACH,OAAA;IACjC;IAEApB,QAAA,CAASoB,OAAA;IACTT,eAAA,CAAgB;IAEhB,IAAI,OAAOxB,QAAA,KAAa,YAAY;MAClCA,QAAA,CAASiC,OAAA;IACX;EACF,GACA,CAACjC,QAAA,EAAUa,QAAA,CAAS;EAGtB,MAAMwB,UAAA,GAAaA,CAACC,YAAA,EAAoBC,OAAA;IACtC;IACA,MAAMN,SAAA,GAAU,IAAIC,IAAA,CAAK,CAACI,YAAA,CAAa,EAAEC,OAAA,EAAS;MAChDC,IAAA,EAAMF,YAAA,CAAaE,IAAI;MACvBC,YAAA,EAAcH,YAAA,CAAaG;IAC7B;IACA,OAAOR,SAAA;EACT;EAEA,MAAMS,oBAAA,GAAuB3G,KAAA,CAAME,WAAW,CAC3C0G,CAAA;IACC,MAAMC,eAAA,GAAkBD,CAAA,CAAEE,MAAM,CAAClF,KAAK;IAEtC,IAAIA,KAAA,EAAO;MACTqE,gBAAA,CAAiBK,UAAA,CAAW1E,KAAA,EAAOiF,eAAA;MACnCvB,WAAA,CAAYuB,eAAA;IACd;EACF,GACA,CAACZ,gBAAA,EAAkBrE,KAAA,CAAM;EAG3B,MAAMmF,mBAAA,GAAsB7G,WAAA,CACzB8G,KAAA;IACC,MAAMC,YAAA,GAAeD,KAAA,GAAQ,EAAE;IAC/Bf,gBAAA,CAAiBgB,YAAA;EACnB,GACA,CAAChB,gBAAA,CAAiB;EAGpB,MAAMiB,iBAAA,GAAoBhH,WAAA,CAAY;IACpCkF,cAAA,CAAe;IACfa,gBAAA,CAAiB;IACjBf,UAAA,CAAW;IACXS,UAAA,CAAW;IACXhC,gBAAA;IACA8B,eAAA,CAAgB;EAClB,GAAG,CAACQ,gBAAA,EAAkBtC,gBAAA,CAAiB;EAEvC,MAAMwD,WAAA,GAAcjH,WAAA,CACjBkH,IAAA;IACC7C,WAAA,CAAY;IACZX,iBAAA,CAAkBwD,IAAA;EACpB,GACA,CAAC7C,WAAA,EAAaX,iBAAA,CAAkB;EAGlC,MAAMyD,eAAA,GAAkB,MAAAA,CAAA;IACtB,IAAI,CAAC3B,OAAA,IAAWxB,YAAA,EAAc6B,QAAA,KAAa,OAAO;MAChD;IACF;IAEApB,eAAA,CAAgB;IAChB,IAAI;MACF;MACA,MAAM2C,cAAA,GAAiB,MAAMC,KAAA,CAAM7B,OAAA;MAEnC,IAAI,CAAC4B,cAAA,CAAeE,EAAE,EAAE;QACtB,MAAM,IAAIC,KAAA,CAAM,6BAA6BH,cAAA,CAAeI,MAAM,EAAE;MACtE;MAEA,MAAMC,IAAA,GAAO,MAAML,cAAA,CAAeK,IAAI;MACtC,MAAMC,QAAA,GAAWC,kBAAA,CAAmBnC,OAAA,CAAQoC,KAAK,CAAC,KAAKC,GAAG,MAAM;MAChE,MAAMC,IAAA,GAAO,IAAI7B,IAAA,CAAK,CAACwB,IAAA,CAAK,EAAEC,QAAA,EAAU;QAAEnB,IAAA,EAAMkB,IAAA,CAAKlB;MAAK;MAE1DR,gBAAA,CAAiB+B,IAAA;MACjBrD,eAAA,CAAgB;MAChB,QAAO;IACT,EAAE,OAAOsD,YAAA,EAAc;MACrB,IAAI,CAACnC,kBAAA,EAAoB;QACvB;QACAxF,KAAA,CAAM4H,KAAK,CAAC;QACZvD,eAAA,CAAgB;QAChB;MACF;IACF;IAEA;IACA,IAAI;MACF,MAAMoB,QAAA,GAAW,IAAIhC,cAAA,aAA2BS,EAAA,GAAK,IAAIA,EAAA,GAAK,GAAG,UAAU2D,kBAAA,CAAmBzC,OAAA,GAAU;MACxG,MAAM0C,cAAA,GAAiB,MAAMb,KAAA,CAAM,GAAGjD,SAAA,GAAYD,GAAA,GAAM0B,QAAA,EAAU;MAElE,IAAI,CAACqC,cAAA,CAAeZ,EAAE,EAAE;QACtB,MAAM,IAAIC,KAAA,CAAM,6BAA6BW,cAAA,CAAeV,MAAM,EAAE;MACtE;MAEA,MAAMC,MAAA,GAAO,MAAMS,cAAA,CAAeT,IAAI;MACtC,MAAMC,UAAA,GAAWC,kBAAA,CAAmBnC,OAAA,CAAQoC,KAAK,CAAC,KAAKC,GAAG,MAAM;MAChE,MAAMC,MAAA,GAAO,IAAI7B,IAAA,CAAK,CAACwB,MAAA,CAAK,EAAEC,UAAA,EAAU;QAAEnB,IAAA,EAAMkB,MAAA,CAAKlB;MAAK;MAE1DR,gBAAA,CAAiB+B,MAAA;MACjBrD,eAAA,CAAgB;IAClB,EAAE,OAAO0D,YAAA,EAAc;MACrB/H,KAAA,CAAM4H,KAAK,CAAC;MACZvD,eAAA,CAAgB;IAClB;EACF;EAEAxE,SAAA,CAAU;IACR,IAAI6D,YAAA,EAAcgE,IAAA,EAAMpG,KAAA,YAAiBuE,IAAA,EAAM;MAC7CjB,UAAA,CAAWkB,GAAA,CAAIC,eAAe,CAACrC,YAAA,CAAagE,IAAI,CAACpG,KAAK;MACtDwD,cAAA,CAAe;IACjB;EACF,GAAG,CAACpB,YAAA,CAAa;EAEjB7D,SAAA,CAAU;IACR,IAAIqF,YAAA,IAAgBI,WAAA,CAAY0C,OAAO,EAAE;MACvC;IAAA;EAEJ,GAAG,CAAC9C,YAAA,CAAa;EAEjBrF,SAAA,CAAU;IACR,IAAIyE,gBAAA,EAAkB;MACpBQ,cAAA,CAAe;IACjB;EACF,GAAG,CAACR,gBAAA,CAAiB;EAErB,MAAM2D,eAAA,GACJ9D,cAAA,EAAgB+D,MAAA,IAAU,YAAY/D,cAAA,IAAkBA,cAAA,EAAgBgE,MAAA;EAE1E,MAAMC,aAAA,GAAgBxE,YAAA,EAAcyE,UAAA,EAAY9F,MAAA,GAAS;EACzD,MAAM+F,gBAAA,GAAmBC,OAAA,CAAQ3E,YAAA,EAAc4E,aAAA;EAC/C;EACA,MAAMC,iBAAA,GAAoB7E,YAAA,EAAc8E,UAAA,KAAe;EAEvD,MAAM;IAAEC,IAAA,EAAMC,QAAA,GAAW,IAAI;IAAEF,UAAA,GAAa;EAAI,CAAE,GAAG9E,YAAA;EAErD,MAAMiF,cAAA,GAAiBH,UAAA,KAAeN,aAAA,IAAiBE,gBAAA,IAAoBG,iBAAgB;EAE3F,MAAMK,eAAA,GAAkBlF,YAAA,CAAamF,SAAS,EAAEC,IAAA,CAAK;EAErD,MAAMC,aAAA,GAAgBrF,YAAA,EAAcsF,SAAA,IAAa9E,iBAAA,EAAmB+E,SAAA;EAEpE,IAAIvF,YAAA,CAAawF,qBAAqB,IAAI,CAAChF,iBAAA,EAAmBW,QAAA,EAAU;IACtE,OAAO;EACT;EAEA,oBACEpC,KAAA,CAAC;IAAIC,SAAA,EAAW,CAAC1C,cAAA,EAAgBgB,SAAA,CAAU,CAACmI,MAAM,CAACd,OAAA,EAASS,IAAI,CAAC;4BAC/DlG,IAAA,CAAC7C,UAAA;MAAWqJ,OAAA,EAAS/E,YAAA;MAAcE,SAAA,EAAWA;QAC7CL,iBAAA,IAAqBA,iBAAA,CAAkBW,QAAQ,IAAI,CAACF,WAAA,iBACnD/B,IAAA,CAAC/B,WAAA;MACC0C,cAAA,EAAgBA,cAAA;MAChB8F,mBAAA,EAAqB5H,aAAA;MACrB6H,GAAA,EAAKpF,iBAAA;MACLxC,iBAAA,EAAmBgH,QAAA,IAAYC,cAAA;MAC/BY,YAAA,EAAcxB,eAAA,GAAkBrB,iBAAA,GAAoBrF,SAAA;MACpD6G,aAAA,EAAeA,aAAA;MACfsB,cAAA,EAAgB9F,YAAA,CAAa8F,cAAc;MAC3CT,aAAA,EAAeA,aAAA;MACfrF,YAAA,EAAcA;QAGhB,EAAEA,YAAA,CAAawF,qBAAqB,IAAI,CAAChF,iBAAA,EAAmBW,QAAA,IAAaF,WAAU,kBACnFlC,KAAA,CAAC;MAAIC,SAAA,EAAW,GAAG1B,SAAA,UAAmB;iBACnC,CAACI,KAAA,IAAS,CAAC4D,YAAA,iBACVpC,IAAA,CAACjC,QAAA;QAAS8C,QAAA,EAAU8C,mBAAA;kBAClB,aAAA9D,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAG1B,SAAA,mBAA4B;kCAC7CyB,KAAA,CAAC;YAAIC,SAAA,EAAW,GAAG1B,SAAA,mBAA4B;oCAC7C4B,IAAA,CAACnC,MAAA;cACCoC,WAAA,EAAY;cACZE,OAAA,EAASA,CAAA;gBACP,IAAIsC,QAAA,CAASyC,OAAO,EAAE;kBACpBzC,QAAA,CAASyC,OAAO,CAAC2B,KAAK;gBACxB;cACF;cACAzG,IAAA,EAAK;wBAEJnB,CAAA,CAAE;6BAELe,IAAA,CAAC;cACC8G,MAAA,EAAQd,eAAA;cACR,eAAY;cACZlG,SAAA,EAAW,GAAG1B,SAAA,gBAAyB;cACvC2I,MAAM;cACNlG,QAAA,EAAW2C,GAAA;gBACT,IAAIA,GAAA,CAAEE,MAAM,CAACE,KAAK,IAAIJ,GAAA,CAAEE,MAAM,CAACE,KAAK,CAACnE,MAAM,GAAG,GAAG;kBAC/CkE,mBAAA,CAAoBH,GAAA,CAAEE,MAAM,CAACE,KAAK;gBACpC;cACF;cACAoD,GAAA,EAAKvE,QAAA;cACLY,IAAA,EAAK;gBAENvC,YAAA,EAAc6B,QAAA,KAAa,sBAC1B9C,KAAA,CAAChD,QAAA;sCACCmD,IAAA,CAAC;gBAAKF,SAAA,EAAW,GAAG1B,SAAA,UAAmB;0BAAGa,CAAA,CAAE;+BAC5Ce,IAAA,CAACnC,MAAA;gBACCoC,WAAA,EAAY;gBACZE,OAAA,EAASA,CAAA;kBACPkC,eAAA,CAAgB;gBAClB;gBACAjC,IAAA,EAAK;0BAEJnB,CAAA,CAAE;;;2BAMXY,KAAA,CAAC;YAAEC,SAAA,EAAW,GAAG1B,SAAA,mBAA4B;uBAC1Ca,CAAA,CAAE,eAAc,KAAEA,CAAA,CAAE;;;UAK5BmD,YAAA,iBACCvC,KAAA,CAACjD,KAAA,CAAMC,QAAQ;gCACbgD,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAG1B,SAAA,oBAA6B;kCAE9C4B,IAAA,CAAC;YACCF,SAAA,EAAW,GAAG1B,SAAA,eAAwB;YACtCyC,QAAA,EAAW2C,GAAA;cACTjB,UAAA,CAAWiB,GAAA,CAAEE,MAAM,CAAClF,KAAK;YAC3B;YACAwI,GAAA,EAAKxE,WAAA;YACLyE,KAAA,EAAO3E,OAAA;YACPe,IAAA,EAAK;YACL7E,KAAA,EAAO8D;2BAETtC,IAAA,CAAC;YAAIF,SAAA,EAAW,GAAG1B,SAAA,iBAA0B;sBAC3C,aAAA4B,IAAA,CAAC;cACCF,SAAA,EAAW,GAAG1B,SAAA,YAAqB;cACnC+B,OAAA,EAASA,CAAA;gBACP,KAAK8D,eAAA;cACP;cACAZ,IAAA,EAAK;wBAEJpE,CAAA,CAAE;;;yBAITe,IAAA,CAACnC,MAAA;UACCoC,WAAA,EAAY;UACZH,SAAA,EAAW,GAAG1B,SAAA,UAAmB;UACjC8I,IAAA,EAAK;UACLC,SAAA,EAAU;UACVhH,OAAA,EAASA,CAAA;YACPkC,eAAA,CAAgB;UAClB;UACA+E,KAAK;UACLC,OAAA,EAASpI,CAAA,CAAE;;UAIhBT,KAAA,IAASqD,OAAA,iBACRhC,KAAA,CAACjD,KAAA,CAAMC,QAAQ;gCACbmD,IAAA,CAAC;UAAIF,SAAA,EAAW,GAAG1B,SAAA,kBAA2B;oBAC5C,aAAA4B,IAAA,CAAC7B,SAAA;YACCwC,cAAA,EAAgBA,cAAA;YAChBkB,OAAA,EAASlF,OAAA,CAAQ6B,KAAA,CAAM6E,IAAI,IAAIxB,OAAA,GAAU;;yBAG7ChC,KAAA,CAAC;UAAIC,SAAA,EAAW,GAAG1B,SAAA,oBAA6B;kCAE9C4B,IAAA,CAAC;YACCF,SAAA,EAAW,GAAG1B,SAAA,YAAqB;YACnCyC,QAAA,EAAU0C,oBAAA;YACV0D,KAAA,EAAOhF,QAAA,IAAYzD,KAAA,CAAM2D,IAAI;YAC7BkB,IAAA,EAAK;YACL7E,KAAA,EAAOyD,QAAA,IAAYzD,KAAA,CAAM2D;2BAE3BnC,IAAA,CAACtB,aAAA;YACCG,aAAA,EAAeA,aAAA;YACfC,iBAAA,EAAmBgH,QAAA,IAAYC,cAAA;YAC/BhH,kBAAA,EAAoBuG,aAAA,IAAiBhE,iBAAA,EAAmBW,QAAA,IAAY,CAACF,WAAA;YACrE/C,QAAA,EAAUR,KAAA,CAAM6E;;yBAGpBrD,IAAA,CAACnC,MAAA;UACCoC,WAAA,EAAY;UACZH,SAAA,EAAW,GAAG1B,SAAA,UAAmB;UACjC8I,IAAA,EAAK;UACLC,SAAA,EAAU;UACVhH,OAAA,EAAS2D,iBAAA;UACTsD,KAAK;UACLC,OAAA,EAASpI,CAAA,CAAE;;;QAMnB,CAAAT,KAAA,IAAS8C,iBAAA,EAAmBW,QAAO,kBACnCjC,IAAA,CAACtC,iBAAA;gBACC,aAAAsC,IAAA,CAAClC,MAAA;QAAOwJ,MAAA,EAAQ;QAAMC,IAAA,EAAMlJ,cAAA;kBAC1B,aAAA2B,IAAA,CAAChC,UAAA;UACCwG,QAAA,EAAUhG,KAAA,EAAO2D,IAAA,IAAQb,iBAAA,EAAmBW,QAAA;UAC5CJ,OAAA,EAASP,iBAAA,EAAmBkG,GAAA,IAAO3F,OAAA;UACnCsE,aAAA,EAAeA,aAAA;UACfsB,WAAA,EAAahH,WAAA,EAAaoF,IAAA,IAAQpH,SAAA;UAClCiJ,iBAAA,EAAmB;YACjBC,CAAA,EAAGlH,WAAA,EAAamF,UAAA,EAAY+B,CAAA,IAAKrG,iBAAA,EAAmBsG,MAAA,IAAU;YAC9DC,CAAA,EAAGpH,WAAA,EAAamF,UAAA,EAAYiC,CAAA,IAAKvG,iBAAA,EAAmBwG,MAAA,IAAU;UAChE;UACAC,MAAA,EAAQhE,WAAA;UACR+B,QAAA,EAAUA,QAAA;UACVC,cAAA,EAAgBA;;;QAKvBzE,iBAAA,IAAqBgE,aAAA,iBACpBtF,IAAA,CAAClC,MAAA;MACCgC,SAAA,EAAW,GAAG1B,SAAA,iBAA0B;MACxC4J,UAAU;MACVT,IAAA,EAAMjJ,eAAA;MACN2I,KAAA,EAAOhI,CAAA,CAAE,mBAAmB;QAAEgJ,KAAA,EAAO3G,iBAAA,CAAkBW;MAAS;gBAEhE,aAAAjC,IAAA,CAAC9B,YAAA;QACCwI,GAAA,EAAKpF,iBAAA;QACL6E,aAAA,EAAeA,aAAA;QACfrF,YAAA,EAAcA;;;;AAM1B;AAtc6B,SAAAlB,MAAAsI,YAAA,EAAAC,CAAA;EAAA,OAmDZnI,IAAA,CAAApD,KAAA,CAAAC,QAAA;IAAAkD,QAAA,EAAyBmI;EAAA,GAAJC,CAAA;AAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","t3","map","_temp","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","serverURL","setModified","id","docPermissions","savedDocumentData","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","name","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","newFile","File","URL","createObjectURL","renameFile","fileToChange","newName","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","file","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","delete","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, 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 './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, docPermissions, savedDocumentData, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\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 [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n (newFile: File) => {\n if (newFile instanceof File) {\n setFileSrc(URL.createObjectURL(newFile))\n }\n\n setValue(newFile)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(newFile)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange(renameFile(value, updatedFileName))\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange(fileToUpload)\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange(null)\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\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 const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange(file)\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n fileUrl,\n uploadConfig,\n setUploadStatus,\n handleFileChange,\n useServerSideFetch,\n collectionSlug,\n id,\n serverURL,\n api,\n ])\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 if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload =\n docPermissions?.update && 'delete' in docPermissions && docPermissions?.delete\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && savedDocumentData?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange(uploadControlFile)\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {savedDocumentData && savedDocumentData.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={savedDocumentData}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !savedDocumentData?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && savedDocumentData?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || savedDocumentData?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || savedDocumentData?.filename}\n fileSrc={savedDocumentData?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || savedDocumentData?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || savedDocumentData?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {savedDocumentData && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: savedDocumentData.filename })}\n >\n <PreviewSizes\n doc={savedDocumentData}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AASrF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AASrF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAgZ9C,CAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import * as qs from 'qs-esm';
|
|
5
5
|
import React, { useCallback, useEffect, useReducer, useState } from 'react';
|
|
6
6
|
import { useDebounce } from '../../../../hooks/useDebounce.js';
|
|
@@ -298,9 +298,12 @@ export const RelationshipFilter = props => {
|
|
|
298
298
|
}, [addOptionByID, findOptionsByValue, hasMany, hasMultipleRelations, relationTo, value, hasLoadedFirstOptions]);
|
|
299
299
|
const classes = ['field-type', baseClass, errorLoading && 'error-loading'].filter(Boolean).join(' ');
|
|
300
300
|
const valueToRender = findOptionsByValue() || value;
|
|
301
|
-
return /*#__PURE__*/
|
|
301
|
+
return /*#__PURE__*/_jsx("div", {
|
|
302
302
|
className: classes,
|
|
303
|
-
children:
|
|
303
|
+
children: errorLoading ? /*#__PURE__*/_jsx("div", {
|
|
304
|
+
className: `${baseClass}__error-loading`,
|
|
305
|
+
children: errorLoading
|
|
306
|
+
}) : /*#__PURE__*/_jsx(ReactSelect, {
|
|
304
307
|
disabled: disabled,
|
|
305
308
|
isMulti: hasMany,
|
|
306
309
|
isSortable: isSortable,
|
|
@@ -333,10 +336,7 @@ export const RelationshipFilter = props => {
|
|
|
333
336
|
options: options,
|
|
334
337
|
placeholder: placeholder,
|
|
335
338
|
value: valueToRender
|
|
336
|
-
})
|
|
337
|
-
className: `${baseClass}__error-loading`,
|
|
338
|
-
children: errorLoading
|
|
339
|
-
})]
|
|
339
|
+
})
|
|
340
340
|
});
|
|
341
341
|
};
|
|
342
342
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","isSortable","placeholder","hasMany","relationTo","filterOptions","onChange","value","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","undefined","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsxs","className","_jsx","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport optionsReducer from './optionsReducer.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin: { isSortable, placeholder } = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n `${serverURL}${api}/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {!errorLoading && (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n {errorLoading && <div className={`${baseClass}__error-loading`}>{errorLoading}</div>}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","isSortable","placeholder","hasMany","relationTo","filterOptions","onChange","value","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","undefined","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport optionsReducer from './optionsReducer.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin: { isSortable, placeholder } = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n `${serverURL}${api}/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,5 +10,5 @@ function require(m) {
|
|
|
10
10
|
}
|
|
11
11
|
// Workaround end
|
|
12
12
|
|
|
13
|
-
import{n as a}from"./chunk-
|
|
14
|
-
//# sourceMappingURL=DatePicker-
|
|
13
|
+
import{n as a}from"./chunk-TIQCV7VX.js";import"./chunk-5LKBKI4T.js";export{a as default};
|
|
14
|
+
//# sourceMappingURL=DatePicker-QBWPYX2E.js.map
|