@payloadcms/richtext-lexical 3.0.0-beta.85 → 3.0.0-beta.87

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 (758) hide show
  1. package/dist/cell/index.d.ts +2 -2
  2. package/dist/cell/index.d.ts.map +1 -1
  3. package/dist/cell/index.js +117 -127
  4. package/dist/cell/index.js.map +1 -1
  5. package/dist/exports/client/Component-DOSSWC76.js +2 -0
  6. package/dist/exports/client/Component-DOSSWC76.js.map +7 -0
  7. package/dist/exports/client/Component-MBLHTKDK.js +2 -0
  8. package/dist/exports/client/Component-MBLHTKDK.js.map +7 -0
  9. package/dist/exports/client/Field-63NGLPJB.js +2 -0
  10. package/dist/exports/client/Field-63NGLPJB.js.map +7 -0
  11. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js +2 -0
  12. package/dist/exports/client/RelationshipComponent-3QWBV4GT.js.map +7 -0
  13. package/dist/exports/client/bundled.css +1 -1
  14. package/dist/exports/client/chunk-G5DTIOPI.js +2 -0
  15. package/dist/exports/client/chunk-G5DTIOPI.js.map +7 -0
  16. package/dist/exports/client/chunk-LGUXX2QH.js +2 -0
  17. package/dist/exports/client/chunk-LGUXX2QH.js.map +7 -0
  18. package/dist/exports/client/chunk-NI6Z4GBD.js +2 -0
  19. package/dist/exports/client/{chunk-SQHN3N6E.js.map → chunk-NI6Z4GBD.js.map} +2 -2
  20. package/dist/exports/client/chunk-OKMIHD2R.js +2 -0
  21. package/dist/exports/client/chunk-OKMIHD2R.js.map +7 -0
  22. package/dist/exports/client/chunk-TO2W7Q2G.js +2 -0
  23. package/dist/exports/client/chunk-TO2W7Q2G.js.map +7 -0
  24. package/dist/exports/client/chunk-V2LKLT2F.js +3 -0
  25. package/dist/exports/client/chunk-V2LKLT2F.js.map +7 -0
  26. package/dist/exports/client/component-3OFD6Q4Z.js +2 -0
  27. package/dist/exports/client/component-3OFD6Q4Z.js.map +7 -0
  28. package/dist/exports/client/component-LCAAX56T.js +2 -0
  29. package/dist/exports/client/component-LCAAX56T.js.map +7 -0
  30. package/dist/exports/client/component-LLWMZU6K.js +2 -0
  31. package/dist/exports/client/component-LLWMZU6K.js.map +7 -0
  32. package/dist/exports/client/componentInline-72VZAAHP.js +2 -0
  33. package/dist/exports/client/componentInline-72VZAAHP.js.map +7 -0
  34. package/dist/exports/client/index.js +9 -9
  35. package/dist/exports/client/index.js.map +3 -3
  36. package/dist/exports/server/migrate.js +0 -1
  37. package/dist/exports/server/migrate.js.map +1 -1
  38. package/dist/features/align/client/index.js +151 -134
  39. package/dist/features/align/client/index.js.map +1 -1
  40. package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
  41. package/dist/features/align/client/toolbarAlignGroup.js +10 -9
  42. package/dist/features/align/client/toolbarAlignGroup.js.map +1 -1
  43. package/dist/features/align/server/i18n.js +192 -193
  44. package/dist/features/align/server/i18n.js.map +1 -1
  45. package/dist/features/align/server/index.js +5 -6
  46. package/dist/features/align/server/index.js.map +1 -1
  47. package/dist/features/blockquote/client/index.js +60 -65
  48. package/dist/features/blockquote/client/index.js.map +1 -1
  49. package/dist/features/blockquote/markdownTransformer.js +28 -34
  50. package/dist/features/blockquote/markdownTransformer.js.map +1 -1
  51. package/dist/features/blockquote/server/i18n.js +96 -97
  52. package/dist/features/blockquote/server/i18n.js.map +1 -1
  53. package/dist/features/blockquote/server/index.js +38 -37
  54. package/dist/features/blockquote/server/index.js.map +1 -1
  55. package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
  56. package/dist/features/blocks/client/component/BlockContent.js +166 -172
  57. package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
  58. package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +1 -1
  59. package/dist/features/blocks/client/component/FormSavePlugin.js +46 -22
  60. package/dist/features/blocks/client/component/FormSavePlugin.js.map +1 -1
  61. package/dist/features/blocks/client/component/index.js +130 -142
  62. package/dist/features/blocks/client/component/index.js.map +1 -1
  63. package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +1 -1
  64. package/dist/features/blocks/client/component/removeEmptyArrayValues.js +12 -8
  65. package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
  66. package/dist/features/blocks/client/componentInline/index.js +106 -122
  67. package/dist/features/blocks/client/componentInline/index.js.map +1 -1
  68. package/dist/features/blocks/client/index.js +149 -142
  69. package/dist/features/blocks/client/index.js.map +1 -1
  70. package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
  71. package/dist/features/blocks/client/nodes/BlocksNode.js +41 -40
  72. package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
  73. package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
  74. package/dist/features/blocks/client/nodes/InlineBlocksNode.js +31 -30
  75. package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
  76. package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
  77. package/dist/features/blocks/client/plugin/commands.js +2 -1
  78. package/dist/features/blocks/client/plugin/commands.js.map +1 -1
  79. package/dist/features/blocks/client/plugin/index.js +179 -106
  80. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  81. package/dist/features/blocks/server/graphQLPopulationPromise.js +41 -28
  82. package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
  83. package/dist/features/blocks/server/i18n.js +288 -289
  84. package/dist/features/blocks/server/i18n.js.map +1 -1
  85. package/dist/features/blocks/server/index.js +149 -151
  86. package/dist/features/blocks/server/index.js.map +1 -1
  87. package/dist/features/blocks/server/nodes/BlocksNode.js +76 -73
  88. package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
  89. package/dist/features/blocks/server/nodes/InlineBlocksNode.js +78 -76
  90. package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
  91. package/dist/features/blocks/server/validate.js +45 -34
  92. package/dist/features/blocks/server/validate.js.map +1 -1
  93. package/dist/features/converters/html/converter/converters/linebreak.js +4 -7
  94. package/dist/features/converters/html/converter/converters/linebreak.js.map +1 -1
  95. package/dist/features/converters/html/converter/converters/paragraph.js +24 -19
  96. package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
  97. package/dist/features/converters/html/converter/converters/text.js +28 -29
  98. package/dist/features/converters/html/converter/converters/text.js.map +1 -1
  99. package/dist/features/converters/html/converter/defaultConverters.js +1 -6
  100. package/dist/features/converters/html/converter/defaultConverters.js.map +1 -1
  101. package/dist/features/converters/html/converter/index.js +66 -51
  102. package/dist/features/converters/html/converter/index.js.map +1 -1
  103. package/dist/features/converters/html/converter/types.js +1 -2
  104. package/dist/features/converters/html/converter/types.js.map +1 -1
  105. package/dist/features/converters/html/field/index.js +134 -139
  106. package/dist/features/converters/html/field/index.js.map +1 -1
  107. package/dist/features/converters/html/index.js +2 -3
  108. package/dist/features/converters/html/index.js.map +1 -1
  109. package/dist/features/createClientComponent.js +7 -6
  110. package/dist/features/createClientComponent.js.map +1 -1
  111. package/dist/features/createFeaturePropComponent.js +14 -13
  112. package/dist/features/createFeaturePropComponent.js.map +1 -1
  113. package/dist/features/debug/testRecorder/client/index.js +5 -7
  114. package/dist/features/debug/testRecorder/client/index.js.map +1 -1
  115. package/dist/features/debug/testRecorder/client/plugin/index.js +518 -402
  116. package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
  117. package/dist/features/debug/testRecorder/server/index.js +4 -5
  118. package/dist/features/debug/testRecorder/server/index.js.map +1 -1
  119. package/dist/features/debug/treeView/client/index.js +5 -7
  120. package/dist/features/debug/treeView/client/index.js.map +1 -1
  121. package/dist/features/debug/treeView/client/plugin/index.js +21 -11
  122. package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
  123. package/dist/features/debug/treeView/server/index.js +4 -5
  124. package/dist/features/debug/treeView/server/index.js.map +1 -1
  125. package/dist/features/experimental_table/client/index.js +41 -58
  126. package/dist/features/experimental_table/client/index.js.map +1 -1
  127. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +714 -560
  128. package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  129. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +295 -301
  130. package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
  131. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -7
  132. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  133. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +228 -159
  134. package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
  135. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts +1 -1
  136. package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
  137. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +129 -82
  138. package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
  139. package/dist/features/experimental_table/client/utils/debounce.d.ts.map +1 -1
  140. package/dist/features/experimental_table/client/utils/debounce.js +108 -89
  141. package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
  142. package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +1 -1
  143. package/dist/features/experimental_table/client/utils/useDebounce.js +11 -13
  144. package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
  145. package/dist/features/experimental_table/server/index.js +127 -114
  146. package/dist/features/experimental_table/server/index.js.map +1 -1
  147. package/dist/features/format/bold/feature.client.js +34 -35
  148. package/dist/features/format/bold/feature.client.js.map +1 -1
  149. package/dist/features/format/bold/feature.server.js +14 -18
  150. package/dist/features/format/bold/feature.server.js.map +1 -1
  151. package/dist/features/format/bold/markdownTransformers.js +14 -25
  152. package/dist/features/format/bold/markdownTransformers.js.map +1 -1
  153. package/dist/features/format/inlineCode/feature.client.js +26 -28
  154. package/dist/features/format/inlineCode/feature.client.js.map +1 -1
  155. package/dist/features/format/inlineCode/feature.server.js +5 -8
  156. package/dist/features/format/inlineCode/feature.server.js.map +1 -1
  157. package/dist/features/format/inlineCode/markdownTransformers.js +3 -6
  158. package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
  159. package/dist/features/format/italic/feature.client.js +26 -29
  160. package/dist/features/format/italic/feature.client.js.map +1 -1
  161. package/dist/features/format/italic/feature.server.js +5 -9
  162. package/dist/features/format/italic/feature.server.js.map +1 -1
  163. package/dist/features/format/italic/markdownTransformers.js +7 -12
  164. package/dist/features/format/italic/markdownTransformers.js.map +1 -1
  165. package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
  166. package/dist/features/format/shared/toolbarFormatGroup.js +9 -8
  167. package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
  168. package/dist/features/format/strikethrough/feature.client.js +26 -28
  169. package/dist/features/format/strikethrough/feature.client.js.map +1 -1
  170. package/dist/features/format/strikethrough/feature.server.js +5 -8
  171. package/dist/features/format/strikethrough/feature.server.js.map +1 -1
  172. package/dist/features/format/strikethrough/markdownTransformers.js +3 -6
  173. package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
  174. package/dist/features/format/subscript/feature.client.js +25 -25
  175. package/dist/features/format/subscript/feature.client.js.map +1 -1
  176. package/dist/features/format/subscript/feature.server.js +4 -5
  177. package/dist/features/format/subscript/feature.server.js.map +1 -1
  178. package/dist/features/format/superscript/feature.client.js +25 -25
  179. package/dist/features/format/superscript/feature.client.js.map +1 -1
  180. package/dist/features/format/superscript/feature.server.js +4 -5
  181. package/dist/features/format/superscript/feature.server.js.map +1 -1
  182. package/dist/features/format/underline/feature.client.js +25 -25
  183. package/dist/features/format/underline/feature.client.js.map +1 -1
  184. package/dist/features/format/underline/feature.server.js +4 -5
  185. package/dist/features/format/underline/feature.server.js.map +1 -1
  186. package/dist/features/heading/client/index.js +86 -90
  187. package/dist/features/heading/client/index.js.map +1 -1
  188. package/dist/features/heading/markdownTransformer.js +22 -25
  189. package/dist/features/heading/markdownTransformer.js.map +1 -1
  190. package/dist/features/heading/server/i18n.js +96 -97
  191. package/dist/features/heading/server/i18n.js.map +1 -1
  192. package/dist/features/heading/server/index.js +49 -51
  193. package/dist/features/heading/server/index.js.map +1 -1
  194. package/dist/features/horizontalRule/client/component/index.js +81 -51
  195. package/dist/features/horizontalRule/client/component/index.js.map +1 -1
  196. package/dist/features/horizontalRule/client/index.js +48 -57
  197. package/dist/features/horizontalRule/client/index.js.map +1 -1
  198. package/dist/features/horizontalRule/client/markdownTransformer.js +15 -18
  199. package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
  200. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
  201. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +33 -30
  202. package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
  203. package/dist/features/horizontalRule/client/plugin/index.js +31 -20
  204. package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
  205. package/dist/features/horizontalRule/server/i18n.js +96 -97
  206. package/dist/features/horizontalRule/server/i18n.js.map +1 -1
  207. package/dist/features/horizontalRule/server/index.js +17 -24
  208. package/dist/features/horizontalRule/server/index.js.map +1 -1
  209. package/dist/features/horizontalRule/server/markdownTransformer.js +15 -18
  210. package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
  211. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +71 -66
  212. package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
  213. package/dist/features/indent/client/index.js +52 -47
  214. package/dist/features/indent/client/index.js.map +1 -1
  215. package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
  216. package/dist/features/indent/client/toolbarIndentGroup.js +9 -8
  217. package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -1
  218. package/dist/features/indent/server/i18n.js +128 -129
  219. package/dist/features/indent/server/i18n.js.map +1 -1
  220. package/dist/features/indent/server/index.js +5 -6
  221. package/dist/features/indent/server/index.js.map +1 -1
  222. package/dist/features/link/client/index.js +78 -83
  223. package/dist/features/link/client/index.js.map +1 -1
  224. package/dist/features/link/client/plugins/autoLink/index.js +267 -271
  225. package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
  226. package/dist/features/link/client/plugins/clickableLink/index.js +3 -3
  227. package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
  228. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
  229. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +2 -1
  230. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
  231. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +254 -276
  232. package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
  233. package/dist/features/link/client/plugins/floatingLinkEditor/index.js +8 -6
  234. package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
  235. package/dist/features/link/client/plugins/floatingLinkEditor/types.js +1 -2
  236. package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
  237. package/dist/features/link/client/plugins/link/index.js +50 -41
  238. package/dist/features/link/client/plugins/link/index.js.map +1 -1
  239. package/dist/features/link/markdownTransformer.js +38 -39
  240. package/dist/features/link/markdownTransformer.js.map +1 -1
  241. package/dist/features/link/nodes/AutoLinkNode.js +57 -56
  242. package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
  243. package/dist/features/link/nodes/LinkNode.js +277 -276
  244. package/dist/features/link/nodes/LinkNode.js.map +1 -1
  245. package/dist/features/link/nodes/types.js +1 -2
  246. package/dist/features/link/nodes/types.js.map +1 -1
  247. package/dist/features/link/server/baseFields.js +118 -88
  248. package/dist/features/link/server/baseFields.js.map +1 -1
  249. package/dist/features/link/server/graphQLPopulationPromise.js +42 -28
  250. package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
  251. package/dist/features/link/server/i18n.js +96 -97
  252. package/dist/features/link/server/i18n.js.map +1 -1
  253. package/dist/features/link/server/index.js +120 -114
  254. package/dist/features/link/server/index.js.map +1 -1
  255. package/dist/features/link/server/transformExtraFields.js +15 -15
  256. package/dist/features/link/server/transformExtraFields.js.map +1 -1
  257. package/dist/features/link/server/validate.js +37 -26
  258. package/dist/features/link/server/validate.js.map +1 -1
  259. package/dist/features/lists/checklist/client/index.js +77 -85
  260. package/dist/features/lists/checklist/client/index.js.map +1 -1
  261. package/dist/features/lists/checklist/client/plugin/index.js +3 -3
  262. package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
  263. package/dist/features/lists/checklist/markdownTransformers.js +7 -11
  264. package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
  265. package/dist/features/lists/checklist/server/i18n.js +96 -97
  266. package/dist/features/lists/checklist/server/i18n.js.map +1 -1
  267. package/dist/features/lists/checklist/server/index.js +21 -25
  268. package/dist/features/lists/checklist/server/index.js.map +1 -1
  269. package/dist/features/lists/htmlConverter.js +54 -43
  270. package/dist/features/lists/htmlConverter.js.map +1 -1
  271. package/dist/features/lists/orderedList/client/index.js +71 -77
  272. package/dist/features/lists/orderedList/client/index.js.map +1 -1
  273. package/dist/features/lists/orderedList/markdownTransformer.js +7 -11
  274. package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
  275. package/dist/features/lists/orderedList/server/i18n.js +96 -97
  276. package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
  277. package/dist/features/lists/orderedList/server/index.js +21 -25
  278. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  279. package/dist/features/lists/plugin/index.js +3 -3
  280. package/dist/features/lists/plugin/index.js.map +1 -1
  281. package/dist/features/lists/shared/markdown.js +48 -49
  282. package/dist/features/lists/shared/markdown.js.map +1 -1
  283. package/dist/features/lists/shared/slashMenuListGroup.js +9 -8
  284. package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
  285. package/dist/features/lists/unorderedList/client/index.js +68 -76
  286. package/dist/features/lists/unorderedList/client/index.js.map +1 -1
  287. package/dist/features/lists/unorderedList/markdownTransformer.js +7 -11
  288. package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
  289. package/dist/features/lists/unorderedList/server/i18n.js +96 -97
  290. package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
  291. package/dist/features/lists/unorderedList/server/index.js +17 -23
  292. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  293. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +18 -17
  294. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
  295. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +30 -29
  296. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
  297. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +21 -20
  298. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
  299. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +21 -19
  300. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
  301. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +18 -17
  302. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
  303. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +24 -23
  304. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
  305. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +20 -21
  306. package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
  307. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -10
  308. package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
  309. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +69 -61
  310. package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
  311. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +1 -2
  312. package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
  313. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +5 -7
  314. package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
  315. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +42 -43
  316. package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
  317. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  318. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +11 -11
  319. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  320. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +64 -59
  321. package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  322. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +19 -19
  323. package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
  324. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +20 -25
  325. package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
  326. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +28 -30
  327. package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
  328. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +26 -26
  329. package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
  330. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +22 -21
  331. package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
  332. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +22 -22
  333. package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
  334. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +12 -13
  335. package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
  336. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +23 -23
  337. package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
  338. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +22 -22
  339. package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
  340. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +15 -16
  341. package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
  342. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +1 -13
  343. package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
  344. package/dist/features/migrations/slateToLexical/converter/index.js +105 -98
  345. package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
  346. package/dist/features/migrations/slateToLexical/converter/types.js +1 -2
  347. package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
  348. package/dist/features/migrations/slateToLexical/feature.client.js +7 -7
  349. package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
  350. package/dist/features/migrations/slateToLexical/feature.server.js +43 -44
  351. package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
  352. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
  353. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +11 -11
  354. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
  355. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +64 -59
  356. package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
  357. package/dist/features/paragraph/client/index.js +58 -61
  358. package/dist/features/paragraph/client/index.js.map +1 -1
  359. package/dist/features/paragraph/server/i18n.js +128 -129
  360. package/dist/features/paragraph/server/i18n.js.map +1 -1
  361. package/dist/features/paragraph/server/index.js +6 -7
  362. package/dist/features/paragraph/server/index.js.map +1 -1
  363. package/dist/features/relationship/client/components/RelationshipComponent.js +141 -149
  364. package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
  365. package/dist/features/relationship/client/drawer/commands.js +0 -1
  366. package/dist/features/relationship/client/drawer/commands.js.map +1 -1
  367. package/dist/features/relationship/client/drawer/index.js +138 -67
  368. package/dist/features/relationship/client/drawer/index.js.map +1 -1
  369. package/dist/features/relationship/client/index.js +53 -59
  370. package/dist/features/relationship/client/index.js.map +1 -1
  371. package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
  372. package/dist/features/relationship/client/nodes/RelationshipNode.js +60 -59
  373. package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
  374. package/dist/features/relationship/client/plugins/index.js +90 -35
  375. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  376. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts.map +1 -1
  377. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +97 -26
  378. package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
  379. package/dist/features/relationship/server/graphQLPopulationPromise.js +34 -26
  380. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  381. package/dist/features/relationship/server/i18n.js +96 -97
  382. package/dist/features/relationship/server/i18n.js.map +1 -1
  383. package/dist/features/relationship/server/index.js +48 -44
  384. package/dist/features/relationship/server/index.js.map +1 -1
  385. package/dist/features/relationship/server/nodes/RelationshipNode.js +90 -87
  386. package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
  387. package/dist/features/shared/slashMenu/basicGroup.js +9 -8
  388. package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
  389. package/dist/features/shared/toolbar/addDropdownGroup.js +8 -9
  390. package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
  391. package/dist/features/shared/toolbar/featureButtonsGroup.js +7 -8
  392. package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
  393. package/dist/features/shared/toolbar/textDropdownGroup.js +8 -9
  394. package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
  395. package/dist/features/toolbars/fixed/client/Toolbar/index.js +264 -187
  396. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  397. package/dist/features/toolbars/fixed/client/index.js +5 -7
  398. package/dist/features/toolbars/fixed/client/index.js.map +1 -1
  399. package/dist/features/toolbars/fixed/server/index.js +14 -13
  400. package/dist/features/toolbars/fixed/server/index.js.map +1 -1
  401. package/dist/features/toolbars/inline/client/Toolbar/index.js +374 -286
  402. package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
  403. package/dist/features/toolbars/inline/client/index.js +5 -7
  404. package/dist/features/toolbars/inline/client/index.js.map +1 -1
  405. package/dist/features/toolbars/inline/server/index.js +4 -5
  406. package/dist/features/toolbars/inline/server/index.js.map +1 -1
  407. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts +1 -1
  408. package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
  409. package/dist/features/toolbars/shared/ToolbarButton/index.js +75 -97
  410. package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
  411. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +190 -211
  412. package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
  413. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +1 -1
  414. package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
  415. package/dist/features/toolbars/shared/ToolbarDropdown/index.js +289 -124
  416. package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
  417. package/dist/features/toolbars/types.js +1 -2
  418. package/dist/features/toolbars/types.js.map +1 -1
  419. package/dist/features/typeUtilities.js +2 -3
  420. package/dist/features/typeUtilities.js.map +1 -1
  421. package/dist/features/typesClient.js +1 -2
  422. package/dist/features/typesClient.js.map +1 -1
  423. package/dist/features/typesServer.js +1 -2
  424. package/dist/features/typesServer.js.map +1 -1
  425. package/dist/features/upload/client/component/index.js +208 -224
  426. package/dist/features/upload/client/component/index.js.map +1 -1
  427. package/dist/features/upload/client/drawer/commands.js +1 -1
  428. package/dist/features/upload/client/drawer/commands.js.map +1 -1
  429. package/dist/features/upload/client/drawer/index.js +107 -58
  430. package/dist/features/upload/client/drawer/index.js.map +1 -1
  431. package/dist/features/upload/client/feature.client.js +51 -61
  432. package/dist/features/upload/client/feature.client.js.map +1 -1
  433. package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
  434. package/dist/features/upload/client/nodes/UploadNode.js +76 -73
  435. package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
  436. package/dist/features/upload/client/plugin/index.js +67 -39
  437. package/dist/features/upload/client/plugin/index.js.map +1 -1
  438. package/dist/features/upload/server/feature.server.js +190 -171
  439. package/dist/features/upload/server/feature.server.js.map +1 -1
  440. package/dist/features/upload/server/graphQLPopulationPromise.js +60 -47
  441. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  442. package/dist/features/upload/server/i18n.js +96 -97
  443. package/dist/features/upload/server/i18n.js.map +1 -1
  444. package/dist/features/upload/server/nodes/UploadNode.js +113 -108
  445. package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
  446. package/dist/features/upload/server/validate.js +53 -40
  447. package/dist/features/upload/server/validate.js.map +1 -1
  448. package/dist/field/Field.d.ts.map +1 -1
  449. package/dist/field/Field.js +127 -105
  450. package/dist/field/Field.js.map +1 -1
  451. package/dist/field/bundled.css +1 -0
  452. package/dist/field/index.js +92 -36
  453. package/dist/field/index.js.map +1 -1
  454. package/dist/i18n.js +160 -161
  455. package/dist/i18n.js.map +1 -1
  456. package/dist/index.js +670 -623
  457. package/dist/index.js.map +1 -1
  458. package/dist/lexical/EditorPlugin.d.ts.map +1 -1
  459. package/dist/lexical/EditorPlugin.js +15 -10
  460. package/dist/lexical/EditorPlugin.js.map +1 -1
  461. package/dist/lexical/LexicalEditor.js +206 -161
  462. package/dist/lexical/LexicalEditor.js.map +1 -1
  463. package/dist/lexical/LexicalProvider.js +83 -82
  464. package/dist/lexical/LexicalProvider.js.map +1 -1
  465. package/dist/lexical/config/client/EditorConfigProvider.js +76 -79
  466. package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
  467. package/dist/lexical/config/client/default.js +3 -3
  468. package/dist/lexical/config/client/default.js.map +1 -1
  469. package/dist/lexical/config/client/loader.js +42 -39
  470. package/dist/lexical/config/client/loader.js.map +1 -1
  471. package/dist/lexical/config/client/sanitize.js +165 -165
  472. package/dist/lexical/config/client/sanitize.js.map +1 -1
  473. package/dist/lexical/config/server/default.js +5 -27
  474. package/dist/lexical/config/server/default.js.map +1 -1
  475. package/dist/lexical/config/server/loader.js +103 -103
  476. package/dist/lexical/config/server/loader.js.map +1 -1
  477. package/dist/lexical/config/server/sanitize.js +98 -99
  478. package/dist/lexical/config/server/sanitize.js.map +1 -1
  479. package/dist/lexical/config/types.js +1 -2
  480. package/dist/lexical/config/types.js.map +1 -1
  481. package/dist/lexical/nodes/index.js +9 -8
  482. package/dist/lexical/nodes/index.js.map +1 -1
  483. package/dist/lexical/plugins/MarkdownShortcut/index.js +17 -5
  484. package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
  485. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +384 -361
  486. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
  487. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +223 -160
  488. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
  489. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -2
  490. package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
  491. package/dist/lexical/plugins/SlashMenu/index.js +191 -179
  492. package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
  493. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.d.ts.map +1 -1
  494. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +41 -26
  495. package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
  496. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +164 -129
  497. package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
  498. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
  499. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +11 -10
  500. package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
  501. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +1 -1
  502. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +11 -10
  503. package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
  504. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -1
  505. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +27 -23
  506. package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
  507. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +331 -300
  508. package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
  509. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +110 -97
  510. package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
  511. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
  512. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +23 -16
  513. package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
  514. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
  515. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +18 -27
  516. package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
  517. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -1
  518. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +15 -11
  519. package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
  520. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
  521. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +133 -118
  522. package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
  523. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
  524. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +3 -2
  525. package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
  526. package/dist/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +1 -1
  527. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +3 -2
  528. package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
  529. package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
  530. package/dist/lexical/plugins/handles/utils/setHandlePosition.js +26 -25
  531. package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
  532. package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
  533. package/dist/lexical/theme/EditorTheme.js +97 -102
  534. package/dist/lexical/theme/EditorTheme.js.map +1 -1
  535. package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
  536. package/dist/lexical/ui/ContentEditable.js +27 -10
  537. package/dist/lexical/ui/ContentEditable.js.map +1 -1
  538. package/dist/lexical/ui/icons/AI/index.d.ts.map +1 -1
  539. package/dist/lexical/ui/icons/AI/index.js +31 -33
  540. package/dist/lexical/ui/icons/AI/index.js.map +1 -1
  541. package/dist/lexical/ui/icons/Add/index.d.ts.map +1 -1
  542. package/dist/lexical/ui/icons/Add/index.js +16 -18
  543. package/dist/lexical/ui/icons/Add/index.js.map +1 -1
  544. package/dist/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -1
  545. package/dist/lexical/ui/icons/AlignCenter/index.js +25 -28
  546. package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
  547. package/dist/lexical/ui/icons/AlignJustify/index.d.ts.map +1 -1
  548. package/dist/lexical/ui/icons/AlignJustify/index.js +25 -28
  549. package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
  550. package/dist/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -1
  551. package/dist/lexical/ui/icons/AlignLeft/index.js +25 -28
  552. package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
  553. package/dist/lexical/ui/icons/AlignRight/index.d.ts.map +1 -1
  554. package/dist/lexical/ui/icons/AlignRight/index.js +25 -28
  555. package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
  556. package/dist/lexical/ui/icons/Block/index.d.ts.map +1 -1
  557. package/dist/lexical/ui/icons/Block/index.js +34 -37
  558. package/dist/lexical/ui/icons/Block/index.js.map +1 -1
  559. package/dist/lexical/ui/icons/Blockquote/index.d.ts.map +1 -1
  560. package/dist/lexical/ui/icons/Blockquote/index.js +16 -15
  561. package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
  562. package/dist/lexical/ui/icons/Bold/index.d.ts.map +1 -1
  563. package/dist/lexical/ui/icons/Bold/index.js +16 -15
  564. package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
  565. package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -1
  566. package/dist/lexical/ui/icons/Checklist/index.js +24 -26
  567. package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
  568. package/dist/lexical/ui/icons/Code/index.d.ts.map +1 -1
  569. package/dist/lexical/ui/icons/Code/index.js +19 -21
  570. package/dist/lexical/ui/icons/Code/index.js.map +1 -1
  571. package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
  572. package/dist/lexical/ui/icons/CodeBlock/index.js +19 -21
  573. package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
  574. package/dist/lexical/ui/icons/H1/index.d.ts.map +1 -1
  575. package/dist/lexical/ui/icons/H1/index.js +16 -15
  576. package/dist/lexical/ui/icons/H1/index.js.map +1 -1
  577. package/dist/lexical/ui/icons/H2/index.d.ts.map +1 -1
  578. package/dist/lexical/ui/icons/H2/index.js +16 -15
  579. package/dist/lexical/ui/icons/H2/index.js.map +1 -1
  580. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  581. package/dist/lexical/ui/icons/H3/index.js +16 -15
  582. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  583. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  584. package/dist/lexical/ui/icons/H4/index.js +16 -15
  585. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  586. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  587. package/dist/lexical/ui/icons/H5/index.js +16 -15
  588. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  589. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  590. package/dist/lexical/ui/icons/H6/index.js +16 -15
  591. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  592. package/dist/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -1
  593. package/dist/lexical/ui/icons/HorizontalRule/index.js +19 -18
  594. package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
  595. package/dist/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -1
  596. package/dist/lexical/ui/icons/IndentDecrease/index.js +28 -32
  597. package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
  598. package/dist/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -1
  599. package/dist/lexical/ui/icons/IndentIncrease/index.js +28 -32
  600. package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
  601. package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -1
  602. package/dist/lexical/ui/icons/InlineBlocks/index.js +18 -17
  603. package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
  604. package/dist/lexical/ui/icons/Italic/index.d.ts.map +1 -1
  605. package/dist/lexical/ui/icons/Italic/index.js +16 -15
  606. package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
  607. package/dist/lexical/ui/icons/Link/index.d.ts.map +1 -1
  608. package/dist/lexical/ui/icons/Link/index.js +17 -16
  609. package/dist/lexical/ui/icons/Link/index.js.map +1 -1
  610. package/dist/lexical/ui/icons/Meatballs/index.d.ts.map +1 -1
  611. package/dist/lexical/ui/icons/Meatballs/index.js +19 -22
  612. package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
  613. package/dist/lexical/ui/icons/OrderedList/index.d.ts.map +1 -1
  614. package/dist/lexical/ui/icons/OrderedList/index.js +31 -36
  615. package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
  616. package/dist/lexical/ui/icons/Relationship/index.d.ts.map +1 -1
  617. package/dist/lexical/ui/icons/Relationship/index.js +31 -33
  618. package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
  619. package/dist/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -1
  620. package/dist/lexical/ui/icons/Strikethrough/index.js +19 -21
  621. package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
  622. package/dist/lexical/ui/icons/Subscript/index.d.ts.map +1 -1
  623. package/dist/lexical/ui/icons/Subscript/index.js +16 -15
  624. package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
  625. package/dist/lexical/ui/icons/Superscript/index.d.ts.map +1 -1
  626. package/dist/lexical/ui/icons/Superscript/index.js +16 -15
  627. package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
  628. package/dist/lexical/ui/icons/Table/index.d.ts.map +1 -1
  629. package/dist/lexical/ui/icons/Table/index.js +17 -16
  630. package/dist/lexical/ui/icons/Table/index.js.map +1 -1
  631. package/dist/lexical/ui/icons/Text/index.d.ts.map +1 -1
  632. package/dist/lexical/ui/icons/Text/index.js +16 -15
  633. package/dist/lexical/ui/icons/Text/index.js.map +1 -1
  634. package/dist/lexical/ui/icons/Underline/index.d.ts.map +1 -1
  635. package/dist/lexical/ui/icons/Underline/index.js +19 -21
  636. package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
  637. package/dist/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -1
  638. package/dist/lexical/ui/icons/UnorderedList/index.js +46 -52
  639. package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
  640. package/dist/lexical/ui/icons/Upload/index.d.ts.map +1 -1
  641. package/dist/lexical/ui/icons/Upload/index.js +28 -31
  642. package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
  643. package/dist/lexical/utils/canUseDOM.d.ts.map +1 -1
  644. package/dist/lexical/utils/canUseDOM.js +2 -1
  645. package/dist/lexical/utils/canUseDOM.js.map +1 -1
  646. package/dist/lexical/utils/environment.d.ts.map +1 -1
  647. package/dist/lexical/utils/environment.js +2 -1
  648. package/dist/lexical/utils/environment.js.map +1 -1
  649. package/dist/lexical/utils/getDOMRangeRect.d.ts.map +1 -1
  650. package/dist/lexical/utils/getDOMRangeRect.js +13 -12
  651. package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
  652. package/dist/lexical/utils/getSelectedNode.d.ts.map +1 -1
  653. package/dist/lexical/utils/getSelectedNode.js +18 -13
  654. package/dist/lexical/utils/getSelectedNode.js.map +1 -1
  655. package/dist/lexical/utils/guard.d.ts.map +1 -1
  656. package/dist/lexical/utils/guard.js +3 -2
  657. package/dist/lexical/utils/guard.js.map +1 -1
  658. package/dist/lexical/utils/joinClasses.d.ts.map +1 -1
  659. package/dist/lexical/utils/joinClasses.js +3 -2
  660. package/dist/lexical/utils/joinClasses.js.map +1 -1
  661. package/dist/lexical/utils/markdown/createBlockNode.js +9 -10
  662. package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
  663. package/dist/lexical/utils/nodeFormat.js +58 -59
  664. package/dist/lexical/utils/nodeFormat.js.map +1 -1
  665. package/dist/lexical/utils/point.d.ts.map +1 -1
  666. package/dist/lexical/utils/point.js +40 -32
  667. package/dist/lexical/utils/point.js.map +1 -1
  668. package/dist/lexical/utils/rect.d.ts.map +1 -1
  669. package/dist/lexical/utils/rect.js +167 -134
  670. package/dist/lexical/utils/rect.js.map +1 -1
  671. package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
  672. package/dist/lexical/utils/setFloatingElemPosition.js +56 -45
  673. package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
  674. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -1
  675. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +23 -22
  676. package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
  677. package/dist/lexical/utils/swipe.d.ts.map +1 -1
  678. package/dist/lexical/utils/swipe.js +82 -83
  679. package/dist/lexical/utils/swipe.js.map +1 -1
  680. package/dist/lexical/utils/url.js +23 -22
  681. package/dist/lexical/utils/url.js.map +1 -1
  682. package/dist/nodeTypes.js +1 -2
  683. package/dist/nodeTypes.js.map +1 -1
  684. package/dist/populateGraphQL/defaultValue.js +24 -29
  685. package/dist/populateGraphQL/defaultValue.js.map +1 -1
  686. package/dist/populateGraphQL/populate.js +35 -25
  687. package/dist/populateGraphQL/populate.js.map +1 -1
  688. package/dist/populateGraphQL/populateLexicalPopulationPromises.js +47 -32
  689. package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
  690. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +39 -25
  691. package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
  692. package/dist/types.js +1 -2
  693. package/dist/types.js.map +1 -1
  694. package/dist/utilities/createClientFeature.js +40 -36
  695. package/dist/utilities/createClientFeature.js.map +1 -1
  696. package/dist/utilities/createServerFeature.js +46 -35
  697. package/dist/utilities/createServerFeature.js.map +1 -1
  698. package/dist/utilities/fieldsDrawer/Drawer.js +28 -17
  699. package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
  700. package/dist/utilities/fieldsDrawer/DrawerContent.js +149 -78
  701. package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
  702. package/dist/utilities/forEachNodeRecursively.js +24 -19
  703. package/dist/utilities/forEachNodeRecursively.js.map +1 -1
  704. package/dist/utilities/generateComponentMap.d.ts.map +1 -1
  705. package/dist/utilities/generateComponentMap.js +92 -82
  706. package/dist/utilities/generateComponentMap.js.map +1 -1
  707. package/dist/utilities/generateImportMap.js +53 -47
  708. package/dist/utilities/generateImportMap.js.map +1 -1
  709. package/dist/utilities/generateSchemaMap.js +35 -30
  710. package/dist/utilities/generateSchemaMap.js.map +1 -1
  711. package/dist/utilities/migrateSlateToLexical/index.js +99 -86
  712. package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
  713. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +73 -66
  714. package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
  715. package/dist/utilities/recurseNodeTree.js +25 -22
  716. package/dist/utilities/recurseNodeTree.js.map +1 -1
  717. package/dist/utilities/upgradeLexicalData/index.js +99 -86
  718. package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
  719. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +71 -66
  720. package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
  721. package/dist/utilities/useLexicalFeature.js +9 -8
  722. package/dist/utilities/useLexicalFeature.js.map +1 -1
  723. package/dist/validate/index.js +32 -26
  724. package/dist/validate/index.js.map +1 -1
  725. package/dist/validate/validateNodes.js +31 -28
  726. package/dist/validate/validateNodes.js.map +1 -1
  727. package/package.json +22 -11
  728. package/dist/exports/client/Component-7HS6FEJS.js +0 -2
  729. package/dist/exports/client/Component-7HS6FEJS.js.map +0 -7
  730. package/dist/exports/client/Component-LAKSCIDX.js +0 -2
  731. package/dist/exports/client/Component-LAKSCIDX.js.map +0 -7
  732. package/dist/exports/client/Field-BYB3WX7J.js +0 -2
  733. package/dist/exports/client/Field-BYB3WX7J.js.map +0 -7
  734. package/dist/exports/client/RelationshipComponent-GYUTPDNG.js +0 -2
  735. package/dist/exports/client/RelationshipComponent-GYUTPDNG.js.map +0 -7
  736. package/dist/exports/client/chunk-4EX7W4UX.js +0 -2
  737. package/dist/exports/client/chunk-4EX7W4UX.js.map +0 -7
  738. package/dist/exports/client/chunk-E4HH5PS6.js +0 -2
  739. package/dist/exports/client/chunk-E4HH5PS6.js.map +0 -7
  740. package/dist/exports/client/chunk-EBB2CEB6.js +0 -2
  741. package/dist/exports/client/chunk-EBB2CEB6.js.map +0 -7
  742. package/dist/exports/client/chunk-LTR7V74A.js +0 -2
  743. package/dist/exports/client/chunk-LTR7V74A.js.map +0 -7
  744. package/dist/exports/client/chunk-SQHN3N6E.js +0 -2
  745. package/dist/exports/client/chunk-VMCQSR3T.js +0 -3
  746. package/dist/exports/client/chunk-VMCQSR3T.js.map +0 -7
  747. package/dist/exports/client/component-6C5JERGA.js +0 -2
  748. package/dist/exports/client/component-6C5JERGA.js.map +0 -7
  749. package/dist/exports/client/component-GUWIGB77.js +0 -2
  750. package/dist/exports/client/component-GUWIGB77.js.map +0 -7
  751. package/dist/exports/client/component-UQ2BKD5X.js +0 -2
  752. package/dist/exports/client/component-UQ2BKD5X.js.map +0 -7
  753. package/dist/exports/client/componentInline-C2XIK5VZ.js +0 -2
  754. package/dist/exports/client/componentInline-C2XIK5VZ.js.map +0 -7
  755. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts +0 -12
  756. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
  757. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js +0 -181
  758. package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.scss'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n }>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : '3rem',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? menuRef?.current?.getBoundingClientRect()?.width ?? 0\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n // Prevent default event to be able to trigger onDrop events\n // Calling preventDefault() adds the green plus icon to the cursor,\n // indicating that the drop is allowed.\n event.preventDefault()\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else {\n hideTargetLine(targetLineElem, lastTargetBlock?.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem.getBoundingClientRect()\n\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n // if html data-theme is dark, set the highlighter color to white\n if (document.documentElement.getAttribute('data-theme') === 'dark') {\n highlightElem.style.backgroundColor = 'white'\n } else {\n highlightElem.style.backgroundColor = 'black'\n }\n\n highlightElem.style.transition = 'opacity 0.1s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n setTimeout(() => {\n highlightElem.style.opacity = '0'\n setTimeout(() => {\n highlightElem.remove()\n }, 1000)\n }, 3000)\n }, 120)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLDivElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n\n return createPortal(\n <React.Fragment>\n <div\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n >\n <div className={isEditable ? 'icon' : ''} />\n </div>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"names":["useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","current","onDragover","isFileTransfer","targetBlockElem","fuzzy","isBelow","willStayInSamePosition","getBoundingClientRect","width","preventDefault","boundingBox","elem","onDrop","dragData","getData","update","draggedNode","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","newInsertedElemRect","highlightElem","createElement","className","documentElement","getAttribute","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","onDragStart","nodeKey","node","setData","onDragEnd","Fragment","div","draggable","ref","DraggableBlockPlugin","_editable"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","eventFiles","$getNearestNodeFromDOMNode","$getNodeByKey","React","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","getBoundingClientRectWithoutTransform","setTargetLine","DRAGGABLE_BLOCK_MENU_CLASSNAME","DRAG_DATA_FORMAT","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","setDragImage","dataTransfer","draggableBlockElem","transform","style","setTimeout","hideTargetLine","targetLineElem","lastTargetBlockElem","opacity","marginBottom","marginTop","useDraggableBlockMenu","editor","anchorElem","isEditable","$","scrollerElem","parentElement","menuRef","targetLineRef","debugHighlightRef","isDraggingBlockRef","setDraggableBlockElem","lastTargetBlock","setLastTargetBlock","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","t0","t1","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_draggableBlockElem","foundAtIndex","isFoundNodeEmptyParagraph","cache_threshold","horizontalOffset","point","x","y","startIndex","length","useEdgeAsDefault","verbose","document","addEventListener","removeEventListener","t2","t3","current","t4","t5","onDragover","event_0","isFileTransfer","target_0","distanceFromScrollerElem_0","topLevelNodeKeys_0","targetBlockElem","foundAtIndex_0","isFoundNodeEmptyParagraph_0","fuzzy","isBelow","willStayInSamePosition","getBoundingClientRect","width","preventDefault","boundingBox","elem","onDrop","event_1","isFileTransfer_0","pageY_0","target_1","dragData","getData","update","draggedNode","distanceFromScrollerElem_1","targetBlockElem_0","isFoundNodeEmptyParagraph_1","targetNode","height","targetBlockElemHeight","top","targetBlockElemTop","mouseY","isBelow_0","window","scrollY","insertAfter","insertBefore","remove","allPrevHighlighters","querySelectorAll","forEach","highlighter","newInsertedElem","getElementByKey","getKey","newInsertedElemRect","highlightElem","createElement","className","documentElement","getAttribute","backgroundColor","transition","zIndex","pointerEvents","boxSizing","borderRadius","position","body","appendChild","left","onDragStart","event_2","dataTransfer_0","nodeKey","node","setData","onDragEnd","_jsxs","Fragment","children","_jsx","draggable","ref","DraggableBlockPlugin","undefined","_editable"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor } from 'lexical'\nimport type { DragEvent as ReactDragEvent } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { eventFiles } from '@lexical/rich-text'\nimport { $getNearestNodeFromDOMNode, $getNodeByKey } from 'lexical'\nimport * as React from 'react'\nimport { useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport './index.scss'\nimport { setTargetLine } from './setTargetLine.js'\n\nconst DRAGGABLE_BLOCK_MENU_CLASSNAME = 'draggable-block-menu'\nconst DRAG_DATA_FORMAT = 'application/x-lexical-drag-block'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction setDragImage(dataTransfer: DataTransfer, draggableBlockElem: HTMLElement) {\n const { transform } = draggableBlockElem.style\n\n // Remove dragImage borders\n dataTransfer.setDragImage(draggableBlockElem, 0, 0)\n\n setTimeout(() => {\n draggableBlockElem.style.transform = transform\n })\n}\n\nfunction hideTargetLine(\n targetLineElem: HTMLElement | null,\n lastTargetBlockElem: HTMLElement | null,\n) {\n if (targetLineElem) {\n targetLineElem.style.opacity = '0'\n }\n if (lastTargetBlockElem) {\n lastTargetBlockElem.style.opacity = ''\n // Delete marginBottom and marginTop values we set\n lastTargetBlockElem.style.marginBottom = ''\n lastTargetBlockElem.style.marginTop = ''\n //lastTargetBlock.style.border = 'none'\n }\n}\n\nfunction useDraggableBlockMenu(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const menuRef = useRef<HTMLDivElement>(null)\n const targetLineRef = useRef<HTMLDivElement>(null)\n const debugHighlightRef = useRef<HTMLDivElement>(null)\n const isDraggingBlockRef = useRef<boolean>(false)\n const [draggableBlockElem, setDraggableBlockElem] = useState<HTMLElement | null>(null)\n const [lastTargetBlock, setLastTargetBlock] = useState<{\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n }>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -44 : -8\n\n useEffect(() => {\n /**\n * Handles positioning of the drag handle\n */\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n if (distanceFromScrollerElem === -1) {\n setDraggableBlockElem(null)\n return\n }\n\n if (isOnHandleElement(target, DRAGGABLE_BLOCK_MENU_CLASSNAME)) {\n return\n }\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _draggableBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n verbose: false,\n })\n\n prevIndex = foundAtIndex\n\n //if (DEBUG && _draggableBlockElem) {\n //targetBlockElem.style.border = '3px solid red'\n // highlightElemOriginalPosition(debugHighlightRef, _draggableBlockElem, anchorElem)\n //}\n\n if (!_draggableBlockElem && !isFoundNodeEmptyParagraph) {\n return\n }\n\n if (draggableBlockElem !== _draggableBlockElem) {\n setDraggableBlockElem(_draggableBlockElem)\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, draggableBlockElem])\n\n useEffect(() => {\n if (menuRef.current) {\n setHandlePosition(\n draggableBlockElem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, draggableBlockElem, blockHandleHorizontalOffset])\n\n useEffect(() => {\n function onDragover(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n\n const { pageY, target } = event\n if (!isHTMLElement(target)) {\n return false\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: targetBlockElem,\n foundAtIndex,\n isFoundNodeEmptyParagraph,\n } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: true,\n verbose: true,\n })\n\n prevIndex = foundAtIndex\n\n const targetLineElem = targetLineRef.current\n // targetBlockElem === null shouldn't happen\n if (targetBlockElem === null || targetLineElem === null) {\n return false\n }\n\n if (draggableBlockElem !== targetBlockElem) {\n const { isBelow, willStayInSamePosition } = setTargetLine(\n editorConfig?.admin?.hideGutter ? '0px' : '3rem',\n blockHandleHorizontalOffset +\n (editorConfig?.admin?.hideGutter\n ? menuRef?.current?.getBoundingClientRect()?.width ?? 0\n : -(menuRef?.current?.getBoundingClientRect()?.width ?? 0)),\n targetLineElem,\n targetBlockElem,\n lastTargetBlock,\n pageY,\n anchorElem,\n event,\n debugHighlightRef,\n isFoundNodeEmptyParagraph,\n )\n\n // Prevent default event to be able to trigger onDrop events\n // Calling preventDefault() adds the green plus icon to the cursor,\n // indicating that the drop is allowed.\n event.preventDefault()\n\n if (!willStayInSamePosition) {\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow,\n })\n }\n } else {\n hideTargetLine(targetLineElem, lastTargetBlock?.elem)\n setLastTargetBlock({\n boundingBox: targetBlockElem.getBoundingClientRect(),\n elem: targetBlockElem,\n isBelow: false,\n })\n }\n\n return true\n }\n\n function onDrop(event: DragEvent): boolean {\n if (!isDraggingBlockRef.current) {\n return false\n }\n const [isFileTransfer] = eventFiles(event)\n if (isFileTransfer) {\n return false\n }\n const { dataTransfer, pageY, target } = event\n const dragData = dataTransfer?.getData(DRAG_DATA_FORMAT) || ''\n\n editor.update(() => {\n const draggedNode = $getNodeByKey(dragData)\n if (!draggedNode) {\n return false\n }\n if (!isHTMLElement(target)) {\n return false\n }\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n 100,\n 50,\n )\n\n const { blockElem: targetBlockElem, isFoundNodeEmptyParagraph } = getNodeCloseToPoint({\n anchorElem,\n editor,\n fuzzy: true,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n useEdgeAsDefault: true,\n })\n\n if (!targetBlockElem) {\n return false\n }\n const targetNode = $getNearestNodeFromDOMNode(targetBlockElem)\n if (!targetNode) {\n return false\n }\n if (targetNode === draggedNode) {\n return true\n }\n\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n getBoundingClientRectWithoutTransform(targetBlockElem)\n\n const mouseY = pageY\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n targetNode.insertAfter(draggedNode)\n } else {\n // above targetBlockElem\n targetNode.insertBefore(draggedNode)\n }\n } else {\n //\n targetNode.insertBefore(draggedNode)\n targetNode.remove()\n }\n\n /*\n if (pageY >= targetBlockElemTop + targetBlockElemHeight / 2) {\n targetNode.insertAfter(draggedNode)\n } else {\n targetNode.insertBefore(draggedNode)\n }*/\n if (draggableBlockElem !== null) {\n setDraggableBlockElem(null)\n }\n\n // find all previous elements with lexical-block-highlighter class and remove them\n const allPrevHighlighters = document.querySelectorAll('.lexical-block-highlighter')\n allPrevHighlighters.forEach((highlighter) => {\n highlighter.remove()\n })\n\n const newInsertedElem = editor.getElementByKey(draggedNode.getKey())\n setTimeout(() => {\n // add new temp html element to newInsertedElem with the same height and width and the class block-selected\n // to highlight the new inserted element\n const newInsertedElemRect = newInsertedElem.getBoundingClientRect()\n\n const highlightElem = document.createElement('div')\n highlightElem.className = 'lexical-block-highlighter'\n\n // if html data-theme is dark, set the highlighter color to white\n if (document.documentElement.getAttribute('data-theme') === 'dark') {\n highlightElem.style.backgroundColor = 'white'\n } else {\n highlightElem.style.backgroundColor = 'black'\n }\n\n highlightElem.style.transition = 'opacity 0.1s ease-in-out'\n highlightElem.style.zIndex = '1'\n highlightElem.style.pointerEvents = 'none'\n highlightElem.style.boxSizing = 'border-box'\n highlightElem.style.borderRadius = '4px'\n highlightElem.style.position = 'absolute'\n document.body.appendChild(highlightElem)\n\n highlightElem.style.opacity = '0.1'\n\n highlightElem.style.height = `${newInsertedElemRect.height + 8}px`\n highlightElem.style.width = `${newInsertedElemRect.width + 8}px`\n highlightElem.style.top = `${newInsertedElemRect.top + window.scrollY - 4}px`\n highlightElem.style.left = `${newInsertedElemRect.left - 4}px`\n\n setTimeout(() => {\n highlightElem.style.opacity = '0'\n setTimeout(() => {\n highlightElem.remove()\n }, 1000)\n }, 3000)\n }, 120)\n })\n\n return true\n }\n\n // register onDragover event listeners:\n document.addEventListener('dragover', onDragover)\n // register onDrop event listeners:\n document.addEventListener('drop', onDrop)\n\n return () => {\n document.removeEventListener('dragover', onDragover)\n document.removeEventListener('drop', onDrop)\n }\n }, [\n scrollerElem,\n blockHandleHorizontalOffset,\n anchorElem,\n editor,\n lastTargetBlock,\n draggableBlockElem,\n editorConfig?.admin?.hideGutter,\n ])\n\n function onDragStart(event: ReactDragEvent<HTMLDivElement>): void {\n const dataTransfer = event.dataTransfer\n if (!dataTransfer || !draggableBlockElem) {\n return\n }\n setDragImage(dataTransfer, draggableBlockElem)\n let nodeKey = ''\n editor.update(() => {\n const node = $getNearestNodeFromDOMNode(draggableBlockElem)\n if (node) {\n nodeKey = node.getKey()\n }\n })\n isDraggingBlockRef.current = true\n dataTransfer.setData(DRAG_DATA_FORMAT, nodeKey)\n }\n\n function onDragEnd(): void {\n isDraggingBlockRef.current = false\n hideTargetLine(targetLineRef.current, lastTargetBlock?.elem)\n }\n\n return createPortal(\n <React.Fragment>\n <div\n className=\"icon draggable-block-menu\"\n draggable\n onDragEnd={onDragEnd}\n onDragStart={onDragStart}\n ref={menuRef}\n >\n <div className={isEditable ? 'icon' : ''} />\n </div>\n <div className=\"draggable-block-target-line\" ref={targetLineRef} />\n <div className=\"debug-highlight\" ref={debugHighlightRef} />\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function DraggableBlockPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useDraggableBlockMenu(editor, anchorElem, editor._editable)\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,3 +1,5 @@
1
+ 'use client';
2
+
1
3
  import { getCollapsedMargins } from '../utils/getCollapsedMargins.js';
2
4
  import { highlightElemOriginalPosition } from './highlightElemOriginalPosition.js';
3
5
  const TARGET_LINE_HALF_HEIGHT = 25;
@@ -5,112 +7,123 @@ const TEXT_BOX_HORIZONTAL_PADDING = -24;
5
7
  const DEBUG = false;
6
8
  let animationTimer = 0;
7
9
  export function setTargetLine(offsetWidth, offsetLeft, targetLineElem, targetBlockElem, lastTargetBlock, mouseY, anchorElem, event, debugHighlightRef, isFoundNodeEmptyParagraph = false) {
8
- const { height: targetBlockElemHeight, top: targetBlockElemTop } = targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine
9
- ;
10
- const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect();
11
- const { marginBottom, marginTop } = getCollapsedMargins(targetBlockElem);
12
- let lineTop = targetBlockElemTop;
13
- const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY;
14
- let willStayInSamePosition = false;
15
- /**
16
- * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)
17
- * This prevents unnecessary flickering.
18
- *
19
- * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate
20
- */ if (lastTargetBlock?.elem) {
21
- if (targetBlockElem !== lastTargetBlock?.elem) {
22
- if (isBelow && lastTargetBlock?.elem && lastTargetBlock?.elem === targetBlockElem.nextElementSibling) {
23
- animationTimer++;
24
- if (animationTimer < 200) {
25
- willStayInSamePosition = true;
26
- }
27
- } else if (!isBelow && lastTargetBlock?.elem && lastTargetBlock?.elem === targetBlockElem.previousElementSibling) {
28
- animationTimer++;
29
- if (animationTimer < 200) {
30
- willStayInSamePosition = true;
31
- }
32
- }
33
- } else {
34
- animationTimer++;
35
- const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y;
36
- const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y;
37
- if (isBelow === lastTargetBlock?.isBelow && lastBoundingBoxPosition === currentBoundingBoxPosition || animationTimer < 200) {
38
- willStayInSamePosition = false;
39
- }
10
+ const {
11
+ height: targetBlockElemHeight,
12
+ top: targetBlockElemTop
13
+ } = targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine
14
+ ;
15
+ const {
16
+ top: anchorTop,
17
+ width: anchorWidth
18
+ } = anchorElem.getBoundingClientRect();
19
+ const {
20
+ marginBottom,
21
+ marginTop
22
+ } = getCollapsedMargins(targetBlockElem);
23
+ let lineTop = targetBlockElemTop;
24
+ const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY;
25
+ let willStayInSamePosition = false;
26
+ /**
27
+ * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)
28
+ * This prevents unnecessary flickering.
29
+ *
30
+ * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate
31
+ */
32
+ if (lastTargetBlock?.elem) {
33
+ if (targetBlockElem !== lastTargetBlock?.elem) {
34
+ if (isBelow && lastTargetBlock?.elem && lastTargetBlock?.elem === targetBlockElem.nextElementSibling) {
35
+ animationTimer++;
36
+ if (animationTimer < 200) {
37
+ willStayInSamePosition = true;
40
38
  }
41
- }
42
- if (willStayInSamePosition) {
43
- return {
44
- isBelow,
45
- willStayInSamePosition
46
- };
47
- }
48
- /**
49
- * Paragraphs need no isBelow/above handling,
50
- */ if (!isFoundNodeEmptyParagraph) {
51
- //if (!isFoundNodeEmptyParagraph) {
52
- if (isBelow) {
53
- // below targetBlockElem
54
- lineTop += targetBlockElemHeight + marginBottom / 2;
55
- } else {
56
- // above targetBlockElem
57
- lineTop -= marginTop / 2;
39
+ } else if (!isBelow && lastTargetBlock?.elem && lastTargetBlock?.elem === targetBlockElem.previousElementSibling) {
40
+ animationTimer++;
41
+ if (animationTimer < 200) {
42
+ willStayInSamePosition = true;
58
43
  }
44
+ }
59
45
  } else {
60
- lineTop += targetBlockElemHeight / 2;
46
+ animationTimer++;
47
+ const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y;
48
+ const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y;
49
+ if (isBelow === lastTargetBlock?.isBelow && lastBoundingBoxPosition === currentBoundingBoxPosition || animationTimer < 200) {
50
+ willStayInSamePosition = false;
51
+ }
61
52
  }
62
- let targetElemTranslate2 = 0;
63
- if (!isFoundNodeEmptyParagraph) {
64
- if (isBelow) {
65
- targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT;
66
- } else {
67
- targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT;
68
- }
53
+ }
54
+ if (willStayInSamePosition) {
55
+ return {
56
+ isBelow,
57
+ willStayInSamePosition
58
+ };
59
+ }
60
+ /**
61
+ * Paragraphs need no isBelow/above handling,
62
+ */
63
+ if (!isFoundNodeEmptyParagraph) {
64
+ //if (!isFoundNodeEmptyParagraph) {
65
+ if (isBelow) {
66
+ // below targetBlockElem
67
+ lineTop += targetBlockElemHeight + marginBottom / 2;
68
+ } else {
69
+ // above targetBlockElem
70
+ lineTop -= marginTop / 2;
69
71
  }
70
- const top = lineTop - anchorTop + targetElemTranslate2;
71
- const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft;
72
- targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`;
73
- targetLineElem.style.opacity = '.4';
74
- /**
75
- * Move around element below or above the line (= the target / targetBlockElem). Creates "space" for the targetLineElem
76
- *
77
- * Not needed for empty paragraphs, as an empty paragraph is enough space for the targetLineElem anyways.
78
- */ //targetBlockElem.style.opacity = '0.4'
79
- const buffer = 12 // creates more spacing/padding so target line is not directly next to the targetBlockElem
80
- ;
81
- if (!isFoundNodeEmptyParagraph) {
82
- if (isBelow) {
83
- targetBlockElem.style.marginBottom = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px';
84
- targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'0px'}))`;
85
- } else {
86
- targetBlockElem.style.marginTop = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px';
87
- targetLineElem.style.transform = `translate(${left}px, calc(${top - TARGET_LINE_HALF_HEIGHT * 2}px - ${'0px'}))`;
88
- }
72
+ } else {
73
+ lineTop += targetBlockElemHeight / 2;
74
+ }
75
+ let targetElemTranslate2 = 0;
76
+ if (!isFoundNodeEmptyParagraph) {
77
+ if (isBelow) {
78
+ targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT;
89
79
  } else {
90
- targetLineElem.style.transform = `translate(${left}px, ${top - TARGET_LINE_HALF_HEIGHT}px)`;
80
+ targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT;
91
81
  }
92
- if (DEBUG) {
93
- //targetBlockElem.style.border = '3px solid red'
94
- highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem);
82
+ }
83
+ const top = lineTop - anchorTop + targetElemTranslate2;
84
+ const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft;
85
+ targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`;
86
+ targetLineElem.style.opacity = '.4';
87
+ /**
88
+ * Move around element below or above the line (= the target / targetBlockElem). Creates "space" for the targetLineElem
89
+ *
90
+ * Not needed for empty paragraphs, as an empty paragraph is enough space for the targetLineElem anyways.
91
+ */ //targetBlockElem.style.opacity = '0.4'
92
+ const buffer = 12 // creates more spacing/padding so target line is not directly next to the targetBlockElem
93
+ ;
94
+ if (!isFoundNodeEmptyParagraph) {
95
+ if (isBelow) {
96
+ targetBlockElem.style.marginBottom = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px';
97
+ targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'0px'}))`;
98
+ } else {
99
+ targetBlockElem.style.marginTop = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px';
100
+ targetLineElem.style.transform = `translate(${left}px, calc(${top - TARGET_LINE_HALF_HEIGHT * 2}px - ${'0px'}))`;
95
101
  }
96
- /**
97
- * Properly reset previous targetBlockElem styles
98
- */ lastTargetBlock.elem.style.opacity = '';
99
- if (lastTargetBlock?.elem === targetBlockElem) {
100
- if (isBelow) {
101
- lastTargetBlock.elem.style.marginTop = '';
102
- } else {
103
- lastTargetBlock.elem.style.marginBottom = '';
104
- }
102
+ } else {
103
+ targetLineElem.style.transform = `translate(${left}px, ${top - TARGET_LINE_HALF_HEIGHT}px)`;
104
+ }
105
+ if (DEBUG) {
106
+ //targetBlockElem.style.border = '3px solid red'
107
+ highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem);
108
+ }
109
+ /**
110
+ * Properly reset previous targetBlockElem styles
111
+ */
112
+ lastTargetBlock.elem.style.opacity = '';
113
+ if (lastTargetBlock?.elem === targetBlockElem) {
114
+ if (isBelow) {
115
+ lastTargetBlock.elem.style.marginTop = '';
105
116
  } else {
106
- lastTargetBlock.elem.style.marginBottom = '';
107
- lastTargetBlock.elem.style.marginTop = '';
117
+ lastTargetBlock.elem.style.marginBottom = '';
108
118
  }
109
- animationTimer = 0;
110
- return {
111
- isBelow,
112
- willStayInSamePosition
113
- };
119
+ } else {
120
+ lastTargetBlock.elem.style.marginBottom = '';
121
+ lastTargetBlock.elem.style.marginTop = '';
122
+ }
123
+ animationTimer = 0;
124
+ return {
125
+ isBelow,
126
+ willStayInSamePosition
127
+ };
114
128
  }
115
-
116
129
  //# sourceMappingURL=setTargetLine.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts"],"sourcesContent":["import { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { getBoundingClientRectWithoutTransform } from './getBoundingRectWithoutTransform.js'\nimport { highlightElemOriginalPosition } from './highlightElemOriginalPosition.js'\nconst TARGET_LINE_HALF_HEIGHT = 25\nconst TEXT_BOX_HORIZONTAL_PADDING = -24\nconst DEBUG = false\n\nlet animationTimer = 0\n\nexport function setTargetLine(\n offsetWidth: string,\n offsetLeft: number,\n targetLineElem: HTMLElement,\n targetBlockElem: HTMLElement,\n lastTargetBlock: {\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n },\n mouseY: number,\n anchorElem: HTMLElement,\n event: DragEvent,\n debugHighlightRef: React.RefObject<HTMLDivElement | null>,\n isFoundNodeEmptyParagraph: boolean = false,\n) {\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine\n const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect()\n\n const { marginBottom, marginTop } = getCollapsedMargins(targetBlockElem)\n let lineTop = targetBlockElemTop\n\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n let willStayInSamePosition = false\n\n /**\n * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)\n * This prevents unnecessary flickering.\n *\n * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate\n */\n if (lastTargetBlock?.elem) {\n if (targetBlockElem !== lastTargetBlock?.elem) {\n if (\n isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.nextElementSibling\n ) {\n animationTimer++\n\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n } else if (\n !isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.previousElementSibling\n ) {\n animationTimer++\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n }\n } else {\n animationTimer++\n\n const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y\n const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y\n\n if (\n (isBelow === lastTargetBlock?.isBelow &&\n lastBoundingBoxPosition === currentBoundingBoxPosition) ||\n animationTimer < 200\n ) {\n willStayInSamePosition = false\n }\n }\n }\n if (willStayInSamePosition) {\n return {\n isBelow,\n willStayInSamePosition,\n }\n }\n\n /**\n * Paragraphs need no isBelow/above handling,\n */\n if (!isFoundNodeEmptyParagraph) {\n //if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n lineTop += targetBlockElemHeight + marginBottom / 2\n } else {\n // above targetBlockElem\n lineTop -= marginTop / 2\n }\n } else {\n lineTop += targetBlockElemHeight / 2\n }\n\n let targetElemTranslate2 = 0\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT\n } else {\n targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT\n }\n }\n\n const top = lineTop - anchorTop + targetElemTranslate2\n\n const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft\n\n targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`\n targetLineElem.style.opacity = '.4'\n\n /**\n * Move around element below or above the line (= the target / targetBlockElem). Creates \"space\" for the targetLineElem\n *\n * Not needed for empty paragraphs, as an empty paragraph is enough space for the targetLineElem anyways.\n */\n //targetBlockElem.style.opacity = '0.4'\n const buffer = 12 // creates more spacing/padding so target line is not directly next to the targetBlockElem\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetBlockElem.style.marginBottom = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px'\n targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'0px'}))`\n } else {\n targetBlockElem.style.marginTop = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px'\n targetLineElem.style.transform = `translate(${left}px, calc(${top - TARGET_LINE_HALF_HEIGHT * 2}px - ${'0px'}))`\n }\n } else {\n targetLineElem.style.transform = `translate(${left}px, ${top - TARGET_LINE_HALF_HEIGHT}px)`\n }\n\n if (DEBUG) {\n //targetBlockElem.style.border = '3px solid red'\n highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem)\n }\n\n /**\n * Properly reset previous targetBlockElem styles\n */\n lastTargetBlock.elem.style.opacity = ''\n\n if (lastTargetBlock?.elem === targetBlockElem) {\n if (isBelow) {\n lastTargetBlock.elem.style.marginTop = ''\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n }\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n lastTargetBlock.elem.style.marginTop = ''\n }\n animationTimer = 0\n return {\n isBelow,\n willStayInSamePosition,\n }\n}\n"],"names":["getCollapsedMargins","highlightElemOriginalPosition","TARGET_LINE_HALF_HEIGHT","TEXT_BOX_HORIZONTAL_PADDING","DEBUG","animationTimer","setTargetLine","offsetWidth","offsetLeft","targetLineElem","targetBlockElem","lastTargetBlock","mouseY","anchorElem","event","debugHighlightRef","isFoundNodeEmptyParagraph","height","targetBlockElemHeight","top","targetBlockElemTop","getBoundingClientRect","anchorTop","width","anchorWidth","marginBottom","marginTop","lineTop","isBelow","window","scrollY","willStayInSamePosition","elem","nextElementSibling","previousElementSibling","lastBoundingBoxPosition","boundingBox","y","currentBoundingBoxPosition","targetElemTranslate2","left","style","opacity","buffer","transform"],"mappings":"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"}
1
+ {"version":3,"file":"setTargetLine.js","names":["getCollapsedMargins","highlightElemOriginalPosition","TARGET_LINE_HALF_HEIGHT","TEXT_BOX_HORIZONTAL_PADDING","DEBUG","animationTimer","setTargetLine","offsetWidth","offsetLeft","targetLineElem","targetBlockElem","lastTargetBlock","mouseY","anchorElem","event","debugHighlightRef","isFoundNodeEmptyParagraph","height","targetBlockElemHeight","top","targetBlockElemTop","getBoundingClientRect","anchorTop","width","anchorWidth","marginBottom","marginTop","lineTop","isBelow","window","scrollY","willStayInSamePosition","elem","nextElementSibling","previousElementSibling","lastBoundingBoxPosition","boundingBox","y","currentBoundingBoxPosition","targetElemTranslate2","left","style","opacity","buffer","transform"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.ts"],"sourcesContent":["'use client'\nimport { getCollapsedMargins } from '../utils/getCollapsedMargins.js'\nimport { highlightElemOriginalPosition } from './highlightElemOriginalPosition.js'\nconst TARGET_LINE_HALF_HEIGHT = 25\nconst TEXT_BOX_HORIZONTAL_PADDING = -24\nconst DEBUG = false\n\nlet animationTimer = 0\n\nexport function setTargetLine(\n offsetWidth: string,\n offsetLeft: number,\n targetLineElem: HTMLElement,\n targetBlockElem: HTMLElement,\n lastTargetBlock: {\n boundingBox?: DOMRect\n elem: HTMLElement | null\n isBelow: boolean\n },\n mouseY: number,\n anchorElem: HTMLElement,\n event: DragEvent,\n debugHighlightRef: React.RefObject<HTMLDivElement | null>,\n isFoundNodeEmptyParagraph: boolean = false,\n) {\n const { height: targetBlockElemHeight, top: targetBlockElemTop } =\n targetBlockElem.getBoundingClientRect() // used to be getBoundingClientRectWithoutTransform. Not sure what's better, but the normal getBoundingClientRect seems to work fine\n const { top: anchorTop, width: anchorWidth } = anchorElem.getBoundingClientRect()\n\n const { marginBottom, marginTop } = getCollapsedMargins(targetBlockElem)\n let lineTop = targetBlockElemTop\n\n const isBelow = mouseY >= targetBlockElemTop + targetBlockElemHeight / 2 + window.scrollY\n\n let willStayInSamePosition = false\n\n /**\n * Do not run any transform or changes if the actual new line position would be the same (even if it's now inserted BEFORE rather than AFTER - position would still be the same)\n * This prevents unnecessary flickering.\n *\n * We still need to let it run even if the position (IGNORING the transform) would not change, as the transform animation is not finished yet. This is what animationTimer does. Otherwise, the positioning will be inaccurate\n */\n if (lastTargetBlock?.elem) {\n if (targetBlockElem !== lastTargetBlock?.elem) {\n if (\n isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.nextElementSibling\n ) {\n animationTimer++\n\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n } else if (\n !isBelow &&\n lastTargetBlock?.elem &&\n lastTargetBlock?.elem === targetBlockElem.previousElementSibling\n ) {\n animationTimer++\n if (animationTimer < 200) {\n willStayInSamePosition = true\n }\n }\n } else {\n animationTimer++\n\n const lastBoundingBoxPosition = lastTargetBlock?.boundingBox?.y\n const currentBoundingBoxPosition = targetBlockElem.getBoundingClientRect().y\n\n if (\n (isBelow === lastTargetBlock?.isBelow &&\n lastBoundingBoxPosition === currentBoundingBoxPosition) ||\n animationTimer < 200\n ) {\n willStayInSamePosition = false\n }\n }\n }\n if (willStayInSamePosition) {\n return {\n isBelow,\n willStayInSamePosition,\n }\n }\n\n /**\n * Paragraphs need no isBelow/above handling,\n */\n if (!isFoundNodeEmptyParagraph) {\n //if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n // below targetBlockElem\n lineTop += targetBlockElemHeight + marginBottom / 2\n } else {\n // above targetBlockElem\n lineTop -= marginTop / 2\n }\n } else {\n lineTop += targetBlockElemHeight / 2\n }\n\n let targetElemTranslate2 = 0\n\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetElemTranslate2 = -TARGET_LINE_HALF_HEIGHT\n } else {\n targetElemTranslate2 = TARGET_LINE_HALF_HEIGHT\n }\n }\n\n const top = lineTop - anchorTop + targetElemTranslate2\n\n const left = TEXT_BOX_HORIZONTAL_PADDING - offsetLeft\n\n targetLineElem.style.width = `calc(${anchorWidth}px - ${offsetWidth})`\n targetLineElem.style.opacity = '.4'\n\n /**\n * Move around element below or above the line (= the target / targetBlockElem). Creates \"space\" for the targetLineElem\n *\n * Not needed for empty paragraphs, as an empty paragraph is enough space for the targetLineElem anyways.\n */\n //targetBlockElem.style.opacity = '0.4'\n const buffer = 12 // creates more spacing/padding so target line is not directly next to the targetBlockElem\n if (!isFoundNodeEmptyParagraph) {\n if (isBelow) {\n targetBlockElem.style.marginBottom = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px'\n targetLineElem.style.transform = `translate(${left}px, calc(${top}px - ${'0px'}))`\n } else {\n targetBlockElem.style.marginTop = TARGET_LINE_HALF_HEIGHT * 2 + buffer + 'px'\n targetLineElem.style.transform = `translate(${left}px, calc(${top - TARGET_LINE_HALF_HEIGHT * 2}px - ${'0px'}))`\n }\n } else {\n targetLineElem.style.transform = `translate(${left}px, ${top - TARGET_LINE_HALF_HEIGHT}px)`\n }\n\n if (DEBUG) {\n //targetBlockElem.style.border = '3px solid red'\n highlightElemOriginalPosition(debugHighlightRef, targetBlockElem, anchorElem)\n }\n\n /**\n * Properly reset previous targetBlockElem styles\n */\n lastTargetBlock.elem.style.opacity = ''\n\n if (lastTargetBlock?.elem === targetBlockElem) {\n if (isBelow) {\n lastTargetBlock.elem.style.marginTop = ''\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n }\n } else {\n lastTargetBlock.elem.style.marginBottom = ''\n lastTargetBlock.elem.style.marginTop = ''\n }\n animationTimer = 0\n return {\n isBelow,\n willStayInSamePosition,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"calculateDistanceFromScrollerElem.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,iCAAiC,iBAC9B,WAAW,GAAG,IAAI,SACzB,MAAM,SACN,MAAM,UACL,WAAW,qBACD,MAAM,mBACR,MAAM,KACrB,MAwBF,CAAA"}
1
+ {"version":3,"file":"calculateDistanceFromScrollerElem.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,eAAO,MAAM,iCAAiC,iBAC9B,WAAW,GAAG,IAAI,SACzB,MAAM,SACN,MAAM,UACL,WAAW,qBACD,MAAM,mBACR,MAAM,KACrB,MAwBF,CAAA"}
@@ -1,21 +1,28 @@
1
+ 'use client';
2
+
1
3
  /**
2
4
  * Calculate distance between scrollerElem and target if target is not in scrollerElem
3
- */ export const calculateDistanceFromScrollerElem = (scrollerElem, pageX, pageY, target, horizontalBuffer = 50, verticalBuffer = 25)=>{
4
- let distanceFromScrollerElem = 0;
5
- if (scrollerElem && !scrollerElem.contains(target)) {
6
- const { bottom, left, right, top } = scrollerElem.getBoundingClientRect();
7
- const adjustedTop = top + window.scrollY;
8
- const adjustedBottom = bottom + window.scrollY;
9
- if (pageY < adjustedTop - verticalBuffer || pageY > adjustedBottom + verticalBuffer || pageX < left - horizontalBuffer || pageX > right + horizontalBuffer) {
10
- return -1;
11
- }
12
- // This is used to allow the _draggableBlockElem to be found when the mouse is in the
13
- // buffer zone around the scrollerElem.
14
- if (pageX < left || pageX > right) {
15
- distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right;
16
- }
5
+ */
6
+ export const calculateDistanceFromScrollerElem = (scrollerElem, pageX, pageY, target, horizontalBuffer = 50, verticalBuffer = 25) => {
7
+ let distanceFromScrollerElem = 0;
8
+ if (scrollerElem && !scrollerElem.contains(target)) {
9
+ const {
10
+ bottom,
11
+ left,
12
+ right,
13
+ top
14
+ } = scrollerElem.getBoundingClientRect();
15
+ const adjustedTop = top + window.scrollY;
16
+ const adjustedBottom = bottom + window.scrollY;
17
+ if (pageY < adjustedTop - verticalBuffer || pageY > adjustedBottom + verticalBuffer || pageX < left - horizontalBuffer || pageX > right + horizontalBuffer) {
18
+ return -1;
19
+ }
20
+ // This is used to allow the _draggableBlockElem to be found when the mouse is in the
21
+ // buffer zone around the scrollerElem.
22
+ if (pageX < left || pageX > right) {
23
+ distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right;
17
24
  }
18
- return distanceFromScrollerElem;
25
+ }
26
+ return distanceFromScrollerElem;
19
27
  };
20
-
21
28
  //# sourceMappingURL=calculateDistanceFromScrollerElem.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.ts"],"sourcesContent":["/**\n * Calculate distance between scrollerElem and target if target is not in scrollerElem\n */\nexport const calculateDistanceFromScrollerElem = (\n scrollerElem: HTMLElement | null,\n pageX: number,\n pageY: number,\n target: HTMLElement,\n horizontalBuffer: number = 50,\n verticalBuffer: number = 25,\n): number => {\n let distanceFromScrollerElem = 0\n if (scrollerElem && !scrollerElem.contains(target)) {\n const { bottom, left, right, top } = scrollerElem.getBoundingClientRect()\n\n const adjustedTop = top + window.scrollY\n const adjustedBottom = bottom + window.scrollY\n\n if (\n pageY < adjustedTop - verticalBuffer ||\n pageY > adjustedBottom + verticalBuffer ||\n pageX < left - horizontalBuffer ||\n pageX > right + horizontalBuffer\n ) {\n return -1\n }\n\n // This is used to allow the _draggableBlockElem to be found when the mouse is in the\n // buffer zone around the scrollerElem.\n if (pageX < left || pageX > right) {\n distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right\n }\n }\n return distanceFromScrollerElem\n}\n"],"names":["calculateDistanceFromScrollerElem","scrollerElem","pageX","pageY","target","horizontalBuffer","verticalBuffer","distanceFromScrollerElem","contains","bottom","left","right","top","getBoundingClientRect","adjustedTop","window","scrollY","adjustedBottom"],"mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA,oCAAoC,CAC/CC,cACAC,OACAC,OACAC,QACAC,mBAA2B,EAAE,EAC7BC,iBAAyB,EAAE;IAE3B,IAAIC,2BAA2B;IAC/B,IAAIN,gBAAgB,CAACA,aAAaO,QAAQ,CAACJ,SAAS;QAClD,MAAM,EAAEK,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,GAAG,EAAE,GAAGX,aAAaY,qBAAqB;QAEvE,MAAMC,cAAcF,MAAMG,OAAOC,OAAO;QACxC,MAAMC,iBAAiBR,SAASM,OAAOC,OAAO;QAE9C,IACEb,QAAQW,cAAcR,kBACtBH,QAAQc,iBAAiBX,kBACzBJ,QAAQQ,OAAOL,oBACfH,QAAQS,QAAQN,kBAChB;YACA,OAAO,CAAC;QACV;QAEA,qFAAqF;QACrF,uCAAuC;QACvC,IAAIH,QAAQQ,QAAQR,QAAQS,OAAO;YACjCJ,2BAA2BL,QAAQQ,OAAOR,QAAQQ,OAAOR,QAAQS;QACnE;IACF;IACA,OAAOJ;AACT,EAAC"}
1
+ {"version":3,"file":"calculateDistanceFromScrollerElem.js","names":["calculateDistanceFromScrollerElem","scrollerElem","pageX","pageY","target","horizontalBuffer","verticalBuffer","distanceFromScrollerElem","contains","bottom","left","right","top","getBoundingClientRect","adjustedTop","window","scrollY","adjustedBottom"],"sources":["../../../../../src/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.ts"],"sourcesContent":["'use client'\n/**\n * Calculate distance between scrollerElem and target if target is not in scrollerElem\n */\nexport const calculateDistanceFromScrollerElem = (\n scrollerElem: HTMLElement | null,\n pageX: number,\n pageY: number,\n target: HTMLElement,\n horizontalBuffer: number = 50,\n verticalBuffer: number = 25,\n): number => {\n let distanceFromScrollerElem = 0\n if (scrollerElem && !scrollerElem.contains(target)) {\n const { bottom, left, right, top } = scrollerElem.getBoundingClientRect()\n\n const adjustedTop = top + window.scrollY\n const adjustedBottom = bottom + window.scrollY\n\n if (\n pageY < adjustedTop - verticalBuffer ||\n pageY > adjustedBottom + verticalBuffer ||\n pageX < left - horizontalBuffer ||\n pageX > right + horizontalBuffer\n ) {\n return -1\n }\n\n // This is used to allow the _draggableBlockElem to be found when the mouse is in the\n // buffer zone around the scrollerElem.\n if (pageX < left || pageX > right) {\n distanceFromScrollerElem = pageX < left ? pageX - left : pageX - right\n }\n }\n return distanceFromScrollerElem\n}\n"],"mappings":"AAAA;;AACA;;;AAGA,OAAO,MAAMA,iCAAA,GAAoCA,CAC/CC,YAAA,EACAC,KAAA,EACAC,KAAA,EACAC,MAAA,EACAC,gBAAA,GAA2B,EAAE,EAC7BC,cAAA,GAAyB,EAAE;EAE3B,IAAIC,wBAAA,GAA2B;EAC/B,IAAIN,YAAA,IAAgB,CAACA,YAAA,CAAaO,QAAQ,CAACJ,MAAA,GAAS;IAClD,MAAM;MAAEK,MAAM;MAAEC,IAAI;MAAEC,KAAK;MAAEC;IAAG,CAAE,GAAGX,YAAA,CAAaY,qBAAqB;IAEvE,MAAMC,WAAA,GAAcF,GAAA,GAAMG,MAAA,CAAOC,OAAO;IACxC,MAAMC,cAAA,GAAiBR,MAAA,GAASM,MAAA,CAAOC,OAAO;IAE9C,IACEb,KAAA,GAAQW,WAAA,GAAcR,cAAA,IACtBH,KAAA,GAAQc,cAAA,GAAiBX,cAAA,IACzBJ,KAAA,GAAQQ,IAAA,GAAOL,gBAAA,IACfH,KAAA,GAAQS,KAAA,GAAQN,gBAAA,EAChB;MACA,OAAO,CAAC;IACV;IAEA;IACA;IACA,IAAIH,KAAA,GAAQQ,IAAA,IAAQR,KAAA,GAAQS,KAAA,EAAO;MACjCJ,wBAAA,GAA2BL,KAAA,GAAQQ,IAAA,GAAOR,KAAA,GAAQQ,IAAA,GAAOR,KAAA,GAAQS,KAAA;IACnE;EACF;EACA,OAAOJ,wBAAA;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"doesLineHeightAffectElement.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"names":[],"mappings":"AAaA;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,WA2BhE"}
1
+ {"version":3,"file":"doesLineHeightAffectElement.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,WAAW,WA2BhE"}
@@ -1,35 +1,26 @@
1
- const replacedElements = [
2
- 'IMG',
3
- 'INPUT',
4
- 'TEXTAREA',
5
- 'SELECT',
6
- 'BUTTON',
7
- 'VIDEO',
8
- 'OBJECT',
9
- 'EMBED',
10
- 'IFRAME',
11
- 'HR'
12
- ];
1
+ 'use client';
2
+
3
+ const replacedElements = ['IMG', 'INPUT', 'TEXTAREA', 'SELECT', 'BUTTON', 'VIDEO', 'OBJECT', 'EMBED', 'IFRAME', 'HR'];
13
4
  /**
14
5
  * From ChatGPT, only that verified it works for HR elements.
15
6
  *
16
7
  * HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.
17
8
  * This function checks if the line-height property has an effect on the element's layout.
18
9
  * @param htmlElem
19
- */ export function doesLineHeightAffectElement(htmlElem) {
20
- if (!htmlElem) return false;
21
- // Check for replaced elements, elements that typically don't support line-height adjustments,
22
- // and elements without visible content
23
- if (replacedElements.includes(htmlElem.tagName) || htmlElem.offsetHeight === 0 || htmlElem.offsetWidth === 0) {
24
- return false;
25
- }
26
- // Check for specific CSS properties that negate line-height's visual effects
27
- const style = window.getComputedStyle(htmlElem);
28
- if (style.display === 'table-cell' || style.position === 'absolute' || style.visibility === 'hidden' || style.opacity === '0') {
29
- return false;
30
- }
31
- // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.
32
- return true;
10
+ */
11
+ export function doesLineHeightAffectElement(htmlElem) {
12
+ if (!htmlElem) return false;
13
+ // Check for replaced elements, elements that typically don't support line-height adjustments,
14
+ // and elements without visible content
15
+ if (replacedElements.includes(htmlElem.tagName) || htmlElem.offsetHeight === 0 || htmlElem.offsetWidth === 0) {
16
+ return false;
17
+ }
18
+ // Check for specific CSS properties that negate line-height's visual effects
19
+ const style = window.getComputedStyle(htmlElem);
20
+ if (style.display === 'table-cell' || style.position === 'absolute' || style.visibility === 'hidden' || style.opacity === '0') {
21
+ return false;
22
+ }
23
+ // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.
24
+ return true;
33
25
  }
34
-
35
26
  //# sourceMappingURL=doesLineHeightAffectElement.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"sourcesContent":["const replacedElements = [\n 'IMG',\n 'INPUT',\n 'TEXTAREA',\n 'SELECT',\n 'BUTTON',\n 'VIDEO',\n 'OBJECT',\n 'EMBED',\n 'IFRAME',\n 'HR',\n]\n\n/**\n * From ChatGPT, only that verified it works for HR elements.\n *\n * HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.\n * This function checks if the line-height property has an effect on the element's layout.\n * @param htmlElem\n */\nexport function doesLineHeightAffectElement(htmlElem: HTMLElement) {\n if (!htmlElem) return false\n\n // Check for replaced elements, elements that typically don't support line-height adjustments,\n // and elements without visible content\n\n if (\n replacedElements.includes(htmlElem.tagName) ||\n htmlElem.offsetHeight === 0 ||\n htmlElem.offsetWidth === 0\n ) {\n return false\n }\n\n // Check for specific CSS properties that negate line-height's visual effects\n const style = window.getComputedStyle(htmlElem)\n if (\n style.display === 'table-cell' ||\n style.position === 'absolute' ||\n style.visibility === 'hidden' ||\n style.opacity === '0'\n ) {\n return false\n }\n\n // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.\n return true\n}\n"],"names":["replacedElements","doesLineHeightAffectElement","htmlElem","includes","tagName","offsetHeight","offsetWidth","style","window","getComputedStyle","display","position","visibility","opacity"],"mappings":"AAAA,MAAMA,mBAAmB;IACvB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED;;;;;;CAMC,GACD,OAAO,SAASC,4BAA4BC,QAAqB;IAC/D,IAAI,CAACA,UAAU,OAAO;IAEtB,8FAA8F;IAC9F,uCAAuC;IAEvC,IACEF,iBAAiBG,QAAQ,CAACD,SAASE,OAAO,KAC1CF,SAASG,YAAY,KAAK,KAC1BH,SAASI,WAAW,KAAK,GACzB;QACA,OAAO;IACT;IAEA,6EAA6E;IAC7E,MAAMC,QAAQC,OAAOC,gBAAgB,CAACP;IACtC,IACEK,MAAMG,OAAO,KAAK,gBAClBH,MAAMI,QAAQ,KAAK,cACnBJ,MAAMK,UAAU,KAAK,YACrBL,MAAMM,OAAO,KAAK,KAClB;QACA,OAAO;IACT;IAEA,2GAA2G;IAC3G,OAAO;AACT"}
1
+ {"version":3,"file":"doesLineHeightAffectElement.js","names":["replacedElements","doesLineHeightAffectElement","htmlElem","includes","tagName","offsetHeight","offsetWidth","style","window","getComputedStyle","display","position","visibility","opacity"],"sources":["../../../../../src/lexical/plugins/handles/utils/doesLineHeightAffectElement.ts"],"sourcesContent":["'use client'\nconst replacedElements = [\n 'IMG',\n 'INPUT',\n 'TEXTAREA',\n 'SELECT',\n 'BUTTON',\n 'VIDEO',\n 'OBJECT',\n 'EMBED',\n 'IFRAME',\n 'HR',\n]\n\n/**\n * From ChatGPT, only that verified it works for HR elements.\n *\n * HTML Elements can have CSS lineHeight applied to them, but it doesn't always affect the visual layout.\n * This function checks if the line-height property has an effect on the element's layout.\n * @param htmlElem\n */\nexport function doesLineHeightAffectElement(htmlElem: HTMLElement) {\n if (!htmlElem) return false\n\n // Check for replaced elements, elements that typically don't support line-height adjustments,\n // and elements without visible content\n\n if (\n replacedElements.includes(htmlElem.tagName) ||\n htmlElem.offsetHeight === 0 ||\n htmlElem.offsetWidth === 0\n ) {\n return false\n }\n\n // Check for specific CSS properties that negate line-height's visual effects\n const style = window.getComputedStyle(htmlElem)\n if (\n style.display === 'table-cell' ||\n style.position === 'absolute' ||\n style.visibility === 'hidden' ||\n style.opacity === '0'\n ) {\n return false\n }\n\n // This is a basic check, and there can be more complex scenarios where line-height doesn't have an effect.\n return true\n}\n"],"mappings":"AAAA;;AACA,MAAMA,gBAAA,GAAmB,CACvB,OACA,SACA,YACA,UACA,UACA,SACA,UACA,SACA,UACA,KACD;AAED;;;;;;;AAOA,OAAO,SAASC,4BAA4BC,QAAqB;EAC/D,IAAI,CAACA,QAAA,EAAU,OAAO;EAEtB;EACA;EAEA,IACEF,gBAAA,CAAiBG,QAAQ,CAACD,QAAA,CAASE,OAAO,KAC1CF,QAAA,CAASG,YAAY,KAAK,KAC1BH,QAAA,CAASI,WAAW,KAAK,GACzB;IACA,OAAO;EACT;EAEA;EACA,MAAMC,KAAA,GAAQC,MAAA,CAAOC,gBAAgB,CAACP,QAAA;EACtC,IACEK,KAAA,CAAMG,OAAO,KAAK,gBAClBH,KAAA,CAAMI,QAAQ,KAAK,cACnBJ,KAAA,CAAMK,UAAU,KAAK,YACrBL,KAAA,CAAMM,OAAO,KAAK,KAClB;IACA,OAAO;EACT;EAEA;EACA,OAAO;AACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"getCollapsedMargins.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/getCollapsedMargins.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,CAWA"}
1
+ {"version":3,"file":"getCollapsedMargins.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/utils/getCollapsedMargins.ts"],"names":[],"mappings":"AACA,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG;IACtD,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB,CAWA"}
@@ -1,14 +1,18 @@
1
+ 'use client';
2
+
1
3
  export function getCollapsedMargins(elem) {
2
- const getMargin = (element, margin)=>element ? parseFloat(window.getComputedStyle(element)[margin]) : 0;
3
- const { marginBottom, marginTop } = window.getComputedStyle(elem);
4
- const prevElemSiblingMarginBottom = getMargin(elem.previousElementSibling, 'marginBottom');
5
- const nextElemSiblingMarginTop = getMargin(elem.nextElementSibling, 'marginTop');
6
- const collapsedTopMargin = Math.max(parseFloat(marginTop), prevElemSiblingMarginBottom);
7
- const collapsedBottomMargin = Math.max(parseFloat(marginBottom), nextElemSiblingMarginTop);
8
- return {
9
- marginBottom: collapsedBottomMargin,
10
- marginTop: collapsedTopMargin
11
- };
4
+ const getMargin = (element, margin) => element ? parseFloat(window.getComputedStyle(element)[margin]) : 0;
5
+ const {
6
+ marginBottom,
7
+ marginTop
8
+ } = window.getComputedStyle(elem);
9
+ const prevElemSiblingMarginBottom = getMargin(elem.previousElementSibling, 'marginBottom');
10
+ const nextElemSiblingMarginTop = getMargin(elem.nextElementSibling, 'marginTop');
11
+ const collapsedTopMargin = Math.max(parseFloat(marginTop), prevElemSiblingMarginBottom);
12
+ const collapsedBottomMargin = Math.max(parseFloat(marginBottom), nextElemSiblingMarginTop);
13
+ return {
14
+ marginBottom: collapsedBottomMargin,
15
+ marginTop: collapsedTopMargin
16
+ };
12
17
  }
13
-
14
18
  //# sourceMappingURL=getCollapsedMargins.js.map