@ekz/lexical-react 0.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (470) hide show
  1. package/@ekz/lexicalExtensionComponent.dev.js +53 -0
  2. package/@ekz/lexicalExtensionComponent.dev.mjs +51 -0
  3. package/@ekz/lexicalExtensionComponent.js +11 -0
  4. package/@ekz/lexicalExtensionComponent.mjs +12 -0
  5. package/@ekz/lexicalExtensionComponent.node.mjs +10 -0
  6. package/@ekz/lexicalExtensionComponent.prod.js +9 -0
  7. package/@ekz/lexicalExtensionComponent.prod.mjs +9 -0
  8. package/@ekz/lexicalReactExtension.dev.js +187 -0
  9. package/@ekz/lexicalReactExtension.dev.mjs +184 -0
  10. package/@ekz/lexicalReactExtension.js +11 -0
  11. package/@ekz/lexicalReactExtension.mjs +13 -0
  12. package/@ekz/lexicalReactExtension.node.mjs +11 -0
  13. package/@ekz/lexicalReactExtension.prod.js +9 -0
  14. package/@ekz/lexicalReactExtension.prod.mjs +9 -0
  15. package/@ekz/lexicalReactPluginHostExtension.dev.js +189 -0
  16. package/@ekz/lexicalReactPluginHostExtension.dev.mjs +181 -0
  17. package/@ekz/lexicalReactPluginHostExtension.js +11 -0
  18. package/@ekz/lexicalReactPluginHostExtension.mjs +18 -0
  19. package/@ekz/lexicalReactPluginHostExtension.node.mjs +16 -0
  20. package/@ekz/lexicalReactPluginHostExtension.prod.js +9 -0
  21. package/@ekz/lexicalReactPluginHostExtension.prod.mjs +9 -0
  22. package/@ekz/lexicalReactProviderExtension.dev.js +33 -0
  23. package/@ekz/lexicalReactProviderExtension.dev.mjs +31 -0
  24. package/@ekz/lexicalReactProviderExtension.js +11 -0
  25. package/@ekz/lexicalReactProviderExtension.mjs +12 -0
  26. package/@ekz/lexicalReactProviderExtension.node.mjs +10 -0
  27. package/@ekz/lexicalReactProviderExtension.prod.js +9 -0
  28. package/@ekz/lexicalReactProviderExtension.prod.mjs +9 -0
  29. package/@ekz/lexicalTreeViewExtension.dev.js +57 -0
  30. package/@ekz/lexicalTreeViewExtension.dev.mjs +54 -0
  31. package/@ekz/lexicalTreeViewExtension.js +11 -0
  32. package/@ekz/lexicalTreeViewExtension.mjs +13 -0
  33. package/@ekz/lexicalTreeViewExtension.node.mjs +11 -0
  34. package/@ekz/lexicalTreeViewExtension.prod.js +9 -0
  35. package/@ekz/lexicalTreeViewExtension.prod.mjs +9 -0
  36. package/ExtensionComponent.d.ts +42 -0
  37. package/LICENSE +21 -0
  38. package/LexicalAutoEmbedPlugin.d.ts +39 -0
  39. package/LexicalAutoEmbedPlugin.dev.js +146 -0
  40. package/LexicalAutoEmbedPlugin.dev.mjs +141 -0
  41. package/LexicalAutoEmbedPlugin.js +11 -0
  42. package/LexicalAutoEmbedPlugin.js.flow +64 -0
  43. package/LexicalAutoEmbedPlugin.mjs +15 -0
  44. package/LexicalAutoEmbedPlugin.node.mjs +13 -0
  45. package/LexicalAutoEmbedPlugin.prod.js +9 -0
  46. package/LexicalAutoEmbedPlugin.prod.mjs +9 -0
  47. package/LexicalAutoFocusPlugin.d.ts +12 -0
  48. package/LexicalAutoFocusPlugin.dev.js +47 -0
  49. package/LexicalAutoFocusPlugin.dev.mjs +45 -0
  50. package/LexicalAutoFocusPlugin.js +11 -0
  51. package/LexicalAutoFocusPlugin.js.flow +14 -0
  52. package/LexicalAutoFocusPlugin.mjs +12 -0
  53. package/LexicalAutoFocusPlugin.node.mjs +10 -0
  54. package/LexicalAutoFocusPlugin.prod.js +9 -0
  55. package/LexicalAutoFocusPlugin.prod.mjs +9 -0
  56. package/LexicalAutoLinkPlugin.d.ts +14 -0
  57. package/LexicalAutoLinkPlugin.dev.js +54 -0
  58. package/LexicalAutoLinkPlugin.dev.mjs +52 -0
  59. package/LexicalAutoLinkPlugin.js +11 -0
  60. package/LexicalAutoLinkPlugin.js.flow +18 -0
  61. package/LexicalAutoLinkPlugin.mjs +13 -0
  62. package/LexicalAutoLinkPlugin.node.mjs +11 -0
  63. package/LexicalAutoLinkPlugin.prod.js +9 -0
  64. package/LexicalAutoLinkPlugin.prod.mjs +9 -0
  65. package/LexicalBlockWithAlignableContents.d.ts +21 -0
  66. package/LexicalBlockWithAlignableContents.dev.js +81 -0
  67. package/LexicalBlockWithAlignableContents.dev.mjs +79 -0
  68. package/LexicalBlockWithAlignableContents.js +11 -0
  69. package/LexicalBlockWithAlignableContents.js.flow +28 -0
  70. package/LexicalBlockWithAlignableContents.mjs +12 -0
  71. package/LexicalBlockWithAlignableContents.node.mjs +10 -0
  72. package/LexicalBlockWithAlignableContents.prod.js +9 -0
  73. package/LexicalBlockWithAlignableContents.prod.mjs +9 -0
  74. package/LexicalCharacterLimitPlugin.d.ts +15 -0
  75. package/LexicalCharacterLimitPlugin.dev.js +292 -0
  76. package/LexicalCharacterLimitPlugin.dev.mjs +290 -0
  77. package/LexicalCharacterLimitPlugin.js +11 -0
  78. package/LexicalCharacterLimitPlugin.js.flow +12 -0
  79. package/LexicalCharacterLimitPlugin.mjs +12 -0
  80. package/LexicalCharacterLimitPlugin.node.mjs +10 -0
  81. package/LexicalCharacterLimitPlugin.prod.js +9 -0
  82. package/LexicalCharacterLimitPlugin.prod.mjs +9 -0
  83. package/LexicalCheckListPlugin.d.ts +8 -0
  84. package/LexicalCheckListPlugin.dev.js +31 -0
  85. package/LexicalCheckListPlugin.dev.mjs +29 -0
  86. package/LexicalCheckListPlugin.js +11 -0
  87. package/LexicalCheckListPlugin.js.flow +10 -0
  88. package/LexicalCheckListPlugin.mjs +12 -0
  89. package/LexicalCheckListPlugin.node.mjs +10 -0
  90. package/LexicalCheckListPlugin.prod.js +9 -0
  91. package/LexicalCheckListPlugin.prod.mjs +9 -0
  92. package/LexicalClearEditorPlugin.d.ts +13 -0
  93. package/LexicalClearEditorPlugin.dev.js +55 -0
  94. package/LexicalClearEditorPlugin.dev.mjs +53 -0
  95. package/LexicalClearEditorPlugin.js +11 -0
  96. package/LexicalClearEditorPlugin.js.flow +14 -0
  97. package/LexicalClearEditorPlugin.mjs +12 -0
  98. package/LexicalClearEditorPlugin.node.mjs +10 -0
  99. package/LexicalClearEditorPlugin.prod.js +9 -0
  100. package/LexicalClearEditorPlugin.prod.mjs +9 -0
  101. package/LexicalClickableLinkPlugin.d.ts +11 -0
  102. package/LexicalClickableLinkPlugin.dev.js +38 -0
  103. package/LexicalClickableLinkPlugin.dev.mjs +36 -0
  104. package/LexicalClickableLinkPlugin.js +11 -0
  105. package/LexicalClickableLinkPlugin.js.flow +12 -0
  106. package/LexicalClickableLinkPlugin.mjs +12 -0
  107. package/LexicalClickableLinkPlugin.node.mjs +10 -0
  108. package/LexicalClickableLinkPlugin.prod.js +9 -0
  109. package/LexicalClickableLinkPlugin.prod.mjs +9 -0
  110. package/LexicalCollaborationContext.d.ts +19 -0
  111. package/LexicalCollaborationContext.dev.js +69 -0
  112. package/LexicalCollaborationContext.dev.mjs +65 -0
  113. package/LexicalCollaborationContext.js +11 -0
  114. package/LexicalCollaborationContext.js.flow +22 -0
  115. package/LexicalCollaborationContext.mjs +14 -0
  116. package/LexicalCollaborationContext.node.mjs +12 -0
  117. package/LexicalCollaborationContext.prod.js +9 -0
  118. package/LexicalCollaborationContext.prod.mjs +9 -0
  119. package/LexicalCollaborationPlugin.d.ts +39 -0
  120. package/LexicalCollaborationPlugin.dev.js +584 -0
  121. package/LexicalCollaborationPlugin.dev.mjs +569 -0
  122. package/LexicalCollaborationPlugin.js +11 -0
  123. package/LexicalCollaborationPlugin.js.flow +50 -0
  124. package/LexicalCollaborationPlugin.mjs +13 -0
  125. package/LexicalCollaborationPlugin.node.mjs +11 -0
  126. package/LexicalCollaborationPlugin.prod.js +9 -0
  127. package/LexicalCollaborationPlugin.prod.mjs +9 -0
  128. package/LexicalComposer.d.ts +25 -0
  129. package/LexicalComposer.dev.js +134 -0
  130. package/LexicalComposer.dev.mjs +132 -0
  131. package/LexicalComposer.js +11 -0
  132. package/LexicalComposer.js.flow +40 -0
  133. package/LexicalComposer.mjs +12 -0
  134. package/LexicalComposer.node.mjs +10 -0
  135. package/LexicalComposer.prod.js +9 -0
  136. package/LexicalComposer.prod.mjs +9 -0
  137. package/LexicalComposerContext.d.ts +18 -0
  138. package/LexicalComposerContext.dev.js +55 -0
  139. package/LexicalComposerContext.dev.mjs +51 -0
  140. package/LexicalComposerContext.js +11 -0
  141. package/LexicalComposerContext.js.flow +27 -0
  142. package/LexicalComposerContext.mjs +14 -0
  143. package/LexicalComposerContext.node.mjs +12 -0
  144. package/LexicalComposerContext.prod.js +9 -0
  145. package/LexicalComposerContext.prod.mjs +9 -0
  146. package/LexicalContentEditable.d.ts +26 -0
  147. package/LexicalContentEditable.dev.js +242 -0
  148. package/LexicalContentEditable.dev.mjs +239 -0
  149. package/LexicalContentEditable.js +11 -0
  150. package/LexicalContentEditable.js.flow +80 -0
  151. package/LexicalContentEditable.mjs +13 -0
  152. package/LexicalContentEditable.node.mjs +11 -0
  153. package/LexicalContentEditable.prod.js +9 -0
  154. package/LexicalContentEditable.prod.mjs +9 -0
  155. package/LexicalContextMenuPlugin.d.ts +36 -0
  156. package/LexicalContextMenuPlugin.dev.js +524 -0
  157. package/LexicalContextMenuPlugin.dev.mjs +509 -0
  158. package/LexicalContextMenuPlugin.js +11 -0
  159. package/LexicalContextMenuPlugin.js.flow +13 -0
  160. package/LexicalContextMenuPlugin.mjs +13 -0
  161. package/LexicalContextMenuPlugin.node.mjs +11 -0
  162. package/LexicalContextMenuPlugin.prod.js +9 -0
  163. package/LexicalContextMenuPlugin.prod.mjs +9 -0
  164. package/LexicalDecoratorBlockNode.d.ts +25 -0
  165. package/LexicalDecoratorBlockNode.dev.js +59 -0
  166. package/LexicalDecoratorBlockNode.dev.mjs +56 -0
  167. package/LexicalDecoratorBlockNode.js +11 -0
  168. package/LexicalDecoratorBlockNode.js.flow +35 -0
  169. package/LexicalDecoratorBlockNode.mjs +13 -0
  170. package/LexicalDecoratorBlockNode.node.mjs +11 -0
  171. package/LexicalDecoratorBlockNode.prod.js +9 -0
  172. package/LexicalDecoratorBlockNode.prod.mjs +9 -0
  173. package/LexicalDraggableBlockPlugin.d.ts +18 -0
  174. package/LexicalDraggableBlockPlugin.dev.js +655 -0
  175. package/LexicalDraggableBlockPlugin.dev.mjs +653 -0
  176. package/LexicalDraggableBlockPlugin.js +11 -0
  177. package/LexicalDraggableBlockPlugin.js.flow +24 -0
  178. package/LexicalDraggableBlockPlugin.mjs +12 -0
  179. package/LexicalDraggableBlockPlugin.node.mjs +10 -0
  180. package/LexicalDraggableBlockPlugin.prod.js +9 -0
  181. package/LexicalDraggableBlockPlugin.prod.mjs +9 -0
  182. package/LexicalEditorRefPlugin.d.ts +20 -0
  183. package/LexicalEditorRefPlugin.dev.js +58 -0
  184. package/LexicalEditorRefPlugin.dev.mjs +43 -0
  185. package/LexicalEditorRefPlugin.js +11 -0
  186. package/LexicalEditorRefPlugin.js.flow +19 -0
  187. package/LexicalEditorRefPlugin.mjs +12 -0
  188. package/LexicalEditorRefPlugin.node.mjs +10 -0
  189. package/LexicalEditorRefPlugin.prod.js +9 -0
  190. package/LexicalEditorRefPlugin.prod.mjs +9 -0
  191. package/LexicalErrorBoundary.d.ts +13 -0
  192. package/LexicalErrorBoundary.dev.js +40 -0
  193. package/LexicalErrorBoundary.dev.mjs +38 -0
  194. package/LexicalErrorBoundary.js +11 -0
  195. package/LexicalErrorBoundary.js.flow +17 -0
  196. package/LexicalErrorBoundary.mjs +12 -0
  197. package/LexicalErrorBoundary.node.mjs +10 -0
  198. package/LexicalErrorBoundary.prod.js +9 -0
  199. package/LexicalErrorBoundary.prod.mjs +9 -0
  200. package/LexicalExtensionComponent.js.flow +12 -0
  201. package/LexicalExtensionComposer.d.ts +69 -0
  202. package/LexicalExtensionComposer.dev.js +105 -0
  203. package/LexicalExtensionComposer.dev.mjs +103 -0
  204. package/LexicalExtensionComposer.js +11 -0
  205. package/LexicalExtensionComposer.js.flow +20 -0
  206. package/LexicalExtensionComposer.mjs +12 -0
  207. package/LexicalExtensionComposer.node.mjs +10 -0
  208. package/LexicalExtensionComposer.prod.js +9 -0
  209. package/LexicalExtensionComposer.prod.mjs +9 -0
  210. package/LexicalHashtagPlugin.d.ts +9 -0
  211. package/LexicalHashtagPlugin.dev.js +34 -0
  212. package/LexicalHashtagPlugin.dev.mjs +32 -0
  213. package/LexicalHashtagPlugin.js +11 -0
  214. package/LexicalHashtagPlugin.js.flow +10 -0
  215. package/LexicalHashtagPlugin.mjs +12 -0
  216. package/LexicalHashtagPlugin.node.mjs +10 -0
  217. package/LexicalHashtagPlugin.prod.js +9 -0
  218. package/LexicalHashtagPlugin.prod.mjs +9 -0
  219. package/LexicalHistoryPlugin.d.ts +14 -0
  220. package/LexicalHistoryPlugin.dev.js +48 -0
  221. package/LexicalHistoryPlugin.dev.mjs +46 -0
  222. package/LexicalHistoryPlugin.js +11 -0
  223. package/LexicalHistoryPlugin.js.flow +28 -0
  224. package/LexicalHistoryPlugin.mjs +13 -0
  225. package/LexicalHistoryPlugin.node.mjs +11 -0
  226. package/LexicalHistoryPlugin.prod.js +9 -0
  227. package/LexicalHistoryPlugin.prod.mjs +9 -0
  228. package/LexicalHorizontalRuleNode.d.ts +25 -0
  229. package/LexicalHorizontalRuleNode.dev.js +102 -0
  230. package/LexicalHorizontalRuleNode.dev.mjs +98 -0
  231. package/LexicalHorizontalRuleNode.js +11 -0
  232. package/LexicalHorizontalRuleNode.js.flow +27 -0
  233. package/LexicalHorizontalRuleNode.mjs +15 -0
  234. package/LexicalHorizontalRuleNode.node.mjs +13 -0
  235. package/LexicalHorizontalRuleNode.prod.js +9 -0
  236. package/LexicalHorizontalRuleNode.prod.mjs +9 -0
  237. package/LexicalHorizontalRulePlugin.d.ts +8 -0
  238. package/LexicalHorizontalRulePlugin.dev.js +44 -0
  239. package/LexicalHorizontalRulePlugin.dev.mjs +42 -0
  240. package/LexicalHorizontalRulePlugin.js +11 -0
  241. package/LexicalHorizontalRulePlugin.js.flow +12 -0
  242. package/LexicalHorizontalRulePlugin.mjs +12 -0
  243. package/LexicalHorizontalRulePlugin.node.mjs +10 -0
  244. package/LexicalHorizontalRulePlugin.prod.js +9 -0
  245. package/LexicalHorizontalRulePlugin.prod.mjs +9 -0
  246. package/LexicalLinkPlugin.d.ts +14 -0
  247. package/LexicalLinkPlugin.dev.js +43 -0
  248. package/LexicalLinkPlugin.dev.mjs +41 -0
  249. package/LexicalLinkPlugin.js +11 -0
  250. package/LexicalLinkPlugin.js.flow +21 -0
  251. package/LexicalLinkPlugin.mjs +12 -0
  252. package/LexicalLinkPlugin.node.mjs +10 -0
  253. package/LexicalLinkPlugin.prod.js +9 -0
  254. package/LexicalLinkPlugin.prod.mjs +9 -0
  255. package/LexicalListPlugin.d.ts +20 -0
  256. package/LexicalListPlugin.dev.js +55 -0
  257. package/LexicalListPlugin.dev.mjs +53 -0
  258. package/LexicalListPlugin.js +11 -0
  259. package/LexicalListPlugin.js.flow +15 -0
  260. package/LexicalListPlugin.mjs +12 -0
  261. package/LexicalListPlugin.node.mjs +10 -0
  262. package/LexicalListPlugin.prod.js +9 -0
  263. package/LexicalListPlugin.prod.mjs +9 -0
  264. package/LexicalMarkdownShortcutPlugin.d.ts +12 -0
  265. package/LexicalMarkdownShortcutPlugin.dev.js +55 -0
  266. package/LexicalMarkdownShortcutPlugin.dev.mjs +52 -0
  267. package/LexicalMarkdownShortcutPlugin.js +11 -0
  268. package/LexicalMarkdownShortcutPlugin.js.flow +16 -0
  269. package/LexicalMarkdownShortcutPlugin.mjs +13 -0
  270. package/LexicalMarkdownShortcutPlugin.node.mjs +11 -0
  271. package/LexicalMarkdownShortcutPlugin.prod.js +9 -0
  272. package/LexicalMarkdownShortcutPlugin.prod.mjs +9 -0
  273. package/LexicalNestedComposer.d.ts +57 -0
  274. package/LexicalNestedComposer.dev.js +161 -0
  275. package/LexicalNestedComposer.dev.mjs +159 -0
  276. package/LexicalNestedComposer.js +11 -0
  277. package/LexicalNestedComposer.js.flow +26 -0
  278. package/LexicalNestedComposer.mjs +12 -0
  279. package/LexicalNestedComposer.node.mjs +10 -0
  280. package/LexicalNestedComposer.prod.js +9 -0
  281. package/LexicalNestedComposer.prod.mjs +9 -0
  282. package/LexicalNodeContextMenuPlugin.d.ts +46 -0
  283. package/LexicalNodeContextMenuPlugin.dev.js +257 -0
  284. package/LexicalNodeContextMenuPlugin.dev.mjs +253 -0
  285. package/LexicalNodeContextMenuPlugin.js +11 -0
  286. package/LexicalNodeContextMenuPlugin.js.flow +12 -0
  287. package/LexicalNodeContextMenuPlugin.mjs +14 -0
  288. package/LexicalNodeContextMenuPlugin.node.mjs +12 -0
  289. package/LexicalNodeContextMenuPlugin.prod.js +9 -0
  290. package/LexicalNodeContextMenuPlugin.prod.mjs +9 -0
  291. package/LexicalNodeEventPlugin.d.ts +13 -0
  292. package/LexicalNodeEventPlugin.dev.js +61 -0
  293. package/LexicalNodeEventPlugin.dev.mjs +59 -0
  294. package/LexicalNodeEventPlugin.js +11 -0
  295. package/LexicalNodeEventPlugin.js.flow +20 -0
  296. package/LexicalNodeEventPlugin.mjs +12 -0
  297. package/LexicalNodeEventPlugin.node.mjs +10 -0
  298. package/LexicalNodeEventPlugin.prod.js +9 -0
  299. package/LexicalNodeEventPlugin.prod.mjs +9 -0
  300. package/LexicalNodeMenuPlugin.d.ts +24 -0
  301. package/LexicalNodeMenuPlugin.dev.js +527 -0
  302. package/LexicalNodeMenuPlugin.dev.mjs +524 -0
  303. package/LexicalNodeMenuPlugin.js +11 -0
  304. package/LexicalNodeMenuPlugin.js.flow +64 -0
  305. package/LexicalNodeMenuPlugin.mjs +13 -0
  306. package/LexicalNodeMenuPlugin.node.mjs +11 -0
  307. package/LexicalNodeMenuPlugin.prod.js +9 -0
  308. package/LexicalNodeMenuPlugin.prod.mjs +9 -0
  309. package/LexicalOnChangePlugin.d.ts +13 -0
  310. package/LexicalOnChangePlugin.dev.js +72 -0
  311. package/LexicalOnChangePlugin.dev.mjs +70 -0
  312. package/LexicalOnChangePlugin.js +11 -0
  313. package/LexicalOnChangePlugin.js.flow +16 -0
  314. package/LexicalOnChangePlugin.mjs +12 -0
  315. package/LexicalOnChangePlugin.node.mjs +10 -0
  316. package/LexicalOnChangePlugin.prod.js +9 -0
  317. package/LexicalOnChangePlugin.prod.mjs +9 -0
  318. package/LexicalPlainTextPlugin.d.ts +14 -0
  319. package/LexicalPlainTextPlugin.dev.js +235 -0
  320. package/LexicalPlainTextPlugin.dev.mjs +233 -0
  321. package/LexicalPlainTextPlugin.js +11 -0
  322. package/LexicalPlainTextPlugin.js.flow +29 -0
  323. package/LexicalPlainTextPlugin.mjs +12 -0
  324. package/LexicalPlainTextPlugin.node.mjs +10 -0
  325. package/LexicalPlainTextPlugin.prod.js +9 -0
  326. package/LexicalPlainTextPlugin.prod.mjs +9 -0
  327. package/LexicalReactExtension.js.flow +68 -0
  328. package/LexicalReactPluginHostExtension.js.flow +84 -0
  329. package/LexicalReactProviderExtension.js.flow +12 -0
  330. package/LexicalRichTextPlugin.d.ts +14 -0
  331. package/LexicalRichTextPlugin.dev.js +235 -0
  332. package/LexicalRichTextPlugin.dev.mjs +233 -0
  333. package/LexicalRichTextPlugin.js +11 -0
  334. package/LexicalRichTextPlugin.js.flow +29 -0
  335. package/LexicalRichTextPlugin.mjs +12 -0
  336. package/LexicalRichTextPlugin.node.mjs +10 -0
  337. package/LexicalRichTextPlugin.prod.js +9 -0
  338. package/LexicalRichTextPlugin.prod.mjs +9 -0
  339. package/LexicalSelectionAlwaysOnDisplay.d.ts +12 -0
  340. package/LexicalSelectionAlwaysOnDisplay.dev.js +33 -0
  341. package/LexicalSelectionAlwaysOnDisplay.dev.mjs +31 -0
  342. package/LexicalSelectionAlwaysOnDisplay.js +11 -0
  343. package/LexicalSelectionAlwaysOnDisplay.js.flow +15 -0
  344. package/LexicalSelectionAlwaysOnDisplay.mjs +12 -0
  345. package/LexicalSelectionAlwaysOnDisplay.node.mjs +10 -0
  346. package/LexicalSelectionAlwaysOnDisplay.prod.js +9 -0
  347. package/LexicalSelectionAlwaysOnDisplay.prod.mjs +9 -0
  348. package/LexicalTabIndentationPlugin.d.ts +17 -0
  349. package/LexicalTabIndentationPlugin.dev.js +40 -0
  350. package/LexicalTabIndentationPlugin.dev.mjs +38 -0
  351. package/LexicalTabIndentationPlugin.js +11 -0
  352. package/LexicalTabIndentationPlugin.js.flow +21 -0
  353. package/LexicalTabIndentationPlugin.mjs +13 -0
  354. package/LexicalTabIndentationPlugin.node.mjs +11 -0
  355. package/LexicalTabIndentationPlugin.prod.js +9 -0
  356. package/LexicalTabIndentationPlugin.prod.mjs +9 -0
  357. package/LexicalTableOfContentsPlugin.d.ts +20 -0
  358. package/LexicalTableOfContentsPlugin.dev.js +209 -0
  359. package/LexicalTableOfContentsPlugin.dev.mjs +207 -0
  360. package/LexicalTableOfContentsPlugin.js +11 -0
  361. package/LexicalTableOfContentsPlugin.js.flow +18 -0
  362. package/LexicalTableOfContentsPlugin.mjs +12 -0
  363. package/LexicalTableOfContentsPlugin.node.mjs +10 -0
  364. package/LexicalTableOfContentsPlugin.prod.js +9 -0
  365. package/LexicalTableOfContentsPlugin.prod.mjs +9 -0
  366. package/LexicalTablePlugin.d.ts +46 -0
  367. package/LexicalTablePlugin.dev.js +81 -0
  368. package/LexicalTablePlugin.dev.mjs +79 -0
  369. package/LexicalTablePlugin.js +11 -0
  370. package/LexicalTablePlugin.js.flow +15 -0
  371. package/LexicalTablePlugin.mjs +12 -0
  372. package/LexicalTablePlugin.node.mjs +10 -0
  373. package/LexicalTablePlugin.prod.js +9 -0
  374. package/LexicalTablePlugin.prod.mjs +9 -0
  375. package/LexicalTreeView.d.ts +37 -0
  376. package/LexicalTreeView.dev.js +105 -0
  377. package/LexicalTreeView.dev.mjs +91 -0
  378. package/LexicalTreeView.js +11 -0
  379. package/LexicalTreeView.js.flow +21 -0
  380. package/LexicalTreeView.mjs +12 -0
  381. package/LexicalTreeView.node.mjs +10 -0
  382. package/LexicalTreeView.prod.js +9 -0
  383. package/LexicalTreeView.prod.mjs +9 -0
  384. package/LexicalTreeViewExtension.js.flow +12 -0
  385. package/LexicalTypeaheadMenuPlugin.d.ts +40 -0
  386. package/LexicalTypeaheadMenuPlugin.dev.js +654 -0
  387. package/LexicalTypeaheadMenuPlugin.dev.mjs +646 -0
  388. package/LexicalTypeaheadMenuPlugin.js +11 -0
  389. package/LexicalTypeaheadMenuPlugin.js.flow +83 -0
  390. package/LexicalTypeaheadMenuPlugin.mjs +18 -0
  391. package/LexicalTypeaheadMenuPlugin.node.mjs +16 -0
  392. package/LexicalTypeaheadMenuPlugin.prod.js +9 -0
  393. package/LexicalTypeaheadMenuPlugin.prod.mjs +9 -0
  394. package/README.md +90 -0
  395. package/ReactExtension.d.ts +41 -0
  396. package/ReactPluginHostExtension.d.ts +56 -0
  397. package/ReactProviderExtension.d.ts +9 -0
  398. package/TreeViewExtension.d.ts +18 -0
  399. package/package.json +1549 -0
  400. package/shared/LegacyDecorators.d.ts +23 -0
  401. package/shared/LexicalContentEditableElement.d.ts +43 -0
  402. package/shared/LexicalMenu.d.ts +52 -0
  403. package/shared/buildEditorComponent.d.ts +11 -0
  404. package/shared/mergeRefs.d.ts +9 -0
  405. package/shared/point.d.ts +21 -0
  406. package/shared/rect.d.ts +45 -0
  407. package/shared/types.d.ts +89 -0
  408. package/shared/useCanShowPlaceholder.d.ts +9 -0
  409. package/shared/useCharacterLimit.d.ts +16 -0
  410. package/shared/useDecorators.d.ts +17 -0
  411. package/shared/useHistory.d.ts +10 -0
  412. package/shared/useList.d.ts +9 -0
  413. package/shared/usePlainTextSetup.d.ts +9 -0
  414. package/shared/useReactDecorators.d.ts +12 -0
  415. package/shared/useRichTextSetup.d.ts +9 -0
  416. package/shared/useYjsCollaboration.d.ts +25 -0
  417. package/useExtensionComponent.d.ts +10 -0
  418. package/useLexicalEditable.d.ts +16 -0
  419. package/useLexicalEditable.dev.js +102 -0
  420. package/useLexicalEditable.dev.mjs +100 -0
  421. package/useLexicalEditable.js +11 -0
  422. package/useLexicalEditable.js.flow +12 -0
  423. package/useLexicalEditable.mjs +12 -0
  424. package/useLexicalEditable.node.mjs +10 -0
  425. package/useLexicalEditable.prod.js +9 -0
  426. package/useLexicalEditable.prod.mjs +9 -0
  427. package/useLexicalExtensionComponent.dev.js +37 -0
  428. package/useLexicalExtensionComponent.dev.mjs +34 -0
  429. package/useLexicalExtensionComponent.js +11 -0
  430. package/useLexicalExtensionComponent.js.flow +12 -0
  431. package/useLexicalExtensionComponent.mjs +13 -0
  432. package/useLexicalExtensionComponent.node.mjs +11 -0
  433. package/useLexicalExtensionComponent.prod.js +9 -0
  434. package/useLexicalExtensionComponent.prod.mjs +9 -0
  435. package/useLexicalIsTextContentEmpty.d.ts +9 -0
  436. package/useLexicalIsTextContentEmpty.dev.js +60 -0
  437. package/useLexicalIsTextContentEmpty.dev.mjs +58 -0
  438. package/useLexicalIsTextContentEmpty.js +11 -0
  439. package/useLexicalIsTextContentEmpty.js.flow +15 -0
  440. package/useLexicalIsTextContentEmpty.mjs +12 -0
  441. package/useLexicalIsTextContentEmpty.node.mjs +10 -0
  442. package/useLexicalIsTextContentEmpty.prod.js +9 -0
  443. package/useLexicalIsTextContentEmpty.prod.mjs +9 -0
  444. package/useLexicalNodeSelection.d.ts +24 -0
  445. package/useLexicalNodeSelection.dev.js +102 -0
  446. package/useLexicalNodeSelection.dev.mjs +100 -0
  447. package/useLexicalNodeSelection.js +11 -0
  448. package/useLexicalNodeSelection.js.flow +14 -0
  449. package/useLexicalNodeSelection.mjs +12 -0
  450. package/useLexicalNodeSelection.node.mjs +10 -0
  451. package/useLexicalNodeSelection.prod.js +9 -0
  452. package/useLexicalNodeSelection.prod.mjs +9 -0
  453. package/useLexicalSubscription.d.ts +17 -0
  454. package/useLexicalSubscription.dev.js +73 -0
  455. package/useLexicalSubscription.dev.mjs +71 -0
  456. package/useLexicalSubscription.js +11 -0
  457. package/useLexicalSubscription.js.flow +19 -0
  458. package/useLexicalSubscription.mjs +12 -0
  459. package/useLexicalSubscription.node.mjs +10 -0
  460. package/useLexicalSubscription.prod.js +9 -0
  461. package/useLexicalSubscription.prod.mjs +9 -0
  462. package/useLexicalTextEntity.d.ts +10 -0
  463. package/useLexicalTextEntity.dev.js +31 -0
  464. package/useLexicalTextEntity.dev.mjs +29 -0
  465. package/useLexicalTextEntity.js +11 -0
  466. package/useLexicalTextEntity.js.flow +18 -0
  467. package/useLexicalTextEntity.mjs +12 -0
  468. package/useLexicalTextEntity.node.mjs +10 -0
  469. package/useLexicalTextEntity.prod.js +9 -0
  470. package/useLexicalTextEntity.prod.mjs +9 -0
@@ -0,0 +1,653 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import { useLexicalComposerContext } from '@ekz/lexical-react/LexicalComposerContext';
10
+ import { eventFiles } from '@ekz/lexical-rich-text';
11
+ import { calculateZoomLevel, mergeRegister, isHTMLElement } from '@ekz/lexical-utils';
12
+ import { DRAGOVER_COMMAND, COMMAND_PRIORITY_LOW, DROP_COMMAND, COMMAND_PRIORITY_HIGH, BLUR_COMMAND, $getSelection, $getNodeByKey, $getNearestNodeFromDOMNode, $onUpdate, $getRoot } from '@ekz/lexical';
13
+ import { useRef, useState, useCallback, useEffect } from 'react';
14
+ import { createPortal } from 'react-dom';
15
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
16
+
17
+ /**
18
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
19
+ *
20
+ * This source code is licensed under the MIT license found in the
21
+ * LICENSE file in the root directory of this source tree.
22
+ *
23
+ */
24
+
25
+ const CAN_USE_DOM = typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined';
26
+
27
+ /**
28
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
29
+ *
30
+ * This source code is licensed under the MIT license found in the
31
+ * LICENSE file in the root directory of this source tree.
32
+ *
33
+ */
34
+
35
+ const documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null;
36
+ const IS_FIREFOX = CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent);
37
+ CAN_USE_DOM && 'InputEvent' in window && !documentMode ? 'getTargetRanges' in new window.InputEvent('input') : false;
38
+
39
+ /**
40
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
41
+ *
42
+ * This source code is licensed under the MIT license found in the
43
+ * LICENSE file in the root directory of this source tree.
44
+ *
45
+ */
46
+ class Point {
47
+ _x;
48
+ _y;
49
+ constructor(x, y) {
50
+ this._x = x;
51
+ this._y = y;
52
+ }
53
+ get x() {
54
+ return this._x;
55
+ }
56
+ get y() {
57
+ return this._y;
58
+ }
59
+ equals({
60
+ x,
61
+ y
62
+ }) {
63
+ return this.x === x && this.y === y;
64
+ }
65
+ calcDeltaXTo({
66
+ x
67
+ }) {
68
+ return this.x - x;
69
+ }
70
+ calcDeltaYTo({
71
+ y
72
+ }) {
73
+ return this.y - y;
74
+ }
75
+ calcHorizontalDistanceTo(point) {
76
+ return Math.abs(this.calcDeltaXTo(point));
77
+ }
78
+ calcVerticalDistance(point) {
79
+ return Math.abs(this.calcDeltaYTo(point));
80
+ }
81
+ calcDistanceTo(point) {
82
+ return Math.sqrt(Math.pow(this.calcDeltaXTo(point), 2) + Math.pow(this.calcDeltaYTo(point), 2));
83
+ }
84
+ }
85
+ function isPoint(x) {
86
+ return x instanceof Point;
87
+ }
88
+
89
+ /**
90
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
91
+ *
92
+ * This source code is licensed under the MIT license found in the
93
+ * LICENSE file in the root directory of this source tree.
94
+ *
95
+ */
96
+ class Rectangle {
97
+ _left;
98
+ _top;
99
+ _right;
100
+ _bottom;
101
+ constructor(left, top, right, bottom) {
102
+ const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top];
103
+ const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left];
104
+ this._top = physicTop;
105
+ this._right = physicRight;
106
+ this._left = physicLeft;
107
+ this._bottom = physicBottom;
108
+ }
109
+ get top() {
110
+ return this._top;
111
+ }
112
+ get right() {
113
+ return this._right;
114
+ }
115
+ get bottom() {
116
+ return this._bottom;
117
+ }
118
+ get left() {
119
+ return this._left;
120
+ }
121
+ get width() {
122
+ return Math.abs(this._left - this._right);
123
+ }
124
+ get height() {
125
+ return Math.abs(this._bottom - this._top);
126
+ }
127
+ equals({
128
+ top,
129
+ left,
130
+ bottom,
131
+ right
132
+ }) {
133
+ return top === this._top && bottom === this._bottom && left === this._left && right === this._right;
134
+ }
135
+ contains(target) {
136
+ if (isPoint(target)) {
137
+ const {
138
+ x,
139
+ y
140
+ } = target;
141
+ const isOnTopSide = y < this._top;
142
+ const isOnBottomSide = y > this._bottom;
143
+ const isOnLeftSide = x < this._left;
144
+ const isOnRightSide = x > this._right;
145
+ const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide;
146
+ return {
147
+ reason: {
148
+ isOnBottomSide,
149
+ isOnLeftSide,
150
+ isOnRightSide,
151
+ isOnTopSide
152
+ },
153
+ result
154
+ };
155
+ } else {
156
+ const {
157
+ top,
158
+ left,
159
+ bottom,
160
+ right
161
+ } = target;
162
+ return top >= this._top && top <= this._bottom && bottom >= this._top && bottom <= this._bottom && left >= this._left && left <= this._right && right >= this._left && right <= this._right;
163
+ }
164
+ }
165
+ intersectsWith(rect) {
166
+ const {
167
+ left: x1,
168
+ top: y1,
169
+ width: w1,
170
+ height: h1
171
+ } = rect;
172
+ const {
173
+ left: x2,
174
+ top: y2,
175
+ width: w2,
176
+ height: h2
177
+ } = this;
178
+ const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2;
179
+ const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2;
180
+ const minX = x1 <= x2 ? x1 : x2;
181
+ const minY = y1 <= y2 ? y1 : y2;
182
+ return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2;
183
+ }
184
+ generateNewRect({
185
+ left = this.left,
186
+ top = this.top,
187
+ right = this.right,
188
+ bottom = this.bottom
189
+ }) {
190
+ return new Rectangle(left, top, right, bottom);
191
+ }
192
+ static fromLTRB(left, top, right, bottom) {
193
+ return new Rectangle(left, top, right, bottom);
194
+ }
195
+ static fromLWTH(left, width, top, height) {
196
+ return new Rectangle(left, top, left + width, top + height);
197
+ }
198
+ static fromPoints(startPoint, endPoint) {
199
+ const {
200
+ y: top,
201
+ x: left
202
+ } = startPoint;
203
+ const {
204
+ y: bottom,
205
+ x: right
206
+ } = endPoint;
207
+ return Rectangle.fromLTRB(left, top, right, bottom);
208
+ }
209
+ static fromDOM(dom) {
210
+ const {
211
+ top,
212
+ width,
213
+ left,
214
+ height
215
+ } = dom.getBoundingClientRect();
216
+ return Rectangle.fromLWTH(left, width, top, height);
217
+ }
218
+ }
219
+
220
+ /**
221
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
222
+ *
223
+ * This source code is licensed under the MIT license found in the
224
+ * LICENSE file in the root directory of this source tree.
225
+ *
226
+ */
227
+
228
+ const SPACE = 4;
229
+ const TARGET_LINE_HALF_HEIGHT = 2;
230
+ const DRAG_DATA_FORMAT = 'application/x-lexical-drag-block';
231
+ const TEXT_BOX_HORIZONTAL_PADDING = 28;
232
+ const Downward = 1;
233
+ const Upward = -1;
234
+ const Indeterminate = 0;
235
+ let prevIndex = Infinity;
236
+ function getCurrentIndex(keysLength) {
237
+ if (keysLength === 0) {
238
+ return Infinity;
239
+ }
240
+ if (prevIndex >= 0 && prevIndex < keysLength) {
241
+ return prevIndex;
242
+ }
243
+ return Math.floor(keysLength / 2);
244
+ }
245
+ function getTopLevelNodeKeys(editor) {
246
+ return editor.getEditorState().read(() => $getRoot().getChildrenKeys());
247
+ }
248
+ function getCollapsedMargins(elem) {
249
+ const getMargin = (element, margin) => element ? parseFloat(window.getComputedStyle(element)[margin]) : 0;
250
+ const {
251
+ marginTop,
252
+ marginBottom
253
+ } = window.getComputedStyle(elem);
254
+ const prevElemSiblingMarginBottom = getMargin(elem.previousElementSibling, 'marginBottom');
255
+ const nextElemSiblingMarginTop = getMargin(elem.nextElementSibling, 'marginTop');
256
+ const collapsedTopMargin = Math.max(parseFloat(marginTop), prevElemSiblingMarginBottom);
257
+ const collapsedBottomMargin = Math.max(parseFloat(marginBottom), nextElemSiblingMarginTop);
258
+ return {
259
+ marginBottom: collapsedBottomMargin,
260
+ marginTop: collapsedTopMargin
261
+ };
262
+ }
263
+ function getBlockElement(anchorElem, editor, event, useEdgeAsDefault = false) {
264
+ const anchorElementRect = anchorElem.getBoundingClientRect();
265
+ const topLevelNodeKeys = getTopLevelNodeKeys(editor);
266
+ let blockElem = null;
267
+ editor.getEditorState().read(() => {
268
+ if (useEdgeAsDefault) {
269
+ const [firstNode, lastNode] = [editor.getElementByKey(topLevelNodeKeys[0]), editor.getElementByKey(topLevelNodeKeys[topLevelNodeKeys.length - 1])];
270
+ const [firstNodeRect, lastNodeRect] = [firstNode != null ? firstNode.getBoundingClientRect() : undefined, lastNode != null ? lastNode.getBoundingClientRect() : undefined];
271
+ if (firstNodeRect && lastNodeRect) {
272
+ const firstNodeZoom = calculateZoomLevel(firstNode);
273
+ const lastNodeZoom = calculateZoomLevel(lastNode);
274
+ if (event.y / firstNodeZoom < firstNodeRect.top) {
275
+ blockElem = firstNode;
276
+ } else if (event.y / lastNodeZoom > lastNodeRect.bottom) {
277
+ blockElem = lastNode;
278
+ }
279
+ if (blockElem) {
280
+ return;
281
+ }
282
+ }
283
+ }
284
+ let index = getCurrentIndex(topLevelNodeKeys.length);
285
+ let direction = Indeterminate;
286
+ while (index >= 0 && index < topLevelNodeKeys.length) {
287
+ const key = topLevelNodeKeys[index];
288
+ const elem = editor.getElementByKey(key);
289
+ if (elem === null) {
290
+ break;
291
+ }
292
+ const zoom = calculateZoomLevel(elem);
293
+ const point = new Point(event.x / zoom, event.y / zoom);
294
+ const domRect = Rectangle.fromDOM(elem);
295
+ const {
296
+ marginTop,
297
+ marginBottom
298
+ } = getCollapsedMargins(elem);
299
+ const rect = domRect.generateNewRect({
300
+ bottom: domRect.bottom + marginBottom,
301
+ left: anchorElementRect.left,
302
+ right: anchorElementRect.right,
303
+ top: domRect.top - marginTop
304
+ });
305
+ const {
306
+ result,
307
+ reason: {
308
+ isOnTopSide,
309
+ isOnBottomSide
310
+ }
311
+ } = rect.contains(point);
312
+ if (result) {
313
+ blockElem = elem;
314
+ prevIndex = index;
315
+ break;
316
+ }
317
+ if (direction === Indeterminate) {
318
+ if (isOnTopSide) {
319
+ direction = Upward;
320
+ } else if (isOnBottomSide) {
321
+ direction = Downward;
322
+ } else {
323
+ // stop search block element
324
+ direction = Infinity;
325
+ }
326
+ }
327
+ index += direction;
328
+ }
329
+ });
330
+ return blockElem;
331
+ }
332
+ function setMenuPosition(targetElem, floatingElem, anchorElem, zoomLevel) {
333
+ if (!targetElem) {
334
+ floatingElem.style.display = 'none';
335
+ return;
336
+ }
337
+ const targetRect = targetElem.getBoundingClientRect();
338
+ const targetStyle = window.getComputedStyle(targetElem);
339
+ const floatingElemRect = floatingElem.getBoundingClientRect();
340
+ const anchorElementRect = anchorElem.getBoundingClientRect();
341
+
342
+ // top left
343
+ let targetCalculateHeight = parseInt(targetStyle.lineHeight, 10);
344
+ if (isNaN(targetCalculateHeight)) {
345
+ // middle
346
+ targetCalculateHeight = targetRect.bottom - targetRect.top;
347
+ }
348
+ const top = (targetRect.top + (targetCalculateHeight - (floatingElemRect.height || targetCalculateHeight)) / 2 - anchorElementRect.top + anchorElem.scrollTop) / zoomLevel;
349
+ const left = SPACE;
350
+ floatingElem.style.display = 'flex';
351
+ floatingElem.style.opacity = '1';
352
+ floatingElem.style.transform = `translate(${left}px, ${top}px)`;
353
+ }
354
+ function setDragImage(dataTransfer, draggableBlockElem) {
355
+ const {
356
+ transform
357
+ } = draggableBlockElem.style;
358
+
359
+ // Remove dragImage borders
360
+ draggableBlockElem.style.transform = 'translateZ(0)';
361
+ dataTransfer.setDragImage(draggableBlockElem, 0, 0);
362
+ setTimeout(() => {
363
+ draggableBlockElem.style.transform = transform;
364
+ });
365
+ }
366
+ function setTargetLine(targetLineElem, targetBlockElem, mouseY, anchorElem) {
367
+ const {
368
+ top: targetBlockElemTop,
369
+ height: targetBlockElemHeight
370
+ } = targetBlockElem.getBoundingClientRect();
371
+ const {
372
+ top: anchorTop,
373
+ width: anchorWidth
374
+ } = anchorElem.getBoundingClientRect();
375
+ const {
376
+ marginTop,
377
+ marginBottom
378
+ } = getCollapsedMargins(targetBlockElem);
379
+ let lineTop = targetBlockElemTop;
380
+ if (mouseY >= targetBlockElemTop) {
381
+ lineTop += targetBlockElemHeight + marginBottom / 2;
382
+ } else {
383
+ lineTop -= marginTop / 2;
384
+ }
385
+ const top = lineTop - anchorTop - TARGET_LINE_HALF_HEIGHT + anchorElem.scrollTop;
386
+ const left = TEXT_BOX_HORIZONTAL_PADDING - SPACE;
387
+ targetLineElem.style.transform = `translate(${left}px, ${top}px)`;
388
+ targetLineElem.style.width = `${anchorWidth - (TEXT_BOX_HORIZONTAL_PADDING - SPACE) * 2}px`;
389
+ targetLineElem.style.opacity = '.4';
390
+ }
391
+ function hideTargetLine(targetLineElem) {
392
+ if (targetLineElem) {
393
+ targetLineElem.style.opacity = '0';
394
+ targetLineElem.style.transform = 'translate(-10000px, -10000px)';
395
+ }
396
+ }
397
+ function useDraggableBlockMenu(editor, anchorElem, menuRef, targetLineRef, isEditable, menuComponent, targetLineComponent, isOnMenu, onElementChanged) {
398
+ const scrollerElem = anchorElem.parentElement;
399
+ const isDraggingBlockRef = useRef(false);
400
+ const [draggableBlockElem, setDraggableBlockElemState] = useState(null);
401
+ const setDraggableBlockElem = useCallback(elem => {
402
+ setDraggableBlockElemState(elem);
403
+ if (onElementChanged) {
404
+ onElementChanged(elem);
405
+ }
406
+ }, [onElementChanged]);
407
+ useEffect(() => {
408
+ function onMouseMove(event) {
409
+ const target = event.target;
410
+ if (!isHTMLElement(target)) {
411
+ setDraggableBlockElem(null);
412
+ return;
413
+ }
414
+ if (isOnMenu(target)) {
415
+ return;
416
+ }
417
+ const _draggableBlockElem = getBlockElement(anchorElem, editor, event);
418
+ setDraggableBlockElem(_draggableBlockElem);
419
+ }
420
+ function onMouseLeave() {
421
+ setDraggableBlockElem(null);
422
+ }
423
+ if (scrollerElem != null) {
424
+ scrollerElem.addEventListener('mousemove', onMouseMove);
425
+ scrollerElem.addEventListener('mouseleave', onMouseLeave);
426
+ }
427
+ return () => {
428
+ if (scrollerElem != null) {
429
+ scrollerElem.removeEventListener('mousemove', onMouseMove);
430
+ scrollerElem.removeEventListener('mouseleave', onMouseLeave);
431
+ }
432
+ };
433
+ }, [scrollerElem, anchorElem, editor, isOnMenu, setDraggableBlockElem]);
434
+ useEffect(() => {
435
+ const zoomLevel = calculateZoomLevel(document.getElementsByClassName('ContentEditable__root')[0], true);
436
+ if (menuRef.current) {
437
+ setMenuPosition(draggableBlockElem, menuRef.current, anchorElem, zoomLevel);
438
+ }
439
+ }, [anchorElem, draggableBlockElem, menuRef]);
440
+ useEffect(() => {
441
+ function onDragover(event) {
442
+ if (!isDraggingBlockRef.current) {
443
+ return false;
444
+ }
445
+ const [isFileTransfer] = eventFiles(event);
446
+ if (isFileTransfer) {
447
+ return false;
448
+ }
449
+ const {
450
+ pageY,
451
+ target
452
+ } = event;
453
+ if (!isHTMLElement(target)) {
454
+ return false;
455
+ }
456
+ const targetBlockElem = getBlockElement(anchorElem, editor, event, true);
457
+ const targetLineElem = targetLineRef.current;
458
+ if (targetBlockElem === null || targetLineElem === null) {
459
+ return false;
460
+ }
461
+ setTargetLine(targetLineElem, targetBlockElem, pageY / calculateZoomLevel(target), anchorElem);
462
+ // Prevent default event to be able to trigger onDrop events
463
+ event.preventDefault();
464
+ return true;
465
+ }
466
+ function $onDrop(event) {
467
+ if (!isDraggingBlockRef.current) {
468
+ return false;
469
+ }
470
+ const [isFileTransfer] = eventFiles(event);
471
+ if (isFileTransfer) {
472
+ return false;
473
+ }
474
+ const {
475
+ target,
476
+ dataTransfer,
477
+ pageY
478
+ } = event;
479
+ const dragData = dataTransfer != null ? dataTransfer.getData(DRAG_DATA_FORMAT) : '';
480
+ const draggedNode = $getNodeByKey(dragData);
481
+ if (!draggedNode) {
482
+ return false;
483
+ }
484
+ if (!isHTMLElement(target)) {
485
+ return false;
486
+ }
487
+ const targetBlockElem = getBlockElement(anchorElem, editor, event, true);
488
+ if (!targetBlockElem) {
489
+ return false;
490
+ }
491
+ const targetNode = $getNearestNodeFromDOMNode(targetBlockElem);
492
+ if (!targetNode) {
493
+ return false;
494
+ }
495
+ if (targetNode === draggedNode) {
496
+ // Firefox-specific fix: Even when no move occurs, restore focus to ensure cursor visibility
497
+ if (IS_FIREFOX) {
498
+ editor.focus();
499
+ }
500
+ return true;
501
+ }
502
+ const targetBlockElemTop = targetBlockElem.getBoundingClientRect().top;
503
+ if (pageY / calculateZoomLevel(target) >= targetBlockElemTop) {
504
+ targetNode.insertAfter(draggedNode);
505
+ } else {
506
+ targetNode.insertBefore(draggedNode);
507
+ }
508
+ setDraggableBlockElem(null);
509
+
510
+ // Firefox-specific fix: Use editor.focus() after drop to properly restore
511
+ // both focus and selection. This ensures cursor visibility immediately.
512
+ if (IS_FIREFOX) {
513
+ // Using $onUpdate ensures this happens after the current update cycle finishes
514
+ $onUpdate(() => {
515
+ editor.focus();
516
+ });
517
+ }
518
+ return true;
519
+ }
520
+ return mergeRegister(editor.registerCommand(DRAGOVER_COMMAND, event => {
521
+ return onDragover(event);
522
+ }, COMMAND_PRIORITY_LOW), editor.registerCommand(DROP_COMMAND, event => {
523
+ return $onDrop(event);
524
+ }, COMMAND_PRIORITY_HIGH));
525
+ }, [anchorElem, editor, targetLineRef, setDraggableBlockElem]);
526
+
527
+ // Firefox-specific: Prevent blur when clicking on drag handle to maintain cursor visibility.
528
+ // Firefox fires blur before dragstart, causing focus loss. We detect this by checking if
529
+ // the blur's relatedTarget is on the menu using isOnMenu, then restore focus synchronously.
530
+ useEffect(() => {
531
+ if (!IS_FIREFOX || !isEditable) {
532
+ return;
533
+ }
534
+ return mergeRegister(editor.registerRootListener((rootElement, prevRootElement) => {
535
+ function onBlur(event) {
536
+ const relatedTarget = event.relatedTarget;
537
+ if (relatedTarget && relatedTarget instanceof HTMLElement && isOnMenu(relatedTarget)) {
538
+ // Blur is caused by clicking on drag handle - restore focus immediately
539
+ // to prevent cursor from disappearing. This must be synchronous to work.
540
+ if (rootElement) {
541
+ rootElement.focus({
542
+ preventScroll: true
543
+ });
544
+ // Force selection update to ensure cursor is visible
545
+ editor.update(() => {
546
+ const selection = $getSelection();
547
+ if (selection !== null && !selection.dirty) {
548
+ selection.dirty = true;
549
+ }
550
+ });
551
+ }
552
+ // Prevent the event from propagating to LexicalEvents handler
553
+ event.stopImmediatePropagation();
554
+ }
555
+ }
556
+ if (rootElement) {
557
+ rootElement.addEventListener('blur', onBlur, true);
558
+ }
559
+ if (prevRootElement) {
560
+ prevRootElement.removeEventListener('blur', onBlur, true);
561
+ }
562
+ }),
563
+ // Intercept BLUR_COMMAND if focus is on the menu (fallback in case event propagation wasn't stopped)
564
+ editor.registerCommand(BLUR_COMMAND, () => {
565
+ const rootElement = editor.getRootElement();
566
+ const activeElement = document.activeElement;
567
+ if (rootElement && activeElement && activeElement instanceof HTMLElement && isOnMenu(activeElement)) {
568
+ // Focus is on menu - restore to root and prevent blur command
569
+ rootElement.focus({
570
+ preventScroll: true
571
+ });
572
+ editor.update(() => {
573
+ const selection = $getSelection();
574
+ if (selection !== null && !selection.dirty) {
575
+ selection.dirty = true;
576
+ }
577
+ });
578
+ return true; // Prevent command from propagating
579
+ }
580
+ return false;
581
+ }, COMMAND_PRIORITY_HIGH));
582
+ }, [editor, isEditable, isOnMenu]);
583
+ function onDragStart(event) {
584
+ const dataTransfer = event.dataTransfer;
585
+ if (!dataTransfer || !draggableBlockElem) {
586
+ return;
587
+ }
588
+ setDragImage(dataTransfer, draggableBlockElem);
589
+ let nodeKey = '';
590
+ editor.update(() => {
591
+ const node = $getNearestNodeFromDOMNode(draggableBlockElem);
592
+ if (node) {
593
+ nodeKey = node.getKey();
594
+ }
595
+ });
596
+ isDraggingBlockRef.current = true;
597
+ dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey);
598
+
599
+ // Firefox-specific: Restore focus synchronously after drag starts to prevent cursor loss.
600
+ // The blur handler should have already restored focus, but we do it here as a fallback
601
+ // and to ensure selection is properly maintained during drag.
602
+ if (IS_FIREFOX) {
603
+ const rootElement = editor.getRootElement();
604
+ if (rootElement !== null && document.activeElement !== rootElement) {
605
+ // Restore focus synchronously - don't use requestAnimationFrame as blur already happened
606
+ // and we need immediate focus restoration to maintain cursor visibility
607
+ rootElement.focus({
608
+ preventScroll: true
609
+ });
610
+ // Force selection update to ensure cursor is visible
611
+ editor.update(() => {
612
+ const selection = $getSelection();
613
+ if (selection !== null && !selection.dirty) {
614
+ selection.dirty = true;
615
+ }
616
+ });
617
+ }
618
+ }
619
+ }
620
+ function onDragEnd() {
621
+ isDraggingBlockRef.current = false;
622
+ hideTargetLine(targetLineRef.current);
623
+
624
+ // Firefox-specific fix: Use editor.focus() to properly restore both focus and
625
+ // selection after drag ends. This ensures cursor visibility immediately.
626
+ if (IS_FIREFOX) {
627
+ // editor.focus() handles both focus restoration and selection update properly
628
+ editor.focus();
629
+ }
630
+ }
631
+ return /*#__PURE__*/createPortal(/*#__PURE__*/jsxs(Fragment, {
632
+ children: [/*#__PURE__*/jsx("div", {
633
+ draggable: true,
634
+ onDragStart: onDragStart,
635
+ onDragEnd: onDragEnd,
636
+ children: isEditable && menuComponent
637
+ }), targetLineComponent]
638
+ }), anchorElem);
639
+ }
640
+ function DraggableBlockPlugin_EXPERIMENTAL({
641
+ anchorElem = document.body,
642
+ menuRef,
643
+ targetLineRef,
644
+ menuComponent,
645
+ targetLineComponent,
646
+ isOnMenu,
647
+ onElementChanged
648
+ }) {
649
+ const [editor] = useLexicalComposerContext();
650
+ return useDraggableBlockMenu(editor, anchorElem, menuRef, targetLineRef, editor._editable, menuComponent, targetLineComponent, isOnMenu, onElementChanged);
651
+ }
652
+
653
+ export { DraggableBlockPlugin_EXPERIMENTAL };
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ 'use strict'
10
+ const LexicalDraggableBlockPlugin = process.env.NODE_ENV !== 'production' ? require('./LexicalDraggableBlockPlugin.dev.js') : require('./LexicalDraggableBlockPlugin.prod.js');
11
+ module.exports = LexicalDraggableBlockPlugin;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ * @flow strict
8
+ */
9
+
10
+ import * as React from 'react';
11
+
12
+ type Props = $ReadOnly<{
13
+ anchorElem?: ?HTMLElement,
14
+ menuRef: React.RefObject<?HTMLElement>,
15
+ targetLineRef: React.RefObject<?HTMLElement>,
16
+ menuComponent: React.Node,
17
+ targetLineComponent: React.Node,
18
+ isOnMenu: (element: HTMLElement) => boolean,
19
+ onElementChanged?: (element: HTMLElement | null) => void
20
+ }>;
21
+
22
+ declare export function DraggableBlockPlugin_EXPERIMENTAL(
23
+ props: Props,
24
+ ): React.MixedElement;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
3
+ *
4
+ * This source code is licensed under the MIT license found in the
5
+ * LICENSE file in the root directory of this source tree.
6
+ *
7
+ */
8
+
9
+ import * as modDev from './LexicalDraggableBlockPlugin.dev.mjs';
10
+ import * as modProd from './LexicalDraggableBlockPlugin.prod.mjs';
11
+ const mod = process.env.NODE_ENV !== 'production' ? modDev : modProd;
12
+ export const DraggableBlockPlugin_EXPERIMENTAL = mod.DraggableBlockPlugin_EXPERIMENTAL;