@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.
Files changed (57) hide show
  1. package/dist/exports/client/RelationshipComponent-LBWKOBGF.js +2 -0
  2. package/dist/exports/client/RelationshipComponent-LBWKOBGF.js.map +7 -0
  3. package/dist/exports/client/bundled.css +1 -1
  4. package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
  5. package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
  6. package/dist/exports/client/chunk-7SR2HYD6.js +2 -0
  7. package/dist/exports/client/chunk-7SR2HYD6.js.map +7 -0
  8. package/dist/exports/client/{chunk-QZNJUROL.js → chunk-XY4TCSM7.js} +2 -2
  9. package/dist/exports/client/component-4TP4L5EV.js +2 -0
  10. package/dist/exports/client/component-4TP4L5EV.js.map +7 -0
  11. package/dist/exports/client/index.js +7 -7
  12. package/dist/exports/client/index.js.map +4 -4
  13. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  14. package/dist/features/blocks/client/plugin/index.js +32 -37
  15. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  16. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  17. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +27 -32
  18. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  19. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
  20. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +8 -9
  21. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  22. package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
  23. package/dist/features/relationship/client/components/RelationshipComponent.js +10 -7
  24. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  25. package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
  26. package/dist/features/relationship/client/drawer/index.js +24 -23
  27. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  28. package/dist/features/upload/client/component/index.d.ts.map +1 -1
  29. package/dist/features/upload/client/component/index.js +30 -28
  30. package/dist/features/upload/client/component/index.js.map +1 -1
  31. package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
  32. package/dist/features/upload/client/drawer/index.js +32 -32
  33. package/dist/features/upload/client/drawer/index.js.map +1 -1
  34. package/dist/field/bundled.css +1 -1
  35. package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
  36. package/dist/utilities/fieldsDrawer/Drawer.js +63 -27
  37. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  38. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
  39. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
  40. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
  41. package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
  42. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
  43. package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
  44. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
  45. package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
  46. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
  47. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
  48. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
  49. package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
  50. package/package.json +7 -7
  51. package/dist/exports/client/RelationshipComponent-FTWR5YDX.js +0 -2
  52. package/dist/exports/client/RelationshipComponent-FTWR5YDX.js.map +0 -7
  53. package/dist/exports/client/chunk-WAMTSCVM.js +0 -2
  54. package/dist/exports/client/chunk-WAMTSCVM.js.map +0 -7
  55. package/dist/exports/client/component-6PBZ2U3Z.js +0 -2
  56. package/dist/exports/client/component-6PBZ2U3Z.js.map +0 -7
  57. /package/dist/exports/client/{chunk-QZNJUROL.js.map → chunk-XY4TCSM7.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAY3D,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,wBAAwB,CAmKlE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,KAAK,EAAe,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC1F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAY3D,MAAM,MAAM,kBAAkB,GAAG,qBAAqB,CAAA;AAEtD,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,wBAAwB,CAmKlE,CAAA"}
@@ -5,8 +5,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
6
6
  import { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils';
7
7
  import { getTranslation } from '@payloadcms/translations';
8
- import { formatDrawerSlug, useEditDepth, useFieldProps, useModal, useTranslation } from '@payloadcms/ui';
8
+ import { formatDrawerSlug, useEditDepth, useFieldProps, useTranslation } from '@payloadcms/ui';
9
9
  import { $createParagraphNode, $getNodeByKey, $getPreviousSelection, $getSelection, $insertNodes, $isParagraphNode, $isRangeSelection, $isRootOrShadowRoot, COMMAND_PRIORITY_EDITOR } from 'lexical';
10
+ import { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js';
10
11
  import React, { useEffect, useState } from 'react';
11
12
  import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
12
13
  import { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js';
@@ -14,12 +15,8 @@ import { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js';
14
15
  import { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
15
16
  import { INSERT_BLOCK_COMMAND, INSERT_INLINE_BLOCK_COMMAND, OPEN_INLINE_BLOCK_DRAWER_COMMAND } from './commands.js';
16
17
  export const BlocksPlugin = () => {
17
- const $ = _c(25);
18
+ const $ = _c(21);
18
19
  const [editor] = useLexicalComposerContext();
19
- const {
20
- closeModal,
21
- toggleModal
22
- } = useModal();
23
20
  const [blockFields, setBlockFields] = useState(null);
24
21
  const [blockType, setBlockType] = useState("");
25
22
  const [targetNodeKey, setTargetNodeKey] = useState(null);
@@ -48,6 +45,9 @@ export const BlocksPlugin = () => {
48
45
  t1 = $[2];
49
46
  }
50
47
  const drawerSlug = t1;
48
+ const {
49
+ toggleDrawer
50
+ } = useLexicalDrawer(drawerSlug);
51
51
  const {
52
52
  field: t2
53
53
  } = useEditorConfigContext();
@@ -56,7 +56,7 @@ export const BlocksPlugin = () => {
56
56
  } = t2;
57
57
  let t3;
58
58
  let t4;
59
- if ($[3] !== editor || $[4] !== targetNodeKey || $[5] !== toggleModal || $[6] !== drawerSlug) {
59
+ if ($[3] !== editor || $[4] !== targetNodeKey || $[5] !== toggleDrawer) {
60
60
  t3 = () => {
61
61
  if (!editor.hasNodes([BlockNode])) {
62
62
  throw new Error("BlocksPlugin: BlocksNode not registered on editor");
@@ -102,7 +102,7 @@ export const BlocksPlugin = () => {
102
102
  setTargetNodeKey(nodeKey ?? null);
103
103
  setBlockType(fields_0?.blockType ?? "");
104
104
  if (nodeKey) {
105
- toggleModal(drawerSlug);
105
+ toggleDrawer();
106
106
  return true;
107
107
  }
108
108
  let rangeSelection;
@@ -114,21 +114,20 @@ export const BlocksPlugin = () => {
114
114
  }
115
115
  });
116
116
  if (rangeSelection) {
117
- toggleModal(drawerSlug);
117
+ toggleDrawer();
118
118
  }
119
119
  return true;
120
120
  }, COMMAND_PRIORITY_EDITOR));
121
121
  };
122
- t4 = [editor, targetNodeKey, toggleModal, drawerSlug];
122
+ t4 = [editor, targetNodeKey, toggleDrawer];
123
123
  $[3] = editor;
124
124
  $[4] = targetNodeKey;
125
- $[5] = toggleModal;
126
- $[6] = drawerSlug;
127
- $[7] = t3;
128
- $[8] = t4;
125
+ $[5] = toggleDrawer;
126
+ $[6] = t3;
127
+ $[7] = t4;
129
128
  } else {
130
- t3 = $[7];
131
- t4 = $[8];
129
+ t3 = $[6];
130
+ t4 = $[7];
132
131
  }
133
132
  useEffect(t3, t4);
134
133
  if (!blockFields) {
@@ -138,7 +137,7 @@ export const BlocksPlugin = () => {
138
137
  const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`;
139
138
  let t5;
140
139
  let t6;
141
- if ($[9] !== richTextComponentMap || $[10] !== blockFields || $[11] !== i18n || $[12] !== t || $[13] !== closeModal || $[14] !== drawerSlug || $[15] !== blockType || $[16] !== editor || $[17] !== schemaFieldsPath) {
140
+ if ($[8] !== richTextComponentMap || $[9] !== blockFields || $[10] !== i18n || $[11] !== t || $[12] !== blockType || $[13] !== editor || $[14] !== drawerSlug || $[15] !== schemaFieldsPath) {
142
141
  t6 = Symbol.for("react.early_return_sentinel");
143
142
  bb0: {
144
143
  const blocksField = richTextComponentMap?.has(componentMapRenderedBlockPath) ? richTextComponentMap.get(componentMapRenderedBlockPath)[0] : null;
@@ -149,22 +148,19 @@ export const BlocksPlugin = () => {
149
148
  }
150
149
  const blockDisplayName = clientBlock?.labels?.singular ? getTranslation(clientBlock?.labels?.singular, i18n) : clientBlock?.slug;
151
150
  let t7;
152
- if ($[20] !== closeModal || $[21] !== drawerSlug || $[22] !== blockType || $[23] !== editor) {
151
+ if ($[18] !== blockType || $[19] !== editor) {
153
152
  t7 = (_fields, data) => {
154
- closeModal(drawerSlug);
155
153
  if (!data) {
156
154
  return;
157
155
  }
158
156
  data.blockType = blockType;
159
157
  editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data);
160
158
  };
161
- $[20] = closeModal;
162
- $[21] = drawerSlug;
163
- $[22] = blockType;
164
- $[23] = editor;
165
- $[24] = t7;
159
+ $[18] = blockType;
160
+ $[19] = editor;
161
+ $[20] = t7;
166
162
  } else {
167
- t7 = $[24];
163
+ t7 = $[20];
168
164
  }
169
165
  t5 = _jsx(FieldsDrawer, {
170
166
  data: blockFields,
@@ -179,20 +175,19 @@ export const BlocksPlugin = () => {
179
175
  schemaPathSuffix: blockFields?.blockType
180
176
  });
181
177
  }
182
- $[9] = richTextComponentMap;
183
- $[10] = blockFields;
184
- $[11] = i18n;
185
- $[12] = t;
186
- $[13] = closeModal;
178
+ $[8] = richTextComponentMap;
179
+ $[9] = blockFields;
180
+ $[10] = i18n;
181
+ $[11] = t;
182
+ $[12] = blockType;
183
+ $[13] = editor;
187
184
  $[14] = drawerSlug;
188
- $[15] = blockType;
189
- $[16] = editor;
190
- $[17] = schemaFieldsPath;
191
- $[18] = t5;
192
- $[19] = t6;
185
+ $[15] = schemaFieldsPath;
186
+ $[16] = t5;
187
+ $[17] = t6;
193
188
  } else {
194
- t5 = $[18];
195
- t6 = $[19];
189
+ t5 = $[16];
190
+ t6 = $[17];
196
191
  }
197
192
  if (t6 !== Symbol.for("react.early_return_sentinel")) {
198
193
  return t6;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$wrapNodeInElement","mergeRegister","getTranslation","formatDrawerSlug","useEditDepth","useFieldProps","useModal","useTranslation","$createParagraphNode","$getNodeByKey","$getPreviousSelection","$getSelection","$insertNodes","$isParagraphNode","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","React","useEffect","useState","useEditorConfigContext","FieldsDrawer","$createBlockNode","BlockNode","$createInlineBlockNode","$isInlineBlockNode","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND","OPEN_INLINE_BLOCK_DRAWER_COMMAND","BlocksPlugin","$","editor","closeModal","toggleModal","blockFields","setBlockFields","blockType","setBlockType","targetNodeKey","setTargetNodeKey","i18n","t","schemaPath","uuid","editDepth","t0","t1","slug","depth","drawerSlug","field","t2","richTextComponentMap","t3","t4","hasNodes","Error","registerCommand","payload","update","selection","blockNode","focus","focusNode","getNode","getTextContentSize","getParentOrThrow","getChildren","filter","node","length","remove","fields","node_0","setFields","inlineBlockNode","selectEnd","t5","fields_0","nodeKey","rangeSelection","getEditorState","read","selection_0","schemaFieldsPath","componentMapRenderedBlockPath","t6","Symbol","for","bb0","blocksField","has","get","clientBlock","blocks","find","block","blockDisplayName","labels","singular","t7","_fields","data","dispatchCommand","_jsx","drawerTitle","id","label","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix"],"sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatDrawerSlug,\n useEditDepth,\n useFieldProps,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getPreviousSelection,\n $getSelection,\n $insertNodes,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n type RangeSelection,\n} from 'lexical'\nimport React, { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { BlockFields, BlockFieldsOptionalID } from '../../server/nodes/BlocksNode.js'\nimport type { BlocksFeatureClientProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport {\n INSERT_BLOCK_COMMAND,\n INSERT_INLINE_BLOCK_COMMAND,\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n} from './commands.js'\n\nexport type InsertBlockPayload = BlockFieldsOptionalID\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const { closeModal, toggleModal } = useModal()\n const [blockFields, setBlockFields] = useState<BlockFields | null>(null)\n const [blockType, setBlockType] = useState<string>('' as any)\n const [targetNodeKey, setTargetNodeKey] = useState<null | string>(null)\n const { i18n, t } = useTranslation<string, any>()\n const { schemaPath } = useFieldProps()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuid,\n depth: editDepth,\n })\n\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n useEffect(() => {\n if (!editor.hasNodes([BlockNode])) {\n throw new Error('BlocksPlugin: BlocksNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertBlockPayload>(\n INSERT_BLOCK_COMMAND,\n (payload: InsertBlockPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const blockNode = $createBlockNode(payload)\n // Insert blocks node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(blockNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n INSERT_INLINE_BLOCK_COMMAND,\n (fields) => {\n if (targetNodeKey) {\n const node = $getNodeByKey(targetNodeKey)\n\n if (!node || !$isInlineBlockNode(node)) {\n return false\n }\n\n node.setFields(fields as BlockFields)\n\n setTargetNodeKey(null)\n return true\n }\n\n const inlineBlockNode = $createInlineBlockNode(fields as BlockFields)\n $insertNodes([inlineBlockNode])\n if ($isRootOrShadowRoot(inlineBlockNode.getParentOrThrow())) {\n $wrapNodeInElement(inlineBlockNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n ({ fields, nodeKey }) => {\n setBlockFields((fields as BlockFields) ?? null)\n setTargetNodeKey(nodeKey ?? null)\n setBlockType(fields?.blockType ?? ('' as any))\n\n if (nodeKey) {\n toggleModal(drawerSlug)\n return true\n }\n\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n //setLastSelection(rangeSelection)\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleModal, drawerSlug])\n\n if (!blockFields) {\n return null\n }\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.lexical_inline_blocks.${blockFields?.blockType}`\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.has(componentMapRenderedBlockPath)\n ? richTextComponentMap.get(componentMapRenderedBlockPath)[0]\n : null\n\n const clientBlock = blocksField\n ? blocksField.blocks.find((block) => block.slug === blockFields?.blockType)\n : null\n\n if (!blocksField) {\n return null\n }\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels?.singular, i18n)\n : clientBlock?.slug\n\n return (\n <FieldsDrawer\n data={blockFields}\n drawerSlug={drawerSlug}\n drawerTitle={t(`lexical:blocks:inlineBlocks:${blockFields?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n featureKey=\"blocks\"\n fieldMapOverride={clientBlock?.fields}\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaFieldsPathOverride={schemaFieldsPath}\n schemaPathSuffix={blockFields?.blockType}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$insertNodeToNearestRoot","$wrapNodeInElement","mergeRegister","getTranslation","formatDrawerSlug","useEditDepth","useFieldProps","useTranslation","$createParagraphNode","$getNodeByKey","$getPreviousSelection","$getSelection","$insertNodes","$isParagraphNode","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useLexicalDrawer","React","useEffect","useState","useEditorConfigContext","FieldsDrawer","$createBlockNode","BlockNode","$createInlineBlockNode","$isInlineBlockNode","INSERT_BLOCK_COMMAND","INSERT_INLINE_BLOCK_COMMAND","OPEN_INLINE_BLOCK_DRAWER_COMMAND","BlocksPlugin","$","editor","blockFields","setBlockFields","blockType","setBlockType","targetNodeKey","setTargetNodeKey","i18n","t","schemaPath","uuid","editDepth","t0","t1","slug","depth","drawerSlug","toggleDrawer","field","t2","richTextComponentMap","t3","t4","hasNodes","Error","registerCommand","payload","update","selection","blockNode","focus","focusNode","getNode","getTextContentSize","getParentOrThrow","getChildren","filter","node","length","remove","fields","node_0","setFields","inlineBlockNode","selectEnd","t5","fields_0","nodeKey","rangeSelection","getEditorState","read","selection_0","schemaFieldsPath","componentMapRenderedBlockPath","t6","Symbol","for","bb0","blocksField","has","get","clientBlock","blocks","find","block","blockDisplayName","labels","singular","t7","_fields","data","dispatchCommand","_jsx","drawerTitle","id","label","featureKey","fieldMapOverride","handleDrawerSubmit","schemaFieldsPathOverride","schemaPathSuffix"],"sources":["../../../../../src/features/blocks/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n formatDrawerSlug,\n useEditDepth,\n useFieldProps,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getPreviousSelection,\n $getSelection,\n $insertNodes,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n type RangeSelection,\n} from 'lexical'\nimport { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js'\nimport React, { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { BlockFields, BlockFieldsOptionalID } from '../../server/nodes/BlocksNode.js'\nimport type { BlocksFeatureClientProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport {\n INSERT_BLOCK_COMMAND,\n INSERT_INLINE_BLOCK_COMMAND,\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n} from './commands.js'\n\nexport type InsertBlockPayload = BlockFieldsOptionalID\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const [blockFields, setBlockFields] = useState<BlockFields | null>(null)\n const [blockType, setBlockType] = useState<string>('' as any)\n const [targetNodeKey, setTargetNodeKey] = useState<null | string>(null)\n const { i18n, t } = useTranslation<string, any>()\n const { schemaPath } = useFieldProps()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n\n useEffect(() => {\n if (!editor.hasNodes([BlockNode])) {\n throw new Error('BlocksPlugin: BlocksNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertBlockPayload>(\n INSERT_BLOCK_COMMAND,\n (payload: InsertBlockPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const blockNode = $createBlockNode(payload)\n // Insert blocks node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(blockNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n INSERT_INLINE_BLOCK_COMMAND,\n (fields) => {\n if (targetNodeKey) {\n const node = $getNodeByKey(targetNodeKey)\n\n if (!node || !$isInlineBlockNode(node)) {\n return false\n }\n\n node.setFields(fields as BlockFields)\n\n setTargetNodeKey(null)\n return true\n }\n\n const inlineBlockNode = $createInlineBlockNode(fields as BlockFields)\n $insertNodes([inlineBlockNode])\n if ($isRootOrShadowRoot(inlineBlockNode.getParentOrThrow())) {\n $wrapNodeInElement(inlineBlockNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n ({ fields, nodeKey }) => {\n setBlockFields((fields as BlockFields) ?? null)\n setTargetNodeKey(nodeKey ?? null)\n setBlockType(fields?.blockType ?? ('' as any))\n\n if (nodeKey) {\n toggleDrawer()\n return true\n }\n\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n //setLastSelection(rangeSelection)\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleDrawer])\n\n if (!blockFields) {\n return null\n }\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.lexical_inline_blocks.${blockFields?.blockType}`\n\n const componentMapRenderedBlockPath = `lexical_internal_feature.blocks.fields.lexical_inline_blocks`\n const blocksField: BlocksFieldClient = richTextComponentMap?.has(componentMapRenderedBlockPath)\n ? richTextComponentMap.get(componentMapRenderedBlockPath)[0]\n : null\n\n const clientBlock = blocksField\n ? blocksField.blocks.find((block) => block.slug === blockFields?.blockType)\n : null\n\n if (!blocksField) {\n return null\n }\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels?.singular, i18n)\n : clientBlock?.slug\n\n return (\n <FieldsDrawer\n data={blockFields}\n drawerSlug={drawerSlug}\n drawerTitle={t(`lexical:blocks:inlineBlocks:${blockFields?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n featureKey=\"blocks\"\n fieldMapOverride={clientBlock?.fields}\n handleDrawerSubmit={(_fields, data) => {\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaFieldsPathOverride={schemaFieldsPath}\n schemaPathSuffix={blockFields?.blockType}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAShC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIjE,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IAC1D,GAAG,EAAE,CACH,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,KACvD,IAAI,CAAA;CACV,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B,CAAC,CAAA;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,EAAE,CAExD,CAAA;AAED,eAAO,MAAM,WAAW,iCAMtB,CAAA;AAEF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,eAwBnE;AAED,eAAO,MAAM,WAAW,EAAE,eA+DzB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,kBAAkB,EAClB,KAAK,EACL,cAAc,EACd,aAAa,EACb,WAAW,EAEZ,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAUhC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAIjE,OAAO,cAAc,CAAA;AAErB,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAA;IACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAAA;IAC1D,GAAG,EAAE,CACH,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,EACzC,iBAAiB,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,KACvD,IAAI,CAAA;CACV,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAA;IACzC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACtD,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,kBAAkB,CAAA;CAC3B,CAAC,CAAA;AAEF,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC,EAAE,CAExD,CAAA;AAED,eAAO,MAAM,WAAW,iCAMtB,CAAA;AAEF,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,eAwBnE;AAED,eAAO,MAAM,WAAW,EAAE,eA6DzB,CAAA"}
@@ -6,8 +6,9 @@ import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext
6
6
  import { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin';
7
7
  import { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table';
8
8
  import { mergeRegister } from '@lexical/utils';
9
- import { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui';
9
+ import { formatDrawerSlug, useEditDepth } from '@payloadcms/ui';
10
10
  import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
11
+ import { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js';
11
12
  import { createContext, useContext, useEffect, useMemo, useState } from 'react';
12
13
  import * as React from 'react';
13
14
  import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
@@ -42,13 +43,9 @@ export function TableContext({
42
43
  });
43
44
  }
44
45
  export const TablePlugin = () => {
45
- const $ = _c(19);
46
+ const $ = _c(15);
46
47
  const [editor] = useLexicalComposerContext();
47
48
  const cellContext = useContext(CellContext);
48
- const {
49
- closeModal,
50
- toggleModal
51
- } = useModal();
52
49
  const editDepth = useEditDepth();
53
50
  const {
54
51
  uuid
@@ -67,8 +64,11 @@ export const TablePlugin = () => {
67
64
  t1 = $[2];
68
65
  }
69
66
  const drawerSlug = t1;
67
+ const {
68
+ toggleDrawer
69
+ } = useLexicalDrawer(drawerSlug);
70
70
  let t2;
71
- if ($[3] !== editor || $[4] !== toggleModal || $[5] !== drawerSlug) {
71
+ if ($[3] !== editor || $[4] !== toggleDrawer) {
72
72
  t2 = () => {
73
73
  if (!editor.hasNodes([TableNode])) {
74
74
  throw new Error("TablePlugin: TableNode is not registered on editor");
@@ -83,34 +83,31 @@ export const TablePlugin = () => {
83
83
  }
84
84
  });
85
85
  if (rangeSelection) {
86
- toggleModal(drawerSlug);
86
+ toggleDrawer();
87
87
  }
88
88
  return true;
89
89
  }, COMMAND_PRIORITY_EDITOR));
90
90
  };
91
91
  $[3] = editor;
92
- $[4] = toggleModal;
93
- $[5] = drawerSlug;
94
- $[6] = t2;
92
+ $[4] = toggleDrawer;
93
+ $[5] = t2;
95
94
  } else {
96
- t2 = $[6];
95
+ t2 = $[5];
97
96
  }
98
97
  let t3;
99
- if ($[7] !== cellContext || $[8] !== drawerSlug || $[9] !== editor || $[10] !== toggleModal) {
100
- t3 = [cellContext, drawerSlug, editor, toggleModal];
101
- $[7] = cellContext;
102
- $[8] = drawerSlug;
103
- $[9] = editor;
104
- $[10] = toggleModal;
105
- $[11] = t3;
98
+ if ($[6] !== cellContext || $[7] !== editor || $[8] !== toggleDrawer) {
99
+ t3 = [cellContext, editor, toggleDrawer];
100
+ $[6] = cellContext;
101
+ $[7] = editor;
102
+ $[8] = toggleDrawer;
103
+ $[9] = t3;
106
104
  } else {
107
- t3 = $[11];
105
+ t3 = $[9];
108
106
  }
109
107
  useEffect(t2, t3);
110
108
  let t4;
111
- if ($[12] !== closeModal || $[13] !== drawerSlug || $[14] !== editor) {
109
+ if ($[10] !== editor) {
112
110
  t4 = (_fields, data) => {
113
- closeModal(drawerSlug);
114
111
  if (!data.columns || !data.rows) {
115
112
  return;
116
113
  }
@@ -119,15 +116,13 @@ export const TablePlugin = () => {
119
116
  rows: String(data.rows)
120
117
  });
121
118
  };
122
- $[12] = closeModal;
123
- $[13] = drawerSlug;
124
- $[14] = editor;
125
- $[15] = t4;
119
+ $[10] = editor;
120
+ $[11] = t4;
126
121
  } else {
127
- t4 = $[15];
122
+ t4 = $[11];
128
123
  }
129
124
  let t5;
130
- if ($[16] !== drawerSlug || $[17] !== t4) {
125
+ if ($[12] !== drawerSlug || $[13] !== t4) {
131
126
  t5 = _jsxs(React.Fragment, {
132
127
  children: [_jsx(FieldsDrawer, {
133
128
  drawerSlug,
@@ -140,11 +135,11 @@ export const TablePlugin = () => {
140
135
  hasCellMerge: true
141
136
  })]
142
137
  });
143
- $[16] = drawerSlug;
144
- $[17] = t4;
145
- $[18] = t5;
138
+ $[12] = drawerSlug;
139
+ $[13] = t4;
140
+ $[14] = t5;
146
141
  } else {
147
- t5 = $[18];
142
+ t5 = $[14];
148
143
  }
149
144
  return t5;
150
145
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","useModal","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","closeModal","toggleModal","editDepth","uuid","t0","t1","slug","depth","drawerSlug","t2","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t3","t4","_fields","data","columns","rows","dispatchCommand","String","t5","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const { uuid } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, drawerSlug, editor, toggleModal])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","useLexicalDrawer","createContext","useContext","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","Provider","value","$","editor","cellContext","editDepth","uuid","t0","t1","slug","depth","drawerSlug","toggleDrawer","t2","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t3","t4","_fields","data","columns","rows","dispatchCommand","String","t5","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth, useModal } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { useLexicalDrawer } from 'packages/richtext-lexical/src/utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const editDepth = useEditDepth()\n const { uuid } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAYA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,WAAA,IAAeC,uBAAuB,QAAQ;AACvD,SAASC,oBAAoB,EAAEC,SAAS,QAAQ;AAChD,SAASC,aAAa,QAAQ;AAC9B,SAASC,gBAAgB,EAAEC,YAAY,QAAkB;AACzD,SAASC,aAAa,EAAEC,iBAAiB,EAAEC,uBAAuB,EAAEC,aAAa,QAAQ;AACzF,SAASC,gBAAgB,QAAQ;AACjC,SAASC,aAAa,EAAEC,UAAU,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ;AACxE,YAAYC,KAAA,MAAW;AAIvB,SAASC,sBAAsB,QAAQ;AACvC,SAASC,YAAY,QAAQ;AAoB7B,OAAO,MAAMC,yBAAA,GAAgDV,aAAA,CAC3D;AAGF,OAAO,MAAMW,WAAA,gBAAcT,aAAA,CAAgC;EACzDU,gBAAA,EAAkB;EAClBC,iBAAA,EAAmB;EACnBC,GAAA,EAAKA,CAAA;IACH;EAAA;AAEJ;AAEA,OAAO,SAASC,aAAa;EAAEC;AAAQ,CAA6B;EAClE,MAAM,CAACC,YAAA,EAAcC,eAAA,CAAgB,GAAGZ,QAAA,CAGrC;IACDM,gBAAA,EAAkB;IAClBC,iBAAA,EAAmB;EACrB;EACA,oBACEM,IAAA,CAACR,WAAA,CAAYS,QAAQ;IACnBC,KAAA,EAAOhB,OAAA,CACL,OAAO;MACLO,gBAAA,EAAkBK,YAAA,CAAaL,gBAAgB;MAC/CC,iBAAA,EAAmBI,YAAA,CAAaJ,iBAAiB;MACjDC,GAAA,EAAKA,CAACF,gBAAA,EAAkBC,iBAAA;QACtBK,eAAA,CAAgB;UAAEN,gBAAA;UAAkBC;QAAkB;MACxD;IACF,IACA,CAACI,YAAA,CAAaL,gBAAgB,EAAEK,YAAA,CAAaJ,iBAAiB,CAAC;cAGhEG;;AAGP;AAEA,OAAO,MAAM1B,WAAA,GAA+BA,CAAA;EAAA,MAAAgC,CAAA,GAAAlC,EAAA;EAC1C,OAAAmC,MAAA,IAAiBlC,yBAAA;EACjB,MAAAmC,WAAA,GAAoBrB,UAAA,CAAAQ,WAAW;EAC/B,MAAAc,SAAA,GAAkB7B,YAAA;EAClB;IAAA8B;EAAA,IAAiBlB,sBAAA;EAGT,MAAAmB,EAAA,6BAA0BD,IAAA;EAAA,IAAAE,EAAA;EAAA,IAAAN,CAAA,QAAAK,EAAA,IAAAL,CAAA,QAAAG,SAAA;IADfG,EAAA,GAAAjC,gBAAA;MAAAkC,IAAA,EACXF,EAA0B;MAAAG,KAAA,EACzBL;IAAA,CACT;IAAAH,CAAA,MAAAK,EAAA;IAAAL,CAAA,MAAAG,SAAA;IAAAH,CAAA,MAAAM,EAAA;EAAA;IAAAA,EAAA,GAAAN,CAAA;EAAA;EAHA,MAAAS,UAAA,GAAmBH,EAGnB;EACA;IAAAI;EAAA,IAAyB/B,gBAAA,CAAiB8B,UAAA;EAAA,IAAAE,EAAA;EAAA,IAAAX,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAU,YAAA;IAEhCC,EAAA,GAAAA,CAAA;MAAA,KACHV,MAAA,CAAAW,QAAA,EAAAzC,SAAA,CAA2B;QAAA,UAAA0C,KAAA,CACd;MAAA;MAAA,OAGXzC,aAAA,CACL6B,MAAA,CAAAa,eAAA,CAAA1B,yBAAA;QAGI,IAAA2B,cAAA;QAAAA,cAAA;QAEAd,MAAA,CAAAe,cAAA,CAAqB,EAAAC,IAAA;UACnB,MAAAC,SAAA,GAAkB3C,aAAA;UAAA,IACdC,iBAAA,CAAkB0C,SAAA;YACpBH,cAAA,CAAAA,CAAA,CAAiBG,SAAA;UAAjB;QAAA,CAEJ;QAAA,IAEIH,cAAA;UACFL,YAAA;QAAA;QAAA;MAAA,GAAAjC,uBAIJ;IAAA;IAGNuB,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAU,YAAA;IAAAV,CAAA,MAAAW,EAAA;EAAA;IAAAA,EAAA,GAAAX,CAAA;EAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAnB,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAU,YAAA;IAAGS,EAAA,IAACjB,WAAA,EAAaD,MAAA,EAAQS,YAAA;IAAaV,CAAA,MAAAE,WAAA;IAAAF,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAU,YAAA;IAAAV,CAAA,MAAAmB,EAAA;EAAA;IAAAA,EAAA,GAAAnB,CAAA;EAAA;EA1BtClB,SAAA,CAAU6B,EA0BV,EAAGQ,EAAmC;EAAA,IAAAC,EAAA;EAAA,IAAApB,CAAA,SAAAC,MAAA;IAQZmB,EAAA,GAAAA,CAAAC,OAAA,EAAAC,IAAA;MAAA,IACd,CAACA,IAAA,CAAAC,OAAA,KAAiBD,IAAA,CAAAE,IAAS;QAAA;MAAA;MAI/BvB,MAAA,CAAAwB,eAAA,CAAAvD,oBAAA;QAAAqD,OAAA,EACWG,MAAA,CAAOJ,IAAA,CAAAC,OAAY;QAAAC,IAAA,EACtBE,MAAA,CAAOJ,IAAA,CAAAE,IAAS;MAAA,CACxB;IAAA;IACFxB,CAAA,OAAAC,MAAA;IAAAD,CAAA,OAAAoB,EAAA;EAAA;IAAAA,EAAA,GAAApB,CAAA;EAAA;EAAA,IAAA2B,EAAA;EAAA,IAAA3B,CAAA,SAAAS,UAAA,IAAAT,CAAA,SAAAoB,EAAA;IAdJO,EAAA,GAAAC,KAAA,CAAA3C,KAAA,CAAA4C,QAAA;MAAAnC,QAAA,GACEG,IAAA,CAAAV,YAAA;QAAAsB,UAAA;QAAAqB,WAAA,EAEc;QAAAC,UAAA,EACD;QAAAC,kBAAA,EACSZ,EASpB;QAAAa,gBAAA,EACiB;MAAA,C,GAEnBpC,IAAA,CAAA5B,uBAAA;QAAAiE,sBAAA;QAAAC,YAAA;MAAA,C;;;;;;;;SAjBFR,E;CAoBJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAcvE,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA6UvF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAmD,MAAM,OAAO,CAAA;AAevE,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,EAAE,WAAW,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CA4UvF"}
@@ -4,13 +4,14 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
4
4
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
5
5
  import { $findMatchingParent, mergeRegister } from '@lexical/utils';
6
6
  import { getTranslation } from '@payloadcms/translations';
7
- import { CloseMenuIcon, EditIcon, formatDrawerSlug, useConfig, useEditDepth, useModal, useTranslation } from '@payloadcms/ui';
7
+ import { CloseMenuIcon, EditIcon, formatDrawerSlug, useConfig, useEditDepth, useTranslation } from '@payloadcms/ui';
8
8
  import { $getSelection, $isLineBreakNode, $isRangeSelection, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, KEY_ESCAPE_COMMAND, SELECTION_CHANGE_COMMAND } from 'lexical';
9
9
  import React, { useCallback, useEffect, useRef, useState } from 'react';
10
10
  import { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js';
11
11
  import { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js';
12
12
  import { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js';
13
13
  import { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js';
14
+ import { useLexicalDrawer } from '../../../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
14
15
  import { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js';
15
16
  import { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js';
16
17
  import { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js';
@@ -32,10 +33,6 @@ export function LinkEditor({
32
33
  t
33
34
  } = useTranslation();
34
35
  const [stateData, setStateData] = useState();
35
- const {
36
- closeModal,
37
- toggleModal
38
- } = useModal();
39
36
  const editDepth = useEditDepth();
40
37
  const [isLink, setIsLink] = useState(false);
41
38
  const [selectedNodes, setSelectedNodes] = useState([]);
@@ -44,6 +41,9 @@ export function LinkEditor({
44
41
  slug: `lexical-rich-text-link-` + uuid,
45
42
  depth: editDepth
46
43
  });
44
+ const {
45
+ toggleDrawer
46
+ } = useLexicalDrawer(drawerSlug);
47
47
  const setNotLink = useCallback(() => {
48
48
  setIsLink(false);
49
49
  if (editorRef && editorRef.current) {
@@ -142,10 +142,10 @@ export function LinkEditor({
142
142
  editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload);
143
143
  // Now, open the modal
144
144
  $updateLinkEditor();
145
- toggleModal(drawerSlug);
145
+ toggleDrawer();
146
146
  return true;
147
147
  }, COMMAND_PRIORITY_LOW));
148
- }, [editor, $updateLinkEditor, toggleModal, drawerSlug]);
148
+ }, [editor, $updateLinkEditor, toggleDrawer, drawerSlug]);
149
149
  useEffect(() => {
150
150
  const scrollerElem = anchorElem.parentElement;
151
151
  const update = () => {
@@ -206,7 +206,7 @@ export function LinkEditor({
206
206
  "aria-label": "Edit link",
207
207
  className: "link-edit",
208
208
  onClick: () => {
209
- toggleModal(drawerSlug);
209
+ toggleDrawer();
210
210
  },
211
211
  onMouseDown: event => {
212
212
  event.preventDefault();
@@ -236,7 +236,6 @@ export function LinkEditor({
236
236
  drawerTitle: t('fields:editLink'),
237
237
  featureKey: "link",
238
238
  handleDrawerSubmit: (fields, data_0) => {
239
- closeModal(drawerSlug);
240
239
  const newLinkPayload = data_0;
241
240
  const bareLinkFields = {
242
241
  ...newLinkPayload
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useLexicalComposerContext","$findMatchingParent","mergeRegister","getTranslation","CloseMenuIcon","EditIcon","formatDrawerSlug","useConfig","useEditDepth","useModal","useTranslation","$getSelection","$isLineBreakNode","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","FieldsDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","closeModal","toggleModal","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","setNotLink","current","style","opacity","transform","undefined","$updateLinkEditor","selection","selectedNodeDomRect","focusNode","getElementByKey","getKey","getBoundingClientRect","focusLinkParent","badNode","getNodes","filter","node","find","linkNode","is","data","getFields","id","getID","text","getTextContent","linkType","url","routes","admin","doc","relationTo","value","relatedField","collections","coll","label","String","labels","singular","replace","editorElem","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","_jsxs","Fragment","_jsx","ref","length","href","rel","target","isEditable","onClick","onMouseDown","event","preventDefault","tabIndex","type","drawerTitle","featureKey","handleDrawerSubmit","fields","newLinkPayload","bareLinkFields","linkParent","getParent","schemaPathSuffix"],"sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalNode } from 'lexical'\nimport type { Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n CloseMenuIcon,\n EditIcon,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../../nodes/LinkNode.js'\nimport type { LinkFields } from '../../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState<null | string>(null)\n const [linkLabel, setLinkLabel] = useState<null | string>(null)\n\n const { uuid } = useEditorConfigContext()\n\n const { config } = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<\n ({ id?: string; text: string } & LinkFields) | undefined\n >()\n\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData(undefined)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined\n\n if (!$isRangeSelection(selection) || !selection) {\n setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n // Initial state:\n const data: { text: string } & LinkFields = {\n ...focusLinkParent.getFields(),\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `${config.routes.admin === '/' ? '' : config.routes.admin}/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n $updateLinkEditor()\n toggleModal(drawerSlug)\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleModal, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, $updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleModal(drawerSlug)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <EditIcon />\n </button>\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <CloseMenuIcon />\n </button>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <FieldsDrawer\n className=\"lexical-link-edit-drawer\"\n data={stateData}\n drawerSlug={drawerSlug}\n drawerTitle={t('fields:editLink')}\n featureKey=\"link\"\n handleDrawerSubmit={(fields: FormState, data: Data) => {\n closeModal(drawerSlug)\n\n const newLinkPayload = data as { text: string } & LinkFields\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent: ElementNode | null = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useLexicalComposerContext","$findMatchingParent","mergeRegister","getTranslation","CloseMenuIcon","EditIcon","formatDrawerSlug","useConfig","useEditDepth","useTranslation","$getSelection","$isLineBreakNode","$isRangeSelection","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","KEY_ESCAPE_COMMAND","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","useEditorConfigContext","getSelectedNode","setFloatingElemPositionForLinkEditor","FieldsDrawer","useLexicalDrawer","$isAutoLinkNode","$createLinkNode","$isLinkNode","TOGGLE_LINK_COMMAND","TOGGLE_LINK_WITH_MODAL_COMMAND","LinkEditor","anchorElem","editor","editorRef","linkUrl","setLinkUrl","linkLabel","setLinkLabel","uuid","config","i18n","t","stateData","setStateData","editDepth","isLink","setIsLink","selectedNodes","setSelectedNodes","isAutoLink","setIsAutoLink","drawerSlug","slug","depth","toggleDrawer","setNotLink","current","style","opacity","transform","undefined","$updateLinkEditor","selection","selectedNodeDomRect","focusNode","getElementByKey","getKey","getBoundingClientRect","focusLinkParent","badNode","getNodes","filter","node","find","linkNode","is","data","getFields","id","getID","text","getTextContent","linkType","url","routes","admin","doc","relationTo","value","relatedField","collections","coll","label","String","labels","singular","replace","editorElem","nativeSelection","window","getSelection","activeElement","document","rootElement","getRootElement","contains","anchorNode","getRangeAt","y","className","registerCommand","payload","dispatchCommand","scrollerElem","parentElement","update","getEditorState","read","addEventListener","removeEventListener","registerUpdateListener","editorState","_jsxs","Fragment","_jsx","ref","length","href","rel","target","isEditable","onClick","onMouseDown","event","preventDefault","tabIndex","type","drawerTitle","featureKey","handleDrawerSubmit","fields","newLinkPayload","bareLinkFields","linkParent","getParent","schemaPathSuffix"],"sources":["../../../../../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx"],"sourcesContent":["'use client'\nimport type { ElementNode, LexicalNode } from 'lexical'\nimport type { Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n CloseMenuIcon,\n EditIcon,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n useModal,\n useTranslation,\n} from '@payloadcms/ui'\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkNode } from '../../../../nodes/LinkNode.js'\nimport type { LinkFields } from '../../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState<null | string>(null)\n const [linkLabel, setLinkLabel] = useState<null | string>(null)\n\n const { uuid } = useEditorConfigContext()\n\n const { config } = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<\n ({ id?: string; text: string } & LinkFields) | undefined\n >()\n\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData(undefined)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined\n\n if (!$isRangeSelection(selection) || !selection) {\n setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n // Initial state:\n const data: { text: string } & LinkFields = {\n ...focusLinkParent.getFields(),\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `${config.routes.admin === '/' ? '' : config.routes.admin}/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n $updateLinkEditor()\n toggleDrawer()\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleDrawer, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, $updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleDrawer()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <EditIcon />\n </button>\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <CloseMenuIcon />\n </button>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <FieldsDrawer\n className=\"lexical-link-edit-drawer\"\n data={stateData}\n drawerSlug={drawerSlug}\n drawerTitle={t('fields:editLink')}\n featureKey=\"link\"\n handleDrawerSubmit={(fields: FormState, data: Data) => {\n const newLinkPayload = data as { text: string } & LinkFields\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent: ElementNode | null = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"RelationshipComponent.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAgBhD,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAK9E,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAyKD,eAAO,MAAM,qBAAqB,UAAW,KAAK,KAAG,KAAK,CAAC,SAE1D,CAAA"}
1
+ {"version":3,"file":"RelationshipComponent.d.ts","sourceRoot":"","sources":["../../../../../src/features/relationship/client/components/RelationshipComponent.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AAgBhD,OAAO,KAA+D,MAAM,OAAO,CAAA;AAEnF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAM9E,OAAO,cAAc,CAAA;AAQrB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,gBAAgB,CAAA;IACtB,MAAM,CAAC,EAAE,iBAAiB,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAyKD,eAAO,MAAM,qBAAqB,UAAW,KAAK,KAAG,KAAK,CAAC,SAE1D,CAAA"}