@payloadcms/richtext-lexical 3.0.0-beta.134 → 3.0.0-beta.135

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 (314) hide show
  1. package/dist/exports/client/Field-KKSJXHR7.js +2 -0
  2. package/dist/exports/client/Field-KKSJXHR7.js.map +7 -0
  3. package/dist/exports/client/bundled.css +1 -1
  4. package/dist/exports/client/chunk-QPPOQTHD.js +2 -0
  5. package/dist/exports/client/{chunk-OOBB5GCO.js.map → chunk-QPPOQTHD.js.map} +3 -3
  6. package/dist/exports/client/index.js +15 -13
  7. package/dist/exports/client/index.js.map +4 -4
  8. package/dist/exports/server/ast/mdx.d.ts +7 -0
  9. package/dist/exports/server/ast/mdx.d.ts.map +1 -0
  10. package/dist/exports/server/ast/mdx.js +37 -0
  11. package/dist/exports/server/ast/mdx.js.map +1 -0
  12. package/dist/exports/shared.d.ts +4 -0
  13. package/dist/exports/shared.d.ts.map +1 -0
  14. package/dist/exports/shared.js +4 -0
  15. package/dist/exports/shared.js.map +1 -0
  16. package/dist/features/blocks/client/index.d.ts +1 -5
  17. package/dist/features/blocks/client/index.d.ts.map +1 -1
  18. package/dist/features/blocks/client/index.js +138 -154
  19. package/dist/features/blocks/client/index.js.map +1 -1
  20. package/dist/features/blocks/client/markdownTransformer.d.ts +16 -0
  21. package/dist/features/blocks/client/markdownTransformer.d.ts.map +1 -0
  22. package/dist/features/blocks/client/markdownTransformer.js +144 -0
  23. package/dist/features/blocks/client/markdownTransformer.js.map +1 -0
  24. package/dist/features/blocks/client/plugin/index.d.ts +1 -2
  25. package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
  26. package/dist/features/blocks/client/plugin/index.js.map +1 -1
  27. package/dist/features/blocks/server/index.d.ts +1 -2
  28. package/dist/features/blocks/server/index.d.ts.map +1 -1
  29. package/dist/features/blocks/server/index.js +5 -8
  30. package/dist/features/blocks/server/index.js.map +1 -1
  31. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts +22 -0
  32. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts.map +1 -0
  33. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js +136 -0
  34. package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +1 -0
  35. package/dist/features/blocks/server/markdownTransformer.d.ts +22 -0
  36. package/dist/features/blocks/server/markdownTransformer.d.ts.map +1 -0
  37. package/dist/features/blocks/server/markdownTransformer.js +400 -0
  38. package/dist/features/blocks/server/markdownTransformer.js.map +1 -0
  39. package/dist/features/experimental_table/client/index.d.ts.map +1 -1
  40. package/dist/features/experimental_table/client/index.js +2 -0
  41. package/dist/features/experimental_table/client/index.js.map +1 -1
  42. package/dist/features/experimental_table/markdownTransformer.d.ts +5 -0
  43. package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -0
  44. package/dist/features/experimental_table/markdownTransformer.js +127 -0
  45. package/dist/features/experimental_table/markdownTransformer.js.map +1 -0
  46. package/dist/features/experimental_table/server/index.d.ts.map +1 -1
  47. package/dist/features/experimental_table/server/index.js +2 -0
  48. package/dist/features/experimental_table/server/index.js.map +1 -1
  49. package/dist/features/typesClient.d.ts +11 -2
  50. package/dist/features/typesClient.d.ts.map +1 -1
  51. package/dist/features/typesClient.js.map +1 -1
  52. package/dist/features/typesServer.d.ts +6 -2
  53. package/dist/features/typesServer.d.ts.map +1 -1
  54. package/dist/features/typesServer.js.map +1 -1
  55. package/dist/field/Field.d.ts.map +1 -1
  56. package/dist/field/Field.js +68 -164
  57. package/dist/field/Field.js.map +1 -1
  58. package/dist/field/bundled.css +1 -1
  59. package/dist/field/index.d.ts.map +1 -1
  60. package/dist/field/index.js +23 -14
  61. package/dist/field/index.js.map +1 -1
  62. package/dist/index.d.ts +4 -1
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +4 -1
  65. package/dist/index.js.map +1 -1
  66. package/dist/lexical/config/client/loader.d.ts +6 -1
  67. package/dist/lexical/config/client/loader.d.ts.map +1 -1
  68. package/dist/lexical/config/client/loader.js +6 -0
  69. package/dist/lexical/config/client/loader.js.map +1 -1
  70. package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
  71. package/dist/lexical/config/client/sanitize.js +15 -2
  72. package/dist/lexical/config/client/sanitize.js.map +1 -1
  73. package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
  74. package/dist/lexical/config/server/sanitize.js +15 -2
  75. package/dist/lexical/config/server/sanitize.js.map +1 -1
  76. package/dist/lexical/nodes/index.d.ts +4 -0
  77. package/dist/lexical/nodes/index.d.ts.map +1 -1
  78. package/dist/lexical/nodes/index.js +8 -1
  79. package/dist/lexical/nodes/index.js.map +1 -1
  80. package/dist/lexical-proxy/@lexical-headless.d.ts +2 -0
  81. package/dist/lexical-proxy/@lexical-headless.d.ts.map +1 -0
  82. package/dist/lexical-proxy/@lexical-headless.js +2 -0
  83. package/dist/lexical-proxy/@lexical-headless.js.map +1 -0
  84. package/dist/lexical-proxy/@lexical-link.d.ts +2 -0
  85. package/dist/lexical-proxy/@lexical-link.d.ts.map +1 -0
  86. package/dist/lexical-proxy/@lexical-link.js +2 -0
  87. package/dist/lexical-proxy/@lexical-link.js.map +1 -0
  88. package/dist/lexical-proxy/@lexical-list.d.ts +2 -0
  89. package/dist/lexical-proxy/@lexical-list.d.ts.map +1 -0
  90. package/dist/lexical-proxy/@lexical-list.js +2 -0
  91. package/dist/lexical-proxy/@lexical-list.js.map +1 -0
  92. package/dist/lexical-proxy/@lexical-mark.d.ts +2 -0
  93. package/dist/lexical-proxy/@lexical-mark.d.ts.map +1 -0
  94. package/dist/lexical-proxy/@lexical-mark.js +2 -0
  95. package/dist/lexical-proxy/@lexical-mark.js.map +1 -0
  96. package/dist/lexical-proxy/@lexical-markdown.d.ts +2 -0
  97. package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -0
  98. package/dist/lexical-proxy/@lexical-markdown.js +2 -0
  99. package/dist/lexical-proxy/@lexical-markdown.js.map +1 -0
  100. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.d.ts +2 -0
  101. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.d.ts.map +1 -0
  102. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js +2 -0
  103. package/dist/lexical-proxy/@lexical-react/LexicalAutoEmbedPlugin.js.map +1 -0
  104. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.d.ts +2 -0
  105. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.d.ts.map +1 -0
  106. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js +2 -0
  107. package/dist/lexical-proxy/@lexical-react/LexicalAutoFocusPlugin.js.map +1 -0
  108. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.d.ts +2 -0
  109. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.d.ts.map +1 -0
  110. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js +2 -0
  111. package/dist/lexical-proxy/@lexical-react/LexicalAutoLinkPlugin.js.map +1 -0
  112. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.d.ts +2 -0
  113. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.d.ts.map +1 -0
  114. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js +2 -0
  115. package/dist/lexical-proxy/@lexical-react/LexicalBlockWithAlignableContents.js.map +1 -0
  116. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.d.ts +2 -0
  117. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.d.ts.map +1 -0
  118. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js +2 -0
  119. package/dist/lexical-proxy/@lexical-react/LexicalCharacterLimitPlugin.js.map +1 -0
  120. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.d.ts +2 -0
  121. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.d.ts.map +1 -0
  122. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js +2 -0
  123. package/dist/lexical-proxy/@lexical-react/LexicalCheckListPlugin.js.map +1 -0
  124. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.d.ts +2 -0
  125. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.d.ts.map +1 -0
  126. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js +2 -0
  127. package/dist/lexical-proxy/@lexical-react/LexicalClearEditorPlugin.js.map +1 -0
  128. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.d.ts +2 -0
  129. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.d.ts.map +1 -0
  130. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js +2 -0
  131. package/dist/lexical-proxy/@lexical-react/LexicalClickableLinkPlugin.js.map +1 -0
  132. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.d.ts +2 -0
  133. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.d.ts.map +1 -0
  134. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js +2 -0
  135. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationContext.js.map +1 -0
  136. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.d.ts +2 -0
  137. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.d.ts.map +1 -0
  138. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js +2 -0
  139. package/dist/lexical-proxy/@lexical-react/LexicalCollaborationPlugin.js.map +1 -0
  140. package/dist/lexical-proxy/@lexical-react/LexicalComposer.d.ts +2 -0
  141. package/dist/lexical-proxy/@lexical-react/LexicalComposer.d.ts.map +1 -0
  142. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js +2 -0
  143. package/dist/lexical-proxy/@lexical-react/LexicalComposer.js.map +1 -0
  144. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.d.ts +2 -0
  145. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.d.ts.map +1 -0
  146. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js +2 -0
  147. package/dist/lexical-proxy/@lexical-react/LexicalComposerContext.js.map +1 -0
  148. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.d.ts +2 -0
  149. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.d.ts.map +1 -0
  150. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js +2 -0
  151. package/dist/lexical-proxy/@lexical-react/LexicalContentEditable.js.map +1 -0
  152. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +2 -0
  153. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +1 -0
  154. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +2 -0
  155. package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +1 -0
  156. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.d.ts +2 -0
  157. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.d.ts.map +1 -0
  158. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js +2 -0
  159. package/dist/lexical-proxy/@lexical-react/LexicalDecoratorBlockNode.js.map +1 -0
  160. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.d.ts +2 -0
  161. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.d.ts.map +1 -0
  162. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js +2 -0
  163. package/dist/lexical-proxy/@lexical-react/LexicalDraggableBlockPlugin.js.map +1 -0
  164. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.d.ts +2 -0
  165. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.d.ts.map +1 -0
  166. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js +2 -0
  167. package/dist/lexical-proxy/@lexical-react/LexicalEditorRefPlugin.js.map +1 -0
  168. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.d.ts +2 -0
  169. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.d.ts.map +1 -0
  170. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js +2 -0
  171. package/dist/lexical-proxy/@lexical-react/LexicalErrorBoundary.js.map +1 -0
  172. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.d.ts +2 -0
  173. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.d.ts.map +1 -0
  174. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js +2 -0
  175. package/dist/lexical-proxy/@lexical-react/LexicalHashtagPlugin.js.map +1 -0
  176. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.d.ts +2 -0
  177. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.d.ts.map +1 -0
  178. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js +2 -0
  179. package/dist/lexical-proxy/@lexical-react/LexicalHistoryPlugin.js.map +1 -0
  180. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.d.ts +2 -0
  181. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.d.ts.map +1 -0
  182. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js +2 -0
  183. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRuleNode.js.map +1 -0
  184. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.d.ts +2 -0
  185. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.d.ts.map +1 -0
  186. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js +2 -0
  187. package/dist/lexical-proxy/@lexical-react/LexicalHorizontalRulePlugin.js.map +1 -0
  188. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.d.ts +2 -0
  189. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.d.ts.map +1 -0
  190. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js +2 -0
  191. package/dist/lexical-proxy/@lexical-react/LexicalLinkPlugin.js.map +1 -0
  192. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.d.ts +2 -0
  193. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.d.ts.map +1 -0
  194. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js +2 -0
  195. package/dist/lexical-proxy/@lexical-react/LexicalListPlugin.js.map +1 -0
  196. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.d.ts +2 -0
  197. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.d.ts.map +1 -0
  198. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js +2 -0
  199. package/dist/lexical-proxy/@lexical-react/LexicalMarkdownShortcutPlugin.js.map +1 -0
  200. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.d.ts +2 -0
  201. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.d.ts.map +1 -0
  202. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js +2 -0
  203. package/dist/lexical-proxy/@lexical-react/LexicalNestedComposer.js.map +1 -0
  204. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.d.ts +2 -0
  205. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.d.ts.map +1 -0
  206. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js +2 -0
  207. package/dist/lexical-proxy/@lexical-react/LexicalNodeEventPlugin.js.map +1 -0
  208. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.d.ts +2 -0
  209. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.d.ts.map +1 -0
  210. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js +2 -0
  211. package/dist/lexical-proxy/@lexical-react/LexicalNodeMenuPlugin.js.map +1 -0
  212. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.d.ts +2 -0
  213. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.d.ts.map +1 -0
  214. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js +2 -0
  215. package/dist/lexical-proxy/@lexical-react/LexicalOnChangePlugin.js.map +1 -0
  216. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.d.ts +2 -0
  217. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.d.ts.map +1 -0
  218. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js +2 -0
  219. package/dist/lexical-proxy/@lexical-react/LexicalPlainTextPlugin.js.map +1 -0
  220. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.d.ts +2 -0
  221. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.d.ts.map +1 -0
  222. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js +2 -0
  223. package/dist/lexical-proxy/@lexical-react/LexicalRichTextPlugin.js.map +1 -0
  224. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.d.ts +2 -0
  225. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.d.ts.map +1 -0
  226. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js +2 -0
  227. package/dist/lexical-proxy/@lexical-react/LexicalTabIndentationPlugin.js.map +1 -0
  228. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.d.ts +2 -0
  229. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.d.ts.map +1 -0
  230. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.js +2 -0
  231. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContents.js.map +1 -0
  232. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.d.ts +2 -0
  233. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.d.ts.map +1 -0
  234. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js +2 -0
  235. package/dist/lexical-proxy/@lexical-react/LexicalTableOfContentsPlugin.js.map +1 -0
  236. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.d.ts +2 -0
  237. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.d.ts.map +1 -0
  238. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js +2 -0
  239. package/dist/lexical-proxy/@lexical-react/LexicalTablePlugin.js.map +1 -0
  240. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.d.ts +2 -0
  241. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.d.ts.map +1 -0
  242. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js +2 -0
  243. package/dist/lexical-proxy/@lexical-react/LexicalTreeView.js.map +1 -0
  244. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.d.ts +2 -0
  245. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.d.ts.map +1 -0
  246. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js +2 -0
  247. package/dist/lexical-proxy/@lexical-react/LexicalTypeaheadMenuPlugin.js.map +1 -0
  248. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.d.ts +2 -0
  249. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.d.ts.map +1 -0
  250. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js +2 -0
  251. package/dist/lexical-proxy/@lexical-react/useLexicalEditable.js.map +1 -0
  252. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.d.ts +2 -0
  253. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.d.ts.map +1 -0
  254. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js +2 -0
  255. package/dist/lexical-proxy/@lexical-react/useLexicalIsTextContentEmpty.js.map +1 -0
  256. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.d.ts +2 -0
  257. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.d.ts.map +1 -0
  258. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js +2 -0
  259. package/dist/lexical-proxy/@lexical-react/useLexicalNodeSelection.js.map +1 -0
  260. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.d.ts +2 -0
  261. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.d.ts.map +1 -0
  262. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js +2 -0
  263. package/dist/lexical-proxy/@lexical-react/useLexicalSubscription.js.map +1 -0
  264. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.d.ts +2 -0
  265. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.d.ts.map +1 -0
  266. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js +2 -0
  267. package/dist/lexical-proxy/@lexical-react/useLexicalTextEntity.js.map +1 -0
  268. package/dist/lexical-proxy/@lexical-rich-text.d.ts +2 -0
  269. package/dist/lexical-proxy/@lexical-rich-text.d.ts.map +1 -0
  270. package/dist/lexical-proxy/@lexical-rich-text.js +2 -0
  271. package/dist/lexical-proxy/@lexical-rich-text.js.map +1 -0
  272. package/dist/lexical-proxy/@lexical-selection.d.ts +2 -0
  273. package/dist/lexical-proxy/@lexical-selection.d.ts.map +1 -0
  274. package/dist/lexical-proxy/@lexical-selection.js +2 -0
  275. package/dist/lexical-proxy/@lexical-selection.js.map +1 -0
  276. package/dist/lexical-proxy/@lexical-utils.d.ts +2 -0
  277. package/dist/lexical-proxy/@lexical-utils.d.ts.map +1 -0
  278. package/dist/lexical-proxy/@lexical-utils.js +2 -0
  279. package/dist/lexical-proxy/@lexical-utils.js.map +1 -0
  280. package/dist/lexical-proxy/lexical.d.ts +2 -0
  281. package/dist/lexical-proxy/lexical.d.ts.map +1 -0
  282. package/dist/lexical-proxy/lexical.js +2 -0
  283. package/dist/lexical-proxy/lexical.js.map +1 -0
  284. package/dist/utilities/createClientFeature.d.ts +5 -0
  285. package/dist/utilities/createClientFeature.d.ts.map +1 -1
  286. package/dist/utilities/createClientFeature.js +6 -0
  287. package/dist/utilities/createClientFeature.js.map +1 -1
  288. package/dist/utilities/initLexicalFeatures.d.ts.map +1 -1
  289. package/dist/utilities/initLexicalFeatures.js +3 -2
  290. package/dist/utilities/initLexicalFeatures.js.map +1 -1
  291. package/dist/utilities/jsx/collectTopLevelJSXInLines.d.ts +52 -0
  292. package/dist/utilities/jsx/collectTopLevelJSXInLines.d.ts.map +1 -0
  293. package/dist/utilities/jsx/collectTopLevelJSXInLines.js +79 -0
  294. package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -0
  295. package/dist/utilities/jsx/extractPropsFromJSXPropsString.d.ts +12 -0
  296. package/dist/utilities/jsx/extractPropsFromJSXPropsString.d.ts.map +1 -0
  297. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js +125 -0
  298. package/dist/utilities/jsx/extractPropsFromJSXPropsString.js.map +1 -0
  299. package/dist/utilities/jsx/jsx.d.ts +26 -0
  300. package/dist/utilities/jsx/jsx.d.ts.map +1 -0
  301. package/dist/utilities/jsx/jsx.js +105 -0
  302. package/dist/utilities/jsx/jsx.js.map +1 -0
  303. package/dist/utilities/jsx/jsx.spec.d.ts +2 -0
  304. package/dist/utilities/jsx/jsx.spec.d.ts.map +1 -0
  305. package/dist/utilities/jsx/jsx.spec.js +142 -0
  306. package/dist/utilities/jsx/jsx.spec.js.map +1 -0
  307. package/dist/utilities/jsx/lexicalMarkdownCopy.d.ts +11 -0
  308. package/dist/utilities/jsx/lexicalMarkdownCopy.d.ts.map +1 -0
  309. package/dist/utilities/jsx/lexicalMarkdownCopy.js +61 -0
  310. package/dist/utilities/jsx/lexicalMarkdownCopy.js.map +1 -0
  311. package/package.json +284 -7
  312. package/dist/exports/client/Field-S5G27AVI.js +0 -2
  313. package/dist/exports/client/Field-S5G27AVI.js.map +0 -7
  314. package/dist/exports/client/chunk-OOBB5GCO.js +0 -2
@@ -0,0 +1,2 @@
1
+ var $=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u";function Nt(i){return i instanceof HTMLElement}var L=class{_x;_y;constructor(t,e){this._x=t,this._y=e}calcDeltaXTo({x:t}){return this.x-t}calcDeltaYTo({y:t}){return this.y-t}calcDistanceTo(t){return Math.sqrt(Math.pow(this.calcDeltaXTo(t),2)+Math.pow(this.calcDeltaYTo(t),2))}calcHorizontalDistanceTo(t){return Math.abs(this.calcDeltaXTo(t))}calcVerticalDistance(t){return Math.abs(this.calcDeltaYTo(t))}equals({x:t,y:e}){return this.x===t&&this.y===e}get x(){return this._x}get y(){return this._y}};function W(i){return i instanceof L}import{c as pt}from"react/compiler-runtime";import{jsx as _t}from"react/jsx-runtime";import{useLexicalComposerContext as xt}from"@lexical/react/LexicalComposerContext.js";import{mergeRegister as wt}from"@lexical/utils";import{$getSelection as B,$isRangeSelection as Y,$isTextNode as St,COMMAND_PRIORITY_LOW as Ot,createCommand as yt}from"lexical";import{useEffect as q,useState as Ct}from"react";import*as P from"react";import{c as J}from"react/compiler-runtime";import{useLexicalComposerContext as X}from"@lexical/react/LexicalComposerContext.js";import{mergeRegister as H}from"@lexical/utils";import{$getSelection as Z,$isRangeSelection as tt,COMMAND_PRIORITY_LOW as E,createCommand as et,KEY_ARROW_DOWN_COMMAND as nt,KEY_ARROW_UP_COMMAND as ot,KEY_ENTER_COMMAND as it,KEY_ESCAPE_COMMAND as rt,KEY_TAB_COMMAND as st}from"lexical";import{useCallback as A,useEffect as I,useLayoutEffect as lt,useMemo as ct,useRef as at,useState as ut}from"react";var ft="slash-menu-popup",k=i=>{let t=document.getElementById("slash-menu");if(!t)return;let e=t.getBoundingClientRect();e.top+e.height>window.innerHeight&&t.scrollIntoView({block:"center"}),e.top<0&&t.scrollIntoView({block:"center"}),i.scrollIntoView({block:"nearest"})};function dt(i,t,e){let n=e;for(let o=n;o<=t.length;o++)i.substring(i.length-o)===t.substring(0,o)&&(n=o);return n}function mt(i){let t=Z();if(!tt(t)||!t.isCollapsed())return null;let e=t.anchor;if(e.type!=="text")return null;let n=e.getNode();if(!n.isSimpleText())return null;let o=e.offset,s=n.getTextContent().slice(0,o),a=i.replaceableString.length,m=dt(s,i.matchingString,a),r=o-m;if(r<0)return null;let l;return r===0?[l]=n.splitText(o):[,l]=n.splitText(r,o),l}function ht(i,t){let e=getComputedStyle(i),n=e.position==="absolute",o=t?/(auto|scroll|hidden)/:/(auto|scroll)/;if(e.position==="fixed")return document.body;for(let s=i;s=s.parentElement;)if(e=getComputedStyle(s),!(n&&e.position==="static")&&o.test(e.overflow+e.overflowY+e.overflowX))return s;return document.body}function U(i,t){let e=i.getBoundingClientRect(),n=t.getBoundingClientRect();return e.top>n.top&&e.top<n.bottom}function gt(i,t,e,n){let o=J(7),[s]=X(),a,m;o[0]!==t||o[1]!==i||o[2]!==s||o[3]!==e||o[4]!==n?(a=()=>{if(t!=null&&i!=null){let r=s.getRootElement(),l=r!=null?ht(r,!1):document.body,g;g=!1;let c;c=U(t,l);let d=function(){g||(window.requestAnimationFrame(function(){e(),g=!1}),g=!0);let S=U(t,l);S!==c&&(c=S,n?.(S))},x=new ResizeObserver(e);return window.addEventListener("resize",e),document.addEventListener("scroll",d,{capture:!0,passive:!0}),x.observe(t),()=>{x.unobserve(t),window.removeEventListener("resize",e),document.removeEventListener("scroll",d,!0)}}},m=[t,s,n,e,i],o[0]=t,o[1]=i,o[2]=s,o[3]=e,o[4]=n,o[5]=a,o[6]=m):(a=o[5],m=o[6]),I(a,m)}var F=et("SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND");function K({anchorElementRef:i,close:t,editor:e,groups:n,menuRenderFn:o,onSelectItem:s,resolution:a,shouldSplitNodeWithQuery:m=!1}){let[r,l]=ut(null),g=a.match&&a.match.matchingString||"",c=A(u=>{let f=e.getRootElement();f!==null&&(f.setAttribute("aria-activedescendant",`${ft}__item-${u.key}`),l(u.key))},[e]),d=A(()=>{if(n!==null&&g!=null){let u=n.flatMap(f=>f.items);if(u.length){let f=u[0];c(f)}}},[n,c,g]);I(()=>{d()},[g,d]);let x=A(u=>{e.update(()=>{let f=a.match!=null&&m?mt(a.match):null;f&&f.remove()},{discrete:!0}),s(u,t,a.match?a.match.matchingString:"")},[e,m,a.match,s,t]);I(()=>()=>{let u=e.getRootElement();u!==null&&u.removeAttribute("aria-activedescendant")},[e]),lt(()=>{n===null?l(null):r===null&&d()},[n,r,c,d]),I(()=>H(e.registerCommand(F,({item:u})=>u.ref&&u.ref.current!=null?(k(u.ref.current),!0):!1,E)),[e,c]),I(()=>H(e.registerCommand(nt,u=>{let f=u;if(n!==null&&n.length&&r!==null){let p=n.flatMap(O=>O.items),h=p.findIndex(O=>O.key===r),w=h!==p.length-1?h+1:0,_=p[w];c(_),_.ref!=null&&_.ref.current&&e.dispatchCommand(F,{index:w,item:_}),f.preventDefault(),f.stopImmediatePropagation()}return!0},E),e.registerCommand(ot,u=>{let f=u;if(n!==null&&n.length&&r!==null){let p=n.flatMap(O=>O.items),h=p.findIndex(O=>O.key===r),w=h!==0?h-1:p.length-1,_=p[w];c(_),_.ref!=null&&_.ref.current&&k(_.ref.current),f.preventDefault(),f.stopImmediatePropagation()}return!0},E),e.registerCommand(rt,u=>{let f=u;return f.preventDefault(),f.stopImmediatePropagation(),t(),!0},E),e.registerCommand(st,u=>{let f=u;if(n===null||r===null)return!1;let h=n.flatMap(w=>w.items).find(w=>w.key===r);return h?(f.preventDefault(),f.stopImmediatePropagation(),x(h),!0):!1},E),e.registerCommand(it,u=>{if(n===null||r===null)return!1;let p=n.flatMap(h=>h.items).find(h=>h.key===r);return p?(u!==null&&(u.preventDefault(),u.stopImmediatePropagation()),x(p),!0):!1},E)),[x,t,e,n,r,c]);let S=ct(()=>({groups:n,selectedItemKey:r,selectItemAndCleanUp:x,setSelectedItemKey:l}),[x,r,n]);return o(i,S,a.match?a.match.matchingString:"")}function V(i,t,e,n){let[o]=X(),s=at($?document.createElement("div"):null),a=A(()=>{if(s.current===null||parent===void 0)return;let r=o.getRootElement(),l=s.current,g=32,c=l.firstChild;if(r!==null&&t!==null){let{height:d,width:x}=t.getRect(),{left:S,top:u}=t.getRect(),f=u;if(u-=i.getBoundingClientRect().top+window.scrollY,S-=i.getBoundingClientRect().left+window.scrollX,l.style.left=`${S+window.scrollX}px`,l.style.height=`${d}px`,l.style.width=`${x}px`,c!==null){let p=c.getBoundingClientRect(),h=p.height,w=p.width,_=r.getBoundingClientRect();S+w>_.right&&(l.style.left=`${_.right-w+window.scrollX}px`);let O=f+h+g>window.innerHeight,y=f<0;O&&!y?l.style.top=`${u+g-h+window.scrollY-(d+24)}px`:l.style.top=`${u+window.scrollY+g}px`}l.isConnected||(n!=null&&(l.className=n),l.setAttribute("aria-label","Slash menu"),l.setAttribute("id","slash-menu"),l.setAttribute("role","listbox"),l.style.display="block",l.style.position="absolute",i.append(l)),s.current=l,r.setAttribute("aria-controls","slash-menu")}},[o,t,n,i]);I(()=>{let r=o.getRootElement();if(t!==null)return a(),()=>{r!==null&&r.removeAttribute("aria-controls");let l=s.current;l!==null&&l.isConnected&&l.remove()}},[o,a,t]);let m=A(r=>{t!==null&&(r||e(null))},[t,e]);return gt(t,s.current,a,m),s}var zt=`\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'"~=<>_:;`;function Rt(i){let t=i.anchor;if(t.type!=="text")return null;let e=t.getNode();if(!e.isSimpleText())return null;let n=t.offset;return e.getTextContent().slice(0,n)}function z(i,t,e){let n=e.getSelection();if(n===null||!n.isCollapsed)return!1;let o=n.anchorNode,s=i,a=n.anchorOffset;if(o==null||a==null)return!1;try{t.setStart(o,s),t.setEnd(o,a>1?a:1)}catch{return!1}return!0}function Tt(i){let t;return i.getEditorState().read(()=>{let e=B();Y(e)&&(t=Rt(e))}),t}function Q(i,t){return t!==0?!1:i.getEditorState().read(()=>{let e=B();if(Y(e)){let s=e.anchor.getNode().getPreviousSibling();return St(s)&&s.isTextEntity()}return!1})}function j(i){P.startTransition?P.startTransition(i):i()}var Mt=yt("ENABLE_SLASH_MENU_COMMAND");function Qt(i){let t=pt(31),{anchorClassName:e,anchorElem:n,groups:o,menuRenderFn:s,onClose:a,onOpen:m,onQueryChange:r,onSelectItem:l,triggerFn:g}=i,[c]=xt(),[d,x]=Ct(null),S=V(n,d,x,e),u;t[0]!==a||t[1]!==d?(u=()=>{x(null),a!=null&&d!==null&&a()},t[0]=a,t[1]=d,t[2]=u):u=t[2];let f=u,p;t[3]!==m||t[4]!==d?(p=C=>{x(C),m!=null&&d===null&&m(C)},t[3]=m,t[4]=d,t[5]=p):p=t[5];let h=p,w,_;t[6]!==c||t[7]!==h?(w=()=>wt(c.registerCommand(Mt,C=>{let{node:v}=C;return c.getEditorState().read(()=>{let R={leadOffset:0,matchingString:"",replaceableString:""};if(!Q(c,R.leadOffset)&&v!==null){let T=c._window??window,N=T.document.createRange();z(R.leadOffset,N,T)!==null&&j(()=>h({getRect:()=>N.getBoundingClientRect(),match:R}));return}}),!0},Ot)),_=[c,h],t[6]=c,t[7]=h,t[8]=w,t[9]=_):(w=t[8],_=t[9]),q(w,_);let O;t[10]!==c||t[11]!==f||t[12]!==g||t[13]!==r||t[14]!==h?(O=()=>{let C=()=>{c.getEditorState().read(()=>{let R=c._window??window,T=R.document.createRange(),N=B(),D=Tt(c);if(!Y(N)||!N.isCollapsed()||D===void 0||T===null){f();return}let M=g({editor:c,query:D});if(r(M?M.matchingString:null),M!==null&&!Q(c,M.leadOffset)&&z(M.leadOffset,T,R)!==null){j(()=>h({getRect:()=>T.getBoundingClientRect(),match:M}));return}f()})},v=c.registerUpdateListener(C);return()=>{v()}},t[10]=c,t[11]=f,t[12]=g,t[13]=r,t[14]=h,t[15]=O):O=t[15];let y;t[16]!==c||t[17]!==g||t[18]!==r||t[19]!==d||t[20]!==f||t[21]!==h?(y=[c,g,r,d,f,h],t[16]=c,t[17]=g,t[18]=r,t[19]=d,t[20]=f,t[21]=h,t[22]=y):y=t[22],q(O,y);let b;return t[23]!==S||t[24]!==d||t[25]!==c||t[26]!==f||t[27]!==o||t[28]!==s||t[29]!==l?(b=S.current===null||d===null||c===null?null:_t(K,{anchorElementRef:S,close:f,editor:c,groups:o,menuRenderFn:s,onSelectItem:l,resolution:d,shouldSplitNodeWithQuery:!0}),t[23]=S,t[24]=d,t[25]=c,t[26]=f,t[27]=o,t[28]=s,t[29]=l,t[30]=b):b=t[30],b}var G=class i{_bottom;_left;_right;_top;constructor(t,e,n,o){let[s,a]=e<=o?[e,o]:[o,e],[m,r]=t<=n?[t,n]:[n,t];this._top=s,this._right=r,this._left=m,this._bottom=a}static fromDOM(t){let{height:e,left:n,top:o,width:s}=t.getBoundingClientRect();return i.fromLWTH(n,s,o,e)}static fromDOMRect(t){let{height:e,left:n,top:o,width:s}=t;return i.fromLWTH(n,s,o,e)}static fromLTRB(t,e,n,o){return new i(t,e,n,o)}static fromLWTH(t,e,n,o){return new i(t,n,t+e,n+o)}static fromPoints(t,e){let{x:n,y:o}=t,{x:s,y:a}=e;return i.fromLTRB(n,o,s,a)}contains(t){if(W(t)){let{x:a,y:m}=t,r=m<this._top,l=m>this._bottom,g=a<this._left,c=a>this._right;return{reason:{isOnBottomSide:l,isOnLeftSide:g,isOnRightSide:c,isOnTopSide:r},result:!r&&!l&&!g&&!c}}let{bottom:e,left:n,right:o,top:s}=t;return s>=this._top&&s<=this._bottom&&e>=this._top&&e<=this._bottom&&n>=this._left&&n<=this._right&&o>=this._left&&o<=this._right}distanceFromPoint(t){let e=this.contains(t);if(e.result)return{distance:0,isOnBottomSide:e.reason.isOnBottomSide,isOnLeftSide:e.reason.isOnLeftSide,isOnRightSide:e.reason.isOnRightSide,isOnTopSide:e.reason.isOnTopSide};let n=0,o=0;return t.x<this._left?n=this._left-t.x:t.x>this._right&&(n=t.x-this._right),t.y<this._top?o=this._top-t.y:t.y>this._bottom&&(o=t.y-this._bottom),{distance:Math.sqrt(n*n+o*o),isOnBottomSide:t.y>this._bottom,isOnLeftSide:t.x<this._left,isOnRightSide:t.x>this._right,isOnTopSide:t.y<this._top}}equals({bottom:t,left:e,right:n,top:o}){return o===this._top&&t===this._bottom&&e===this._left&&n===this._right}generateNewRect({bottom:t=this.bottom,left:e=this.left,right:n=this.right,top:o=this.top}){return new i(e,o,n,t)}intersectsWith(t){let{height:e,left:n,top:o,width:s}=t,{height:a,left:m,top:r,width:l}=this,g=n+s>=m+l?n+s:m+l,c=o+e>=r+a?o+e:r+a,d=n<=m?n:m,x=o<=r?o:r;return g-d<=s+l&&c-x<=e+a}get bottom(){return this._bottom}get height(){return Math.abs(this._bottom-this._top)}get left(){return this._left}get right(){return this._right}get top(){return this._top}get width(){return Math.abs(this._left-this._right)}};function Zt({editorConfig:i}){return Et({nodes:i.features.nodes})}function Et({nodes:i}){return i.map(t=>"node"in t?t.node:t)}export{$ as a,Nt as b,L as c,W as d,zt as e,Mt as f,Qt as g,G as h,Zt as i};
2
+ //# sourceMappingURL=chunk-QPPOQTHD.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/lexical/utils/canUseDOM.ts", "../../../src/lexical/utils/guard.ts", "../../../src/lexical/utils/point.ts", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx", "../../../src/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx", "../../../src/lexical/utils/rect.ts", "../../../src/lexical/nodes/index.ts"],
4
- "sourcesContent": ["'use client'\nexport const CAN_USE_DOM: boolean =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n", "'use client'\nexport function isHTMLElement(x: unknown): x is HTMLElement {\n return x instanceof HTMLElement\n}\n", "'use client'\nexport class Point {\n private readonly _x: number\n\n private readonly _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n public calcDeltaXTo({ x }: Point): number {\n return this.x - x\n }\n\n public calcDeltaYTo({ y }: Point): number {\n return this.y - y\n }\n\n public calcDistanceTo(point: Point): number {\n return Math.sqrt(Math.pow(this.calcDeltaXTo(point), 2) + Math.pow(this.calcDeltaYTo(point), 2))\n }\n\n public calcHorizontalDistanceTo(point: Point): number {\n return Math.abs(this.calcDeltaXTo(point))\n }\n\n public calcVerticalDistance(point: Point): number {\n return Math.abs(this.calcDeltaYTo(point))\n }\n\n public equals({ x, y }: Point): boolean {\n return this.x === x && this.y === y\n }\n\n get x(): number {\n return this._x\n }\n\n get y(): number {\n return this._y\n }\n}\n\nexport function isPoint(x: unknown): x is Point {\n return x instanceof Point\n}\n", "'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = editorWindow.getSelection()\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): string | undefined {\n let text\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectItem: (item: SlashMenuItem, closeMenu: () => void, matchingString: string) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectItem,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === undefined ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return anchorElementRef.current === null || resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n onSelectItem={onSelectItem}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n", "'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nimport { CAN_USE_DOM } from '../../../utils/canUseDOM.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectedItemKey: null | string\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | null | ReactPortal\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): null | TextNode {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement | null>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (item: SlashMenuItem, closeMenu: () => void, matchingString: string) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(\n () => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n if (textNodeContainingQuery) {\n textNodeContainingQuery.remove()\n }\n },\n { discrete: true },\n )\n onSelectItem(selectedItem, close, resolution.match ? resolution.match.matchingString : '')\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectedItemKey,\n selectItemAndCleanUp,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement | null> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement | null>(\n CAN_USE_DOM ? document.createElement('div') : null,\n )\n const positionMenu = useCallback(() => {\n if (anchorElementRef.current === null || parent === undefined) {\n return\n }\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n", "'use client'\nimport { isPoint, type Point } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n", "import type { Klass, LexicalNode, LexicalNodeReplacement } from 'lexical'\n\nimport type { SanitizedClientEditorConfig, SanitizedServerEditorConfig } from '../config/types.js'\n\nexport function getEnabledNodes({\n editorConfig,\n}: {\n editorConfig: SanitizedClientEditorConfig | SanitizedServerEditorConfig\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return editorConfig.features.nodes.map((node) => {\n if ('node' in node) {\n return node.node\n }\n return node\n })\n}\n"],
5
- "mappings": "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",
6
- "names": ["CAN_USE_DOM", "window", "document", "createElement", "isHTMLElement", "x", "HTMLElement", "Point", "_x", "_y", "constructor", "x", "y", "calcDeltaXTo", "calcDeltaYTo", "calcDistanceTo", "point", "Math", "sqrt", "pow", "calcHorizontalDistanceTo", "abs", "calcVerticalDistance", "equals", "isPoint", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "createCommand", "useEffect", "useState", "React", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "createCommand", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "useCallback", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "baseClass", "scrollIntoViewIfNeeded", "target", "typeaheadContainerNode", "document", "getElementById", "typeaheadRect", "getBoundingClientRect", "top", "height", "window", "innerHeight", "scrollIntoView", "block", "getFullMatchOffset", "documentText", "entryText", "offset", "triggerOffset", "i", "length", "substring", "$splitNodeContainingQuery", "match", "selection", "$getSelection", "$isRangeSelection", "isCollapsed", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "selectionOffset", "textContent", "getTextContent", "slice", "characterOffset", "replaceableString", "queryOffset", "matchingString", "startOffset", "newNode", "splitText", "getScrollParent", "element", "includeHidden", "style", "getComputedStyle", "excludeStaticParent", "position", "overflowRegex", "body", "parent1", "parentElement", "test", "overflow", "overflowY", "overflowX", "isTriggerVisibleInNearestScrollContainer", "targetElement", "containerElement", "tRect", "cRect", "bottom", "useDynamicPositioning", "resolution", "onReposition", "onVisibilityChange", "$", "_c", "editor", "useLexicalComposerContext", "t0", "t1", "rootElement", "getRootElement", "rootScrollParent", "ticking", "previousIsInView", "handleScroll", "requestAnimationFrame", "isInView", "resizeObserver", "ResizeObserver", "addEventListener", "capture", "passive", "observe", "unobserve", "removeEventListener", "useEffect", "SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND", "createCommand", "LexicalMenu", "anchorElementRef", "close", "groups", "menuRenderFn", "onSelectItem", "shouldSplitNodeWithQuery", "selectedItemKey", "setSelectedItemKey", "useState", "updateSelectedItem", "useCallback", "item", "rootElem", "setAttribute", "key", "setSelectedItemKeyToFirstMatchingItem", "allItems", "flatMap", "group", "items", "firstMatchingItem", "selectItemAndCleanUp", "selectedItem", "update", "textNodeContainingQuery", "remove", "discrete", "removeAttribute", "useLayoutEffect", "mergeRegister", "registerCommand", "ref", "current", "COMMAND_PRIORITY_LOW", "KEY_ARROW_DOWN_COMMAND", "payload", "event", "selectedIndex", "findIndex", "newSelectedIndex", "newSelectedItem", "dispatchCommand", "index", "preventDefault", "stopImmediatePropagation", "KEY_ARROW_UP_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "find", "KEY_ENTER_COMMAND", "listItemProps", "useMemo", "useMenuAnchorRef", "anchorElem", "setResolution", "className", "useRef", "CAN_USE_DOM", "createElement", "positionMenu", "parent", "undefined", "containerDiv", "VERTICAL_OFFSET", "menuEle", "firstChild", "width", "getRect", "left", "rawTop", "scrollY", "scrollX", "menuRect", "menuHeight", "menuWidth", "rootElementRect", "right", "wouldGoOffBottomOfScreen", "wouldGoOffTopOfScreen", "margin", "isConnected", "display", "append", "PUNCTUATION", "getTextUpToAnchor", "selection", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "anchorOffset", "offset", "getTextContent", "slice", "tryToPositionRange", "leadOffset", "range", "editorWindow", "domSelection", "getSelection", "isCollapsed", "startOffset", "endOffset", "setStart", "setEnd", "getQueryTextForSearch", "editor", "text", "getEditorState", "read", "$getSelection", "$isRangeSelection", "isSelectionOnEntityBoundary", "prevSibling", "getPreviousSibling", "$isTextNode", "isTextEntity", "startTransition", "callback", "ENABLE_SLASH_MENU_COMMAND", "createCommand", "LexicalTypeaheadMenuPlugin", "t0", "$", "_c", "anchorClassName", "anchorElem", "groups", "menuRenderFn", "onClose", "onOpen", "onQueryChange", "onSelectItem", "triggerFn", "useLexicalComposerContext", "resolution", "setResolution", "useState", "anchorElementRef", "useMenuAnchorRef", "t1", "closeTypeahead", "t2", "res", "openTypeahead", "t3", "t4", "mergeRegister", "registerCommand", "t5", "node", "match", "matchingString", "replaceableString", "_window", "window", "document", "createRange", "getRect", "getBoundingClientRect", "COMMAND_PRIORITY_LOW", "useEffect", "updateListener", "editorWindow_0", "range_0", "undefined", "match_0", "query", "removeUpdateListener", "registerUpdateListener", "t6", "t7", "current", "_jsx", "LexicalMenu", "close", "shouldSplitNodeWithQuery", "Rect", "_bottom", "_left", "_right", "_top", "constructor", "left", "top", "right", "bottom", "physicTop", "physicBottom", "physicLeft", "physicRight", "fromDOM", "dom", "height", "width", "getBoundingClientRect", "fromLWTH", "fromDOMRect", "domRect", "fromLTRB", "fromPoints", "startPoint", "endPoint", "x", "y", "contains", "target", "isPoint", "isOnTopSide", "isOnBottomSide", "isOnLeftSide", "isOnRightSide", "reason", "result", "distanceFromPoint", "point", "containsResult", "distance", "dx", "dy", "Math", "sqrt", "equals", "generateNewRect", "intersectsWith", "rect", "h1", "x1", "y1", "w1", "h2", "x2", "y2", "w2", "maxX", "maxY", "minX", "minY", "abs", "getEnabledNodes", "editorConfig", "features", "nodes", "map", "node"]
4
+ "sourcesContent": ["'use client'\nexport const CAN_USE_DOM: boolean =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n", "'use client'\nexport function isHTMLElement(x: unknown): x is HTMLElement {\n return x instanceof HTMLElement\n}\n", "'use client'\nexport class Point {\n private readonly _x: number\n\n private readonly _y: number\n\n constructor(x: number, y: number) {\n this._x = x\n this._y = y\n }\n\n public calcDeltaXTo({ x }: Point): number {\n return this.x - x\n }\n\n public calcDeltaYTo({ y }: Point): number {\n return this.y - y\n }\n\n public calcDistanceTo(point: Point): number {\n return Math.sqrt(Math.pow(this.calcDeltaXTo(point), 2) + Math.pow(this.calcDeltaYTo(point), 2))\n }\n\n public calcHorizontalDistanceTo(point: Point): number {\n return Math.abs(this.calcDeltaXTo(point))\n }\n\n public calcVerticalDistance(point: Point): number {\n return Math.abs(this.calcDeltaYTo(point))\n }\n\n public equals({ x, y }: Point): boolean {\n return this.x === x && this.y === y\n }\n\n get x(): number {\n return this._x\n }\n\n get y(): number {\n return this._y\n }\n}\n\nexport function isPoint(x: unknown): x is Point {\n return x instanceof Point\n}\n", "'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n createCommand,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = editorWindow.getSelection()\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): string | undefined {\n let text\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectItem: (item: SlashMenuItem, closeMenu: () => void, matchingString: string) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectItem,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (!isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === undefined ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return anchorElementRef.current === null || resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n onSelectItem={onSelectItem}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n", "'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, ReactPortal, RefObject } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n createCommand,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nimport { CAN_USE_DOM } from '../../../utils/canUseDOM.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: RefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectedItemKey: null | string\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | null | ReactPortal\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) {\n return\n }\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): null | TextNode {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n const characterOffset = match.replaceableString.length\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: RefObject<HTMLElement | null>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (item: SlashMenuItem, closeMenu: () => void, matchingString: string) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(\n () => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n if (textNodeContainingQuery) {\n textNodeContainingQuery.remove()\n }\n },\n { discrete: true },\n )\n onSelectItem(selectedItem, close, resolution.match ? resolution.match.matchingString : '')\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectedItemKey,\n selectItemAndCleanUp,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): RefObject<HTMLElement | null> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement | null>(\n CAN_USE_DOM ? document.createElement('div') : null,\n )\n const positionMenu = useCallback(() => {\n if (anchorElementRef.current === null || parent === undefined) {\n return\n }\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n", "'use client'\nimport { isPoint, type Point } from './point.js'\n\ninterface ContainsPointReturn {\n reason: {\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n }\n result: boolean\n}\n\nexport class Rect {\n private readonly _bottom: number\n\n private readonly _left: number\n\n private readonly _right: number\n\n private readonly _top: number\n\n constructor(left: number, top: number, right: number, bottom: number) {\n const [physicTop, physicBottom] = top <= bottom ? [top, bottom] : [bottom, top]\n\n const [physicLeft, physicRight] = left <= right ? [left, right] : [right, left]\n\n this._top = physicTop\n this._right = physicRight\n this._left = physicLeft\n this._bottom = physicBottom\n }\n\n static fromDOM(dom: HTMLElement): Rect {\n const { height, left, top, width } = dom.getBoundingClientRect()\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromDOMRect(domRect: DOMRect): Rect {\n const { height, left, top, width } = domRect\n return Rect.fromLWTH(left, width, top, height)\n }\n\n static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n static fromLWTH(left: number, width: number, top: number, height: number): Rect {\n return new Rect(left, top, left + width, top + height)\n }\n\n static fromPoints(startPoint: Point, endPoint: Point): Rect {\n const { x: left, y: top } = startPoint\n const { x: right, y: bottom } = endPoint\n return Rect.fromLTRB(left, top, right, bottom)\n }\n\n public contains({ x, y }: Point): ContainsPointReturn\n\n public contains({ bottom, left, right, top }: Rect): boolean\n\n public contains(target: Point | Rect): boolean | ContainsPointReturn {\n if (isPoint(target)) {\n const { x, y } = target\n\n const isOnTopSide = y < this._top\n const isOnBottomSide = y > this._bottom\n const isOnLeftSide = x < this._left\n const isOnRightSide = x > this._right\n\n const result = !isOnTopSide && !isOnBottomSide && !isOnLeftSide && !isOnRightSide\n\n return {\n reason: {\n isOnBottomSide,\n isOnLeftSide,\n isOnRightSide,\n isOnTopSide,\n },\n result,\n }\n }\n const { bottom, left, right, top } = target\n\n return (\n top >= this._top &&\n top <= this._bottom &&\n bottom >= this._top &&\n bottom <= this._bottom &&\n left >= this._left &&\n left <= this._right &&\n right >= this._left &&\n right <= this._right\n )\n }\n\n public distanceFromPoint(point: Point): {\n distance: number\n isOnBottomSide: boolean\n isOnLeftSide: boolean\n isOnRightSide: boolean\n isOnTopSide: boolean\n } {\n const containsResult = this.contains(point)\n if (containsResult.result) {\n return {\n distance: 0,\n isOnBottomSide: containsResult.reason.isOnBottomSide,\n isOnLeftSide: containsResult.reason.isOnLeftSide,\n isOnRightSide: containsResult.reason.isOnRightSide,\n isOnTopSide: containsResult.reason.isOnTopSide,\n }\n }\n\n let dx = 0 // Horizontal distance to the closest edge\n let dy = 0 // Vertical distance to the closest edge\n\n // If the point is to the left of the rectangle\n if (point.x < this._left) {\n dx = this._left - point.x\n }\n // If the point is to the right of the rectangle\n else if (point.x > this._right) {\n dx = point.x - this._right\n }\n\n // If the point is above the rectangle\n if (point.y < this._top) {\n dy = this._top - point.y\n }\n // If the point is below the rectangle\n else if (point.y > this._bottom) {\n dy = point.y - this._bottom\n }\n\n // Use the Pythagorean theorem to calculate the distance\n return {\n distance: Math.sqrt(dx * dx + dy * dy),\n isOnBottomSide: point.y > this._bottom,\n isOnLeftSide: point.x < this._left,\n isOnRightSide: point.x > this._right,\n isOnTopSide: point.y < this._top,\n }\n }\n\n public equals({ bottom, left, right, top }: Rect): boolean {\n return (\n top === this._top && bottom === this._bottom && left === this._left && right === this._right\n )\n }\n\n public generateNewRect({\n bottom = this.bottom,\n left = this.left,\n right = this.right,\n top = this.top,\n }): Rect {\n return new Rect(left, top, right, bottom)\n }\n\n public intersectsWith(rect: Rect): boolean {\n const { height: h1, left: x1, top: y1, width: w1 } = rect\n const { height: h2, left: x2, top: y2, width: w2 } = this\n const maxX = x1 + w1 >= x2 + w2 ? x1 + w1 : x2 + w2\n const maxY = y1 + h1 >= y2 + h2 ? y1 + h1 : y2 + h2\n const minX = x1 <= x2 ? x1 : x2\n const minY = y1 <= y2 ? y1 : y2\n return maxX - minX <= w1 + w2 && maxY - minY <= h1 + h2\n }\n\n get bottom(): number {\n return this._bottom\n }\n\n get height(): number {\n return Math.abs(this._bottom - this._top)\n }\n\n get left(): number {\n return this._left\n }\n\n get right(): number {\n return this._right\n }\n\n get top(): number {\n return this._top\n }\n\n get width(): number {\n return Math.abs(this._left - this._right)\n }\n}\n", "import type { Klass, LexicalNode, LexicalNodeReplacement } from 'lexical'\n\nimport type { NodeWithHooks } from '../../features/typesServer.js'\nimport type { SanitizedClientEditorConfig, SanitizedServerEditorConfig } from '../config/types.js'\n\nexport function getEnabledNodes({\n editorConfig,\n}: {\n editorConfig: SanitizedClientEditorConfig | SanitizedServerEditorConfig\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return getEnabledNodesFromServerNodes({\n nodes: editorConfig.features.nodes,\n })\n}\n\nexport function getEnabledNodesFromServerNodes({\n nodes,\n}: {\n nodes: Array<Klass<LexicalNode> | LexicalNodeReplacement> | Array<NodeWithHooks>\n}): Array<Klass<LexicalNode> | LexicalNodeReplacement> {\n return nodes.map((node) => {\n if ('node' in node) {\n return node.node\n }\n return node\n })\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["CAN_USE_DOM", "window", "document", "createElement", "isHTMLElement", "x", "HTMLElement", "Point", "_x", "_y", "constructor", "x", "y", "calcDeltaXTo", "calcDeltaYTo", "calcDistanceTo", "point", "Math", "sqrt", "pow", "calcHorizontalDistanceTo", "abs", "calcVerticalDistance", "equals", "isPoint", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "createCommand", "useEffect", "useState", "React", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "createCommand", "KEY_ARROW_DOWN_COMMAND", "KEY_ARROW_UP_COMMAND", "KEY_ENTER_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "useCallback", "useEffect", "useLayoutEffect", "useMemo", "useRef", "useState", "baseClass", "scrollIntoViewIfNeeded", "target", "typeaheadContainerNode", "document", "getElementById", "typeaheadRect", "getBoundingClientRect", "top", "height", "window", "innerHeight", "scrollIntoView", "block", "getFullMatchOffset", "documentText", "entryText", "offset", "triggerOffset", "i", "length", "substring", "$splitNodeContainingQuery", "match", "selection", "$getSelection", "$isRangeSelection", "isCollapsed", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "selectionOffset", "textContent", "getTextContent", "slice", "characterOffset", "replaceableString", "queryOffset", "matchingString", "startOffset", "newNode", "splitText", "getScrollParent", "element", "includeHidden", "style", "getComputedStyle", "excludeStaticParent", "position", "overflowRegex", "body", "parent1", "parentElement", "test", "overflow", "overflowY", "overflowX", "isTriggerVisibleInNearestScrollContainer", "targetElement", "containerElement", "tRect", "cRect", "bottom", "useDynamicPositioning", "resolution", "onReposition", "onVisibilityChange", "$", "_c", "editor", "useLexicalComposerContext", "t0", "t1", "rootElement", "getRootElement", "rootScrollParent", "ticking", "previousIsInView", "handleScroll", "requestAnimationFrame", "isInView", "resizeObserver", "ResizeObserver", "addEventListener", "capture", "passive", "observe", "unobserve", "removeEventListener", "useEffect", "SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND", "createCommand", "LexicalMenu", "anchorElementRef", "close", "groups", "menuRenderFn", "onSelectItem", "shouldSplitNodeWithQuery", "selectedItemKey", "setSelectedItemKey", "useState", "updateSelectedItem", "useCallback", "item", "rootElem", "setAttribute", "key", "setSelectedItemKeyToFirstMatchingItem", "allItems", "flatMap", "group", "items", "firstMatchingItem", "selectItemAndCleanUp", "selectedItem", "update", "textNodeContainingQuery", "remove", "discrete", "removeAttribute", "useLayoutEffect", "mergeRegister", "registerCommand", "ref", "current", "COMMAND_PRIORITY_LOW", "KEY_ARROW_DOWN_COMMAND", "payload", "event", "selectedIndex", "findIndex", "newSelectedIndex", "newSelectedItem", "dispatchCommand", "index", "preventDefault", "stopImmediatePropagation", "KEY_ARROW_UP_COMMAND", "KEY_ESCAPE_COMMAND", "KEY_TAB_COMMAND", "find", "KEY_ENTER_COMMAND", "listItemProps", "useMemo", "useMenuAnchorRef", "anchorElem", "setResolution", "className", "useRef", "CAN_USE_DOM", "createElement", "positionMenu", "parent", "undefined", "containerDiv", "VERTICAL_OFFSET", "menuEle", "firstChild", "width", "getRect", "left", "rawTop", "scrollY", "scrollX", "menuRect", "menuHeight", "menuWidth", "rootElementRect", "right", "wouldGoOffBottomOfScreen", "wouldGoOffTopOfScreen", "margin", "isConnected", "display", "append", "PUNCTUATION", "getTextUpToAnchor", "selection", "anchor", "type", "anchorNode", "getNode", "isSimpleText", "anchorOffset", "offset", "getTextContent", "slice", "tryToPositionRange", "leadOffset", "range", "editorWindow", "domSelection", "getSelection", "isCollapsed", "startOffset", "endOffset", "setStart", "setEnd", "getQueryTextForSearch", "editor", "text", "getEditorState", "read", "$getSelection", "$isRangeSelection", "isSelectionOnEntityBoundary", "prevSibling", "getPreviousSibling", "$isTextNode", "isTextEntity", "startTransition", "callback", "ENABLE_SLASH_MENU_COMMAND", "createCommand", "LexicalTypeaheadMenuPlugin", "t0", "$", "_c", "anchorClassName", "anchorElem", "groups", "menuRenderFn", "onClose", "onOpen", "onQueryChange", "onSelectItem", "triggerFn", "useLexicalComposerContext", "resolution", "setResolution", "useState", "anchorElementRef", "useMenuAnchorRef", "t1", "closeTypeahead", "t2", "res", "openTypeahead", "t3", "t4", "mergeRegister", "registerCommand", "t5", "node", "match", "matchingString", "replaceableString", "_window", "window", "document", "createRange", "getRect", "getBoundingClientRect", "COMMAND_PRIORITY_LOW", "useEffect", "updateListener", "editorWindow_0", "range_0", "undefined", "match_0", "query", "removeUpdateListener", "registerUpdateListener", "t6", "t7", "current", "_jsx", "LexicalMenu", "close", "shouldSplitNodeWithQuery", "Rect", "_bottom", "_left", "_right", "_top", "constructor", "left", "top", "right", "bottom", "physicTop", "physicBottom", "physicLeft", "physicRight", "fromDOM", "dom", "height", "width", "getBoundingClientRect", "fromLWTH", "fromDOMRect", "domRect", "fromLTRB", "fromPoints", "startPoint", "endPoint", "x", "y", "contains", "target", "isPoint", "isOnTopSide", "isOnBottomSide", "isOnLeftSide", "isOnRightSide", "reason", "result", "distanceFromPoint", "point", "containsResult", "distance", "dx", "dy", "Math", "sqrt", "equals", "generateNewRect", "intersectsWith", "rect", "h1", "x1", "y1", "w1", "h2", "x2", "y2", "w2", "maxX", "maxY", "minX", "minY", "abs", "getEnabledNodes", "editorConfig", "getEnabledNodesFromServerNodes", "nodes", "features", "map", "node"]
7
7
  }