@scottjgilbert/lexical-blog-editor 0.1.4 → 1.0.0-beta.2

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 (313) hide show
  1. package/README.md +73 -67
  2. package/build/Editor.d.ts +8 -3
  3. package/build/Editor.d.ts.map +1 -1
  4. package/build/Editor.js +13 -8
  5. package/build/EditorExport.d.ts +4 -0
  6. package/build/EditorExport.d.ts.map +1 -0
  7. package/build/EditorExport.js +13 -0
  8. package/build/appSettings.d.ts +1 -1
  9. package/build/appSettings.js +1 -1
  10. package/build/buildHTMLConfig.d.ts +1 -1
  11. package/build/buildHTMLConfig.d.ts.map +1 -1
  12. package/build/buildHTMLConfig.js +35 -11
  13. package/build/context/FlashMessageContext.d.ts +2 -2
  14. package/build/context/FlashMessageContext.d.ts.map +1 -1
  15. package/build/context/FlashMessageContext.js +4 -3
  16. package/build/context/SharedHistoryContext.d.ts +3 -3
  17. package/build/context/SharedHistoryContext.d.ts.map +1 -1
  18. package/build/context/SharedHistoryContext.js +3 -2
  19. package/build/context/ToolbarContext.d.ts +1 -0
  20. package/build/context/ToolbarContext.d.ts.map +1 -1
  21. package/build/context/ToolbarContext.js +2 -0
  22. package/build/hooks/useModal.d.ts.map +1 -1
  23. package/build/hooks/useModal.js +1 -0
  24. package/build/hooks/useReport.d.ts +0 -7
  25. package/build/hooks/useReport.d.ts.map +1 -1
  26. package/build/hooks/useReport.js +1 -0
  27. package/build/index.css +283 -246
  28. package/build/index.d.ts +3 -3
  29. package/build/index.d.ts.map +1 -1
  30. package/build/index.js +2 -2
  31. package/build/nodes/CodeNode/CodeHighlightNode.d.ts +35 -0
  32. package/build/nodes/CodeNode/CodeHighlightNode.d.ts.map +1 -0
  33. package/build/nodes/CodeNode/CodeHighlightNode.js +88 -0
  34. package/build/nodes/CodeNode/CodeHighlighterShiki.d.ts +22 -0
  35. package/build/nodes/CodeNode/CodeHighlighterShiki.d.ts.map +1 -0
  36. package/build/nodes/CodeNode/CodeHighlighterShiki.js +644 -0
  37. package/build/nodes/CodeNode/CodeNode.d.ts +48 -0
  38. package/build/nodes/CodeNode/CodeNode.d.ts.map +1 -0
  39. package/build/nodes/CodeNode/CodeNode.js +367 -0
  40. package/build/nodes/CodeNode/FacadeShiki.d.ts +18 -0
  41. package/build/nodes/CodeNode/FacadeShiki.d.ts.map +1 -0
  42. package/build/nodes/CodeNode/FacadeShiki.js +159 -0
  43. package/build/nodes/CodeNode/FlatStructureUtils.d.ts +21 -0
  44. package/build/nodes/CodeNode/FlatStructureUtils.d.ts.map +1 -0
  45. package/build/nodes/CodeNode/FlatStructureUtils.js +85 -0
  46. package/build/nodes/CodeNode/invariant.d.ts +2 -0
  47. package/build/nodes/CodeNode/invariant.d.ts.map +1 -0
  48. package/build/nodes/CodeNode/invariant.js +6 -0
  49. package/build/nodes/DateTimeNode/DateTimeComponent.d.ts.map +1 -1
  50. package/build/nodes/DateTimeNode/DateTimeComponent.js +1 -0
  51. package/build/nodes/DateTimeNode/DateTimeNode.css +21 -0
  52. package/build/nodes/FigmaNode/FigmaNode.d.ts.map +1 -0
  53. package/build/nodes/FigmaNode/ServerFigmaNode.d.ts +21 -0
  54. package/build/nodes/FigmaNode/ServerFigmaNode.d.ts.map +1 -0
  55. package/build/nodes/FigmaNode/ServerFigmaNode.js +48 -0
  56. package/build/nodes/ImageComponent.d.ts.map +1 -1
  57. package/build/nodes/ImageComponent.js +1 -2
  58. package/build/nodes/ImageNode.d.ts +7 -7
  59. package/build/nodes/ImageNode.d.ts.map +1 -1
  60. package/build/nodes/ImageNode.js +30 -30
  61. package/build/nodes/LayoutContainerNode.d.ts +2 -2
  62. package/build/nodes/LayoutContainerNode.d.ts.map +1 -1
  63. package/build/nodes/LayoutContainerNode.js +10 -10
  64. package/build/nodes/PlaygroundNodes/PlaygroundNodes.d.ts.map +1 -0
  65. package/build/nodes/{PlaygroundNodes.js → PlaygroundNodes/PlaygroundNodes.js} +19 -21
  66. package/build/nodes/PlaygroundNodes/ServerPlaygroundNodes.d.ts +11 -0
  67. package/build/nodes/PlaygroundNodes/ServerPlaygroundNodes.d.ts.map +1 -0
  68. package/build/nodes/PlaygroundNodes/ServerPlaygroundNodes.js +65 -0
  69. package/build/nodes/TweetNode/ServerTweetNode.d.ts +20 -0
  70. package/build/nodes/TweetNode/ServerTweetNode.d.ts.map +1 -0
  71. package/build/nodes/TweetNode/ServerTweetNode.js +59 -0
  72. package/build/nodes/TweetNode/TweetNode.d.ts.map +1 -0
  73. package/build/nodes/YouTubeNode/ServerYouTubeNode.d.ts +21 -0
  74. package/build/nodes/YouTubeNode/ServerYouTubeNode.d.ts.map +1 -0
  75. package/build/nodes/YouTubeNode/ServerYouTubeNode.js +67 -0
  76. package/build/nodes/YouTubeNode/YouTubeNode.d.ts.map +1 -0
  77. package/build/plugins/ActionsPlugin/index.d.ts +0 -7
  78. package/build/plugins/ActionsPlugin/index.d.ts.map +1 -1
  79. package/build/plugins/ActionsPlugin/index.js +2 -1
  80. package/build/plugins/AutoEmbedPlugin/index.d.ts +2 -9
  81. package/build/plugins/AutoEmbedPlugin/index.d.ts.map +1 -1
  82. package/build/plugins/AutoEmbedPlugin/index.js +30 -29
  83. package/build/plugins/AutoLinkPlugin/index.d.ts +1 -1
  84. package/build/plugins/AutoLinkPlugin/index.d.ts.map +1 -1
  85. package/build/plugins/AutoLinkPlugin/index.js +3 -2
  86. package/build/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +1 -1
  87. package/build/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts.map +1 -1
  88. package/build/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +7 -6
  89. package/build/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +2 -2
  90. package/build/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts.map +1 -1
  91. package/build/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +25 -24
  92. package/build/plugins/CodeActionMenuPlugin/index.d.ts +2 -9
  93. package/build/plugins/CodeActionMenuPlugin/index.d.ts.map +1 -1
  94. package/build/plugins/CodeActionMenuPlugin/index.js +22 -20
  95. package/build/plugins/CodeActionMenuPlugin/utils.d.ts.map +1 -1
  96. package/build/plugins/CodeActionMenuPlugin/utils.js +3 -2
  97. package/build/plugins/CodeHighlightPrismPlugin/index.d.ts +1 -1
  98. package/build/plugins/CodeHighlightPrismPlugin/index.d.ts.map +1 -1
  99. package/build/plugins/CodeHighlightPrismPlugin/index.js +4 -10
  100. package/build/plugins/CodeHighlightShikiPlugin/index.d.ts +1 -1
  101. package/build/plugins/CodeHighlightShikiPlugin/index.d.ts.map +1 -1
  102. package/build/plugins/CodeHighlightShikiPlugin/index.js +3 -3
  103. package/build/plugins/CollapsiblePlugin/Collapsible.css +17 -1
  104. package/build/plugins/CollapsiblePlugin/index.d.ts +1 -1
  105. package/build/plugins/CollapsiblePlugin/index.d.ts.map +1 -1
  106. package/build/plugins/CollapsiblePlugin/index.js +11 -10
  107. package/build/plugins/ComponentPickerPlugin/index.d.ts.map +1 -1
  108. package/build/plugins/ComponentPickerPlugin/index.js +3 -8
  109. package/build/plugins/ContextMenuPlugin/index.d.ts +1 -1
  110. package/build/plugins/ContextMenuPlugin/index.d.ts.map +1 -1
  111. package/build/plugins/ContextMenuPlugin/index.js +15 -14
  112. package/build/plugins/DateTimePlugin/index.d.ts +2 -2
  113. package/build/plugins/DateTimePlugin/index.d.ts.map +1 -1
  114. package/build/plugins/DateTimePlugin/index.js +8 -14
  115. package/build/plugins/DragDropPastePlugin/index.d.ts +0 -7
  116. package/build/plugins/DragDropPastePlugin/index.d.ts.map +1 -1
  117. package/build/plugins/DragDropPastePlugin/index.js +12 -11
  118. package/build/plugins/DraggableBlockPlugin/index.css +6 -0
  119. package/build/plugins/DraggableBlockPlugin/index.d.ts +2 -2
  120. package/build/plugins/DraggableBlockPlugin/index.d.ts.map +1 -1
  121. package/build/plugins/DraggableBlockPlugin/index.js +23 -22
  122. package/build/plugins/EmojiPickerPlugin/index.d.ts +0 -7
  123. package/build/plugins/EmojiPickerPlugin/index.d.ts.map +1 -1
  124. package/build/plugins/EmojiPickerPlugin/index.js +1 -0
  125. package/build/plugins/EmojisPlugin/index.d.ts +1 -8
  126. package/build/plugins/EmojisPlugin/index.d.ts.map +1 -1
  127. package/build/plugins/EmojisPlugin/index.js +10 -16
  128. package/build/plugins/EquationsPlugin/index.d.ts +3 -3
  129. package/build/plugins/EquationsPlugin/index.d.ts.map +1 -1
  130. package/build/plugins/EquationsPlugin/index.js +14 -10
  131. package/build/plugins/FigmaPlugin/index.d.ts +2 -2
  132. package/build/plugins/FigmaPlugin/index.d.ts.map +1 -1
  133. package/build/plugins/FigmaPlugin/index.js +8 -14
  134. package/build/plugins/FloatingLinkEditorPlugin/index.css +11 -0
  135. package/build/plugins/FloatingLinkEditorPlugin/index.d.ts +3 -3
  136. package/build/plugins/FloatingLinkEditorPlugin/index.d.ts.map +1 -1
  137. package/build/plugins/FloatingLinkEditorPlugin/index.js +28 -27
  138. package/build/plugins/FloatingTextFormatToolbarPlugin/index.css +15 -0
  139. package/build/plugins/FloatingTextFormatToolbarPlugin/index.d.ts.map +1 -1
  140. package/build/plugins/FloatingTextFormatToolbarPlugin/index.js +2 -1
  141. package/build/plugins/ImagesPlugin/index.d.ts +3 -3
  142. package/build/plugins/ImagesPlugin/index.d.ts.map +1 -1
  143. package/build/plugins/ImagesPlugin/index.js +38 -37
  144. package/build/plugins/KeywordsPlugin/index.d.ts +1 -8
  145. package/build/plugins/KeywordsPlugin/index.d.ts.map +1 -1
  146. package/build/plugins/KeywordsPlugin/index.js +6 -12
  147. package/build/plugins/LayoutPlugin/InsertLayoutDialog.d.ts +2 -2
  148. package/build/plugins/LayoutPlugin/InsertLayoutDialog.d.ts.map +1 -1
  149. package/build/plugins/LayoutPlugin/InsertLayoutDialog.js +10 -9
  150. package/build/plugins/LayoutPlugin/LayoutPlugin.d.ts +1 -1
  151. package/build/plugins/LayoutPlugin/LayoutPlugin.d.ts.map +1 -1
  152. package/build/plugins/LayoutPlugin/LayoutPlugin.js +8 -14
  153. package/build/plugins/LinkPlugin/index.d.ts.map +1 -1
  154. package/build/plugins/LinkPlugin/index.js +1 -0
  155. package/build/plugins/MarkdownShortcutPlugin/index.d.ts.map +1 -1
  156. package/build/plugins/MarkdownShortcutPlugin/index.js +1 -0
  157. package/build/plugins/MarkdownTransformers/index.d.ts +1 -1
  158. package/build/plugins/MarkdownTransformers/index.d.ts.map +1 -1
  159. package/build/plugins/MarkdownTransformers/index.js +25 -25
  160. package/build/plugins/PasteLogPlugin/index.d.ts.map +1 -1
  161. package/build/plugins/PasteLogPlugin/index.js +1 -0
  162. package/build/plugins/ShortcutsPlugin/index.d.ts +0 -7
  163. package/build/plugins/ShortcutsPlugin/index.d.ts.map +1 -1
  164. package/build/plugins/ShortcutsPlugin/index.js +1 -0
  165. package/build/plugins/SpeechToTextPlugin/index.d.ts +2 -2
  166. package/build/plugins/SpeechToTextPlugin/index.d.ts.map +1 -1
  167. package/build/plugins/SpeechToTextPlugin/index.js +7 -11
  168. package/build/plugins/TabFocusPlugin/index.d.ts +0 -7
  169. package/build/plugins/TabFocusPlugin/index.d.ts.map +1 -1
  170. package/build/plugins/TabFocusPlugin/index.js +6 -5
  171. package/build/plugins/TableActionMenuPlugin/index.d.ts +1 -8
  172. package/build/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
  173. package/build/plugins/TableActionMenuPlugin/index.js +41 -40
  174. package/build/plugins/TableCellResizer/index.d.ts +2 -2
  175. package/build/plugins/TableCellResizer/index.d.ts.map +1 -1
  176. package/build/plugins/TableCellResizer/index.js +43 -42
  177. package/build/plugins/TableHoverActionsPlugin/index.d.ts +1 -8
  178. package/build/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
  179. package/build/plugins/TableHoverActionsPlugin/index.js +19 -18
  180. package/build/plugins/TableHoverActionsV2Plugin/index.d.ts.map +1 -1
  181. package/build/plugins/TableHoverActionsV2Plugin/index.js +1 -0
  182. package/build/plugins/TablePlugin.d.ts +2 -2
  183. package/build/plugins/TablePlugin.d.ts.map +1 -1
  184. package/build/plugins/TablePlugin.js +11 -10
  185. package/build/plugins/TableScrollShadowPlugin/index.d.ts +0 -7
  186. package/build/plugins/TableScrollShadowPlugin/index.d.ts.map +1 -1
  187. package/build/plugins/TableScrollShadowPlugin/index.js +9 -8
  188. package/build/plugins/TestRecorderPlugin/index.d.ts +1 -8
  189. package/build/plugins/TestRecorderPlugin/index.d.ts.map +1 -1
  190. package/build/plugins/TestRecorderPlugin/index.js +45 -44
  191. package/build/plugins/ToolbarPlugin/fontSize.d.ts +2 -2
  192. package/build/plugins/ToolbarPlugin/fontSize.d.ts.map +1 -1
  193. package/build/plugins/ToolbarPlugin/fontSize.js +19 -18
  194. package/build/plugins/ToolbarPlugin/index.d.ts.map +1 -1
  195. package/build/plugins/ToolbarPlugin/index.js +68 -60
  196. package/build/plugins/ToolbarPlugin/languages.d.ts +14 -0
  197. package/build/plugins/ToolbarPlugin/languages.d.ts.map +1 -0
  198. package/build/plugins/ToolbarPlugin/languages.js +185 -0
  199. package/build/plugins/ToolbarPlugin/utils.d.ts +2 -2
  200. package/build/plugins/ToolbarPlugin/utils.js +21 -21
  201. package/build/plugins/TwitterPlugin/index.d.ts +2 -2
  202. package/build/plugins/TwitterPlugin/index.d.ts.map +1 -1
  203. package/build/plugins/TwitterPlugin/index.js +8 -14
  204. package/build/plugins/YouTubePlugin/index.d.ts +2 -2
  205. package/build/plugins/YouTubePlugin/index.d.ts.map +1 -1
  206. package/build/plugins/YouTubePlugin/index.js +8 -14
  207. package/build/themes/PlaygroundEditorTheme.css +301 -33
  208. package/build/themes/ViewerTheme.css +899 -0
  209. package/build/{plugins/MentionsPlugin/index.d.ts → themes/ViewerTheme.d.ts} +5 -3
  210. package/build/themes/ViewerTheme.d.ts.map +1 -0
  211. package/build/themes/ViewerTheme.js +124 -0
  212. package/build/themes/ViewerThemeComplete.css +1043 -0
  213. package/build/ui/ColorPicker.d.ts +2 -2
  214. package/build/ui/ColorPicker.d.ts.map +1 -1
  215. package/build/ui/ColorPicker.js +47 -46
  216. package/build/ui/DropDown.d.ts.map +1 -1
  217. package/build/ui/DropDown.js +1 -0
  218. package/build/ui/FlashMessage.d.ts +3 -3
  219. package/build/ui/FlashMessage.d.ts.map +1 -1
  220. package/build/ui/FlashMessage.js +3 -2
  221. package/build/ui/ImageResizer.d.ts +3 -3
  222. package/build/ui/ImageResizer.d.ts.map +1 -1
  223. package/build/ui/ImageResizer.js +20 -19
  224. package/build/ui/KatexEquationAlterer.css +3 -1
  225. package/build/ui/KatexEquationAlterer.d.ts.map +1 -1
  226. package/build/ui/KatexEquationAlterer.js +1 -0
  227. package/build/ui/KatexRenderer.d.ts.map +1 -1
  228. package/build/ui/KatexRenderer.js +1 -0
  229. package/build/ui/Modal.d.ts.map +1 -1
  230. package/build/ui/Modal.js +1 -0
  231. package/build/ui/Switch.d.ts +2 -2
  232. package/build/ui/Switch.d.ts.map +1 -1
  233. package/build/ui/Switch.js +3 -2
  234. package/build/ui/TextInput.d.ts.map +1 -1
  235. package/build/ui/TextInput.js +1 -0
  236. package/build/utils/ServerBlockWithAlignableContents.d.ts +22 -0
  237. package/build/utils/ServerBlockWithAlignableContents.d.ts.map +1 -0
  238. package/build/utils/ServerBlockWithAlignableContents.js +6 -0
  239. package/build/utils/focusUtils.d.ts.map +1 -1
  240. package/build/utils/focusUtils.js +4 -3
  241. package/build/utils/getDOMRangeRect.d.ts.map +1 -1
  242. package/build/utils/getDOMRangeRect.js +1 -0
  243. package/build/utils/setFloatingElemPosition.d.ts.map +1 -1
  244. package/build/utils/setFloatingElemPosition.js +5 -4
  245. package/build/utils/swipe.d.ts +0 -7
  246. package/build/utils/swipe.d.ts.map +1 -1
  247. package/build/utils/swipe.js +5 -11
  248. package/build/viewer/Viewer.d.ts +18 -0
  249. package/build/viewer/Viewer.d.ts.map +1 -0
  250. package/build/viewer/Viewer.js +105 -0
  251. package/build/viewer/client.d.ts +18 -0
  252. package/build/viewer/client.d.ts.map +1 -0
  253. package/build/viewer/client.js +97 -0
  254. package/build/viewer/index.d.ts +4 -0
  255. package/build/viewer/index.d.ts.map +1 -0
  256. package/build/viewer/index.js +2 -0
  257. package/package.json +58 -36
  258. package/build/collaboration.d.ts +0 -12
  259. package/build/collaboration.d.ts.map +0 -1
  260. package/build/collaboration.js +0 -32
  261. package/build/nodes/FigmaNode.d.ts.map +0 -1
  262. package/build/nodes/PageBreakNode/index.css +0 -64
  263. package/build/nodes/PageBreakNode/index.d.ts +0 -25
  264. package/build/nodes/PageBreakNode/index.d.ts.map +0 -1
  265. package/build/nodes/PageBreakNode/index.js +0 -83
  266. package/build/nodes/PlaygroundNodes.d.ts.map +0 -1
  267. package/build/nodes/PollComponent.d.ts +0 -17
  268. package/build/nodes/PollComponent.d.ts.map +0 -1
  269. package/build/nodes/PollComponent.js +0 -85
  270. package/build/nodes/PollNode.css +0 -165
  271. package/build/nodes/PollNode.d.ts +0 -51
  272. package/build/nodes/PollNode.d.ts.map +0 -1
  273. package/build/nodes/PollNode.js +0 -153
  274. package/build/nodes/StickyComponent.d.ts +0 -18
  275. package/build/nodes/StickyComponent.d.ts.map +0 -1
  276. package/build/nodes/StickyComponent.js +0 -155
  277. package/build/nodes/StickyNode.css +0 -37
  278. package/build/nodes/StickyNode.d.ts +0 -39
  279. package/build/nodes/StickyNode.d.ts.map +0 -1
  280. package/build/nodes/StickyNode.js +0 -66
  281. package/build/nodes/TweetNode.d.ts.map +0 -1
  282. package/build/nodes/YouTubeNode.d.ts.map +0 -1
  283. package/build/plugins/DocsPlugin/index.d.ts +0 -10
  284. package/build/plugins/DocsPlugin/index.d.ts.map +0 -1
  285. package/build/plugins/DocsPlugin/index.js +0 -4
  286. package/build/plugins/MaxLengthPlugin/index.d.ts +0 -11
  287. package/build/plugins/MaxLengthPlugin/index.d.ts.map +0 -1
  288. package/build/plugins/MaxLengthPlugin/index.js +0 -44
  289. package/build/plugins/MentionsPlugin/index.d.ts.map +0 -1
  290. package/build/plugins/MentionsPlugin/index.js +0 -562
  291. package/build/plugins/PageBreakPlugin/index.d.ts +0 -12
  292. package/build/plugins/PageBreakPlugin/index.d.ts.map +0 -1
  293. package/build/plugins/PageBreakPlugin/index.js +0 -34
  294. package/build/plugins/StickyPlugin/index.d.ts +0 -10
  295. package/build/plugins/StickyPlugin/index.d.ts.map +0 -1
  296. package/build/plugins/StickyPlugin/index.js +0 -19
  297. package/build/plugins/TreeViewPlugin/index.d.ts +0 -10
  298. package/build/plugins/TreeViewPlugin/index.d.ts.map +0 -1
  299. package/build/plugins/TreeViewPlugin/index.js +0 -7
  300. package/build/plugins/TypingPerfPlugin/index.d.ts +0 -10
  301. package/build/plugins/TypingPerfPlugin/index.d.ts.map +0 -1
  302. package/build/plugins/TypingPerfPlugin/index.js +0 -100
  303. package/build/plugins/VersionsPlugin/index.css +0 -57
  304. package/build/plugins/VersionsPlugin/index.d.ts +0 -14
  305. package/build/plugins/VersionsPlugin/index.d.ts.map +0 -1
  306. package/build/plugins/VersionsPlugin/index.js +0 -147
  307. /package/build/nodes/{FigmaNode.d.ts → FigmaNode/FigmaNode.d.ts} +0 -0
  308. /package/build/nodes/{FigmaNode.js → FigmaNode/FigmaNode.js} +0 -0
  309. /package/build/nodes/{PlaygroundNodes.d.ts → PlaygroundNodes/PlaygroundNodes.d.ts} +0 -0
  310. /package/build/nodes/{TweetNode.d.ts → TweetNode/TweetNode.d.ts} +0 -0
  311. /package/build/nodes/{TweetNode.js → TweetNode/TweetNode.js} +0 -0
  312. /package/build/nodes/{YouTubeNode.d.ts → YouTubeNode/YouTubeNode.d.ts} +0 -0
  313. /package/build/nodes/{YouTubeNode.js → YouTubeNode/YouTubeNode.js} +0 -0
@@ -1,14 +1,15 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
4
- import { $computeTableMapSkipCellCheck, $deleteTableColumnAtSelection, $deleteTableRowAtSelection, $getNodeTriplet, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableSelection, $mergeCells, $unmergeCell, getTableElement, getTableObserverFromTableElement, TableCellHeaderStates, TableCellNode, } from '@lexical/table';
5
- import { mergeRegister } from '@lexical/utils';
6
- import { $getSelection, $isElementNode, $isRangeSelection, $isTextNode, $setSelection, COMMAND_PRIORITY_CRITICAL, getDOMSelection, isDOMNode, SELECTION_CHANGE_COMMAND, } from 'lexical';
7
- import { useCallback, useEffect, useRef, useState } from 'react';
8
- import { createPortal } from 'react-dom';
9
- import useModal from '../../hooks/useModal';
10
- import ColorPicker from '../../ui/ColorPicker';
11
- import DropDown, { DropDownItem } from '../../ui/DropDown';
3
+ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
4
+ import { useLexicalEditable } from "@lexical/react/useLexicalEditable";
5
+ import { $computeTableMapSkipCellCheck, $deleteTableColumnAtSelection, $deleteTableRowAtSelection, $getNodeTriplet, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableSelection, $mergeCells, $unmergeCell, getTableElement, getTableObserverFromTableElement, TableCellHeaderStates, TableCellNode, } from "@lexical/table";
6
+ import { mergeRegister } from "@lexical/utils";
7
+ import { $getSelection, $isElementNode, $isRangeSelection, $isTextNode, $setSelection, COMMAND_PRIORITY_CRITICAL, getDOMSelection, isDOMNode, SELECTION_CHANGE_COMMAND, } from "lexical";
8
+ import { useCallback, useEffect, useRef, useState } from "react";
9
+ import { createPortal } from "react-dom";
10
+ import useModal from "../../hooks/useModal";
11
+ import ColorPicker from "../../ui/ColorPicker";
12
+ import DropDown, { DropDownItem } from "../../ui/DropDown";
12
13
  function computeSelectionCount(selection) {
13
14
  const selectionShape = selection.getShape();
14
15
  return {
@@ -60,15 +61,15 @@ function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen
60
61
  });
61
62
  const [canMergeCells, setCanMergeCells] = useState(false);
62
63
  const [canUnmergeCell, setCanUnmergeCell] = useState(false);
63
- const [backgroundColor, setBackgroundColor] = useState(() => currentCellBackgroundColor(editor) || '');
64
+ const [backgroundColor, setBackgroundColor] = useState(() => currentCellBackgroundColor(editor) || "");
64
65
  useEffect(() => {
65
66
  return editor.registerMutationListener(TableCellNode, (nodeMutations) => {
66
- const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated';
67
+ const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === "updated";
67
68
  if (nodeUpdated) {
68
69
  editor.getEditorState().read(() => {
69
70
  updateTableCellNode(tableCellNode.getLatest());
70
71
  });
71
- setBackgroundColor(currentCellBackgroundColor(editor) || '');
72
+ setBackgroundColor(currentCellBackgroundColor(editor) || "");
72
73
  }
73
74
  }, { skipInitialization: true });
74
75
  }, [editor, tableCellNode]);
@@ -94,7 +95,7 @@ function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen
94
95
  rootElement != null) {
95
96
  const rootEleRect = rootElement.getBoundingClientRect();
96
97
  const menuButtonRect = menuButtonElement.getBoundingClientRect();
97
- dropDownElement.style.opacity = '1';
98
+ dropDownElement.style.opacity = "1";
98
99
  const dropDownElementRect = dropDownElement.getBoundingClientRect();
99
100
  const margin = 5;
100
101
  let leftPosition = menuButtonRect.right + margin;
@@ -122,8 +123,8 @@ function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen
122
123
  setIsMenuOpen(false);
123
124
  }
124
125
  }
125
- window.addEventListener('click', handleClickOutside);
126
- return () => window.removeEventListener('click', handleClickOutside);
126
+ window.addEventListener("click", handleClickOutside);
127
+ return () => window.removeEventListener("click", handleClickOutside);
127
128
  }, [setIsMenuOpen, contextRef]);
128
129
  const clearTableSelection = useCallback(() => {
129
130
  editor.update(() => {
@@ -131,7 +132,7 @@ function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen
131
132
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
132
133
  const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
133
134
  if (tableElement === null) {
134
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
135
+ throw new Error("TableActionMenu: Expected to find tableElement in DOM");
135
136
  }
136
137
  const tableObserver = getTableObserverFromTableElement(tableElement);
137
138
  if (tableObserver !== null) {
@@ -330,23 +331,23 @@ function TableActionMenu({ onClose, tableCellNode: _tableCellNode, setIsMenuOpen
330
331
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
331
332
  _jsxs("div", { className: "dropdown", ref: dropDownRef, onClick: (e) => {
332
333
  e.stopPropagation();
333
- }, children: [mergeCellButton, _jsx("button", { type: "button", className: "item", onClick: () => showColorPickerModal('Cell background color', () => (_jsx(ColorPicker, { color: backgroundColor, onChange: handleCellBackgroundColor }))), "data-test-id": "table-background-color", children: _jsx("span", { className: "text", children: "Background color" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleRowStriping(), "data-test-id": "table-row-striping", children: _jsx("span", { className: "text", children: "Toggle Row Striping" }) }), _jsxs(DropDown, { buttonLabel: "Vertical Align", buttonClassName: "item", buttonAriaLabel: "Formatting options for vertical alignment", children: [_jsx(DropDownItem, { onClick: () => {
334
- formatVerticalAlign('top');
334
+ }, children: [mergeCellButton, _jsx("button", { type: "button", className: "item", onClick: () => showColorPickerModal("Cell background color", () => (_jsx(ColorPicker, { color: backgroundColor, onChange: handleCellBackgroundColor }))), "data-test-id": "table-background-color", children: _jsx("span", { className: "text", children: "Background color" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleRowStriping(), "data-test-id": "table-row-striping", children: _jsx("span", { className: "text", children: "Toggle Row Striping" }) }), _jsxs(DropDown, { buttonLabel: "Vertical Align", buttonClassName: "item", buttonAriaLabel: "Formatting options for vertical alignment", children: [_jsx(DropDownItem, { onClick: () => {
335
+ formatVerticalAlign("top");
335
336
  }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-top" }), _jsx("span", { className: "text", children: "Top Align" })] }) }), _jsx(DropDownItem, { onClick: () => {
336
- formatVerticalAlign('middle');
337
+ formatVerticalAlign("middle");
337
338
  }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-middle" }), _jsx("span", { className: "text", children: "Middle Align" })] }) }), _jsx(DropDownItem, { onClick: () => {
338
- formatVerticalAlign('bottom');
339
- }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-bottom" }), _jsx("span", { className: "text", children: "Bottom Align" })] }) })] }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstRowFreeze(), "data-test-id": "table-freeze-first-row", children: _jsx("span", { className: "text", children: "Toggle First Row Freeze" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstColumnFreeze(), "data-test-id": "table-freeze-first-column", children: _jsx("span", { className: "text", children: "Toggle First Column Freeze" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(false), "data-test-id": "table-insert-row-above", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`, ' ', "above"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(true), "data-test-id": "table-insert-row-below", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`, ' ', "below"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(false), "data-test-id": "table-insert-column-before", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.columns === 1
340
- ? 'column'
341
- : `${selectionCounts.columns} columns`, ' ', "left"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(true), "data-test-id": "table-insert-column-after", children: _jsxs("span", { className: "text", children: ["Insert", ' ', selectionCounts.columns === 1
342
- ? 'column'
343
- : `${selectionCounts.columns} columns`, ' ', "right"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableColumnAtSelection(), "data-test-id": "table-delete-columns", children: _jsx("span", { className: "text", children: "Delete column" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableRowAtSelection(), "data-test-id": "table-delete-rows", children: _jsx("span", { className: "text", children: "Delete row" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableAtSelection(), "data-test-id": "table-delete", children: _jsx("span", { className: "text", children: "Delete table" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableRowIsHeader(), "data-test-id": "table-row-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.ROW) ===
339
+ formatVerticalAlign("bottom");
340
+ }, className: "item wide", children: _jsxs("div", { className: "icon-text-container", children: [_jsx("i", { className: "icon vertical-bottom" }), _jsx("span", { className: "text", children: "Bottom Align" })] }) })] }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstRowFreeze(), "data-test-id": "table-freeze-first-row", children: _jsx("span", { className: "text", children: "Toggle First Row Freeze" }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleFirstColumnFreeze(), "data-test-id": "table-freeze-first-column", children: _jsx("span", { className: "text", children: "Toggle First Column Freeze" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(false), "data-test-id": "table-insert-row-above", children: _jsxs("span", { className: "text", children: ["Insert", " ", selectionCounts.rows === 1 ? "row" : `${selectionCounts.rows} rows`, " ", "above"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableRowAtSelection(true), "data-test-id": "table-insert-row-below", children: _jsxs("span", { className: "text", children: ["Insert", " ", selectionCounts.rows === 1 ? "row" : `${selectionCounts.rows} rows`, " ", "below"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(false), "data-test-id": "table-insert-column-before", children: _jsxs("span", { className: "text", children: ["Insert", " ", selectionCounts.columns === 1
341
+ ? "column"
342
+ : `${selectionCounts.columns} columns`, " ", "left"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => insertTableColumnAtSelection(true), "data-test-id": "table-insert-column-after", children: _jsxs("span", { className: "text", children: ["Insert", " ", selectionCounts.columns === 1
343
+ ? "column"
344
+ : `${selectionCounts.columns} columns`, " ", "right"] }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableColumnAtSelection(), "data-test-id": "table-delete-columns", children: _jsx("span", { className: "text", children: "Delete column" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableRowAtSelection(), "data-test-id": "table-delete-rows", children: _jsx("span", { className: "text", children: "Delete row" }) }), _jsx("button", { type: "button", className: "item", onClick: () => deleteTableAtSelection(), "data-test-id": "table-delete", children: _jsx("span", { className: "text", children: "Delete table" }) }), _jsx("hr", {}), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableRowIsHeader(), "data-test-id": "table-row-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.ROW) ===
344
345
  TableCellHeaderStates.ROW
345
- ? 'Remove'
346
- : 'Add', ' ', "row header"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableColumnIsHeader(), "data-test-id": "table-column-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===
346
+ ? "Remove"
347
+ : "Add", " ", "row header"] }) }), _jsx("button", { type: "button", className: "item", onClick: () => toggleTableColumnIsHeader(), "data-test-id": "table-column-header", children: _jsxs("span", { className: "text", children: [(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===
347
348
  TableCellHeaderStates.COLUMN
348
- ? 'Remove'
349
- : 'Add', ' ', "column header"] }) })] }), document.body);
349
+ ? "Remove"
350
+ : "Add", " ", "column header"] }) })] }), document.body);
350
351
  }
351
352
  function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
352
353
  const [editor] = useLexicalComposerContext();
@@ -356,7 +357,7 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
356
357
  const [tableCellNode, setTableMenuCellNode] = useState(null);
357
358
  const [colorPickerModal, showColorPickerModal] = useModal();
358
359
  const checkTableCellOverflow = useCallback((tableCellParentNodeDOM) => {
359
- const scrollableContainer = tableCellParentNodeDOM.closest('.PlaygroundEditorTheme__tableScrollableWrapper');
360
+ const scrollableContainer = tableCellParentNodeDOM.closest(".PlaygroundEditorTheme__tableScrollableWrapper");
360
361
  if (scrollableContainer) {
361
362
  const containerRect = scrollableContainer.getBoundingClientRect();
362
363
  const cellRect = tableCellParentNodeDOM.getBoundingClientRect();
@@ -379,8 +380,8 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
379
380
  const activeElement = document.activeElement;
380
381
  function disable() {
381
382
  if (menu) {
382
- menu.classList.remove('table-cell-action-button-container--active');
383
- menu.classList.add('table-cell-action-button-container--inactive');
383
+ menu.classList.remove("table-cell-action-button-container--active");
384
+ menu.classList.add("table-cell-action-button-container--inactive");
384
385
  }
385
386
  setTableMenuCellNode(null);
386
387
  }
@@ -409,7 +410,7 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
409
410
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNodeFromSelection);
410
411
  const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
411
412
  if (tableElement === null) {
412
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
413
+ throw new Error("TableActionMenu: Expected to find tableElement in DOM");
413
414
  }
414
415
  tableObserver = getTableObserverFromTableElement(tableElement);
415
416
  setTableMenuCellNode(tableCellNodeFromSelection);
@@ -417,12 +418,12 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
417
418
  else if ($isTableSelection(selection)) {
418
419
  const anchorNode = $getTableCellNodeFromLexicalNode(selection.anchor.getNode());
419
420
  if (!$isTableCellNode(anchorNode)) {
420
- throw new Error('TableSelection anchorNode must be a TableCellNode');
421
+ throw new Error("TableSelection anchorNode must be a TableCellNode");
421
422
  }
422
423
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(anchorNode);
423
424
  const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
424
425
  if (tableElement === null) {
425
- throw new Error('TableActionMenu: Expected to find tableElement in DOM');
426
+ throw new Error("TableActionMenu: Expected to find tableElement in DOM");
426
427
  }
427
428
  tableObserver = getTableObserverFromTableElement(tableElement);
428
429
  tableCellParentNodeDOM = editor.getElementByKey(anchorNode.getKey());
@@ -440,8 +441,8 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
440
441
  return disable();
441
442
  }
442
443
  const enabled = !tableObserver || !tableObserver.isSelecting;
443
- menu.classList.toggle('table-cell-action-button-container--active', enabled);
444
- menu.classList.toggle('table-cell-action-button-container--inactive', !enabled);
444
+ menu.classList.toggle("table-cell-action-button-container--active", enabled);
445
+ menu.classList.toggle("table-cell-action-button-container--inactive", !enabled);
445
446
  if (enabled) {
446
447
  const tableCellRect = tableCellParentNodeDOM.getBoundingClientRect();
447
448
  const anchorRect = anchorElem.getBoundingClientRect();
@@ -466,10 +467,10 @@ function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
466
467
  };
467
468
  return mergeRegister(editor.registerUpdateListener(delayedCallback), editor.registerCommand(SELECTION_CHANGE_COMMAND, delayedCallback, COMMAND_PRIORITY_CRITICAL), editor.registerRootListener((rootElement, prevRootElement) => {
468
469
  if (prevRootElement) {
469
- prevRootElement.removeEventListener('pointerup', delayedCallback);
470
+ prevRootElement.removeEventListener("pointerup", delayedCallback);
470
471
  }
471
472
  if (rootElement) {
472
- rootElement.addEventListener('pointerup', delayedCallback);
473
+ rootElement.addEventListener("pointerup", delayedCallback);
473
474
  delayedCallback();
474
475
  }
475
476
  }), () => clearTimeout(timeoutId));
@@ -1,4 +1,4 @@
1
- import './index.css';
2
- import { ReactPortal } from 'react';
1
+ import "./index.css";
2
+ import { ReactPortal } from "react";
3
3
  export default function TableCellResizerPlugin(): null | ReactPortal;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableCellResizer/index.tsx"],"names":[],"mappings":"AAWA,OAAO,aAAa,CAAC;AAqBrB,OAAO,EAGL,WAAW,EAMZ,MAAM,OAAO,CAAC;AAocf,MAAM,CAAC,OAAO,UAAU,sBAAsB,IAAI,IAAI,GAAG,WAAW,CAWnE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableCellResizer/index.tsx"],"names":[],"mappings":"AAaA,OAAO,aAAa,CAAC;AAoBrB,OAAO,EAGL,WAAW,EAMZ,MAAM,OAAO,CAAC;AAocf,MAAM,CAAC,OAAO,UAAU,sBAAsB,IAAI,IAAI,GAAG,WAAW,CAWnE"}
@@ -1,15 +1,16 @@
1
+ "use client";
1
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import './index.css';
3
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
4
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
5
- import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget, getTableElement, TableNode, } from '@lexical/table';
6
- import { calculateZoomLevel, mergeRegister } from '@lexical/utils';
7
- import { $getNearestNodeFromDOMNode, isHTMLElement, SKIP_SCROLL_INTO_VIEW_TAG, } from 'lexical';
8
- import { useCallback, useEffect, useMemo, useRef, useState, } from 'react';
9
- import { createPortal } from 'react-dom';
3
+ import "./index.css";
4
+ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
5
+ import { useLexicalEditable } from "@lexical/react/useLexicalEditable";
6
+ import { $computeTableMapSkipCellCheck, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $isTableCellNode, $isTableRowNode, getDOMCellFromTarget, getTableElement, TableNode, } from "@lexical/table";
7
+ import { calculateZoomLevel, mergeRegister } from "@lexical/utils";
8
+ import { $getNearestNodeFromDOMNode, isHTMLElement, SKIP_SCROLL_INTO_VIEW_TAG, } from "lexical";
9
+ import { useCallback, useEffect, useMemo, useRef, useState, } from "react";
10
+ import { createPortal } from "react-dom";
10
11
  const MIN_ROW_HEIGHT = 33;
11
12
  const MIN_COLUMN_WIDTH = 92;
12
- const ACTIVE_RESIZER_COLOR = '#76b6ff';
13
+ const ACTIVE_RESIZER_COLOR = "#76b6ff";
13
14
  function TableCellResizer({ editor }) {
14
15
  const targetRef = useRef(null);
15
16
  const resizerRef = useRef(null);
@@ -32,7 +33,7 @@ function TableCellResizer({ editor }) {
32
33
  const tableKeys = new Set();
33
34
  return mergeRegister(editor.registerMutationListener(TableNode, (nodeMutations) => {
34
35
  for (const [nodeKey, mutation] of nodeMutations) {
35
- if (mutation === 'destroyed') {
36
+ if (mutation === "destroyed") {
36
37
  tableKeys.delete(nodeKey);
37
38
  }
38
39
  else {
@@ -78,12 +79,12 @@ function TableCellResizer({ editor }) {
78
79
  editor.getEditorState().read(() => {
79
80
  const tableCellNode = $getNearestNodeFromDOMNode(cell.elem);
80
81
  if (!tableCellNode) {
81
- throw new Error('TableCellResizer: Table cell node not found.');
82
+ throw new Error("TableCellResizer: Table cell node not found.");
82
83
  }
83
84
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
84
85
  const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()));
85
86
  if (!tableElement) {
86
- throw new Error('TableCellResizer: Table element not found.');
87
+ throw new Error("TableCellResizer: Table element not found.");
87
88
  }
88
89
  targetRef.current = target;
89
90
  tableRectRef.current = tableElement.getBoundingClientRect();
@@ -96,40 +97,40 @@ function TableCellResizer({ editor }) {
96
97
  }
97
98
  };
98
99
  const onPointerDown = (event) => {
99
- const isTouchEvent = event.pointerType === 'touch';
100
+ const isTouchEvent = event.pointerType === "touch";
100
101
  if (isTouchEvent) {
101
102
  onPointerMove(event);
102
103
  }
103
104
  };
104
105
  const resizerContainer = resizerRef.current;
105
- resizerContainer === null || resizerContainer === void 0 ? void 0 : resizerContainer.addEventListener('pointermove', onPointerMove, {
106
+ resizerContainer === null || resizerContainer === void 0 ? void 0 : resizerContainer.addEventListener("pointermove", onPointerMove, {
106
107
  capture: true,
107
108
  });
108
109
  const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {
109
- prevRootElement === null || prevRootElement === void 0 ? void 0 : prevRootElement.removeEventListener('pointermove', onPointerMove);
110
- prevRootElement === null || prevRootElement === void 0 ? void 0 : prevRootElement.removeEventListener('pointerdown', onPointerDown);
111
- rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('pointermove', onPointerMove);
112
- rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener('pointerdown', onPointerDown);
110
+ prevRootElement === null || prevRootElement === void 0 ? void 0 : prevRootElement.removeEventListener("pointermove", onPointerMove);
111
+ prevRootElement === null || prevRootElement === void 0 ? void 0 : prevRootElement.removeEventListener("pointerdown", onPointerDown);
112
+ rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener("pointermove", onPointerMove);
113
+ rootElement === null || rootElement === void 0 ? void 0 : rootElement.addEventListener("pointerdown", onPointerDown);
113
114
  });
114
115
  return () => {
115
116
  removeRootListener();
116
- resizerContainer === null || resizerContainer === void 0 ? void 0 : resizerContainer.removeEventListener('pointermove', onPointerMove);
117
+ resizerContainer === null || resizerContainer === void 0 ? void 0 : resizerContainer.removeEventListener("pointermove", onPointerMove);
117
118
  };
118
119
  }, [activeCell, draggingDirection, editor, resetState, hasTable]);
119
120
  const isHeightChanging = (direction) => {
120
- if (direction === 'bottom') {
121
+ if (direction === "bottom") {
121
122
  return true;
122
123
  }
123
124
  return false;
124
125
  };
125
126
  const updateRowHeight = useCallback((heightChange) => {
126
127
  if (!activeCell) {
127
- throw new Error('TableCellResizer: Expected active cell.');
128
+ throw new Error("TableCellResizer: Expected active cell.");
128
129
  }
129
130
  editor.update(() => {
130
131
  const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);
131
132
  if (!$isTableCellNode(tableCellNode)) {
132
- throw new Error('TableCellResizer: Table cell node not found.');
133
+ throw new Error("TableCellResizer: Table cell node not found.");
133
134
  }
134
135
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
135
136
  const baseRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);
@@ -141,11 +142,11 @@ function TableCellResizer({ editor }) {
141
142
  ? baseRowIndex
142
143
  : baseRowIndex + tableCellNode.getRowSpan() - 1;
143
144
  if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
144
- throw new Error('Expected table cell to be inside of table row.');
145
+ throw new Error("Expected table cell to be inside of table row.");
145
146
  }
146
147
  const tableRow = tableRows[tableRowIndex];
147
148
  if (!$isTableRowNode(tableRow)) {
148
- throw new Error('Expected table row');
149
+ throw new Error("Expected table row");
149
150
  }
150
151
  let height = tableRow.getHeight();
151
152
  if (height === undefined) {
@@ -171,18 +172,18 @@ function TableCellResizer({ editor }) {
171
172
  };
172
173
  const updateColumnWidth = useCallback((widthChange) => {
173
174
  if (!activeCell) {
174
- throw new Error('TableCellResizer: Expected active cell.');
175
+ throw new Error("TableCellResizer: Expected active cell.");
175
176
  }
176
177
  editor.update(() => {
177
178
  const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem);
178
179
  if (!$isTableCellNode(tableCellNode)) {
179
- throw new Error('TableCellResizer: Table cell node not found.');
180
+ throw new Error("TableCellResizer: Table cell node not found.");
180
181
  }
181
182
  const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
182
183
  const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null);
183
184
  const columnIndex = getCellColumnIndex(tableCellNode, tableMap);
184
185
  if (columnIndex === undefined) {
185
- throw new Error('TableCellResizer: Table column not found.');
186
+ throw new Error("TableCellResizer: Table column not found.");
186
187
  }
187
188
  const colWidths = tableNode.getColWidths();
188
189
  if (!colWidths) {
@@ -203,7 +204,7 @@ function TableCellResizer({ editor }) {
203
204
  event.preventDefault();
204
205
  event.stopPropagation();
205
206
  if (!activeCell) {
206
- throw new Error('TableCellResizer: Expected active cell.');
207
+ throw new Error("TableCellResizer: Expected active cell.");
207
208
  }
208
209
  if (pointerStartPosRef.current) {
209
210
  const { x, y } = pointerStartPosRef.current;
@@ -220,7 +221,7 @@ function TableCellResizer({ editor }) {
220
221
  updateColumnWidth(widthChange);
221
222
  }
222
223
  resetState();
223
- document.removeEventListener('pointerup', handler);
224
+ document.removeEventListener("pointerup", handler);
224
225
  }
225
226
  };
226
227
  return handler;
@@ -229,7 +230,7 @@ function TableCellResizer({ editor }) {
229
230
  event.preventDefault();
230
231
  event.stopPropagation();
231
232
  if (!activeCell) {
232
- throw new Error('TableCellResizer: Expected active cell.');
233
+ throw new Error("TableCellResizer: Expected active cell.");
233
234
  }
234
235
  pointerStartPosRef.current = {
235
236
  x: event.clientX,
@@ -237,7 +238,7 @@ function TableCellResizer({ editor }) {
237
238
  };
238
239
  updatePointerCurrentPos(pointerStartPosRef.current);
239
240
  updateDraggingDirection(direction);
240
- document.addEventListener('pointerup', pointerUpHandler(direction));
241
+ document.addEventListener("pointerup", pointerUpHandler(direction));
241
242
  }, [activeCell, pointerUpHandler]);
242
243
  const getResizers = useCallback(() => {
243
244
  if (activeCell) {
@@ -246,16 +247,16 @@ function TableCellResizer({ editor }) {
246
247
  const zoneWidth = 16; // Pixel width of the zone where you can drag the edge
247
248
  const styles = {
248
249
  bottom: {
249
- backgroundColor: 'none',
250
- cursor: 'row-resize',
250
+ backgroundColor: "none",
251
+ cursor: "row-resize",
251
252
  height: `${zoneWidth}px`,
252
253
  left: `${window.scrollX + left}px`,
253
254
  top: `${window.scrollY + top + height - zoneWidth / 2}px`,
254
255
  width: `${width}px`,
255
256
  },
256
257
  right: {
257
- backgroundColor: 'none',
258
- cursor: 'col-resize',
258
+ backgroundColor: "none",
259
+ cursor: "col-resize",
259
260
  height: `${height}px`,
260
261
  left: `${window.scrollX + left + width - zoneWidth / 2}px`,
261
262
  top: `${window.scrollY + top}px`,
@@ -267,24 +268,24 @@ function TableCellResizer({ editor }) {
267
268
  if (isHeightChanging(draggingDirection)) {
268
269
  styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`;
269
270
  styles[draggingDirection].top = `${window.scrollY + pointerCurrentPos.y / zoom}px`;
270
- styles[draggingDirection].height = '3px';
271
+ styles[draggingDirection].height = "3px";
271
272
  styles[draggingDirection].width = `${tableRect.width}px`;
272
273
  }
273
274
  else {
274
275
  styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`;
275
276
  styles[draggingDirection].left = `${window.scrollX + pointerCurrentPos.x / zoom}px`;
276
- styles[draggingDirection].width = '3px';
277
+ styles[draggingDirection].width = "3px";
277
278
  styles[draggingDirection].height = `${tableRect.height}px`;
278
279
  }
279
- styles[draggingDirection].backgroundColor = '#adf';
280
- styles[draggingDirection].mixBlendMode = 'unset';
280
+ styles[draggingDirection].backgroundColor = "#adf";
281
+ styles[draggingDirection].mixBlendMode = "unset";
281
282
  }
282
- else if (!draggingDirection && hoveredDirection === 'right') {
283
+ else if (!draggingDirection && hoveredDirection === "right") {
283
284
  const halfZoneWidth = zoneWidth / 2;
284
285
  const highlightWidth = 2;
285
286
  const highlightStart = halfZoneWidth - highlightWidth / 2;
286
287
  styles.right.backgroundColor = `linear-gradient(90deg, transparent ${highlightStart}px, ${ACTIVE_RESIZER_COLOR} ${highlightStart}px, ${ACTIVE_RESIZER_COLOR} ${highlightStart + highlightWidth}px, transparent ${highlightStart + highlightWidth}px)`;
287
- styles.right.mixBlendMode = 'unset';
288
+ styles.right.mixBlendMode = "unset";
288
289
  if (tableRect) {
289
290
  styles.right.top = `${window.scrollY + tableRect.top}px`;
290
291
  styles.right.height = `${tableRect.height}px`;
@@ -310,7 +311,7 @@ function TableCellResizer({ editor }) {
310
311
  }
311
312
  }, [draggingDirection]);
312
313
  const resizerStyles = getResizers();
313
- return (_jsx("div", { ref: resizerRef, children: activeCell != null && (_jsxs(_Fragment, { children: [_jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.right || undefined, onPointerEnter: handlePointerEnter('right'), onPointerLeave: handlePointerLeave, onPointerDown: toggleResize('right') }), _jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.bottom || undefined, onPointerDown: toggleResize('bottom') })] })) }));
314
+ return (_jsx("div", { ref: resizerRef, children: activeCell != null && (_jsxs(_Fragment, { children: [_jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.right || undefined, onPointerEnter: handlePointerEnter("right"), onPointerLeave: handlePointerLeave, onPointerDown: toggleResize("right") }), _jsx("div", { className: "TableCellResizer__resizer TableCellResizer__ui", style: resizerStyles.bottom || undefined, onPointerDown: toggleResize("bottom") })] })) }));
314
315
  }
315
316
  export default function TableCellResizerPlugin() {
316
317
  const [editor] = useLexicalComposerContext();
@@ -1,11 +1,4 @@
1
- /**
2
- * Copyright (c) Meta Platforms, Inc. and affiliates.
3
- *
4
- * This source code is licensed under the MIT license found in the
5
- * LICENSE file in the root directory of this source tree.
6
- *
7
- */
8
- import * as React from 'react';
1
+ import * as React from "react";
9
2
  export default function TableHoverActionsPlugin({ anchorElem, }: {
10
3
  anchorElem?: HTMLElement;
11
4
  }): React.ReactPortal | null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableHoverActionsPlugin/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2BH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4R/B,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAS3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableHoverActionsPlugin/index.tsx"],"names":[],"mappings":"AAmCA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA4R/B,MAAM,CAAC,OAAO,UAAU,uBAAuB,CAAC,EAC9C,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAS3B"}
@@ -1,13 +1,14 @@
1
+ "use client";
1
2
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
3
- import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
4
- import { $getTableAndElementByKey, $getTableColumnIndexFromTableCellNode, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableNode, getTableElement, TableNode, } from '@lexical/table';
5
- import { $findMatchingParent, mergeRegister } from '@lexical/utils';
6
- import { $getNearestNodeFromDOMNode, isHTMLElement, } from 'lexical';
7
- import { useEffect, useMemo, useRef, useState } from 'react';
8
- import { createPortal } from 'react-dom';
9
- import { getThemeSelector } from '../../utils/getThemeSelector';
10
- import { useDebounce } from '../CodeActionMenuPlugin/utils';
3
+ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
4
+ import { useLexicalEditable } from "@lexical/react/useLexicalEditable";
5
+ import { $getTableAndElementByKey, $getTableColumnIndexFromTableCellNode, $getTableRowIndexFromTableCellNode, $insertTableColumnAtSelection, $insertTableRowAtSelection, $isTableCellNode, $isTableNode, getTableElement, TableNode, } from "@lexical/table";
6
+ import { $findMatchingParent, mergeRegister } from "@lexical/utils";
7
+ import { $getNearestNodeFromDOMNode, isHTMLElement, } from "lexical";
8
+ import { useEffect, useMemo, useRef, useState } from "react";
9
+ import { createPortal } from "react-dom";
10
+ import { getThemeSelector } from "../../utils/getThemeSelector";
11
+ import { useDebounce } from "../CodeActionMenuPlugin/utils";
11
12
  const BUTTON_WIDTH_PX = 20;
12
13
  function TableHoverActionsContainer({ anchorElem, }) {
13
14
  var _a, _b;
@@ -63,7 +64,7 @@ function TableHoverActionsContainer({ anchorElem, }) {
63
64
  .parentElement;
64
65
  let tableHasScroll = false;
65
66
  if (parentElement &&
66
- parentElement.classList.contains('PlaygroundEditorTheme__tableScrollableWrapper')) {
67
+ parentElement.classList.contains("PlaygroundEditorTheme__tableScrollableWrapper")) {
67
68
  tableHasScroll =
68
69
  parentElement.scrollWidth > parentElement.clientWidth;
69
70
  }
@@ -109,12 +110,12 @@ function TableHoverActionsContainer({ anchorElem, }) {
109
110
  if (!shouldListenMouseMove) {
110
111
  return;
111
112
  }
112
- document.addEventListener('mousemove', debouncedOnMouseMove);
113
+ document.addEventListener("mousemove", debouncedOnMouseMove);
113
114
  return () => {
114
115
  setShownRow(false);
115
116
  setShownColumn(false);
116
117
  debouncedOnMouseMove.cancel();
117
- document.removeEventListener('mousemove', debouncedOnMouseMove);
118
+ document.removeEventListener("mousemove", debouncedOnMouseMove);
118
119
  };
119
120
  }, [shouldListenMouseMove, debouncedOnMouseMove]);
120
121
  useEffect(() => {
@@ -123,12 +124,12 @@ function TableHoverActionsContainer({ anchorElem, }) {
123
124
  let resetObserver = false;
124
125
  for (const [key, type] of mutations) {
125
126
  switch (type) {
126
- case 'created': {
127
+ case "created": {
127
128
  tableSetRef.current.add(key);
128
129
  resetObserver = true;
129
130
  break;
130
131
  }
131
- case 'destroyed': {
132
+ case "destroyed": {
132
133
  tableSetRef.current.delete(key);
133
134
  resetObserver = true;
134
135
  break;
@@ -172,13 +173,13 @@ function TableHoverActionsContainer({ anchorElem, }) {
172
173
  }
173
174
  function getMouseInfo(event, getTheme) {
174
175
  const target = event.target;
175
- const tableCellClass = getThemeSelector(getTheme, 'tableCell');
176
+ const tableCellClass = getThemeSelector(getTheme, "tableCell");
176
177
  if (isHTMLElement(target)) {
177
178
  const tableDOMNode = target.closest(`td${tableCellClass}, th${tableCellClass}`);
178
179
  const isOutside = !(tableDOMNode ||
179
- target.closest(`button${getThemeSelector(getTheme, 'tableAddRows')}`) ||
180
- target.closest(`button${getThemeSelector(getTheme, 'tableAddColumns')}`) ||
181
- target.closest('div.TableCellResizer__resizer'));
180
+ target.closest(`button${getThemeSelector(getTheme, "tableAddRows")}`) ||
181
+ target.closest(`button${getThemeSelector(getTheme, "tableAddColumns")}`) ||
182
+ target.closest("div.TableCellResizer__resizer"));
182
183
  return { isOutside, tableDOMNode };
183
184
  }
184
185
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableHoverActionsV2Plugin/index.tsx"],"names":[],"mappings":"AASA,OAAO,aAAa,CAAC;AAwcrB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAM3B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/TableHoverActionsV2Plugin/index.tsx"],"names":[],"mappings":"AAWA,OAAO,aAAa,CAAC;AAwcrB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAC;CAC1B,GAAG,KAAK,CAAC,WAAW,GAAG,IAAI,CAM3B"}
@@ -1,3 +1,4 @@
1
+ "use client";
1
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
3
  import "./index.css";
3
4
  import { autoUpdate, offset, shift, useFloating, } from "@floating-ui/react";
@@ -5,8 +5,8 @@
5
5
  * LICENSE file in the root directory of this source tree.
6
6
  *
7
7
  */
8
- import type { JSX } from 'react';
9
- import { EditorThemeClasses, Klass, LexicalEditor, LexicalNode } from 'lexical';
8
+ import type { JSX } from "react";
9
+ import { EditorThemeClasses, Klass, LexicalEditor, LexicalNode } from "lexical";
10
10
  export type InsertTableCommandPayload = Readonly<{
11
11
  columns: string;
12
12
  rows: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TablePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/TablePlugin.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,OAAO,CAAC;AAS/B,OAAO,EAAC,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAC,MAAM,SAAS,CAAC;AAO9E,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,CAAC;IAC1C,iBAAiB,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3D,GAAG,EAAE,CACH,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,EACzC,iBAAiB,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KACvD,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC,CAAC;AAEH,eAAO,MAAM,WAAW,2CAMtB,CAAC;AAEH,wBAAgB,YAAY,CAAC,EAAC,QAAQ,EAAC,EAAE;IAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAC,2CAuB/D;AAED,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,OAAO,GACR,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,GAAG,CAAC,OAAO,CAiDd;AAED,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,QAAQ,GACT,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;CAC5C,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAcrB"}
1
+ {"version":3,"file":"TablePlugin.d.ts","sourceRoot":"","sources":["../../src/plugins/TablePlugin.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AASjC,OAAO,EAAE,kBAAkB,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAOhF,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,CAAC;IAC1C,iBAAiB,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3D,GAAG,EAAE,CACH,gBAAgB,EAAE,IAAI,GAAG,gBAAgB,EACzC,iBAAiB,EAAE,IAAI,GAAG,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KACvD,IAAI,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,kBAAkB,CAAC;CAC5B,CAAC,CAAC;AAEH,eAAO,MAAM,WAAW,2CAMtB,CAAC;AAEH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,2CAwBnE;AAED,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,OAAO,GACR,EAAE;IACD,YAAY,EAAE,aAAa,CAAC;IAC5B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,GAAG,CAAC,OAAO,CAiDd;AAED,wBAAgB,WAAW,CAAC,EAC1B,gBAAgB,EAChB,QAAQ,GACT,EAAE;IACD,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,QAAQ,EAAE,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;CAC5C,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAcrB"}