@payloadcms/richtext-lexical 4.0.0-internal.40de3ec → 4.0.0-internal.4804abd

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 (282) hide show
  1. package/dist/exports/client/Field-DXKR3OGV.js +2 -0
  2. package/dist/exports/client/Field-DXKR3OGV.js.map +7 -0
  3. package/dist/exports/client/bundled.css +1 -1
  4. package/dist/exports/client/chunk-X3D4LZS7.js +2 -0
  5. package/dist/exports/client/chunk-X3D4LZS7.js.map +7 -0
  6. package/dist/exports/client/index.d.ts +0 -1
  7. package/dist/exports/client/index.d.ts.map +1 -1
  8. package/dist/exports/client/index.js +23 -24
  9. package/dist/exports/client/index.js.map +4 -4
  10. package/dist/features/blockquote/client/index.js +2 -2
  11. package/dist/features/blockquote/client/index.js.map +1 -1
  12. package/dist/features/blockquote/server/index.js +2 -2
  13. package/dist/features/blockquote/server/index.js.map +1 -1
  14. package/dist/features/blocks/client/component/index.css +2 -2
  15. package/dist/features/blocks/client/componentInline/index.css +8 -8
  16. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +1 -1
  17. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -1
  18. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +1 -1
  19. package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
  20. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +1 -1
  21. package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -1
  22. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +5 -2
  23. package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
  24. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +1 -2
  25. package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
  26. package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
  27. package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.css +1 -1
  28. package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.css +2 -4
  29. package/dist/features/blocks/premade/CodeBlock/Component/index.css +5 -5
  30. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +1 -1
  31. package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
  32. package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
  33. package/dist/features/blocks/server/schema.d.ts.map +1 -1
  34. package/dist/features/blocks/server/schema.js +3 -2
  35. package/dist/features/blocks/server/schema.js.map +1 -1
  36. package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
  37. package/dist/features/converters/lexicalToMarkdown/index.js +1 -1
  38. package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
  39. package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
  40. package/dist/features/converters/markdownToLexical/index.js +5 -2
  41. package/dist/features/converters/markdownToLexical/index.js.map +1 -1
  42. package/dist/features/debug/jsxConverter/client/plugin/style.css +2 -2
  43. package/dist/features/experimental_table/client/index.js +2 -2
  44. package/dist/features/experimental_table/client/index.js.map +1 -1
  45. package/dist/features/experimental_table/markdownTransformer.d.ts +2 -2
  46. package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -1
  47. package/dist/features/experimental_table/markdownTransformer.js +6 -3
  48. package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
  49. package/dist/features/experimental_table/server/index.js +2 -2
  50. package/dist/features/experimental_table/server/index.js.map +1 -1
  51. package/dist/features/format/bold/feature.client.js +1 -1
  52. package/dist/features/format/bold/feature.client.js.map +1 -1
  53. package/dist/features/format/bold/feature.server.d.ts.map +1 -1
  54. package/dist/features/format/bold/feature.server.js +1 -1
  55. package/dist/features/format/bold/feature.server.js.map +1 -1
  56. package/dist/features/format/inlineCode/feature.client.js +1 -1
  57. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  58. package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -1
  59. package/dist/features/format/inlineCode/feature.server.js +1 -1
  60. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  61. package/dist/features/format/italic/feature.client.js +1 -1
  62. package/dist/features/format/italic/feature.client.js.map +1 -1
  63. package/dist/features/format/italic/feature.server.d.ts.map +1 -1
  64. package/dist/features/format/italic/feature.server.js +1 -1
  65. package/dist/features/format/italic/feature.server.js.map +1 -1
  66. package/dist/features/format/strikethrough/feature.client.js +1 -1
  67. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  68. package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -1
  69. package/dist/features/format/strikethrough/feature.server.js +1 -1
  70. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  71. package/dist/features/heading/client/index.js +2 -2
  72. package/dist/features/heading/client/index.js.map +1 -1
  73. package/dist/features/heading/markdownTransformer.d.ts +2 -2
  74. package/dist/features/heading/markdownTransformer.d.ts.map +1 -1
  75. package/dist/features/heading/markdownTransformer.js +6 -19
  76. package/dist/features/heading/markdownTransformer.js.map +1 -1
  77. package/dist/features/heading/server/index.js +2 -2
  78. package/dist/features/heading/server/index.js.map +1 -1
  79. package/dist/features/horizontalRule/client/index.js +2 -2
  80. package/dist/features/horizontalRule/client/index.js.map +1 -1
  81. package/dist/features/horizontalRule/client/markdownTransformer.d.ts +2 -2
  82. package/dist/features/horizontalRule/client/markdownTransformer.d.ts.map +1 -1
  83. package/dist/features/horizontalRule/client/markdownTransformer.js +1 -1
  84. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  85. package/dist/features/horizontalRule/client/plugin/index.css +2 -2
  86. package/dist/features/horizontalRule/server/index.js +2 -2
  87. package/dist/features/horizontalRule/server/index.js.map +1 -1
  88. package/dist/features/horizontalRule/server/markdownTransformer.d.ts +2 -2
  89. package/dist/features/horizontalRule/server/markdownTransformer.d.ts.map +1 -1
  90. package/dist/features/horizontalRule/server/markdownTransformer.js +1 -1
  91. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  92. package/dist/features/link/client/index.js +2 -2
  93. package/dist/features/link/client/index.js.map +1 -1
  94. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -3
  95. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  96. package/dist/features/link/client/plugins/floatingLinkEditor/index.css +7 -11
  97. package/dist/features/link/markdownTransformer.d.ts +4 -4
  98. package/dist/features/link/markdownTransformer.d.ts.map +1 -1
  99. package/dist/features/link/markdownTransformer.js +2 -2
  100. package/dist/features/link/markdownTransformer.js.map +1 -1
  101. package/dist/features/link/markdownTransformer.spec.js +10 -10
  102. package/dist/features/link/markdownTransformer.spec.js.map +1 -1
  103. package/dist/features/link/server/index.js +2 -2
  104. package/dist/features/link/server/index.js.map +1 -1
  105. package/dist/features/link/server/schema.d.ts.map +1 -1
  106. package/dist/features/link/server/schema.js +4 -2
  107. package/dist/features/link/server/schema.js.map +1 -1
  108. package/dist/features/lists/checklist/client/index.js +1 -1
  109. package/dist/features/lists/checklist/client/index.js.map +1 -1
  110. package/dist/features/lists/checklist/server/index.js +1 -1
  111. package/dist/features/lists/checklist/server/index.js.map +1 -1
  112. package/dist/features/lists/orderedList/client/index.js +1 -1
  113. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  114. package/dist/features/lists/orderedList/server/index.js +1 -1
  115. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  116. package/dist/features/lists/unorderedList/client/index.js +1 -1
  117. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  118. package/dist/features/lists/unorderedList/server/index.js +1 -1
  119. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  120. package/dist/features/relationship/server/schema.d.ts +3 -3
  121. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  122. package/dist/features/relationship/server/schema.js +22 -5
  123. package/dist/features/relationship/server/schema.js.map +1 -1
  124. package/dist/features/textState/feature.client.js +1 -1
  125. package/dist/features/textState/feature.client.js.map +1 -1
  126. package/dist/features/toolbars/fixed/client/Toolbar/index.css +2 -2
  127. package/dist/features/toolbars/inline/client/Toolbar/index.css +2 -13
  128. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +8 -12
  129. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  130. package/dist/features/toolbars/shared/useToolbarStates.d.ts.map +1 -1
  131. package/dist/features/toolbars/shared/useToolbarStates.js +3 -1
  132. package/dist/features/toolbars/shared/useToolbarStates.js.map +1 -1
  133. package/dist/features/typesClient.d.ts +1 -1
  134. package/dist/features/typesClient.d.ts.map +1 -1
  135. package/dist/features/typesClient.js.map +1 -1
  136. package/dist/features/typesServer.d.ts +2 -2
  137. package/dist/features/typesServer.d.ts.map +1 -1
  138. package/dist/features/typesServer.js.map +1 -1
  139. package/dist/features/upload/client/component/index.css +9 -9
  140. package/dist/features/upload/client/plugin/index.js +5 -5
  141. package/dist/features/upload/client/plugin/index.js.map +1 -1
  142. package/dist/features/upload/server/index.js +2 -2
  143. package/dist/features/upload/server/index.js.map +1 -1
  144. package/dist/features/upload/server/markdownTransformer.d.ts +2 -2
  145. package/dist/features/upload/server/markdownTransformer.d.ts.map +1 -1
  146. package/dist/features/upload/server/markdownTransformer.js +1 -1
  147. package/dist/features/upload/server/markdownTransformer.js.map +1 -1
  148. package/dist/features/upload/server/schema.d.ts +4 -4
  149. package/dist/features/upload/server/schema.d.ts.map +1 -1
  150. package/dist/features/upload/server/schema.js +26 -6
  151. package/dist/features/upload/server/schema.js.map +1 -1
  152. package/dist/field/Diff/converters/unknown/index.css +1 -1
  153. package/dist/field/Field.js +1 -1
  154. package/dist/field/Field.js.map +1 -1
  155. package/dist/field/ViewSelector.css +1 -1
  156. package/dist/field/bundled.css +1 -1
  157. package/dist/field/index.css +5 -2
  158. package/dist/index.d.ts +2 -2
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +3 -3
  161. package/dist/index.js.map +1 -1
  162. package/dist/lexical/LexicalEditor.css +2 -2
  163. package/dist/lexical/plugins/DecoratorPlugin/index.css +1 -1
  164. package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
  165. package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
  166. package/dist/lexical/plugins/MarkdownShortcut/index.js +1 -1
  167. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  168. package/dist/lexical/plugins/SlashMenu/index.css +1 -5
  169. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -1
  170. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +3 -3
  171. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
  172. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  173. package/dist/lexical/theme/EditorTheme.css +18 -19
  174. package/dist/lexical/ui/ContentEditable.css +5 -5
  175. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts +17 -0
  176. package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts.map +1 -0
  177. package/dist/lexical/utils/markdown/convertFromMarkdownString.js +27 -0
  178. package/dist/lexical/utils/markdown/convertFromMarkdownString.js.map +1 -0
  179. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +88 -0
  180. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +1 -0
  181. package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
  182. package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
  183. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  184. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts +25 -0
  185. package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts.map +1 -0
  186. package/dist/lexical/utils/markdown/normalizeMarkdown.js +91 -0
  187. package/dist/lexical/utils/markdown/normalizeMarkdown.js.map +1 -0
  188. package/dist/lexical-proxy/@lexical-markdown.d.ts +1 -1
  189. package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -1
  190. package/dist/lexical-proxy/@lexical-markdown.js +1 -1
  191. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
  192. package/dist/types/index.d.ts.map +1 -1
  193. package/dist/types/index.js.map +1 -1
  194. package/dist/types/schema.d.ts.map +1 -1
  195. package/dist/types/schema.js +12 -5
  196. package/dist/types/schema.js.map +1 -1
  197. package/dist/utilities/fieldsDrawer/index.css +4 -4
  198. package/package.json +20 -24
  199. package/dist/exports/client/Field-VYBSMSRY.js +0 -2
  200. package/dist/exports/client/Field-VYBSMSRY.js.map +0 -7
  201. package/dist/exports/client/chunk-LH634DPU.js +0 -12
  202. package/dist/exports/client/chunk-LH634DPU.js.map +0 -7
  203. package/dist/features/blockquote/markdownTransformer.d.ts +0 -3
  204. package/dist/features/blockquote/markdownTransformer.d.ts.map +0 -1
  205. package/dist/features/blockquote/markdownTransformer.js +0 -33
  206. package/dist/features/blockquote/markdownTransformer.js.map +0 -1
  207. package/dist/features/format/bold/markdownTransformers.d.ts +0 -6
  208. package/dist/features/format/bold/markdownTransformers.d.ts.map +0 -1
  209. package/dist/features/format/bold/markdownTransformers.js +0 -23
  210. package/dist/features/format/bold/markdownTransformers.js.map +0 -1
  211. package/dist/features/format/inlineCode/markdownTransformers.d.ts +0 -3
  212. package/dist/features/format/inlineCode/markdownTransformers.d.ts.map +0 -1
  213. package/dist/features/format/inlineCode/markdownTransformers.js +0 -6
  214. package/dist/features/format/inlineCode/markdownTransformers.js.map +0 -1
  215. package/dist/features/format/italic/markdownTransformers.d.ts +0 -4
  216. package/dist/features/format/italic/markdownTransformers.d.ts.map +0 -1
  217. package/dist/features/format/italic/markdownTransformers.js +0 -12
  218. package/dist/features/format/italic/markdownTransformers.js.map +0 -1
  219. package/dist/features/format/strikethrough/markdownTransformers.d.ts +0 -3
  220. package/dist/features/format/strikethrough/markdownTransformers.d.ts.map +0 -1
  221. package/dist/features/format/strikethrough/markdownTransformers.js +0 -6
  222. package/dist/features/format/strikethrough/markdownTransformers.js.map +0 -1
  223. package/dist/features/lists/checklist/markdownTransformers.d.ts +0 -3
  224. package/dist/features/lists/checklist/markdownTransformers.d.ts.map +0 -1
  225. package/dist/features/lists/checklist/markdownTransformers.js +0 -12
  226. package/dist/features/lists/checklist/markdownTransformers.js.map +0 -1
  227. package/dist/features/lists/orderedList/markdownTransformer.d.ts +0 -3
  228. package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +0 -1
  229. package/dist/features/lists/orderedList/markdownTransformer.js +0 -12
  230. package/dist/features/lists/orderedList/markdownTransformer.js.map +0 -1
  231. package/dist/features/lists/shared/markdown.d.ts +0 -6
  232. package/dist/features/lists/shared/markdown.d.ts.map +0 -1
  233. package/dist/features/lists/shared/markdown.js +0 -57
  234. package/dist/features/lists/shared/markdown.js.map +0 -1
  235. package/dist/features/lists/unorderedList/markdownTransformer.d.ts +0 -3
  236. package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +0 -1
  237. package/dist/features/lists/unorderedList/markdownTransformer.js +0 -12
  238. package/dist/features/lists/unorderedList/markdownTransformer.js.map +0 -1
  239. package/dist/lexical/utils/guard.d.ts +0 -5
  240. package/dist/lexical/utils/guard.d.ts.map +0 -1
  241. package/dist/lexical/utils/guard.js +0 -9
  242. package/dist/lexical/utils/guard.js.map +0 -1
  243. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +0 -2
  244. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +0 -1
  245. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -2
  246. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +0 -1
  247. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts +0 -14
  248. package/dist/packages/@lexical/markdown/MarkdownExport.d.ts.map +0 -1
  249. package/dist/packages/@lexical/markdown/MarkdownExport.js +0 -213
  250. package/dist/packages/@lexical/markdown/MarkdownExport.js.map +0 -1
  251. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts +0 -19
  252. package/dist/packages/@lexical/markdown/MarkdownImport.d.ts.map +0 -1
  253. package/dist/packages/@lexical/markdown/MarkdownImport.js +0 -198
  254. package/dist/packages/@lexical/markdown/MarkdownImport.js.map +0 -1
  255. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts +0 -11
  256. package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts.map +0 -1
  257. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +0 -304
  258. package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +0 -1
  259. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts +0 -147
  260. package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts.map +0 -1
  261. package/dist/packages/@lexical/markdown/MarkdownTransformers.js +0 -268
  262. package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +0 -1
  263. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts +0 -22
  264. package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts.map +0 -1
  265. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +0 -91
  266. package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +0 -1
  267. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts +0 -21
  268. package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts.map +0 -1
  269. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +0 -54
  270. package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +0 -1
  271. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts +0 -18
  272. package/dist/packages/@lexical/markdown/importTextTransformers.d.ts.map +0 -1
  273. package/dist/packages/@lexical/markdown/importTextTransformers.js +0 -54
  274. package/dist/packages/@lexical/markdown/importTextTransformers.js.map +0 -1
  275. package/dist/packages/@lexical/markdown/index.d.ts +0 -29
  276. package/dist/packages/@lexical/markdown/index.d.ts.map +0 -1
  277. package/dist/packages/@lexical/markdown/index.js +0 -39
  278. package/dist/packages/@lexical/markdown/index.js.map +0 -1
  279. package/dist/packages/@lexical/markdown/utils.d.ts +0 -34
  280. package/dist/packages/@lexical/markdown/utils.d.ts.map +0 -1
  281. package/dist/packages/@lexical/markdown/utils.js +0 -267
  282. package/dist/packages/@lexical/markdown/utils.js.map +0 -1
@@ -7,7 +7,7 @@
7
7
  }
8
8
 
9
9
  & > .field-error.tooltip {
10
- right: auto;
10
+ inset-inline-end: auto;
11
11
  position: static;
12
12
  margin-bottom: 0.2em;
13
13
  max-width: fit-content;
@@ -27,7 +27,7 @@
27
27
  gap: var(--spacer-2);
28
28
 
29
29
  label.field-label:not(.unstyled) {
30
- margin-right: unset;
30
+ margin-inline-end: unset;
31
31
  padding-bottom: unset;
32
32
  }
33
33
  }
@@ -35,6 +35,9 @@
35
35
  .rich-text-lexical__wrap {
36
36
  width: 100%;
37
37
  position: relative;
38
+ display: flex;
39
+ flex-direction: column;
40
+ gap: var(--spacer-2);
38
41
  }
39
42
 
40
43
  @keyframes fadeInBackground {
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { AdapterProps, LexicalEditorProps, LexicalRichTextAdapterProvider } from './types/index.js';
2
- export declare const lexicalTargetVersion = "0.41.0";
2
+ export declare const lexicalTargetVersion = "0.45.0";
3
3
  export declare function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider;
4
4
  export { AlignFeature } from './features/align/server/index.js';
5
5
  export { BlockquoteFeature } from './features/blockquote/server/index.js';
@@ -60,9 +60,9 @@ export type { ClientEditorConfig, SanitizedClientEditorConfig, SanitizedServerEd
60
60
  export type { AdapterProps };
61
61
  export { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js';
62
62
  export type { SlashMenuGroup, SlashMenuItem, } from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js';
63
+ export { $convertFromMarkdownString } from './lexical/utils/markdown/convertFromMarkdownString.js';
63
64
  export { DETAIL_TYPE_TO_DETAIL, DOUBLE_LINE_BREAK, ELEMENT_FORMAT_TO_TYPE, ELEMENT_TYPE_TO_FORMAT, IS_ALL_FORMATTING, LTR_REGEX, NodeFormat, NON_BREAKING_SPACE, RTL_REGEX, TEXT_MODE_TO_TYPE, TEXT_TYPE_TO_FORMAT, TEXT_TYPE_TO_MODE, } from './lexical/utils/nodeFormat.js';
64
65
  export { sanitizeUrl, validateUrl } from './lexical/utils/url.js';
65
- export { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js';
66
66
  export { defaultRichTextValue } from './populateGraphQL/defaultValue.js';
67
67
  export { populate } from './populateGraphQL/populate.js';
68
68
  export type { ClientFeaturesMap, LexicalEditorNodeMap, LexicalEditorProps, LexicalEditorViewMap, LexicalFieldAdminProps, LexicalRichTextAdapter, NodeMapValue, SerializedNodeBase, ViewMapBlockComponentProps, } from './types/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,YAAY,EACZ,kBAAkB,EAClB,8BAA8B,EAC/B,MAAM,kBAAkB,CAAA;AAezB,eAAO,MAAM,oBAAoB,WAAW,CAAA;AAE5C,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,8BAA8B,CA0MvF;AAED,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAA;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAA;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,6BAA6B,EAC7B,kCAAkC,EAClC,kCAAkC,EAClC,6BAA6B,GAC9B,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,GAChB,MAAM,8CAA8C,CAAA;AACrD,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,oDAAoD,CAAA;AAE3D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAA;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0DAA0D,CAAA;AAE3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAA;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,kDAAkD,CAAA;AAC3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,sDAAsD,CAAA;AAE3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAA;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAA;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAA;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAA;AAC3E,OAAO,EAAE,yBAAyB,EAAE,MAAM,+CAA+C,CAAA;AACzF,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAA;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAA;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAA;AACxF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+CAA+C,CAAA;AAChF,OAAO,EAAE,cAAc,EAAE,KAAK,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7F,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAA;AAEjF,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,YAAY,GACb,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAA;AAE1F,OAAO,EAAE,WAAW,EAAE,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAA;AAC1F,YAAY,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAA;AAElE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAA;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAA;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,gDAAgD,CAAA;AAErF,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAEvE,OAAO,EACL,mBAAmB,EACnB,KAAK,wBAAwB,GAC9B,MAAM,yCAAyC,CAAA;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0DAA0D,CAAA;AACjG,YAAY,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAA;AAChF,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,4CAA4C,CAAA;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAClF,YAAY,EACV,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,qBAAqB,EACrB,6BAA6B,EAC7B,eAAe,EACf,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,eAAe,GAChB,MAAM,2BAA2B,CAAA;AAElC,YAAY,EACV,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,qBAAqB,EACrB,gBAAgB,EAChB,oBAAoB,EACpB,wBAAwB,EACxB,sBAAsB,EACtB,0BAA0B,EAC1B,6BAA6B,EAC7B,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,wBAAwB,GACzB,MAAM,2BAA2B,CAAA;AAElC,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExD,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAA;AACjE,YAAY,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAE3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAA;AAC/E,YAAY,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAA;AACpE,YAAY,EAAE,uBAAuB,EAAE,MAAM,iDAAiD,CAAA;AAE9F,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAA;AAE/F,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,qCAAqC,CAAA;AAC5C,YAAY,EACV,kBAAkB,EAClB,2BAA2B,EAC3B,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,2BAA2B,CAAA;AAClC,YAAY,EAAE,YAAY,EAAE,CAAA;AAE5B,OAAO,EAAE,eAAe,EAAE,8BAA8B,EAAE,MAAM,0BAA0B,CAAA;AAE1F,YAAY,EACV,cAAc,EACd,aAAa,GACd,MAAM,iEAAiE,CAAA;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,uDAAuD,CAAA;AAElG,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,+BAA+B,CAAA;AAEtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAA;AACxE,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACxD,YAAY,EACV,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,kBAAkB,CAAA;AAEzB,mBAAmB,sBAAsB,CAAA;AAEzC,OAAO,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAC3F,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AAE3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAA;AAElG,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAA"}
package/dist/index.js CHANGED
@@ -11,14 +11,14 @@ import { getGenerateSchemaMap } from './utilities/generateSchemaMap.js';
11
11
  import { getDefaultSanitizedEditorConfig } from './utilities/getDefaultSanitizedEditorConfig.js';
12
12
  import { richTextValidateHOC } from './validate/index.js';
13
13
  let checkedDependencies = false;
14
- export const lexicalTargetVersion = '0.41.0';
14
+ export const lexicalTargetVersion = '0.45.0';
15
15
  export function lexicalEditor(args) {
16
16
  if (process.env.NODE_ENV !== 'production' && process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' && !checkedDependencies) {
17
17
  checkedDependencies = true;
18
18
  void checkDependencies({
19
19
  dependencyGroups: [{
20
20
  name: 'lexical',
21
- dependencies: ['lexical', '@lexical/headless', '@lexical/link', '@lexical/list', '@lexical/mark', '@lexical/react', '@lexical/rich-text', '@lexical/selection', '@lexical/utils'],
21
+ dependencies: ['lexical', '@lexical/headless', '@lexical/link', '@lexical/list', '@lexical/mark', '@lexical/markdown', '@lexical/react', '@lexical/rich-text', '@lexical/selection', '@lexical/utils'],
22
22
  targetVersion: lexicalTargetVersion
23
23
  }]
24
24
  });
@@ -223,9 +223,9 @@ export { defaultEditorConfig, defaultEditorFeatures, defaultEditorLexicalConfig
223
223
  export { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js';
224
224
  export { sanitizeServerEditorConfig, sanitizeServerFeatures } from './lexical/config/server/sanitize.js';
225
225
  export { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js';
226
+ export { $convertFromMarkdownString } from './lexical/utils/markdown/convertFromMarkdownString.js';
226
227
  export { DETAIL_TYPE_TO_DETAIL, DOUBLE_LINE_BREAK, ELEMENT_FORMAT_TO_TYPE, ELEMENT_TYPE_TO_FORMAT, IS_ALL_FORMATTING, LTR_REGEX, NodeFormat, NON_BREAKING_SPACE, RTL_REGEX, TEXT_MODE_TO_TYPE, TEXT_TYPE_TO_FORMAT, TEXT_TYPE_TO_MODE } from './lexical/utils/nodeFormat.js';
227
228
  export { sanitizeUrl, validateUrl } from './lexical/utils/url.js';
228
- export { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js';
229
229
  export { defaultRichTextValue } from './populateGraphQL/defaultValue.js';
230
230
  export { populate } from './populateGraphQL/populate.js';
231
231
  export { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["checkDependencies","deepMergeSimple","isRSCEnabled","getLexicalHooks","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","getFieldToJSONSchema","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","getDefaultSanitizedEditorConfig","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","supportedLanguages","supportedLanguagesToMerge","_lang","lang","lexicalI18nForLang","general","translations","rscEnabled","CellComponent","ClientFieldComponent","DiffComponent","editorConfig","FieldComponent","path","serverProps","admin","views","generateImportMap","lexicalEditorArgs","generateSchemaMap","getClientFieldProps","clientFieldSchemaMap","fieldPath","schemaPath","fieldSchemaPath","serializedFeatures","featureKey","resolvedFeature","entry","key","order","ClientFeature","clientFeatureProps","componentImports","Array","isArray","featureClientSchemaMap","featureSchemaPath","entries","startsWith","fields","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","jsonSchema","validate","AlignFeature","BlockquoteFeature","CodeBlock","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","convertHTMLToLexical","lexicalHTMLField","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$createLinkNode","$isLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","defaultColors","TextStateFeature","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","$convertFromMarkdownString","defaultRichTextValue","populate","buildDefaultEditorState","buildEditorState","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { GenericLanguages, GenericTranslationsObject } from '@payloadcms/translations'\n\nimport { checkDependencies, deepMergeSimple } from 'payload'\nimport { isRSCEnabled } from 'payload/shared'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type {\n AdapterProps,\n LexicalEditorProps,\n LexicalRichTextAdapterProvider,\n} from './types/index.js'\n\nimport { getLexicalHooks } from './hooks.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { getFieldToJSONSchema } from './types/schema.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { getDefaultSanitizedEditorConfig } from './utilities/getDefaultSanitizedEditorConfig.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.41.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n: Partial<GenericLanguages> = finalSanitizedEditorConfig.features.i18n\n const supportedLanguages = config.i18n?.supportedLanguages\n const supportedLanguagesToMerge: Partial<GenericLanguages> = {}\n for (const _lang in supportedLanguages) {\n if (!(_lang in i18n)) {\n if (featureI18n[_lang as keyof typeof i18n]) {\n supportedLanguagesToMerge[_lang as keyof typeof i18n] =\n featureI18n[_lang as keyof typeof i18n]\n }\n continue\n }\n const lang = _lang as keyof typeof i18n\n const lexicalI18nForLang = ((featureI18n[lang] ??= {}).lexical ??=\n {}) as GenericTranslationsObject\n\n lexicalI18nForLang.general = i18n[lang] ?? {}\n supportedLanguagesToMerge[lang] = featureI18n[lang]\n }\n\n config.i18n.translations = deepMergeSimple(config.i18n.translations, supportedLanguagesToMerge)\n\n const rscEnabled = isRSCEnabled()\n\n return {\n CellComponent: rscEnabled ? '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell' : false,\n ClientFieldComponent: '@payloadcms/richtext-lexical/client#ClientEntryLexicalField',\n DiffComponent: rscEnabled ? '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent' : false,\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: rscEnabled\n ? {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n views: args?.views,\n },\n }\n : false,\n generateImportMap: getGenerateImportMap({\n lexicalEditorArgs: args,\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n getClientFieldProps({ clientFieldSchemaMap, path: fieldPath, schemaPath: fieldSchemaPath }) {\n const serializedFeatures: Record<\n string,\n {\n ClientFeature?: any\n clientFeatureProps?: Record<string, any>\n componentImports?: Record<string, any>\n key: string\n order: number\n }\n > = {}\n\n for (const [featureKey, resolvedFeature] of finalSanitizedEditorConfig.resolvedFeatureMap) {\n const entry: (typeof serializedFeatures)[string] = {\n key: resolvedFeature.key,\n order: resolvedFeature.order,\n }\n\n if (resolvedFeature.ClientFeature) {\n entry.ClientFeature = resolvedFeature.ClientFeature\n }\n\n if (resolvedFeature.clientFeatureProps) {\n entry.clientFeatureProps = resolvedFeature.clientFeatureProps\n }\n\n if (\n resolvedFeature.componentImports &&\n typeof resolvedFeature.componentImports === 'object' &&\n !Array.isArray(resolvedFeature.componentImports)\n ) {\n entry.componentImports = resolvedFeature.componentImports\n }\n\n serializedFeatures[featureKey] = entry\n }\n\n const featureClientSchemaMap: Record<string, Record<string, any>> = {}\n for (const [featureKey, resolvedFeature] of finalSanitizedEditorConfig.resolvedFeatureMap) {\n if (!resolvedFeature.generateSchemaMap) {\n continue\n }\n const featureSchemaPath = `${fieldSchemaPath}.lexical_internal_feature.${featureKey}`\n featureClientSchemaMap[featureKey] = {}\n for (const [key, entry] of clientFieldSchemaMap.entries()) {\n if (key.startsWith(featureSchemaPath)) {\n featureClientSchemaMap[featureKey][key] = 'fields' in entry ? entry.fields : [entry]\n }\n }\n }\n\n return {\n featureClientSchemaMap,\n features: serializedFeatures,\n }\n },\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: getLexicalHooks({\n editorConfig: finalSanitizedEditorConfig,\n }),\n jsonSchema: getFieldToJSONSchema({ editorConfig: finalSanitizedEditorConfig }),\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { CodeBlock } from './features/blocks/premade/CodeBlock/index.js'\nexport { BlocksFeature } from './features/blocks/server/index.js'\nexport type {\n BlocksFeatureProps,\n LexicalBlockClientProps,\n LexicalBlockLabelClientProps,\n LexicalBlockLabelServerProps,\n LexicalBlockServerProps,\n LexicalInlineBlockClientProps,\n LexicalInlineBlockLabelClientProps,\n LexicalInlineBlockLabelServerProps,\n LexicalInlineBlockServerProps,\n} from './features/blocks/server/index.js'\n\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\nexport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n ServerInlineBlockNode,\n} from './features/blocks/server/nodes/InlineBlocksNode.js'\n\nexport type { BlockFields, InlineBlockFields } from './features/blocks/server/schema.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\n\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\nexport {\n $createAutoLinkNode,\n $isAutoLinkNode,\n AutoLinkNode,\n} from './features/link/nodes/AutoLinkNode.js'\nexport { $createLinkNode, $isLinkNode, LinkNode } from './features/link/nodes/LinkNode.js'\n\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\nexport type { LinkFields } from './features/link/server/schema.js'\n\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\n\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport { RelationshipServerNode } from './features/relationship/server/nodes/RelationshipNode.js'\nexport type { RelationshipData } from './features/relationship/server/schema.js'\nexport { defaultColors } from './features/textState/defaultColors.js'\nexport { TextStateFeature } from './features/textState/feature.server.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { UploadData } from './features/upload/server/schema.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\n\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\nexport type {\n ClientFeaturesMap,\n LexicalEditorNodeMap,\n LexicalEditorProps,\n LexicalEditorViewMap,\n LexicalFieldAdminProps,\n LexicalRichTextAdapter,\n NodeMapValue,\n SerializedNodeBase,\n ViewMapBlockComponentProps,\n} from './types/index.js'\n\nexport type * from './types/nodeTypes.js'\n\nexport { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["checkDependencies","deepMergeSimple","isRSCEnabled","getLexicalHooks","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","getFieldToJSONSchema","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","getDefaultSanitizedEditorConfig","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","supportedLanguages","supportedLanguagesToMerge","_lang","lang","lexicalI18nForLang","general","translations","rscEnabled","CellComponent","ClientFieldComponent","DiffComponent","editorConfig","FieldComponent","path","serverProps","admin","views","generateImportMap","lexicalEditorArgs","generateSchemaMap","getClientFieldProps","clientFieldSchemaMap","fieldPath","schemaPath","fieldSchemaPath","serializedFeatures","featureKey","resolvedFeature","entry","key","order","ClientFeature","clientFeatureProps","componentImports","Array","isArray","featureClientSchemaMap","featureSchemaPath","entries","startsWith","fields","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","jsonSchema","validate","AlignFeature","BlockquoteFeature","CodeBlock","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","convertHTMLToLexical","lexicalHTMLField","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$createLinkNode","$isLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","defaultColors","TextStateFeature","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","$convertFromMarkdownString","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","defaultRichTextValue","populate","buildDefaultEditorState","buildEditorState","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { GenericLanguages, GenericTranslationsObject } from '@payloadcms/translations'\n\nimport { checkDependencies, deepMergeSimple } from 'payload'\nimport { isRSCEnabled } from 'payload/shared'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type {\n AdapterProps,\n LexicalEditorProps,\n LexicalRichTextAdapterProvider,\n} from './types/index.js'\n\nimport { getLexicalHooks } from './hooks.js'\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { getFieldToJSONSchema } from './types/schema.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { getDefaultSanitizedEditorConfig } from './utilities/getDefaultSanitizedEditorConfig.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.45.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/markdown',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n: Partial<GenericLanguages> = finalSanitizedEditorConfig.features.i18n\n const supportedLanguages = config.i18n?.supportedLanguages\n const supportedLanguagesToMerge: Partial<GenericLanguages> = {}\n for (const _lang in supportedLanguages) {\n if (!(_lang in i18n)) {\n if (featureI18n[_lang as keyof typeof i18n]) {\n supportedLanguagesToMerge[_lang as keyof typeof i18n] =\n featureI18n[_lang as keyof typeof i18n]\n }\n continue\n }\n const lang = _lang as keyof typeof i18n\n const lexicalI18nForLang = ((featureI18n[lang] ??= {}).lexical ??=\n {}) as GenericTranslationsObject\n\n lexicalI18nForLang.general = i18n[lang] ?? {}\n supportedLanguagesToMerge[lang] = featureI18n[lang]\n }\n\n config.i18n.translations = deepMergeSimple(config.i18n.translations, supportedLanguagesToMerge)\n\n const rscEnabled = isRSCEnabled()\n\n return {\n CellComponent: rscEnabled ? '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell' : false,\n ClientFieldComponent: '@payloadcms/richtext-lexical/client#ClientEntryLexicalField',\n DiffComponent: rscEnabled ? '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent' : false,\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: rscEnabled\n ? {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n views: args?.views,\n },\n }\n : false,\n generateImportMap: getGenerateImportMap({\n lexicalEditorArgs: args,\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n getClientFieldProps({ clientFieldSchemaMap, path: fieldPath, schemaPath: fieldSchemaPath }) {\n const serializedFeatures: Record<\n string,\n {\n ClientFeature?: any\n clientFeatureProps?: Record<string, any>\n componentImports?: Record<string, any>\n key: string\n order: number\n }\n > = {}\n\n for (const [featureKey, resolvedFeature] of finalSanitizedEditorConfig.resolvedFeatureMap) {\n const entry: (typeof serializedFeatures)[string] = {\n key: resolvedFeature.key,\n order: resolvedFeature.order,\n }\n\n if (resolvedFeature.ClientFeature) {\n entry.ClientFeature = resolvedFeature.ClientFeature\n }\n\n if (resolvedFeature.clientFeatureProps) {\n entry.clientFeatureProps = resolvedFeature.clientFeatureProps\n }\n\n if (\n resolvedFeature.componentImports &&\n typeof resolvedFeature.componentImports === 'object' &&\n !Array.isArray(resolvedFeature.componentImports)\n ) {\n entry.componentImports = resolvedFeature.componentImports\n }\n\n serializedFeatures[featureKey] = entry\n }\n\n const featureClientSchemaMap: Record<string, Record<string, any>> = {}\n for (const [featureKey, resolvedFeature] of finalSanitizedEditorConfig.resolvedFeatureMap) {\n if (!resolvedFeature.generateSchemaMap) {\n continue\n }\n const featureSchemaPath = `${fieldSchemaPath}.lexical_internal_feature.${featureKey}`\n featureClientSchemaMap[featureKey] = {}\n for (const [key, entry] of clientFieldSchemaMap.entries()) {\n if (key.startsWith(featureSchemaPath)) {\n featureClientSchemaMap[featureKey][key] = 'fields' in entry ? entry.fields : [entry]\n }\n }\n }\n\n return {\n featureClientSchemaMap,\n features: serializedFeatures,\n }\n },\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: getLexicalHooks({\n editorConfig: finalSanitizedEditorConfig,\n }),\n jsonSchema: getFieldToJSONSchema({ editorConfig: finalSanitizedEditorConfig }),\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { CodeBlock } from './features/blocks/premade/CodeBlock/index.js'\nexport { BlocksFeature } from './features/blocks/server/index.js'\nexport type {\n BlocksFeatureProps,\n LexicalBlockClientProps,\n LexicalBlockLabelClientProps,\n LexicalBlockLabelServerProps,\n LexicalBlockServerProps,\n LexicalInlineBlockClientProps,\n LexicalInlineBlockLabelClientProps,\n LexicalInlineBlockLabelServerProps,\n LexicalInlineBlockServerProps,\n} from './features/blocks/server/index.js'\n\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\nexport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n ServerInlineBlockNode,\n} from './features/blocks/server/nodes/InlineBlocksNode.js'\n\nexport type { BlockFields, InlineBlockFields } from './features/blocks/server/schema.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\n\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\nexport {\n $createAutoLinkNode,\n $isAutoLinkNode,\n AutoLinkNode,\n} from './features/link/nodes/AutoLinkNode.js'\nexport { $createLinkNode, $isLinkNode, LinkNode } from './features/link/nodes/LinkNode.js'\n\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\nexport type { LinkFields } from './features/link/server/schema.js'\n\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\n\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport { RelationshipServerNode } from './features/relationship/server/nodes/RelationshipNode.js'\nexport type { RelationshipData } from './features/relationship/server/schema.js'\nexport { defaultColors } from './features/textState/defaultColors.js'\nexport { TextStateFeature } from './features/textState/feature.server.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { UploadData } from './features/upload/server/schema.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport { $convertFromMarkdownString } from './lexical/utils/markdown/convertFromMarkdownString.js'\n\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\nexport type {\n ClientFeaturesMap,\n LexicalEditorNodeMap,\n LexicalEditorProps,\n LexicalEditorViewMap,\n LexicalFieldAdminProps,\n LexicalRichTextAdapter,\n NodeMapValue,\n SerializedNodeBase,\n ViewMapBlockComponentProps,\n} from './types/index.js'\n\nexport type * from './types/nodeTypes.js'\n\nexport { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
@@ -35,7 +35,7 @@
35
35
  > .editor
36
36
  > div
37
37
  > .LexicalEditorTheme__placeholder {
38
- left: var(--spacer-5);
38
+ inset-inline-start: var(--spacer-5);
39
39
  }
40
40
 
41
41
  .rich-text-lexical:not(.rich-text-lexical--show-gutter)
@@ -45,6 +45,6 @@
45
45
  > .editor
46
46
  > div
47
47
  > .LexicalEditorTheme__placeholder {
48
- left: 0;
48
+ inset-inline-start: 0;
49
49
  }
50
50
  }
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .decorator-selected {
8
- box-shadow: 0 0 0 2px var(--color-border-selected) !important;
8
+ box-shadow: 0 0 0 var(--stroke-width-medium) var(--color-border-selected) !important;
9
9
  outline: none !important;
10
10
  }
11
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","mergeRegister","$createNodeSelection","$getEditor","$getNearestNodeFromDOMNode","$getSelection","$isDecoratorNode","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isRootOrShadowRoot","$isTextNode","$setSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","SELECTION_CHANGE_COMMAND","useEffect","DecoratorPlugin","$","editor","$onDelete","_temp2","t0","t1","registerCommand","_temp3","_temp4","_temp6","_temp8","event_2","selection_1","selection","event","preventDefault","nextSibling","getNodes","getNextSibling","element_0","getElementByKey","getKey","element","$selectDecorator","node","firstDescendant","getFirstDescendant","block_0","INTERNAL_$isBlock","block","selectEnd","lastPoint","isBackward","anchor","focus","lastNode","getNode","lastSelectedBlock","_temp7","nextBlock","findLaterSiblingBlock","nextBlockElement","node_1","event_1","selection_0","prevSibling","getPreviousSibling","lastDescendant","getLastDescendant","selectStart","firstPoint","firstNode","firstSelectedBlock","_temp5","prevBlock","findFirstSiblingBlock","prevBlockElement","node_0","decorator_0","$getSelectedDecorator","document","querySelector","classList","remove","decorator","add","event_0","$getDecoratorByMouseEvent","target","isInteractive","HTMLElement","isContentEditable","closest","forEach","_temp","undefined","nodes","length","scrollIntoView","behavior","isInline","firstChild","getFirstChild","isLeafElement","canBeEmpty","current"],"sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorNode, ElementNode, LexicalNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $createNodeSelection,\n $getEditor,\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isDecoratorNode,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n $isTextNode,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport './index.css'\n\n// TODO: This should ideally be fixed in Lexical. See\n// https://github.com/facebook/lexical/pull/7072\nexport function DecoratorPlugin() {\n const [editor] = useLexicalComposerContext()\n\n const $onDelete = (event: KeyboardEvent) => {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return false\n }\n event.preventDefault()\n selection.getNodes().forEach((node) => {\n node.remove()\n })\n return true\n }\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const decorator = $getDecoratorByMouseEvent(event)\n if (!decorator) {\n return true\n }\n const { target } = event\n const isInteractive =\n !(target instanceof HTMLElement) ||\n target.isContentEditable ||\n target.closest(\n 'button, textarea, input, .react-select, .code-editor, .no-select-decorator, [role=\"button\"]',\n )\n if (isInteractive) {\n $setSelection(null)\n } else {\n $selectDecorator(decorator)\n }\n return true\n },\n 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 editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const decorator = $getSelectedDecorator()\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n if (decorator) {\n decorator.element?.classList.add('decorator-selected')\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n const prevSibling = selection.getNodes()[0]?.getPreviousSibling()\n if ($isDecoratorNode(prevSibling)) {\n const element = $getEditor().getElementByKey(prevSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: prevSibling })\n event.preventDefault()\n return true\n }\n return false\n }\n if (!$isElementNode(prevSibling)) {\n return false\n }\n const lastDescendant = prevSibling.getLastDescendant() ?? prevSibling\n if (!lastDescendant) {\n return false\n }\n const block = $findMatchingParent(lastDescendant, INTERNAL_$isBlock)\n block?.selectStart()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get first selected block\n const firstPoint = selection.isBackward() ? selection.anchor : selection.focus\n const firstNode = firstPoint.getNode()\n const firstSelectedBlock = $findMatchingParent(firstNode, (node) => {\n return findFirstSiblingBlock(node) !== null\n })\n const prevBlock = firstSelectedBlock?.getPreviousSibling()\n if (!firstSelectedBlock || prevBlock !== findFirstSiblingBlock(firstSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(prevBlock)) {\n const prevBlockElement = $getEditor().getElementByKey(prevBlock.getKey())\n if (prevBlockElement) {\n $selectDecorator({ element: prevBlockElement, node: prevBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n event.preventDefault()\n const nextSibling = selection.getNodes()[0]?.getNextSibling()\n if ($isDecoratorNode(nextSibling)) {\n const element = $getEditor().getElementByKey(nextSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: nextSibling })\n }\n return true\n }\n if (!$isElementNode(nextSibling)) {\n return true\n }\n const firstDescendant = nextSibling.getFirstDescendant() ?? nextSibling\n if (!firstDescendant) {\n return true\n }\n const block = $findMatchingParent(firstDescendant, INTERNAL_$isBlock)\n block?.selectEnd()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get last selected block\n const lastPoint = selection.isBackward() ? selection.anchor : selection.focus\n const lastNode = lastPoint.getNode()\n const lastSelectedBlock = $findMatchingParent(lastNode, (node) => {\n return findLaterSiblingBlock(node) !== null\n })\n const nextBlock = lastSelectedBlock?.getNextSibling()\n if (!lastSelectedBlock || nextBlock !== findLaterSiblingBlock(lastSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(nextBlock)) {\n const nextBlockElement = $getEditor().getElementByKey(nextBlock.getKey())\n if (nextBlockElement) {\n $selectDecorator({ element: nextBlockElement, node: nextBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n\nfunction $getDecoratorByMouseEvent(\n event: MouseEvent,\n): { element: HTMLElement; node: DecoratorNode<unknown> } | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return undefined\n }\n const element = event.target.closest('[data-lexical-decorator=\"true\"]')\n if (!(element instanceof HTMLElement)) {\n return undefined\n }\n const node = $getNearestNodeFromDOMNode(element)\n return $isDecoratorNode(node) ? { element, node } : undefined\n}\n\nfunction $getSelectedDecorator() {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return undefined\n }\n const nodes = selection.getNodes()\n if (nodes.length !== 1) {\n return undefined\n }\n const node = nodes[0]\n return $isDecoratorNode(node)\n ? {\n decorator: node,\n element: $getEditor().getElementByKey(node.getKey()),\n }\n : undefined\n}\n\nfunction $selectDecorator({\n element,\n node,\n}: {\n element: HTMLElement\n node: DecoratorNode<unknown>\n}) {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const selection = $createNodeSelection()\n selection.add(node.getKey())\n $setSelection(selection)\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n element.classList.add('decorator-selected')\n}\n\n/**\n * Copied from https://github.com/facebook/lexical/blob/main/packages/lexical/src/LexicalUtils.ts\n *\n * This function returns true for a DecoratorNode that is not inline OR\n * an ElementNode that is:\n * - not a root or shadow root\n * - not inline\n * - can't be empty\n * - has no children or an inline first child\n */\nexport function INTERNAL_$isBlock(node: LexicalNode): node is DecoratorNode<unknown> | ElementNode {\n if ($isDecoratorNode(node) && !node.isInline()) {\n return true\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false\n }\n\n const firstChild = node.getFirstChild()\n const isLeafElement =\n firstChild === null ||\n $isLineBreakNode(firstChild) ||\n $isTextNode(firstChild) ||\n firstChild.isInline()\n\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement\n}\n\nfunction findLaterSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getNextSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getNextSibling()\n }\n return null\n}\n\nfunction findFirstSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getPreviousSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getPreviousSibling()\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","mergeRegister","$createNodeSelection","$getEditor","$getNearestNodeFromDOMNode","$getSelection","$isDecoratorNode","$isElementNode","$isLineBreakNode","$isNodeSelection","$isRangeSelection","$isRootOrShadowRoot","$isTextNode","$setSelection","CLICK_COMMAND","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_BACKSPACE_COMMAND","KEY_DELETE_COMMAND","SELECTION_CHANGE_COMMAND","useEffect","DecoratorPlugin","$","editor","$onDelete","_temp2","t0","t1","registerCommand","_temp3","_temp4","_temp6","_temp8","event_2","selection_1","selection","event","preventDefault","nextSibling","getNodes","getNextSibling","element_0","getElementByKey","getKey","element","$selectDecorator","firstDescendant","getFirstDescendant","block_0","INTERNAL_$isBlock","block","selectEnd","lastPoint","isBackward","anchor","focus","lastNode","getNode","lastSelectedBlock","_temp7","nextBlock","findLaterSiblingBlock","nextBlockElement","node","node_1","event_1","selection_0","prevSibling","getPreviousSibling","lastDescendant","getLastDescendant","selectStart","firstPoint","firstNode","firstSelectedBlock","_temp5","prevBlock","findFirstSiblingBlock","prevBlockElement","node_0","decorator_0","$getSelectedDecorator","document","querySelector","classList","remove","decorator","add","event_0","$getDecoratorByMouseEvent","target","isInteractive","HTMLElement","isContentEditable","closest","forEach","_temp","undefined","nodes","length","scrollIntoView","behavior","isInline","firstChild","getFirstChild","isLeafElement","canBeEmpty","current"],"sources":["../../../../src/lexical/plugins/DecoratorPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorNode, ElementNode, LexicalNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $createNodeSelection,\n $getEditor,\n $getNearestNodeFromDOMNode,\n $getSelection,\n $isDecoratorNode,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n $isTextNode,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport './index.css'\n\n// TODO: This should ideally be fixed in Lexical. See\n// https://github.com/facebook/lexical/pull/7072\nexport function DecoratorPlugin() {\n const [editor] = useLexicalComposerContext()\n\n const $onDelete = (event: KeyboardEvent) => {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return false\n }\n event.preventDefault()\n selection.getNodes().forEach((node) => {\n node.remove()\n })\n return true\n }\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n CLICK_COMMAND,\n (event) => {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const decorator = $getDecoratorByMouseEvent(event)\n if (!decorator) {\n return true\n }\n const { target } = event\n const isInteractive =\n !(target instanceof HTMLElement) ||\n target.isContentEditable ||\n target.closest(\n 'button, textarea, input, .react-select, .code-editor, .no-select-decorator, [role=\"button\"]',\n )\n if (isInteractive) {\n $setSelection(null)\n } else {\n $selectDecorator(decorator)\n }\n return true\n },\n 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 editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const decorator = $getSelectedDecorator()\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n if (decorator) {\n decorator.element?.classList.add('decorator-selected')\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_UP_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n const prevSibling = selection.getNodes()[0]?.getPreviousSibling()\n if ($isDecoratorNode(prevSibling)) {\n const element = $getEditor().getElementByKey(prevSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: prevSibling })\n event.preventDefault()\n return true\n }\n return false\n }\n if (!$isElementNode(prevSibling)) {\n return false\n }\n const lastDescendant = prevSibling.getLastDescendant() ?? prevSibling\n if (!lastDescendant) {\n return false\n }\n const block = $findMatchingParent(lastDescendant, INTERNAL_$isBlock)\n block?.selectStart()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get first selected block\n const firstPoint = selection.isBackward() ? selection.anchor : selection.focus\n const firstNode = firstPoint.getNode()\n const firstSelectedBlock = $findMatchingParent(firstNode, (node) => {\n return findFirstSiblingBlock(node) !== null\n })\n const prevBlock = firstSelectedBlock?.getPreviousSibling()\n if (!firstSelectedBlock || prevBlock !== findFirstSiblingBlock(firstSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(prevBlock)) {\n const prevBlockElement = $getEditor().getElementByKey(prevBlock.getKey())\n if (prevBlockElement) {\n $selectDecorator({ element: prevBlockElement, node: prevBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ARROW_DOWN_COMMAND,\n (event) => {\n // CASE 1: Node selection\n const selection = $getSelection()\n if ($isNodeSelection(selection)) {\n event.preventDefault()\n const nextSibling = selection.getNodes()[0]?.getNextSibling()\n if ($isDecoratorNode(nextSibling)) {\n const element = $getEditor().getElementByKey(nextSibling.getKey())\n if (element) {\n $selectDecorator({ element, node: nextSibling })\n }\n return true\n }\n if (!$isElementNode(nextSibling)) {\n return true\n }\n const firstDescendant = nextSibling.getFirstDescendant() ?? nextSibling\n if (!firstDescendant) {\n return true\n }\n const block = $findMatchingParent(firstDescendant, INTERNAL_$isBlock)\n block?.selectEnd()\n event.preventDefault()\n return true\n }\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n // CASE 2: Range selection\n // Get last selected block\n const lastPoint = selection.isBackward() ? selection.anchor : selection.focus\n const lastNode = lastPoint.getNode()\n const lastSelectedBlock = $findMatchingParent(lastNode, (node) => {\n return findLaterSiblingBlock(node) !== null\n })\n const nextBlock = lastSelectedBlock?.getNextSibling()\n if (!lastSelectedBlock || nextBlock !== findLaterSiblingBlock(lastSelectedBlock)) {\n return false\n }\n\n if ($isDecoratorNode(nextBlock)) {\n const nextBlockElement = $getEditor().getElementByKey(nextBlock.getKey())\n if (nextBlockElement) {\n $selectDecorator({ element: nextBlockElement, node: nextBlock })\n event.preventDefault()\n return true\n }\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n\nfunction $getDecoratorByMouseEvent(\n event: MouseEvent,\n): { element: HTMLElement; node: DecoratorNode<unknown> } | undefined {\n if (!(event.target instanceof HTMLElement)) {\n return undefined\n }\n const element = event.target.closest('[data-lexical-decorator=\"true\"]')\n if (!(element instanceof HTMLElement)) {\n return undefined\n }\n const node = $getNearestNodeFromDOMNode(element)\n return $isDecoratorNode(node) ? { element, node } : undefined\n}\n\nfunction $getSelectedDecorator() {\n const selection = $getSelection()\n if (!$isNodeSelection(selection)) {\n return undefined\n }\n const nodes = selection.getNodes()\n if (nodes.length !== 1) {\n return undefined\n }\n const node = nodes[0]\n return $isDecoratorNode(node)\n ? {\n decorator: node,\n element: $getEditor().getElementByKey(node.getKey()),\n }\n : undefined\n}\n\nfunction $selectDecorator({\n element,\n node,\n}: {\n element: HTMLElement\n node: DecoratorNode<unknown>\n}) {\n document.querySelector('.decorator-selected')?.classList.remove('decorator-selected')\n const selection = $createNodeSelection()\n selection.add(node.getKey())\n $setSelection(selection)\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' })\n element.classList.add('decorator-selected')\n}\n\n/**\n * Copied from https://github.com/facebook/lexical/blob/main/packages/lexical/src/LexicalUtils.ts\n *\n * This function returns true for a DecoratorNode that is not inline OR\n * an ElementNode that is:\n * - not a root or shadow root\n * - not inline\n * - can't be empty\n * - has no children or an inline first child\n */\nexport function INTERNAL_$isBlock(node: LexicalNode): node is DecoratorNode<unknown> | ElementNode {\n if ($isDecoratorNode(node) && !node.isInline()) {\n return true\n }\n if (!$isElementNode(node) || $isRootOrShadowRoot(node)) {\n return false\n }\n\n const firstChild = node.getFirstChild()\n const isLeafElement =\n firstChild === null ||\n $isLineBreakNode(firstChild) ||\n $isTextNode(firstChild) ||\n firstChild.isInline()\n\n return !node.isInline() && node.canBeEmpty() !== false && isLeafElement\n}\n\nfunction findLaterSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getNextSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getNextSibling()\n }\n return null\n}\n\nfunction findFirstSiblingBlock(node: LexicalNode): LexicalNode | null {\n let current = node.getPreviousSibling()\n while (current !== null) {\n if (INTERNAL_$isBlock(current)) {\n return current\n }\n current = current.getPreviousSibling()\n }\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lexical/plugins/MarkdownShortcut/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAK9B,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAS1C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lexical/plugins/MarkdownShortcut/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAS1C,CAAA"}
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
+ import { registerMarkdownShortcuts } from '@lexical/markdown';
4
5
  import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
5
6
  import * as React from 'react';
6
- import { registerMarkdownShortcuts } from '../../../packages/@lexical/markdown/MarkdownShortcuts.js';
7
7
  import { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js';
8
8
  export const MarkdownShortcutPlugin = () => {
9
9
  const $ = _c(4);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","React","registerMarkdownShortcuts","useEditorConfigContext","MarkdownShortcutPlugin","$","editorConfig","editor","t0","t1","features","markdownTransformers","useEffect"],"sources":["../../../../src/lexical/plugins/MarkdownShortcut/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport * as React from 'react'\n\nimport { registerMarkdownShortcuts } from '../../../packages/@lexical/markdown/MarkdownShortcuts.js'\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\n\nexport const MarkdownShortcutPlugin: React.FC = () => {\n const { editorConfig } = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n\n React.useEffect(() => {\n return registerMarkdownShortcuts(editor, editorConfig.features.markdownTransformers ?? [])\n }, [editor, editorConfig.features.markdownTransformers])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,YAAYC,KAAA,MAAW;AAEvB,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,sBAAsB,QAAQ;AAEvC,OAAO,MAAMC,sBAAA,GAAmCA,CAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAC9C;IAAAO;EAAA,IAAyBH,sBAAA;EACzB,OAAAI,MAAA,IAAiBP,yBAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAC,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAEDH,EAAA,GAAAA,CAAA,KACPN,yBAAA,CAA0BK,MAAA,EAAQD,YAAA,CAAAI,QAAA,CAAAC,oBAAA,MAAgD;IACxFF,EAAA,IAACF,MAAA,EAAQD,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAA2CN,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAC,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAAAN,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EAFvDJ,KAAA,CAAAW,SAAA,CAAgBJ,EAEhB,EAAGC,EAAoD;EAAA;AAAA,CAGzD","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","registerMarkdownShortcuts","useLexicalComposerContext","React","useEditorConfigContext","MarkdownShortcutPlugin","$","editorConfig","editor","t0","t1","features","markdownTransformers","useEffect"],"sources":["../../../../src/lexical/plugins/MarkdownShortcut/index.tsx"],"sourcesContent":["'use client'\n\nimport { registerMarkdownShortcuts } from '@lexical/markdown'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport * as React from 'react'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\n\nexport const MarkdownShortcutPlugin: React.FC = () => {\n const { editorConfig } = useEditorConfigContext()\n const [editor] = useLexicalComposerContext()\n\n React.useEffect(() => {\n return registerMarkdownShortcuts(editor, editorConfig.features.markdownTransformers ?? [])\n }, [editor, editorConfig.features.markdownTransformers])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,yBAAyB,QAAQ;AAC1C,YAAYC,KAAA,MAAW;AAEvB,SAASC,sBAAsB,QAAQ;AAEvC,OAAO,MAAMC,sBAAA,GAAmCA,CAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAC9C;IAAAO;EAAA,IAAyBH,sBAAA;EACzB,OAAAI,MAAA,IAAiBN,yBAAA;EAAA,IAAAO,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAE,MAAA,IAAAF,CAAA,QAAAC,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAEDH,EAAA,GAAAA,CAAA,KACPR,yBAAA,CAA0BO,MAAA,EAAQD,YAAA,CAAAI,QAAA,CAAAC,oBAAA,MAAgD;IACxFF,EAAA,IAACF,MAAA,EAAQD,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAA2CN,CAAA,MAAAE,MAAA;IAAAF,CAAA,MAAAC,YAAA,CAAAI,QAAA,CAAAC,oBAAA;IAAAN,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EAFvDH,KAAA,CAAAU,SAAA,CAAgBJ,EAEhB,EAAGC,EAAoD;EAAA;AAAA,CAGzD","ignoreList":[]}
@@ -16,11 +16,7 @@
16
16
  overflow-y: auto;
17
17
  z-index: 10;
18
18
  position: absolute;
19
- box-shadow:
20
- 0 2px 6px 0 rgba(0, 0, 0, 0.12),
21
- 0 10px 16px 0 rgba(0, 0, 0, 0.08),
22
- 0 0 0.5px 0 rgba(0, 0, 0, 0.12),
23
- 0 0 0 1px rgba(0, 0, 0, 0.04);
19
+ box-shadow: var(--elevation-400-menu-panel);
24
20
  }
25
21
 
26
22
  .slash-menu-popup__group {
@@ -6,7 +6,7 @@
6
6
  cursor: pointer;
7
7
  opacity: 0;
8
8
  position: absolute;
9
- left: 0;
9
+ inset-inline-start: 0;
10
10
  top: 0;
11
11
  will-change: transform;
12
12
 
@@ -6,7 +6,7 @@
6
6
  cursor: grab;
7
7
  opacity: 0;
8
8
  position: absolute;
9
- left: 0;
9
+ inset-inline-start: 0;
10
10
  top: 0;
11
11
  will-change: transform;
12
12
  background-color: var(--color-bg);
@@ -50,7 +50,7 @@
50
50
  > .editor-scroller
51
51
  > .editor {
52
52
  > .draggable-block-target-line {
53
- left: var(--spacer-5);
53
+ inset-inline-start: var(--spacer-5);
54
54
  }
55
55
  }
56
56
 
@@ -60,7 +60,7 @@
60
60
  border-radius: var(--radius-small);
61
61
  height: var(--spacer-1);
62
62
  position: absolute;
63
- left: 0;
63
+ inset-inline-start: 0;
64
64
  top: 0;
65
65
  opacity: 0;
66
66
  will-change: transform;
@@ -271,7 +271,7 @@ function useDraggableBlockMenu(editor, anchorElem, isEditable) {
271
271
  }
272
272
  const highlightElem = document.createElement('div');
273
273
  highlightElem.className = 'lexical-block-highlighter';
274
- highlightElem.style.backgroundColor = 'var(--theme-elevation-1000';
274
+ highlightElem.style.backgroundColor = 'var(--color-bg-inverse)';
275
275
  highlightElem.style.transition = 'opacity 0.5s ease-in-out';
276
276
  highlightElem.style.zIndex = '1';
277
277
  highlightElem.style.pointerEvents = 'none';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","isHTMLElement","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","highlightTimersRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","current","onDragover","isFileTransfer","targetBlockElem","fuzzy","preventDefault","dropEffect","isBelow","willStayInSamePosition","getBoundingClientRect","width","boundingBox","elem","onDrop","dragData","getData","update","draggedNode","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","highlightTimer","newInsertedElemRect","highlightElem","createElement","className","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","fadeTimer","removeTimer","push","clearTimeout","onDragStart","effectAllowed","nodeKey","node","setData","onDragEnd","_jsxs","Fragment","_jsx","draggable","ref","type","DraggableBlockPlugin","t0","t1","undefined","_editable"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey, isHTMLElement } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.css'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const highlightTimersRef = useRef<ReturnType<typeof setTimeout>[]>([])\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n } | null>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n // Always prevent default and set dropEffect during drag to maintain the move cursor\n event.preventDefault()\n event.dataTransfer!.dropEffect = 'move'\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : 'var(--spacer-5)',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? (menuRef?.current?.getBoundingClientRect()?.width ?? 0)\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock!,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else if (lastTargetBlock?.elem) {\n hideTargetLine(targetLineElem, lastTargetBlock.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n const highlightTimer = setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem?.getBoundingClientRect()\n if (!newInsertedElemRect) {\n return\n }\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n highlightElem.style.backgroundColor = 'var(--theme-elevation-1000'\n highlightElem.style.transition = 'opacity 0.5s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n const fadeTimer = setTimeout(() => {\n highlightElem.style.opacity = '0'\n const removeTimer = setTimeout(() => {\n highlightElem.remove()\n }, 500)\n highlightTimersRef.current.push(removeTimer)\n }, 1000)\n highlightTimersRef.current.push(fadeTimer)\n }, 120)\n highlightTimersRef.current.push(highlightTimer)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n highlightTimersRef.current.forEach(clearTimeout)\n highlightTimersRef.current = []\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLButtonElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n dataTransfer.effectAllowed = 'move'\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n if (lastTargetBlock?.elem) {\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n }\n\n return createPortal(\n <React.Fragment>\n <button\n aria-label=\"Drag to move\"\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","isHTMLElement","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","highlightTimersRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","current","onDragover","isFileTransfer","targetBlockElem","fuzzy","preventDefault","dropEffect","isBelow","willStayInSamePosition","getBoundingClientRect","width","boundingBox","elem","onDrop","dragData","getData","update","draggedNode","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","highlightTimer","newInsertedElemRect","highlightElem","createElement","className","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","fadeTimer","removeTimer","push","clearTimeout","onDragStart","effectAllowed","nodeKey","node","setData","onDragEnd","_jsxs","Fragment","_jsx","draggable","ref","type","DraggableBlockPlugin","t0","t1","undefined","_editable"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey, isHTMLElement } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.css'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const highlightTimersRef = useRef<ReturnType<typeof setTimeout>[]>([])\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n } | null>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n // Always prevent default and set dropEffect during drag to maintain the move cursor\n event.preventDefault()\n event.dataTransfer!.dropEffect = 'move'\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : 'var(--spacer-5)',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? (menuRef?.current?.getBoundingClientRect()?.width ?? 0)\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock!,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else if (lastTargetBlock?.elem) {\n hideTargetLine(targetLineElem, lastTargetBlock.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n const highlightTimer = setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem?.getBoundingClientRect()\n if (!newInsertedElemRect) {\n return\n }\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n highlightElem.style.backgroundColor = 'var(--color-bg-inverse)'\n highlightElem.style.transition = 'opacity 0.5s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n const fadeTimer = setTimeout(() => {\n highlightElem.style.opacity = '0'\n const removeTimer = setTimeout(() => {\n highlightElem.remove()\n }, 500)\n highlightTimersRef.current.push(removeTimer)\n }, 1000)\n highlightTimersRef.current.push(fadeTimer)\n }, 120)\n highlightTimersRef.current.push(highlightTimer)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n highlightTimersRef.current.forEach(clearTimeout)\n highlightTimersRef.current = []\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLButtonElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n dataTransfer.effectAllowed = 'move'\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n if (lastTargetBlock?.elem) {\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n }\n\n return createPortal(\n <React.Fragment>\n <button\n aria-label=\"Drag to move\"\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"mappings":"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","ignoreList":[]}