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