@payloadcms/richtext-lexical 3.0.0-beta.119 → 3.0.0-beta.120
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/exports/client/RelationshipComponent-LBWKOBGF.js +2 -0
- package/dist/exports/client/RelationshipComponent-LBWKOBGF.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
- package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
- package/dist/exports/client/chunk-7SR2HYD6.js +2 -0
- package/dist/exports/client/chunk-7SR2HYD6.js.map +7 -0
- package/dist/exports/client/{chunk-QZNJUROL.js → chunk-XY4TCSM7.js} +2 -2
- package/dist/exports/client/component-4TP4L5EV.js +2 -0
- package/dist/exports/client/component-4TP4L5EV.js.map +7 -0
- package/dist/exports/client/index.js +7 -7
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +32 -37
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +27 -32
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +8 -9
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +10 -7
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
- package/dist/features/relationship/client/drawer/index.js +24 -23
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js +30 -28
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
- package/dist/features/upload/client/drawer/index.js +32 -32
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +63 -27
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
- package/package.json +7 -7
- package/dist/exports/client/RelationshipComponent-FTWR5YDX.js +0 -2
- package/dist/exports/client/RelationshipComponent-FTWR5YDX.js.map +0 -7
- package/dist/exports/client/chunk-WAMTSCVM.js +0 -2
- package/dist/exports/client/chunk-WAMTSCVM.js.map +0 -7
- package/dist/exports/client/component-6PBZ2U3Z.js +0 -2
- package/dist/exports/client/component-6PBZ2U3Z.js.map +0 -7
- /package/dist/exports/client/{chunk-QZNJUROL.js.map → chunk-XY4TCSM7.js.map} +0 -0
|
@@ -5,10 +5,11 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
|
|
|
5
5
|
import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
|
|
6
6
|
import { mergeRegister } from '@lexical/utils';
|
|
7
7
|
import { getTranslation } from '@payloadcms/translations';
|
|
8
|
-
import { Button, useConfig,
|
|
8
|
+
import { Button, useConfig, usePayloadAPI, useTranslation } from '@payloadcms/ui';
|
|
9
9
|
import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
|
|
10
10
|
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react';
|
|
11
11
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
12
|
+
import { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js';
|
|
12
13
|
import { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from '../drawer/commands.js';
|
|
13
14
|
import { $isRelationshipNode } from '../nodes/RelationshipNode.js';
|
|
14
15
|
const baseClass = 'lexical-relationship';
|
|
@@ -54,9 +55,11 @@ const Component = props => {
|
|
|
54
55
|
}] = usePayloadAPI(`${serverURL}${api}/${relatedCollection.slug}/${value}`, {
|
|
55
56
|
initialParams
|
|
56
57
|
});
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
const {
|
|
59
|
+
closeDocumentDrawer,
|
|
60
|
+
DocumentDrawer,
|
|
61
|
+
DocumentDrawerToggler
|
|
62
|
+
} = useLexicalDocumentDrawer({
|
|
60
63
|
id: value,
|
|
61
64
|
collectionSlug: relatedCollection.slug
|
|
62
65
|
});
|
|
@@ -72,9 +75,9 @@ const Component = props => {
|
|
|
72
75
|
...initialParams,
|
|
73
76
|
cacheBust
|
|
74
77
|
});
|
|
75
|
-
|
|
78
|
+
closeDocumentDrawer();
|
|
76
79
|
dispatchCacheBust();
|
|
77
|
-
}, [cacheBust, setParams,
|
|
80
|
+
}, [cacheBust, setParams, closeDocumentDrawer]);
|
|
78
81
|
const $onDelete = useCallback(payload => {
|
|
79
82
|
const deleteSelection = $getSelection();
|
|
80
83
|
if (isSelected && $isNodeSelection(deleteSelection)) {
|
|
@@ -133,7 +136,7 @@ const Component = props => {
|
|
|
133
136
|
buttonStyle: "icon-label",
|
|
134
137
|
className: `${baseClass}__swapButton`,
|
|
135
138
|
disabled: field?.admin?.readOnly,
|
|
136
|
-
el: "
|
|
139
|
+
el: "button",
|
|
137
140
|
icon: "swap",
|
|
138
141
|
onClick: () => {
|
|
139
142
|
if (nodeKey) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationshipComponent.js","names":["useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","useConfig","useDocumentDrawer","usePayloadAPI","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","React","useCallback","useEffect","useReducer","useRef","useState","useEditorConfigContext","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","$isRelationshipNode","baseClass","initialParams","depth","Component","props","data","relationTo","value","nodeKey","Error","relationshipElemRef","editor","isSelected","setSelected","clearSelection","field","config","collections","routes","api","serverURL","relatedCollection","setRelatedCollection","find","coll","slug","i18n","t","cacheBust","dispatchCacheBust","state","setParams","DocumentDrawer","DocumentDrawerToggler","closeDrawer","id","collectionSlug","removeRelationship","update","remove","updateRelationship","doc","$onDelete","payload","deleteSelection","event","preventDefault","getNodes","forEach","node","onClick","target","current","contains","shiftKey","registerCommand","_jsxs","className","filter","Boolean","join","contentEditable","ref","_jsx","label","labels","singular","admin","useAsTitle","isEditable","buttonStyle","disabled","readOnly","el","icon","dispatchCommand","replace","round","tooltip","e","onSave","RelationshipComponent"],"sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"sourcesContent":["'use client'\nimport type { ElementFormatType } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, useConfig, useDocumentDrawer, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { RelationshipData } from '../../server/nodes/RelationshipNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isRelationshipNode } from '../nodes/RelationshipNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-relationship'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n className?: string\n data: RelationshipData\n format?: ElementFormatType\n nodeKey?: string\n}\n\nconst Component: React.FC<Props> = (props) => {\n const {\n data: { relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Relationship value should be a string or number. The Lexical Relationship component should not receive the populated value object.',\n )\n }\n\n const relationshipElemRef = useRef<HTMLDivElement | null>(null)\n\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey!)\n const { field } = useEditorConfigContext()\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [relatedCollection, setRelatedCollection] = useState(\n () => collections.find((coll) => coll.slug === relationTo)!,\n )\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n const removeRelationship = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey!)?.remove()\n })\n }, [editor, nodeKey])\n\n const updateRelationship = React.useCallback(\n ({ doc }) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n closeDrawer()\n dispatchCacheBust()\n },\n [cacheBust, setParams, closeDrawer],\n )\n\n const $onDelete = useCallback(\n (payload: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n const event: KeyboardEvent = payload\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isRelationshipNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if relationshipElemRef.target or anything WITHIN relationshipElemRef.target was clicked\n if (\n event.target === relationshipElemRef.current ||\n relationshipElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={relationshipElemRef}\n >\n <div className={`${baseClass}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n </p>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <p className={`${baseClass}__title`}>\n {data ? data[relatedCollection?.admin?.useAsTitle || 'id'] : value}\n </p>\n </DocumentDrawerToggler>\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__swapButton`}\n disabled={field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n if (nodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }\n }}\n round\n tooltip={t('fields:swapRelationship')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeRelationship()\n }}\n round\n tooltip={t('fields:removeRelationship')}\n />\n </div>\n )}\n\n {!!value && <DocumentDrawer onSave={updateRelationship} />}\n </div>\n )\n}\n\nexport const RelationshipComponent = (props: Props): React.ReactNode => {\n return <Component {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"RelationshipComponent.js","names":["useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","useConfig","usePayloadAPI","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","React","useCallback","useEffect","useReducer","useRef","useState","useEditorConfigContext","useLexicalDocumentDrawer","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","$isRelationshipNode","baseClass","initialParams","depth","Component","props","data","relationTo","value","nodeKey","Error","relationshipElemRef","editor","isSelected","setSelected","clearSelection","field","config","collections","routes","api","serverURL","relatedCollection","setRelatedCollection","find","coll","slug","i18n","t","cacheBust","dispatchCacheBust","state","setParams","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","collectionSlug","removeRelationship","update","remove","updateRelationship","doc","$onDelete","payload","deleteSelection","event","preventDefault","getNodes","forEach","node","onClick","target","current","contains","shiftKey","registerCommand","_jsxs","className","filter","Boolean","join","contentEditable","ref","_jsx","label","labels","singular","admin","useAsTitle","isEditable","buttonStyle","disabled","readOnly","el","icon","dispatchCommand","replace","round","tooltip","e","onSave","RelationshipComponent"],"sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"sourcesContent":["'use client'\nimport type { ElementFormatType } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { Button, useConfig, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'\n\nimport type { RelationshipData } from '../../server/nodes/RelationshipNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isRelationshipNode } from '../nodes/RelationshipNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-relationship'\n\nconst initialParams = {\n depth: 0,\n}\n\ntype Props = {\n className?: string\n data: RelationshipData\n format?: ElementFormatType\n nodeKey?: string\n}\n\nconst Component: React.FC<Props> = (props) => {\n const {\n data: { relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Relationship value should be a string or number. The Lexical Relationship component should not receive the populated value object.',\n )\n }\n\n const relationshipElemRef = useRef<HTMLDivElement | null>(null)\n\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey!)\n const { field } = useEditorConfigContext()\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const [relatedCollection, setRelatedCollection] = useState(\n () => collections.find((coll) => coll.slug === relationTo)!,\n )\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const { closeDocumentDrawer, DocumentDrawer, DocumentDrawerToggler } = useLexicalDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n const removeRelationship = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey!)?.remove()\n })\n }, [editor, nodeKey])\n\n const updateRelationship = React.useCallback(\n ({ doc }) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n closeDocumentDrawer()\n dispatchCacheBust()\n },\n [cacheBust, setParams, closeDocumentDrawer],\n )\n\n const $onDelete = useCallback(\n (payload: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n const event: KeyboardEvent = payload\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isRelationshipNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n const onClick = useCallback(\n (payload: MouseEvent) => {\n const event = payload\n // Check if relationshipElemRef.target or anything WITHIN relationshipElemRef.target was clicked\n if (\n event.target === relationshipElemRef.current ||\n relationshipElemRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n [isSelected, setSelected, clearSelection],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(CLICK_COMMAND, onClick, COMMAND_PRIORITY_LOW),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected, onClick])\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={relationshipElemRef}\n >\n <div className={`${baseClass}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n </p>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <p className={`${baseClass}__title`}>\n {data ? data[relatedCollection?.admin?.useAsTitle || 'id'] : value}\n </p>\n </DocumentDrawerToggler>\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__swapButton`}\n disabled={field?.admin?.readOnly}\n el=\"button\"\n icon=\"swap\"\n onClick={() => {\n if (nodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }\n }}\n round\n tooltip={t('fields:swapRelationship')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeRelationship()\n }}\n round\n tooltip={t('fields:removeRelationship')}\n />\n </div>\n )}\n\n {!!value && <DocumentDrawer onSave={updateRelationship} />}\n </div>\n )\n}\n\nexport const RelationshipComponent = (props: Props): React.ReactNode => {\n return <Component {...props} />\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/drawer/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/drawer/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AAkC/D,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,IAAI,GAAG,MAAM,EAAE,CAAA;CACxC,CAAA;AAkDD,eAAO,MAAM,kBAAkB,UAAW,KAAK,KAAG,KAAK,CAAC,SAQvD,CAAA"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
6
|
-
import { useListDrawer } from '@payloadcms/ui';
|
|
7
6
|
import { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical';
|
|
8
7
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
8
|
+
import { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js';
|
|
9
9
|
import { $createRelationshipNode } from '../nodes/RelationshipNode.js';
|
|
10
10
|
import { INSERT_RELATIONSHIP_COMMAND } from '../plugins/index.js';
|
|
11
11
|
import { EnabledRelationshipsCondition } from '../utils/EnabledRelationshipsCondition.js';
|
|
@@ -49,35 +49,36 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
49
49
|
}
|
|
50
50
|
const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(t1);
|
|
51
51
|
const [replaceNodeKey, setReplaceNodeKey] = useState(null);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
const t2 = enabledCollectionSlugs ? enabledCollectionSlugs : undefined;
|
|
53
|
+
let t3;
|
|
54
|
+
if ($[2] !== t2 || $[3] !== selectedCollectionSlug) {
|
|
55
|
+
t3 = {
|
|
56
|
+
collectionSlugs: t2,
|
|
56
57
|
selectedCollection: selectedCollectionSlug
|
|
57
58
|
};
|
|
58
|
-
$[2] =
|
|
59
|
+
$[2] = t2;
|
|
59
60
|
$[3] = selectedCollectionSlug;
|
|
60
|
-
$[4] =
|
|
61
|
+
$[4] = t3;
|
|
61
62
|
} else {
|
|
62
|
-
|
|
63
|
+
t3 = $[4];
|
|
63
64
|
}
|
|
64
|
-
const [ListDrawer, ListDrawerToggler, t3] = useListDrawer(t2);
|
|
65
65
|
const {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
closeListDrawer,
|
|
67
|
+
isListDrawerOpen,
|
|
68
|
+
ListDrawer,
|
|
69
|
+
openListDrawer
|
|
70
|
+
} = useLexicalListDrawer(t3);
|
|
70
71
|
let t4;
|
|
71
72
|
let t5;
|
|
72
|
-
if ($[5] !== editor || $[6] !==
|
|
73
|
+
if ($[5] !== editor || $[6] !== openListDrawer) {
|
|
73
74
|
t4 = () => editor.registerCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, payload => {
|
|
74
75
|
setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null);
|
|
75
|
-
|
|
76
|
+
openListDrawer();
|
|
76
77
|
return true;
|
|
77
78
|
}, COMMAND_PRIORITY_EDITOR);
|
|
78
|
-
t5 = [editor,
|
|
79
|
+
t5 = [editor, openListDrawer];
|
|
79
80
|
$[5] = editor;
|
|
80
|
-
$[6] =
|
|
81
|
+
$[6] = openListDrawer;
|
|
81
82
|
$[7] = t4;
|
|
82
83
|
$[8] = t5;
|
|
83
84
|
} else {
|
|
@@ -86,7 +87,7 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
86
87
|
}
|
|
87
88
|
useEffect(t4, t5);
|
|
88
89
|
let t6;
|
|
89
|
-
if ($[9] !== editor || $[10] !== replaceNodeKey || $[11] !==
|
|
90
|
+
if ($[9] !== editor || $[10] !== replaceNodeKey || $[11] !== closeListDrawer) {
|
|
90
91
|
t6 = t7 => {
|
|
91
92
|
const {
|
|
92
93
|
collectionSlug,
|
|
@@ -98,11 +99,11 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
98
99
|
replaceNodeKey,
|
|
99
100
|
value: docID
|
|
100
101
|
});
|
|
101
|
-
|
|
102
|
+
closeListDrawer();
|
|
102
103
|
};
|
|
103
104
|
$[9] = editor;
|
|
104
105
|
$[10] = replaceNodeKey;
|
|
105
|
-
$[11] =
|
|
106
|
+
$[11] = closeListDrawer;
|
|
106
107
|
$[12] = t6;
|
|
107
108
|
} else {
|
|
108
109
|
t6 = $[12];
|
|
@@ -119,9 +120,9 @@ const RelationshipDrawerComponent = t0 => {
|
|
|
119
120
|
t7 = $[14];
|
|
120
121
|
}
|
|
121
122
|
let t8;
|
|
122
|
-
if ($[15] !==
|
|
123
|
-
t8 = [
|
|
124
|
-
$[15] =
|
|
123
|
+
if ($[15] !== isListDrawerOpen || $[16] !== enabledCollectionSlugs) {
|
|
124
|
+
t8 = [isListDrawerOpen, enabledCollectionSlugs];
|
|
125
|
+
$[15] = isListDrawerOpen;
|
|
125
126
|
$[16] = enabledCollectionSlugs;
|
|
126
127
|
$[17] = t8;
|
|
127
128
|
} else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$getNodeByKey","COMMAND_PRIORITY_EDITOR","React","useCallback","useEffect","useState","useLexicalListDrawer","$createRelationshipNode","INSERT_RELATIONSHIP_COMMAND","EnabledRelationshipsCondition","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","insertRelationship","editor","relationTo","replaceNodeKey","value","dispatchCommand","update","node","replace","RelationshipDrawerComponent","t0","$","enabledCollectionSlugs","t1","selectedCollectionSlug","setSelectedCollectionSlug","setReplaceNodeKey","t2","undefined","t3","collectionSlugs","selectedCollection","closeListDrawer","isListDrawerOpen","ListDrawer","openListDrawer","t4","t5","registerCommand","payload","nodeKey","t6","t7","collectionSlug","docID","onSelect","t8","t9","_jsx","RelationshipDrawer","props","length"],"sources":["../../../../../src/features/relationship/client/drawer/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js'\nimport { $createRelationshipNode } from '../nodes/RelationshipNode.js'\nimport { INSERT_RELATIONSHIP_COMMAND } from '../plugins/index.js'\nimport { EnabledRelationshipsCondition } from '../utils/EnabledRelationshipsCondition.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst insertRelationship = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_COMMAND, {\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace($createRelationshipNode({ relationTo, value }))\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: null | string[]\n}\n\nconst RelationshipDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs?.[0],\n )\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const { closeListDrawer, isListDrawerOpen, ListDrawer, openListDrawer } = useLexicalListDrawer({\n collectionSlugs: enabledCollectionSlugs ? enabledCollectionSlugs : undefined,\n selectedCollection: selectedCollectionSlug,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openListDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openListDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertRelationship({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeListDrawer()\n },\n [editor, closeListDrawer, replaceNodeKey],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs?.[0])\n }, [isListDrawerOpen, enabledCollectionSlugs])\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const RelationshipDrawer = (props: Props): React.ReactNode => {\n return (props?.enabledCollectionSlugs?.length ?? -1) > 0 ? ( // If enabledCollectionSlugs it overrides what EnabledRelationshipsCondition is doing\n <RelationshipDrawerComponent {...props} />\n ) : (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/upload/client/component/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/upload/client/component/index.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAsE,MAAM,OAAO,CAAA;AAG1F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAWlE,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAmPD,eAAO,MAAM,eAAe,UAAW,YAAY,KAAG,KAAK,CAAC,SAM3D,CAAA"}
|
|
@@ -5,11 +5,13 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
|
|
|
5
5
|
import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
|
|
6
6
|
import { mergeRegister } from '@lexical/utils';
|
|
7
7
|
import { getTranslation } from '@payloadcms/translations';
|
|
8
|
-
import { Button,
|
|
8
|
+
import { Button, File, formatDrawerSlug, useConfig, useEditDepth, usePayloadAPI, useTranslation } from '@payloadcms/ui';
|
|
9
9
|
import { $getNodeByKey, $getSelection, $isNodeSelection, CLICK_COMMAND, COMMAND_PRIORITY_LOW, KEY_BACKSPACE_COMMAND, KEY_DELETE_COMMAND } from 'lexical';
|
|
10
10
|
import React, { useCallback, useEffect, useId, useReducer, useRef, useState } from 'react';
|
|
11
11
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
12
12
|
import { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js';
|
|
13
|
+
import { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js';
|
|
14
|
+
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
13
15
|
import { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js';
|
|
14
16
|
import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js';
|
|
15
17
|
import { $isUploadNode } from '../nodes/UploadNode.js';
|
|
@@ -39,9 +41,6 @@ const Component = props => {
|
|
|
39
41
|
}
|
|
40
42
|
} = useConfig();
|
|
41
43
|
const uploadRef = useRef(null);
|
|
42
|
-
const {
|
|
43
|
-
closeModal
|
|
44
|
-
} = useModal();
|
|
45
44
|
const {
|
|
46
45
|
uuid
|
|
47
46
|
} = useEditorConfigContext();
|
|
@@ -59,13 +58,19 @@ const Component = props => {
|
|
|
59
58
|
const [cacheBust, dispatchCacheBust] = useReducer(state => state + 1, 0);
|
|
60
59
|
const [relatedCollection] = useState(() => collections.find(coll => coll.slug === relationTo));
|
|
61
60
|
const componentID = useId();
|
|
62
|
-
const
|
|
61
|
+
const extraFieldsDrawerSlug = formatDrawerSlug({
|
|
63
62
|
slug: `lexical-upload-drawer-` + uuid + componentID,
|
|
64
63
|
depth: editDepth
|
|
65
64
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
65
|
+
// Need to use hook to initialize useEffect that restores cursor position
|
|
66
|
+
const {
|
|
67
|
+
toggleDrawer
|
|
68
|
+
} = useLexicalDrawer(extraFieldsDrawerSlug, true);
|
|
69
|
+
const {
|
|
70
|
+
closeDocumentDrawer,
|
|
71
|
+
DocumentDrawer,
|
|
72
|
+
DocumentDrawerToggler
|
|
73
|
+
} = useLexicalDocumentDrawer({
|
|
69
74
|
id: value,
|
|
70
75
|
collectionSlug: relatedCollection.slug
|
|
71
76
|
});
|
|
@@ -89,8 +94,8 @@ const Component = props => {
|
|
|
89
94
|
cacheBust
|
|
90
95
|
});
|
|
91
96
|
dispatchCacheBust();
|
|
92
|
-
|
|
93
|
-
}, [setParams, cacheBust,
|
|
97
|
+
closeDocumentDrawer();
|
|
98
|
+
}, [setParams, cacheBust, closeDocumentDrawer]);
|
|
94
99
|
const $onDelete = useCallback(event => {
|
|
95
100
|
const deleteSelection = $getSelection();
|
|
96
101
|
if (isSelected && $isNodeSelection(deleteSelection)) {
|
|
@@ -135,8 +140,7 @@ const Component = props => {
|
|
|
135
140
|
uploadNode.setData(newData);
|
|
136
141
|
}
|
|
137
142
|
});
|
|
138
|
-
|
|
139
|
-
}, [closeModal, editor, drawerSlug, nodeKey]);
|
|
143
|
+
}, [editor, nodeKey]);
|
|
140
144
|
return /*#__PURE__*/_jsxs("div", {
|
|
141
145
|
className: [baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' '),
|
|
142
146
|
contentEditable: false,
|
|
@@ -160,24 +164,22 @@ const Component = props => {
|
|
|
160
164
|
children: getTranslation(relatedCollection.labels.singular, i18n)
|
|
161
165
|
}), editor.isEditable() && /*#__PURE__*/_jsxs("div", {
|
|
162
166
|
className: `${baseClass}__actions`,
|
|
163
|
-
children: [hasExtraFields ? /*#__PURE__*/_jsx(
|
|
167
|
+
children: [hasExtraFields ? /*#__PURE__*/_jsx(Button, {
|
|
168
|
+
buttonStyle: "icon-label",
|
|
164
169
|
className: `${baseClass}__upload-drawer-toggler`,
|
|
165
170
|
disabled: field?.admin?.readOnly,
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
},
|
|
174
|
-
round: true,
|
|
175
|
-
tooltip: t('fields:editRelationship')
|
|
176
|
-
})
|
|
171
|
+
el: "button",
|
|
172
|
+
icon: "edit",
|
|
173
|
+
onClick: () => {
|
|
174
|
+
toggleDrawer();
|
|
175
|
+
},
|
|
176
|
+
round: true,
|
|
177
|
+
tooltip: t('fields:editRelationship')
|
|
177
178
|
}) : null, /*#__PURE__*/_jsx(Button, {
|
|
178
179
|
buttonStyle: "icon-label",
|
|
180
|
+
className: `${baseClass}__swap-drawer-toggler`,
|
|
179
181
|
disabled: field?.admin?.readOnly,
|
|
180
|
-
el: "
|
|
182
|
+
el: "button",
|
|
181
183
|
icon: "swap",
|
|
182
184
|
onClick: () => {
|
|
183
185
|
editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {
|
|
@@ -193,8 +195,8 @@ const Component = props => {
|
|
|
193
195
|
className: `${baseClass}__removeButton`,
|
|
194
196
|
disabled: field?.admin?.readOnly,
|
|
195
197
|
icon: "x",
|
|
196
|
-
onClick:
|
|
197
|
-
|
|
198
|
+
onClick: e => {
|
|
199
|
+
e.preventDefault();
|
|
198
200
|
removeUpload();
|
|
199
201
|
},
|
|
200
202
|
round: true,
|
|
@@ -215,7 +217,7 @@ const Component = props => {
|
|
|
215
217
|
onSave: updateUpload
|
|
216
218
|
}) : null, hasExtraFields ? /*#__PURE__*/_jsx(FieldsDrawer, {
|
|
217
219
|
data: fields,
|
|
218
|
-
drawerSlug:
|
|
220
|
+
drawerSlug: extraFieldsDrawerSlug,
|
|
219
221
|
drawerTitle: t('general:editLabel', {
|
|
220
222
|
label: getTranslation(relatedCollection.labels.singular, i18n)
|
|
221
223
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","DrawerToggler","File","formatDrawerSlug","useConfig","useDocumentDrawer","useEditDepth","useModal","usePayloadAPI","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","React","useCallback","useEffect","useId","useReducer","useRef","useState","useEditorConfigContext","FieldsDrawer","EnabledRelationshipsCondition","INSERT_UPLOAD_WITH_DRAWER_COMMAND","$isUploadNode","baseClass","initialParams","depth","Component","props","data","fields","relationTo","value","nodeKey","Error","config","collections","routes","api","serverURL","uploadRef","closeModal","uuid","editDepth","editor","isSelected","setSelected","clearSelection","editorConfig","field","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","find","coll","slug","componentID","drawerSlug","DocumentDrawer","DocumentDrawerToggler","closeDrawer","id","collectionSlug","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","registerCommand","target","current","contains","shiftKey","hasExtraFields","resolvedFeatureMap","get","sanitizedClientFeatureProps","onExtraFieldsDrawerSubmit","_","uploadNode","newData","getData","setData","_jsxs","className","filter","Boolean","join","contentEditable","ref","_jsx","alt","filename","src","labels","singular","isEditable","disabled","admin","readOnly","buttonStyle","el","icon","onClick","e","round","tooltip","dispatchCommand","replace","onSave","drawerTitle","label","featureKey","handleDrawerSubmit","schemaPathSuffix","UploadComponent","uploads"],"sources":["../../../../../src/features/upload/client/component/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Data } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n DrawerToggler,\n File,\n formatDrawerSlug,\n useConfig,\n useDocumentDrawer,\n useEditDepth,\n useModal,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useId, useReducer, useRef, useState } from 'react'\n\nimport type { BaseClientFeatureProps } from '../../../typesClient.js'\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadNode } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isUploadNode } from '../nodes/UploadNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n nodeKey: string\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.',\n )\n }\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n const { closeModal } = useModal()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const { editorConfig, field } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(\n () => collections.find((coll) => coll.slug === relationTo)!,\n )\n\n const componentID = useId()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-upload-drawer-` + uuid + componentID, // There can be multiple upload components, each with their own drawer, in one single editor => separate them by componentID\n depth: editDepth,\n })\n\n const [DocumentDrawer, DocumentDrawerToggler, { closeDrawer }] = useDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (data: Data) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDrawer()\n },\n [setParams, cacheBust, closeDrawer],\n )\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isUploadNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n // Check if uploadRef.target or anything WITHIN uploadRef.target was clicked\n if (\n event.target === uploadRef.current ||\n uploadRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.sanitizedClientFeatureProps as BaseClientFeatureProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n const onExtraFieldsDrawerSubmit = useCallback(\n (_, data) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: null | UploadNode = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n\n closeModal(drawerSlug)\n },\n [closeModal, editor, drawerSlug, nodeKey],\n )\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={uploadRef}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use @payloadcms/ui/elements/Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? (\n <img\n alt={data?.filename}\n data-lexical-upload-id={value}\n data-lexical-upload-relation-to={relationTo}\n src={thumbnailSRC}\n />\n ) : (\n <File />\n )}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n {hasExtraFields ? (\n <DrawerToggler\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={field?.admin?.readOnly}\n slug={drawerSlug}\n >\n <Button\n buttonStyle=\"icon-label\"\n el=\"div\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n </DrawerToggler>\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n disabled={field?.admin?.readOnly}\n el=\"div\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n )}\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {value ? <DocumentDrawer onSave={updateUpload} /> : null}\n {hasExtraFields ? (\n <FieldsDrawer\n data={fields}\n drawerSlug={drawerSlug}\n drawerTitle={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n featureKey=\"upload\"\n handleDrawerSubmit={onExtraFieldsDrawerSubmit}\n schemaPathSuffix={relatedCollection.slug}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalNodeSelection","mergeRegister","getTranslation","Button","File","formatDrawerSlug","useConfig","useEditDepth","usePayloadAPI","useTranslation","$getNodeByKey","$getSelection","$isNodeSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","React","useCallback","useEffect","useId","useReducer","useRef","useState","useEditorConfigContext","FieldsDrawer","useLexicalDocumentDrawer","useLexicalDrawer","EnabledRelationshipsCondition","INSERT_UPLOAD_WITH_DRAWER_COMMAND","$isUploadNode","baseClass","initialParams","depth","Component","props","data","fields","relationTo","value","nodeKey","Error","config","collections","routes","api","serverURL","uploadRef","uuid","editDepth","editor","isSelected","setSelected","clearSelection","editorConfig","field","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","find","coll","slug","componentID","extraFieldsDrawerSlug","toggleDrawer","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","collectionSlug","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","registerCommand","target","current","contains","shiftKey","hasExtraFields","resolvedFeatureMap","get","sanitizedClientFeatureProps","onExtraFieldsDrawerSubmit","_","uploadNode","newData","getData","setData","_jsxs","className","filter","Boolean","join","contentEditable","ref","_jsx","alt","filename","src","labels","singular","isEditable","buttonStyle","disabled","admin","readOnly","el","icon","onClick","round","tooltip","dispatchCommand","replace","e","onSave","drawerSlug","drawerTitle","label","featureKey","handleDrawerSubmit","schemaPathSuffix","UploadComponent","uploads"],"sources":["../../../../../src/features/upload/client/component/index.tsx"],"sourcesContent":["'use client'\nimport type { BaseSelection } from 'lexical'\nimport type { ClientCollectionConfig, Data } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js'\nimport { mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n File,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n usePayloadAPI,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useId, useReducer, useRef, useState } from 'react'\n\nimport type { BaseClientFeatureProps } from '../../../typesClient.js'\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadNode } from '../nodes/UploadNode.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js'\nimport { $isUploadNode } from '../nodes/UploadNode.js'\nimport './index.scss'\n\nconst baseClass = 'lexical-upload'\n\nconst initialParams = {\n depth: 0,\n}\n\nexport type ElementProps = {\n data: UploadData\n nodeKey: string\n}\n\nconst Component: React.FC<ElementProps> = (props) => {\n const {\n data: { fields, relationTo, value },\n nodeKey,\n } = props\n\n if (typeof value === 'object') {\n throw new Error(\n 'Upload value should be a string or number. The Lexical Upload component should not receive the populated value object.',\n )\n }\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n const [editor] = useLexicalComposerContext()\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey)\n\n const { editorConfig, field } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(\n () => collections.find((coll) => coll.slug === relationTo)!,\n )\n\n const componentID = useId()\n\n const extraFieldsDrawerSlug = formatDrawerSlug({\n slug: `lexical-upload-drawer-` + uuid + componentID, // There can be multiple upload components, each with their own drawer, in one single editor => separate them by componentID\n depth: editDepth,\n })\n\n // Need to use hook to initialize useEffect that restores cursor position\n const { toggleDrawer } = useLexicalDrawer(extraFieldsDrawerSlug, true)\n\n const { closeDocumentDrawer, DocumentDrawer, DocumentDrawerToggler } = useLexicalDocumentDrawer({\n id: value,\n collectionSlug: relatedCollection.slug,\n })\n\n // Get the referenced document\n const [{ data }, { setParams }] = usePayloadAPI(\n `${serverURL}${api}/${relatedCollection.slug}/${value}`,\n { initialParams },\n )\n\n const thumbnailSRC = data?.thumbnailURL || data?.url\n\n const removeUpload = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const updateUpload = useCallback(\n (data: Data) => {\n setParams({\n ...initialParams,\n cacheBust, // do this to get the usePayloadAPI to re-fetch the data even though the URL string hasn't changed\n })\n\n dispatchCacheBust()\n closeDocumentDrawer()\n },\n [setParams, cacheBust, closeDocumentDrawer],\n )\n\n const $onDelete = useCallback(\n (event: KeyboardEvent) => {\n const deleteSelection = $getSelection()\n if (isSelected && $isNodeSelection(deleteSelection)) {\n event.preventDefault()\n editor.update(() => {\n deleteSelection.getNodes().forEach((node) => {\n if ($isUploadNode(node)) {\n node.remove()\n }\n })\n })\n }\n return false\n },\n [editor, isSelected],\n )\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (event: MouseEvent) => {\n // Check if uploadRef.target or anything WITHIN uploadRef.target was clicked\n if (\n event.target === uploadRef.current ||\n uploadRef.current?.contains(event.target as Node)\n ) {\n if (event.shiftKey) {\n setSelected(!isSelected)\n } else {\n if (!isSelected) {\n clearSelection()\n setSelected(true)\n }\n }\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n\n editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW),\n )\n }, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected])\n\n const hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.sanitizedClientFeatureProps as BaseClientFeatureProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n const onExtraFieldsDrawerSubmit = useCallback(\n (_, data) => {\n // Update lexical node (with key nodeKey) with new data\n editor.update(() => {\n const uploadNode: null | UploadNode = $getNodeByKey(nodeKey)\n if (uploadNode) {\n const newData: UploadData = {\n ...uploadNode.getData(),\n fields: data,\n }\n uploadNode.setData(newData)\n }\n })\n },\n [editor, nodeKey],\n )\n\n return (\n <div\n className={[baseClass, isSelected && `${baseClass}--selected`].filter(Boolean).join(' ')}\n contentEditable={false}\n ref={uploadRef}\n >\n <div className={`${baseClass}__card`}>\n <div className={`${baseClass}__topRow`}>\n {/* TODO: migrate to use @payloadcms/ui/elements/Thumbnail component */}\n <div className={`${baseClass}__thumbnail`}>\n {thumbnailSRC ? (\n <img\n alt={data?.filename}\n data-lexical-upload-id={value}\n data-lexical-upload-relation-to={relationTo}\n src={thumbnailSRC}\n />\n ) : (\n <File />\n )}\n </div>\n <div className={`${baseClass}__topRowRightPanel`}>\n <div className={`${baseClass}__collectionLabel`}>\n {getTranslation(relatedCollection.labels.singular, i18n)}\n </div>\n {editor.isEditable() && (\n <div className={`${baseClass}__actions`}>\n {hasExtraFields ? (\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__upload-drawer-toggler`}\n disabled={field?.admin?.readOnly}\n el=\"button\"\n icon=\"edit\"\n onClick={() => {\n toggleDrawer()\n }}\n round\n tooltip={t('fields:editRelationship')}\n />\n ) : null}\n\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__swap-drawer-toggler`}\n disabled={field?.admin?.readOnly}\n el=\"button\"\n icon=\"swap\"\n onClick={() => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: { nodeKey },\n })\n }}\n round\n tooltip={t('fields:swapUpload')}\n />\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__removeButton`}\n disabled={field?.admin?.readOnly}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeUpload()\n }}\n round\n tooltip={t('fields:removeUpload')}\n />\n </div>\n )}\n </div>\n </div>\n <div className={`${baseClass}__bottomRow`}>\n <DocumentDrawerToggler className={`${baseClass}__doc-drawer-toggler`}>\n <strong>{data?.filename}</strong>\n </DocumentDrawerToggler>\n </div>\n </div>\n {value ? <DocumentDrawer onSave={updateUpload} /> : null}\n {hasExtraFields ? (\n <FieldsDrawer\n data={fields}\n drawerSlug={extraFieldsDrawerSlug}\n drawerTitle={t('general:editLabel', {\n label: getTranslation(relatedCollection.labels.singular, i18n),\n })}\n featureKey=\"upload\"\n handleDrawerSubmit={onExtraFieldsDrawerSubmit}\n schemaPathSuffix={relatedCollection.slug}\n />\n ) : null}\n </div>\n )\n}\n\nexport const UploadComponent = (props: ElementProps): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <Component {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/upload/client/drawer/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/upload/client/drawer/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAA2C,MAAM,OAAO,CAAA;AA6C/D,KAAK,KAAK,GAAG;IACX,sBAAsB,EAAE,MAAM,EAAE,CAAA;CACjC,CAAA;AA0CD,eAAO,MAAM,YAAY,UAAW,KAAK,KAAG,KAAK,CAAC,SAMjD,CAAA"}
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
import { c as _c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
5
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
6
|
-
import { useListDrawer } from '@payloadcms/ui';
|
|
7
6
|
import { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical';
|
|
8
7
|
import React, { useCallback, useEffect, useState } from 'react';
|
|
8
|
+
import { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js';
|
|
9
9
|
import { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js';
|
|
10
10
|
import { $createUploadNode } from '../nodes/UploadNode.js';
|
|
11
11
|
import { INSERT_UPLOAD_COMMAND } from '../plugin/index.js';
|
|
@@ -57,64 +57,64 @@ const UploadDrawerComponent = t0 => {
|
|
|
57
57
|
} else {
|
|
58
58
|
t1 = $[1];
|
|
59
59
|
}
|
|
60
|
-
const [ListDrawer, ListDrawerToggler, t2] = useListDrawer(t1);
|
|
61
60
|
const {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
61
|
+
closeListDrawer,
|
|
62
|
+
ListDrawer,
|
|
63
|
+
openListDrawer
|
|
64
|
+
} = useLexicalListDrawer(t1);
|
|
65
|
+
let t2;
|
|
65
66
|
let t3;
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
t3 = () => editor.registerCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, payload => {
|
|
67
|
+
if ($[2] !== editor || $[3] !== openListDrawer) {
|
|
68
|
+
t2 = () => editor.registerCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, payload => {
|
|
69
69
|
setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null);
|
|
70
|
-
|
|
70
|
+
openListDrawer();
|
|
71
71
|
return true;
|
|
72
72
|
}, COMMAND_PRIORITY_EDITOR);
|
|
73
|
-
|
|
73
|
+
t3 = [editor, openListDrawer];
|
|
74
74
|
$[2] = editor;
|
|
75
|
-
$[3] =
|
|
76
|
-
$[4] =
|
|
77
|
-
$[5] =
|
|
75
|
+
$[3] = openListDrawer;
|
|
76
|
+
$[4] = t2;
|
|
77
|
+
$[5] = t3;
|
|
78
78
|
} else {
|
|
79
|
-
|
|
80
|
-
|
|
79
|
+
t2 = $[4];
|
|
80
|
+
t3 = $[5];
|
|
81
81
|
}
|
|
82
|
-
useEffect(
|
|
83
|
-
let
|
|
84
|
-
if ($[6] !==
|
|
85
|
-
|
|
82
|
+
useEffect(t2, t3);
|
|
83
|
+
let t4;
|
|
84
|
+
if ($[6] !== closeListDrawer || $[7] !== editor || $[8] !== replaceNodeKey) {
|
|
85
|
+
t4 = t5 => {
|
|
86
86
|
const {
|
|
87
87
|
collectionSlug,
|
|
88
88
|
docID
|
|
89
|
-
} =
|
|
89
|
+
} = t5;
|
|
90
|
+
closeListDrawer();
|
|
90
91
|
insertUpload({
|
|
91
92
|
editor,
|
|
92
93
|
relationTo: collectionSlug,
|
|
93
94
|
replaceNodeKey,
|
|
94
95
|
value: docID
|
|
95
96
|
});
|
|
96
|
-
closeDrawer();
|
|
97
97
|
};
|
|
98
|
-
$[6] =
|
|
99
|
-
$[7] =
|
|
100
|
-
$[8] =
|
|
101
|
-
$[9] =
|
|
98
|
+
$[6] = closeListDrawer;
|
|
99
|
+
$[7] = editor;
|
|
100
|
+
$[8] = replaceNodeKey;
|
|
101
|
+
$[9] = t4;
|
|
102
102
|
} else {
|
|
103
|
-
|
|
103
|
+
t4 = $[9];
|
|
104
104
|
}
|
|
105
|
-
const onSelect =
|
|
106
|
-
let
|
|
105
|
+
const onSelect = t4;
|
|
106
|
+
let t5;
|
|
107
107
|
if ($[10] !== onSelect || $[11] !== ListDrawer) {
|
|
108
|
-
|
|
108
|
+
t5 = _jsx(ListDrawer, {
|
|
109
109
|
onSelect
|
|
110
110
|
});
|
|
111
111
|
$[10] = onSelect;
|
|
112
112
|
$[11] = ListDrawer;
|
|
113
|
-
$[12] =
|
|
113
|
+
$[12] = t5;
|
|
114
114
|
} else {
|
|
115
|
-
|
|
115
|
+
t5 = $[12];
|
|
116
116
|
}
|
|
117
|
-
return
|
|
117
|
+
return t5;
|
|
118
118
|
};
|
|
119
119
|
export const UploadDrawer = props => {
|
|
120
120
|
return /*#__PURE__*/_jsx(EnabledRelationshipsCondition, {
|