@payloadcms/richtext-lexical 3.18.0 → 3.19.0-canary.9b65c78
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/Field-RG3FN6WF.js +2 -0
- package/dist/exports/client/Field-RG3FN6WF.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-JPESGV4Q.js +2 -0
- package/dist/exports/client/RelationshipComponent-JPESGV4Q.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-DBWINSQN.js +2 -0
- package/dist/exports/client/chunk-DBWINSQN.js.map +7 -0
- package/dist/exports/client/chunk-KDV47ZNZ.js +2 -0
- package/dist/exports/client/chunk-KDV47ZNZ.js.map +7 -0
- package/dist/exports/client/chunk-QP2NYEWJ.js +2 -0
- package/dist/exports/client/{chunk-HMZK3GHC.js.map → chunk-QP2NYEWJ.js.map} +4 -4
- package/dist/exports/client/component-VJVZFYZJ.js +2 -0
- package/dist/exports/client/component-VJVZFYZJ.js.map +7 -0
- package/dist/exports/client/componentInline-DTNGYZCL.js +2 -0
- package/dist/exports/client/index.js +10 -9
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +6 -42
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +1 -2
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +1 -7
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +4 -42
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js +3 -38
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +2 -1
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.d.ts +3 -0
- package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -0
- package/dist/lexical/plugins/DecoratorPlugin/index.js +79 -0
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -0
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.d.ts.map +1 -1
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +3 -1
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
- package/dist/lexical/utils/url.d.ts +20 -0
- package/dist/lexical/utils/url.d.ts.map +1 -1
- package/dist/lexical/utils/url.js +14 -3
- package/dist/lexical/utils/url.js.map +1 -1
- package/dist/lexical/utils/url.spec.js +32 -0
- package/dist/lexical/utils/url.spec.js.map +1 -0
- package/package.json +6 -6
- package/dist/exports/client/Field-F5XP4HL4.js +0 -2
- package/dist/exports/client/Field-F5XP4HL4.js.map +0 -7
- package/dist/exports/client/RelationshipComponent-BWAHSMVN.js +0 -2
- package/dist/exports/client/RelationshipComponent-BWAHSMVN.js.map +0 -7
- package/dist/exports/client/chunk-DIR6RNSY.js +0 -2
- package/dist/exports/client/chunk-DIR6RNSY.js.map +0 -7
- package/dist/exports/client/chunk-HMZK3GHC.js +0 -2
- package/dist/exports/client/chunk-RJTGMBHA.js +0 -3
- package/dist/exports/client/chunk-RJTGMBHA.js.map +0 -7
- package/dist/exports/client/chunk-TP3JCLAP.js +0 -2
- package/dist/exports/client/chunk-TP3JCLAP.js.map +0 -7
- package/dist/exports/client/component-53MM7FV7.js +0 -2
- package/dist/exports/client/component-53MM7FV7.js.map +0 -7
- package/dist/exports/client/component-FU65NQBY.js +0 -2
- package/dist/exports/client/component-FU65NQBY.js.map +0 -7
- package/dist/exports/client/componentInline-MX6DTKSG.js +0 -2
- package/dist/features/horizontalRule/client/component/index.d.ts +0 -10
- package/dist/features/horizontalRule/client/component/index.d.ts.map +0 -1
- package/dist/features/horizontalRule/client/component/index.js +0 -101
- package/dist/features/horizontalRule/client/component/index.js.map +0 -1
- /package/dist/exports/client/{componentInline-MX6DTKSG.js.map → componentInline-DTNGYZCL.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
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","fieldProps","readOnly","config","routes","api","serverURL","getEntityConfig","relatedCollection","setRelatedCollection","collectionSlug","i18n","t","cacheBust","dispatchCacheBust","state","setParams","slug","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","removeRelationship","update","remove","updateRelationship","$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","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 {\n fieldProps: { readOnly },\n } = useEditorConfigContext()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const [relatedCollection, setRelatedCollection] = useState(() =>\n getEntityConfig({ collectionSlug: 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 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 }, [cacheBust, setParams, closeDocumentDrawer])\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: relatedCollection.labels?.singular\n ? getTranslation(relatedCollection.labels?.singular, i18n)\n : relatedCollection.slug,\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={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={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","getTranslation","Button","useConfig","usePayloadAPI","useTranslation","$getNodeByKey","React","useCallback","useReducer","useRef","useState","useEditorConfigContext","useLexicalDocumentDrawer","INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND","baseClass","initialParams","depth","Component","props","data","relationTo","value","nodeKey","Error","relationshipElemRef","editor","fieldProps","readOnly","config","routes","api","serverURL","getEntityConfig","relatedCollection","collectionSlug","i18n","t","cacheBust","dispatchCacheBust","state","setParams","slug","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","removeRelationship","update","remove","updateRelationship","_jsxs","className","contentEditable","ref","_jsx","label","labels","singular","admin","useAsTitle","isEditable","buttonStyle","disabled","el","icon","onClick","dispatchCommand","replace","round","tooltip","e","preventDefault","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 { getTranslation } from '@payloadcms/translations'\nimport { Button, useConfig, usePayloadAPI, useTranslation } from '@payloadcms/ui'\nimport { $getNodeByKey } from 'lexical'\nimport React, { useCallback, 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 './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 {\n fieldProps: { readOnly },\n } = useEditorConfigContext()\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const [relatedCollection] = useState(() => getEntityConfig({ collectionSlug: relationTo }))\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 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 }, [cacheBust, setParams, closeDocumentDrawer])\n\n return (\n <div className={baseClass} contentEditable={false} ref={relationshipElemRef}>\n <div className={`${baseClass}__wrap`}>\n <p className={`${baseClass}__label`}>\n {t('fields:labelRelationship', {\n label: relatedCollection.labels?.singular\n ? getTranslation(relatedCollection.labels?.singular, i18n)\n : relatedCollection.slug,\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={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={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/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":"AAeA,OAAO,KAA2D,MAAM,OAAO,CAAA;AAG/E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAUlE,OAAO,cAAc,CAAA;AAQrB,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAiMD,eAAO,MAAM,eAAe,UAAW,YAAY,KAAG,KAAK,CAAC,SAM3D,CAAA"}
|
|
@@ -2,19 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
5
|
-
import { useLexicalNodeSelection } from '@lexical/react/useLexicalNodeSelection.js';
|
|
6
|
-
import { mergeRegister } from '@lexical/utils';
|
|
7
5
|
import { getTranslation } from '@payloadcms/translations';
|
|
8
6
|
import { Button, File, formatDrawerSlug, useConfig, useEditDepth, usePayloadAPI, useTranslation } from '@payloadcms/ui';
|
|
9
|
-
import { $getNodeByKey
|
|
10
|
-
import React, { useCallback,
|
|
7
|
+
import { $getNodeByKey } from 'lexical';
|
|
8
|
+
import React, { useCallback, useId, useReducer, useRef, useState } from 'react';
|
|
11
9
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
12
10
|
import { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js';
|
|
13
11
|
import { useLexicalDocumentDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDocumentDrawer.js';
|
|
14
12
|
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
15
13
|
import { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js';
|
|
16
14
|
import { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from '../drawer/commands.js';
|
|
17
|
-
import { $isUploadNode } from '../nodes/UploadNode.js';
|
|
18
15
|
const baseClass = 'lexical-upload';
|
|
19
16
|
const initialParams = {
|
|
20
17
|
depth: 0
|
|
@@ -46,7 +43,6 @@ const Component = props => {
|
|
|
46
43
|
} = useEditorConfigContext();
|
|
47
44
|
const editDepth = useEditDepth();
|
|
48
45
|
const [editor] = useLexicalComposerContext();
|
|
49
|
-
const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);
|
|
50
46
|
const {
|
|
51
47
|
editorConfig,
|
|
52
48
|
fieldProps: {
|
|
@@ -101,37 +97,6 @@ const Component = props => {
|
|
|
101
97
|
dispatchCacheBust();
|
|
102
98
|
closeDocumentDrawer();
|
|
103
99
|
}, [setParams, cacheBust, closeDocumentDrawer]);
|
|
104
|
-
const $onDelete = useCallback(event => {
|
|
105
|
-
const deleteSelection = $getSelection();
|
|
106
|
-
if (isSelected && $isNodeSelection(deleteSelection)) {
|
|
107
|
-
event.preventDefault();
|
|
108
|
-
editor.update(() => {
|
|
109
|
-
deleteSelection.getNodes().forEach(node => {
|
|
110
|
-
if ($isUploadNode(node)) {
|
|
111
|
-
node.remove();
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
return false;
|
|
117
|
-
}, [editor, isSelected]);
|
|
118
|
-
useEffect(() => {
|
|
119
|
-
return mergeRegister(editor.registerCommand(CLICK_COMMAND, event_0 => {
|
|
120
|
-
// Check if uploadRef.target or anything WITHIN uploadRef.target was clicked
|
|
121
|
-
if (event_0.target === uploadRef.current || uploadRef.current?.contains(event_0.target)) {
|
|
122
|
-
if (event_0.shiftKey) {
|
|
123
|
-
setSelected(!isSelected);
|
|
124
|
-
} else {
|
|
125
|
-
if (!isSelected) {
|
|
126
|
-
clearSelection();
|
|
127
|
-
setSelected(true);
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
return false;
|
|
133
|
-
}, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_DELETE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_BACKSPACE_COMMAND, $onDelete, COMMAND_PRIORITY_LOW));
|
|
134
|
-
}, [clearSelection, editor, isSelected, nodeKey, $onDelete, setSelected]);
|
|
135
100
|
const hasExtraFields = editorConfig?.resolvedFeatureMap?.get('upload')?.sanitizedClientFeatureProps.collections?.[relatedCollection.slug]?.hasExtraFields;
|
|
136
101
|
const onExtraFieldsDrawerSubmit = useCallback((_, data_1) => {
|
|
137
102
|
// Update lexical node (with key nodeKey) with new data
|
|
@@ -147,7 +112,7 @@ const Component = props => {
|
|
|
147
112
|
});
|
|
148
113
|
}, [editor, nodeKey]);
|
|
149
114
|
return /*#__PURE__*/_jsxs("div", {
|
|
150
|
-
className:
|
|
115
|
+
className: baseClass,
|
|
151
116
|
contentEditable: false,
|
|
152
117
|
ref: uploadRef,
|
|
153
118
|
children: [/*#__PURE__*/_jsxs("div", {
|
|
@@ -1 +1 @@
|
|
|
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","routes","api","serverURL","getEntityConfig","uploadRef","uuid","editDepth","editor","isSelected","setSelected","clearSelection","editorConfig","fieldProps","readOnly","schemaPath","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","collectionSlug","componentID","extraFieldsDrawerSlug","slug","toggleDrawer","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","$onDelete","event","deleteSelection","preventDefault","getNodes","forEach","node","registerCommand","target","current","contains","shiftKey","hasExtraFields","resolvedFeatureMap","get","sanitizedClientFeatureProps","collections","onExtraFieldsDrawerSubmit","_","uploadNode","newData","getData","setData","_jsxs","className","filter","Boolean","join","contentEditable","ref","_jsx","alt","filename","src","labels","singular","isEditable","buttonStyle","disabled","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 { ClientCollectionConfig, Data, FormState, JsonObject } 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 routes: { api },\n serverURL,\n },\n getEntityConfig,\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 {\n editorConfig,\n fieldProps: { readOnly, schemaPath },\n } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(() =>\n getEntityConfig({ collectionSlug: 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 (_: FormState, data: JsonObject) => {\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={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={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={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 schemaPath={schemaPath}\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","getTranslation","Button","File","formatDrawerSlug","useConfig","useEditDepth","usePayloadAPI","useTranslation","$getNodeByKey","React","useCallback","useId","useReducer","useRef","useState","useEditorConfigContext","FieldsDrawer","useLexicalDocumentDrawer","useLexicalDrawer","EnabledRelationshipsCondition","INSERT_UPLOAD_WITH_DRAWER_COMMAND","baseClass","initialParams","depth","Component","props","data","fields","relationTo","value","nodeKey","Error","config","routes","api","serverURL","getEntityConfig","uploadRef","uuid","editDepth","editor","editorConfig","fieldProps","readOnly","schemaPath","i18n","t","cacheBust","dispatchCacheBust","state","relatedCollection","collectionSlug","componentID","extraFieldsDrawerSlug","slug","toggleDrawer","closeDocumentDrawer","DocumentDrawer","DocumentDrawerToggler","id","setParams","thumbnailSRC","thumbnailURL","url","removeUpload","update","remove","updateUpload","hasExtraFields","resolvedFeatureMap","get","sanitizedClientFeatureProps","collections","onExtraFieldsDrawerSubmit","_","uploadNode","newData","getData","setData","_jsxs","className","contentEditable","ref","_jsx","alt","filename","src","labels","singular","isEditable","buttonStyle","disabled","el","icon","onClick","round","tooltip","dispatchCommand","replace","e","preventDefault","onSave","drawerSlug","drawerTitle","label","featureKey","handleDrawerSubmit","schemaPathSuffix","UploadComponent","uploads"],"sources":["../../../../../src/features/upload/client/component/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig, Data, FormState, JsonObject } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\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 { $getNodeByKey } from 'lexical'\nimport React, { useCallback, 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 './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 routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n const uploadRef = useRef<HTMLDivElement | null>(null)\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n const [editor] = useLexicalComposerContext()\n\n const {\n editorConfig,\n fieldProps: { readOnly, schemaPath },\n } = useEditorConfigContext()\n\n const { i18n, t } = useTranslation()\n const [cacheBust, dispatchCacheBust] = useReducer((state) => state + 1, 0)\n const [relatedCollection] = useState<ClientCollectionConfig>(() =>\n getEntityConfig({ collectionSlug: 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 hasExtraFields = (\n editorConfig?.resolvedFeatureMap?.get('upload')\n ?.sanitizedClientFeatureProps as BaseClientFeatureProps<UploadFeaturePropsClient>\n ).collections?.[relatedCollection.slug]?.hasExtraFields\n\n const onExtraFieldsDrawerSubmit = useCallback(\n (_: FormState, data: JsonObject) => {\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 className={baseClass} contentEditable={false} ref={uploadRef}>\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={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={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={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 schemaPath={schemaPath}\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":[]}
|