@webiny/lexical-editor 5.37.8 → 5.38.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/commands/image.d.ts +6 -0
  2. package/commands/{insertFiles.js → image.js} +3 -1
  3. package/commands/image.js.map +1 -0
  4. package/commands/index.d.ts +3 -0
  5. package/commands/index.js +40 -0
  6. package/commands/index.js.map +1 -0
  7. package/commands/list.d.ts +7 -0
  8. package/commands/list.js +15 -0
  9. package/commands/list.js.map +1 -0
  10. package/commands/quote.d.ts +5 -0
  11. package/commands/quote.js +11 -0
  12. package/commands/quote.js.map +1 -0
  13. package/components/Editor/HeadingEditor.js +3 -1
  14. package/components/Editor/ParagraphEditor.js +3 -1
  15. package/components/Editor/RichTextEditor.d.ts +2 -2
  16. package/components/Editor/RichTextEditor.js +19 -12
  17. package/components/Editor/RichTextEditor.js.map +1 -1
  18. package/components/LexicalEditorConfig/LexicalEditorConfig.js +3 -1
  19. package/components/LexicalEditorConfig/components/Node.js +3 -1
  20. package/components/LexicalEditorConfig/components/Plugin.js +3 -1
  21. package/components/LexicalEditorConfig/components/ToolbarElement.js +3 -1
  22. package/components/LexicalHtmlRenderer.d.ts +2 -2
  23. package/components/LexicalHtmlRenderer.js +24 -17
  24. package/components/LexicalHtmlRenderer.js.map +1 -1
  25. package/components/Toolbar/StaticToolbar.d.ts +2 -2
  26. package/components/Toolbar/StaticToolbar.js +7 -78
  27. package/components/Toolbar/StaticToolbar.js.map +1 -1
  28. package/components/Toolbar/Toolbar.d.ts +1 -1
  29. package/components/Toolbar/Toolbar.js +27 -80
  30. package/components/Toolbar/Toolbar.js.map +1 -1
  31. package/components/ToolbarActions/BoldAction.js +10 -20
  32. package/components/ToolbarActions/BoldAction.js.map +1 -1
  33. package/components/ToolbarActions/BulletListAction.js +17 -23
  34. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  35. package/components/ToolbarActions/CodeHighlightAction.js +10 -20
  36. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
  37. package/components/ToolbarActions/FontColorAction.js +20 -37
  38. package/components/ToolbarActions/FontColorAction.js.map +1 -1
  39. package/components/ToolbarActions/FontSizeAction.js +11 -27
  40. package/components/ToolbarActions/FontSizeAction.js.map +1 -1
  41. package/components/ToolbarActions/ImageAction.js +6 -4
  42. package/components/ToolbarActions/ImageAction.js.map +1 -1
  43. package/components/ToolbarActions/ItalicAction.js +10 -20
  44. package/components/ToolbarActions/ItalicAction.js.map +1 -1
  45. package/components/ToolbarActions/LinkAction.js +18 -36
  46. package/components/ToolbarActions/LinkAction.js.map +1 -1
  47. package/components/ToolbarActions/NumberedListAction.js +18 -27
  48. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  49. package/components/ToolbarActions/QuoteAction.js +15 -24
  50. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  51. package/components/ToolbarActions/TextAlignmentAction.js +27 -21
  52. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
  53. package/components/ToolbarActions/TypographyAction.js +53 -60
  54. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  55. package/components/ToolbarActions/UnderlineAction.js +11 -21
  56. package/components/ToolbarActions/UnderlineAction.js.map +1 -1
  57. package/context/FontColorActionContext.js +3 -1
  58. package/context/RichTextEditorContext.d.ts +2 -6
  59. package/context/RichTextEditorContext.js +20 -36
  60. package/context/RichTextEditorContext.js.map +1 -1
  61. package/context/SharedHistoryContext.js +3 -1
  62. package/context/TextAlignmentActionContextProps.js +3 -1
  63. package/context/TypographyActionContext.d.ts +1 -1
  64. package/context/TypographyActionContext.js +3 -1
  65. package/context/TypographyActionContext.js.map +1 -1
  66. package/hooks/index.d.ts +7 -0
  67. package/hooks/index.js +84 -0
  68. package/hooks/index.js.map +1 -0
  69. package/hooks/useCurrentElement.d.ts +7 -0
  70. package/hooks/useCurrentElement.js +33 -0
  71. package/hooks/useCurrentElement.js.map +1 -0
  72. package/hooks/useCurrentSelection.d.ts +12 -0
  73. package/hooks/useCurrentSelection.js +72 -0
  74. package/hooks/useCurrentSelection.js.map +1 -0
  75. package/hooks/useFontColorPicker.js +3 -1
  76. package/hooks/useIsMounted.d.ts +1 -0
  77. package/hooks/useIsMounted.js +20 -0
  78. package/hooks/useIsMounted.js.map +1 -0
  79. package/hooks/useList.js +22 -21
  80. package/hooks/useList.js.map +1 -1
  81. package/hooks/useQuote.d.ts +1 -1
  82. package/hooks/useQuote.js +9 -7
  83. package/hooks/useQuote.js.map +1 -1
  84. package/hooks/useRichTextEditor.js +3 -1
  85. package/hooks/useTextAlignmentAction.js +3 -1
  86. package/hooks/useTypographyAction.js +3 -1
  87. package/index.d.ts +4 -8
  88. package/index.js +71 -48
  89. package/index.js.map +1 -1
  90. package/package.json +16 -20
  91. package/plugins/BlurEventPlugin/BlurEventPlugin.js +3 -1
  92. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js +3 -1
  93. package/plugins/CodeHighlightPlugin/index.js +3 -1
  94. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +11 -9
  95. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
  96. package/plugins/FloatingLinkEditorPlugin/index.js +3 -1
  97. package/plugins/FontColorPlugin/FontColorPlugin.js +8 -7
  98. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  99. package/plugins/ImagesPlugin/ImagesPlugin.d.ts +1 -1
  100. package/plugins/ImagesPlugin/ImagesPlugin.js +11 -9
  101. package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -1
  102. package/plugins/LexicalUpdateStatePlugin/UpdateStatePlugin.d.ts +9 -0
  103. package/plugins/LexicalUpdateStatePlugin/{LexicalUpdateStatePlugin.js → UpdateStatePlugin.js} +22 -14
  104. package/plugins/LexicalUpdateStatePlugin/UpdateStatePlugin.js.map +1 -0
  105. package/plugins/LexicalUpdateStatePlugin/index.d.ts +1 -1
  106. package/plugins/LexicalUpdateStatePlugin/index.js +7 -5
  107. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -1
  108. package/plugins/LinkPlugin/LinkPlugin.d.ts +5 -0
  109. package/plugins/LinkPlugin/LinkPlugin.js +68 -0
  110. package/plugins/LinkPlugin/LinkPlugin.js.map +1 -0
  111. package/plugins/ListPLugin/ListPlugin.js +6 -5
  112. package/plugins/ListPLugin/ListPlugin.js.map +1 -1
  113. package/plugins/TypographyPlugin/TypographyPlugin.js +7 -7
  114. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  115. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js +6 -4
  116. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
  117. package/types.d.ts +1 -60
  118. package/types.js +5 -3
  119. package/types.js.map +1 -1
  120. package/ui/ContentEditable.js +3 -1
  121. package/ui/Divider.js +3 -1
  122. package/ui/DropDown.js +3 -1
  123. package/ui/ImageResizer.js +3 -1
  124. package/ui/LinkPreview.js +3 -1
  125. package/ui/Placeholder.js +3 -1
  126. package/ui/TextInput.js +3 -1
  127. package/ui/ToolbarActionDialog.js +3 -1
  128. package/utils/canUseDOM.js +3 -1
  129. package/utils/files.d.ts +1 -1
  130. package/utils/files.js +3 -1
  131. package/utils/files.js.map +1 -1
  132. package/utils/generateInitialLexicalValue.js +3 -1
  133. package/utils/getDOMRangeRect.js +3 -1
  134. package/utils/getSelectedNode.js +3 -1
  135. package/utils/getTransparentImage.js +3 -1
  136. package/utils/insertImage.d.ts +2 -0
  137. package/utils/{nodes/insertImage.js → insertImage.js} +6 -5
  138. package/utils/insertImage.js.map +1 -0
  139. package/utils/isHTMLElement.js +3 -1
  140. package/utils/isUrlLinkReference.js +3 -1
  141. package/utils/isValidJSON.js +3 -1
  142. package/utils/isValidLexicalData.js +3 -1
  143. package/utils/point.js +3 -1
  144. package/utils/rect.js +3 -1
  145. package/utils/sanitizeUrl.js +3 -1
  146. package/utils/setFloatingElemPosition.js +3 -1
  147. package/commands/insertFiles.d.ts +0 -14
  148. package/commands/insertFiles.js.map +0 -1
  149. package/commands/webiny-list.d.ts +0 -7
  150. package/commands/webiny-list.js +0 -13
  151. package/commands/webiny-list.js.map +0 -1
  152. package/commands/webiny-quote.d.ts +0 -5
  153. package/commands/webiny-quote.js +0 -9
  154. package/commands/webiny-quote.js.map +0 -1
  155. package/components/ImageComponent.d.ts +0 -23
  156. package/components/ImageComponent.js +0 -252
  157. package/components/ImageComponent.js.map +0 -1
  158. package/nodes/FontColorNode.d.ts +0 -43
  159. package/nodes/FontColorNode.js +0 -123
  160. package/nodes/FontColorNode.js.map +0 -1
  161. package/nodes/HeadingNode.d.ts +0 -34
  162. package/nodes/HeadingNode.js +0 -191
  163. package/nodes/HeadingNode.js.map +0 -1
  164. package/nodes/ImageNode.d.ts +0 -50
  165. package/nodes/ImageNode.js +0 -206
  166. package/nodes/ImageNode.js.map +0 -1
  167. package/nodes/ListItemNode.d.ts +0 -46
  168. package/nodes/ListItemNode.js +0 -447
  169. package/nodes/ListItemNode.js.map +0 -1
  170. package/nodes/ListNode/formatList.d.ts +0 -19
  171. package/nodes/ListNode/formatList.js +0 -447
  172. package/nodes/ListNode/formatList.js.map +0 -1
  173. package/nodes/ListNode.d.ts +0 -42
  174. package/nodes/ListNode.js +0 -288
  175. package/nodes/ListNode.js.map +0 -1
  176. package/nodes/ParagraphNode.d.ts +0 -32
  177. package/nodes/ParagraphNode.js +0 -218
  178. package/nodes/ParagraphNode.js.map +0 -1
  179. package/nodes/QuoteNode.d.ts +0 -34
  180. package/nodes/QuoteNode.js +0 -225
  181. package/nodes/QuoteNode.js.map +0 -1
  182. package/nodes/TypographyElementNode.d.ts +0 -42
  183. package/nodes/TypographyElementNode.js +0 -151
  184. package/nodes/TypographyElementNode.js.map +0 -1
  185. package/nodes/imageNode.css +0 -43
  186. package/nodes/link-node.d.ts +0 -19
  187. package/nodes/link-node.js +0 -120
  188. package/nodes/link-node.js.map +0 -1
  189. package/nodes/types.d.ts +0 -15
  190. package/nodes/types.js +0 -5
  191. package/nodes/types.js.map +0 -1
  192. package/nodes/webinyNodes.d.ts +0 -7
  193. package/nodes/webinyNodes.js +0 -60
  194. package/nodes/webinyNodes.js.map +0 -1
  195. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.d.ts +0 -8
  196. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +0 -1
  197. package/themes/webinyLexicalTheme.css +0 -423
  198. package/themes/webinyLexicalTheme.d.ts +0 -9
  199. package/themes/webinyLexicalTheme.js +0 -90
  200. package/themes/webinyLexicalTheme.js.map +0 -1
  201. package/utils/findTypographyStyleByHtmlTag.d.ts +0 -8
  202. package/utils/findTypographyStyleByHtmlTag.js +0 -16
  203. package/utils/findTypographyStyleByHtmlTag.js.map +0 -1
  204. package/utils/getLexicalTextSelectionState.d.ts +0 -5
  205. package/utils/getLexicalTextSelectionState.js +0 -167
  206. package/utils/getLexicalTextSelectionState.js.map +0 -1
  207. package/utils/nodes/clearNodeFormating.d.ts +0 -2
  208. package/utils/nodes/clearNodeFormating.js +0 -28
  209. package/utils/nodes/clearNodeFormating.js.map +0 -1
  210. package/utils/nodes/formatToHeading.d.ts +0 -3
  211. package/utils/nodes/formatToHeading.js +0 -25
  212. package/utils/nodes/formatToHeading.js.map +0 -1
  213. package/utils/nodes/formatToParagraph.d.ts +0 -2
  214. package/utils/nodes/formatToParagraph.js +0 -20
  215. package/utils/nodes/formatToParagraph.js.map +0 -1
  216. package/utils/nodes/formatToQuote.d.ts +0 -2
  217. package/utils/nodes/formatToQuote.js +0 -25
  218. package/utils/nodes/formatToQuote.js.map +0 -1
  219. package/utils/nodes/insertImage.d.ts +0 -2
  220. package/utils/nodes/insertImage.js.map +0 -1
  221. package/utils/nodes/listNode.d.ts +0 -11
  222. package/utils/nodes/listNode.js +0 -107
  223. package/utils/nodes/listNode.js.map +0 -1
  224. package/utils/styleObjectToString.d.ts +0 -2
  225. package/utils/styleObjectToString.js +0 -22
  226. package/utils/styleObjectToString.js.map +0 -1
  227. package/utils/toTypographyEmotionMap.d.ts +0 -3
  228. package/utils/toTypographyEmotionMap.js +0 -41
  229. package/utils/toTypographyEmotionMap.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_lexical","_useRichTextEditor2","_utils","_LexicalComposerContext","_getLexicalTextSelectionState","_LexicalEditorConfig","useStaticToolbar","_ref","editor","_useRichTextEditor","useRichTextEditor","setNodeIsText","setTextBlockSelection","setActiveEditor","_useState","useState","_useState2","_slicedToArray2","default","toolbarActiveEditor","setToolbarActiveEditor","_useLexicalEditorConf","useLexicalEditorConfig","toolbarElements","updateToolbar","useCallback","getEditorState","read","isComposing","selection","$getSelection","$isRangeSelection","selectionState","getLexicalTextSelectionState","_selectionState$state","selectedText","state","link","isSelected","useEffect","document","addEventListener","removeEventListener","registerCommand","SELECTION_CHANGE_COMMAND","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","mergeRegister","registerUpdateListener","_ref2","editorState","registerRootListener","getRootElement","createElement","className","isEditable","Fragment","map","action","key","name","element","StaticToolbar","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","exports"],"sources":["StaticToolbar.tsx"],"sourcesContent":["import React, { FC, Fragment, useCallback, useEffect, useState } from \"react\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport \"./StaticToolbar.css\";\nimport { getLexicalTextSelectionState } from \"~/utils/getLexicalTextSelectionState\";\nimport { useLexicalEditorConfig } from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\n\ninterface useStaticToolbarProps {\n editor: LexicalEditor;\n}\n\nconst useStaticToolbar: FC<useStaticToolbarProps> = ({ editor }) => {\n const { setNodeIsText, setTextBlockSelection, setActiveEditor } = useRichTextEditor();\n const [toolbarActiveEditor, setToolbarActiveEditor] = useState<LexicalEditor>(editor);\n const { toolbarElements } = useLexicalEditorConfig();\n\n const updateToolbar = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return;\n }\n\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const selectionState = getLexicalTextSelectionState(toolbarActiveEditor, selection);\n if (selectionState) {\n setTextBlockSelection(selectionState);\n if (\n selectionState.selectedText !== \"\" &&\n !selectionState.state?.link.isSelected\n ) {\n setNodeIsText(true);\n } else {\n setNodeIsText(false);\n }\n }\n }\n\n if (!$isRangeSelection(selection)) {\n setNodeIsText(false);\n return;\n }\n });\n }, [toolbarActiveEditor]);\n\n useEffect(() => {\n document.addEventListener(\"selectionchange\", updateToolbar);\n return () => {\n document.removeEventListener(\"selectionchange\", updateToolbar);\n };\n }, [updateToolbar]);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setToolbarActiveEditor(newEditor);\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n useEffect(() => {\n return mergeRegister(\n toolbarActiveEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setNodeIsText(false);\n }\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setNodeIsText(false);\n }\n })\n );\n }, [updateToolbar, editor, toolbarActiveEditor]);\n\n return (\n <div className=\"static-toolbar\">\n {editor.isEditable() && (\n <>\n {toolbarElements.map(action => (\n <Fragment key={action.name}>{action.element}</Fragment>\n ))}\n </>\n )}\n </div>\n );\n};\n\nexport const StaticToolbar = () => {\n const [editor] = useLexicalComposerContext();\n return useStaticToolbar({ editor });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_LexicalComposerContext","_LexicalEditorConfig","StaticToolbar","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useLexicalEditorConf","useLexicalEditorConfig","toolbarElements","createElement","className","isEditable","Fragment","map","action","key","name","element","exports"],"sources":["StaticToolbar.tsx"],"sourcesContent":["import React, { Fragment } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport \"./StaticToolbar.css\";\nimport { useLexicalEditorConfig } from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\n\nexport const StaticToolbar = () => {\n const [editor] = useLexicalComposerContext();\n const { toolbarElements } = useLexicalEditorConfig();\n\n return (\n <div className=\"static-toolbar\">\n {editor.isEditable() && (\n <>\n {toolbarElements.map(action => (\n <Fragment key={action.name}>{action.element}</Fragment>\n ))}\n </>\n )}\n </div>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACAA,OAAA;AACA,IAAAE,oBAAA,GAAAF,OAAA;AAEO,IAAMG,aAAa,GAAG,SAAhBA,aAAaA,CAAA,EAAS;EAC/B,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,qBAAA,GAA4B,IAAAC,2CAAsB,EAAC,CAAC;IAA5CC,eAAe,GAAAF,qBAAA,CAAfE,eAAe;EAEvB,oBACId,MAAA,CAAAU,OAAA,CAAAK,aAAA;IAAKC,SAAS,EAAC;EAAgB,GAC1BL,MAAM,CAACM,UAAU,CAAC,CAAC,iBAChBjB,MAAA,CAAAU,OAAA,CAAAK,aAAA,CAAAf,MAAA,CAAAU,OAAA,CAAAQ,QAAA,QACKJ,eAAe,CAACK,GAAG,CAAC,UAAAC,MAAM;IAAA,oBACvBpB,MAAA,CAAAU,OAAA,CAAAK,aAAA,CAACf,MAAA,CAAAkB,QAAQ;MAACG,GAAG,EAAED,MAAM,CAACE;IAAK,GAAEF,MAAM,CAACG,OAAkB,CAAC;EAAA,CAC1D,CACH,CAEL,CAAC;AAEd,CAAC;AAACC,OAAA,CAAAnB,aAAA,GAAAA,aAAA"}
@@ -4,4 +4,4 @@ import "./Toolbar.css";
4
4
  export interface ToolbarProps {
5
5
  anchorElem?: HTMLElement;
6
6
  }
7
- export declare const Toolbar: ({ anchorElem }: ToolbarProps) => React.ReactElement<any, any> | null;
7
+ export declare const Toolbar: ({ anchorElem }: ToolbarProps) => React.ReactPortal | null;
@@ -11,13 +11,14 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _lexical = require("lexical");
12
12
  var _reactDom = require("react-dom");
13
13
  var _utils = require("@lexical/utils");
14
+ var _lexicalNodes = require("@webiny/lexical-nodes");
14
15
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
15
16
  require("./Toolbar.css");
16
17
  var _getDOMRangeRect = require("../../utils/getDOMRangeRect");
17
18
  var _setFloatingElemPosition = require("../../utils/setFloatingElemPosition");
18
- var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
19
- var _getLexicalTextSelectionState = require("../../utils/getLexicalTextSelectionState");
20
19
  var _LexicalEditorConfig = require("../LexicalEditorConfig/LexicalEditorConfig");
20
+ var _useCurrentSelection = require("../../hooks/useCurrentSelection");
21
+ var _getSelectedNode = require("../../utils/getSelectedNode");
21
22
  var FloatingToolbar = function FloatingToolbar(_ref) {
22
23
  var anchorElem = _ref.anchorElem,
23
24
  editor = _ref.editor;
@@ -114,74 +115,29 @@ var FloatingToolbar = function FloatingToolbar(_ref) {
114
115
  }, action.element);
115
116
  })));
116
117
  };
117
- var useToolbar = function useToolbar(_ref3) {
118
- var editor = _ref3.editor,
119
- _ref3$anchorElem = _ref3.anchorElem,
118
+
119
+ /**
120
+ * TODO: this logic should live in Node classes. A toolbar should not decide when to show itself.
121
+ */
122
+ function isLinkNode(selection) {
123
+ var node = (0, _getSelectedNode.getSelectedNode)(selection);
124
+ var parent = node.getParent();
125
+ return (0, _lexicalNodes.$isLinkNode)(parent) || (0, _lexicalNodes.$isLinkNode)(node);
126
+ }
127
+ var Toolbar = function Toolbar(_ref3) {
128
+ var _ref3$anchorElem = _ref3.anchorElem,
120
129
  anchorElem = _ref3$anchorElem === void 0 ? document.body : _ref3$anchorElem;
121
- var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
122
- nodeIsText = _useRichTextEditor.nodeIsText,
123
- setNodeIsText = _useRichTextEditor.setNodeIsText,
124
- setActiveEditor = _useRichTextEditor.setActiveEditor,
125
- setIsEditable = _useRichTextEditor.setIsEditable,
126
- setTextBlockSelection = _useRichTextEditor.setTextBlockSelection;
127
- var _useState = (0, _react.useState)(editor),
128
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
129
- toolbarActiveEditor = _useState2[0],
130
- setToolbarActiveEditor = _useState2[1];
131
- var updateToolbar = (0, _react.useCallback)(function () {
132
- editor.getEditorState().read(function () {
133
- // Should not to pop up the floating toolbar when using IME input
134
- if (editor.isComposing()) {
135
- return;
136
- }
137
- var selection = (0, _lexical.$getSelection)();
138
- if ((0, _lexical.$isRangeSelection)(selection)) {
139
- var selectionState = (0, _getLexicalTextSelectionState.getLexicalTextSelectionState)(toolbarActiveEditor, selection);
140
- if (selectionState) {
141
- var _selectionState$state;
142
- setTextBlockSelection(selectionState);
143
- if (selectionState.selectedText !== "" && !((_selectionState$state = selectionState.state) !== null && _selectionState$state !== void 0 && _selectionState$state.link.isSelected)) {
144
- setNodeIsText(true);
145
- } else {
146
- setNodeIsText(false);
147
- }
148
- }
149
- }
150
- if (!(0, _lexical.$isRangeSelection)(selection)) {
151
- setNodeIsText(false);
152
- return;
153
- }
154
- });
155
- }, [toolbarActiveEditor]);
156
- (0, _react.useEffect)(function () {
157
- document.addEventListener("selectionchange", updateToolbar);
158
- return function () {
159
- document.removeEventListener("selectionchange", updateToolbar);
160
- };
161
- }, [updateToolbar]);
162
- (0, _react.useEffect)(function () {
163
- return editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, function (_payload, newEditor) {
164
- updateToolbar();
165
- setToolbarActiveEditor(newEditor);
166
- setActiveEditor(newEditor);
130
+ var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
131
+ _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
132
+ editor = _useLexicalComposerCo2[0];
133
+ var showToolbar = (0, _useCurrentSelection.useDeriveValueFromSelection)(function (_ref4) {
134
+ var rangeSelection = _ref4.rangeSelection;
135
+ if (!rangeSelection) {
167
136
  return false;
168
- }, _lexical.COMMAND_PRIORITY_CRITICAL);
169
- }, [editor, updateToolbar]);
170
- (0, _react.useEffect)(function () {
171
- return (0, _utils.mergeRegister)(editor.registerEditableListener(function (editable) {
172
- setIsEditable(editable);
173
- }), toolbarActiveEditor.registerUpdateListener(function (_ref4) {
174
- var editorState = _ref4.editorState;
175
- editorState.read(function () {
176
- updateToolbar();
177
- });
178
- }), editor.registerRootListener(function () {
179
- if (editor.getRootElement() === null) {
180
- setNodeIsText(false);
181
- }
182
- }));
183
- }, [updateToolbar, editor, toolbarActiveEditor]);
184
- if (!nodeIsText) {
137
+ }
138
+ return !isLinkNode(rangeSelection) && !rangeSelection.isCollapsed();
139
+ });
140
+ if (!showToolbar) {
185
141
  return null;
186
142
  }
187
143
  return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/_react.default.createElement(FloatingToolbar, {
@@ -189,15 +145,6 @@ var useToolbar = function useToolbar(_ref3) {
189
145
  editor: editor
190
146
  }), anchorElem);
191
147
  };
192
- var Toolbar = function Toolbar(_ref5) {
193
- var _ref5$anchorElem = _ref5.anchorElem,
194
- anchorElem = _ref5$anchorElem === void 0 ? document.body : _ref5$anchorElem;
195
- var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
196
- _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
197
- editor = _useLexicalComposerCo2[0];
198
- return useToolbar({
199
- editor: editor,
200
- anchorElem: anchorElem
201
- });
202
- };
203
- exports.Toolbar = Toolbar;
148
+ exports.Toolbar = Toolbar;
149
+
150
+ //# sourceMappingURL=Toolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_lexical","_reactDom","_utils","_LexicalComposerContext","_getDOMRangeRect","_setFloatingElemPosition","_useRichTextEditor2","_getLexicalTextSelectionState","_LexicalEditorConfig","FloatingToolbar","_ref","anchorElem","editor","popupCharStylesEditorRef","useRef","_useLexicalEditorConf","useLexicalEditorConfig","toolbarElements","mouseMoveListener","useCallback","e","current","buttons","style","pointerEvents","x","clientX","y","clientY","elementUnderMouse","document","elementFromPoint","contains","mouseUpListener","useEffect","addEventListener","removeEventListener","updateTextFormatFloatingToolbar","selection","$getSelection","popupCharStylesEditorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","anchorNode","rangeRect","getDOMRangeRect","setFloatingElemPosition","scrollerElem","parentElement","update","getEditorState","read","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","default","createElement","ref","className","isEditable","Fragment","map","action","key","name","element","useToolbar","_ref3","_ref3$anchorElem","body","_useRichTextEditor","useRichTextEditor","nodeIsText","setNodeIsText","setActiveEditor","setIsEditable","setTextBlockSelection","_useState","useState","_useState2","_slicedToArray2","toolbarActiveEditor","setToolbarActiveEditor","updateToolbar","isComposing","$isRangeSelection","selectionState","getLexicalTextSelectionState","_selectionState$state","selectedText","state","link","isSelected","_payload","newEditor","COMMAND_PRIORITY_CRITICAL","registerEditableListener","editable","_ref4","registerRootListener","createPortal","Toolbar","_ref5","_ref5$anchorElem","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","exports"],"sources":["Toolbar.tsx"],"sourcesContent":["import React, { FC, Fragment, useCallback, useEffect, useRef, useState } from \"react\";\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_LOW,\n LexicalEditor,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { createPortal } from \"react-dom\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport \"./Toolbar.css\";\nimport { getDOMRangeRect } from \"~/utils/getDOMRangeRect\";\nimport { setFloatingElemPosition } from \"~/utils/setFloatingElemPosition\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { getLexicalTextSelectionState } from \"~/utils/getLexicalTextSelectionState\";\nimport { useLexicalEditorConfig } from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\n\ninterface FloatingToolbarProps {\n anchorElem: HTMLElement;\n editor: LexicalEditor;\n}\n\nconst FloatingToolbar: FC<FloatingToolbarProps> = ({ anchorElem, editor }) => {\n const popupCharStylesEditorRef = useRef<HTMLDivElement | null>(null);\n const { toolbarElements } = useLexicalEditorConfig();\n\n const mouseMoveListener = useCallback(\n (e: MouseEvent) => {\n /* Indicates which mouse button(s) was pressed.\n / 1 = mouse left button\n / 3 = mouse left and right button in the same time\n / More info: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n */\n if (popupCharStylesEditorRef?.current && (e.buttons === 1 || e.buttons === 3)) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"none\") {\n const x = e.clientX;\n const y = e.clientY;\n const elementUnderMouse = document.elementFromPoint(x, y);\n\n if (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n popupCharStylesEditorRef.current.style.pointerEvents = \"none\";\n }\n }\n }\n },\n [popupCharStylesEditorRef]\n );\n\n const mouseUpListener = useCallback(() => {\n if (popupCharStylesEditorRef?.current) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"auto\") {\n popupCharStylesEditorRef.current.style.pointerEvents = \"auto\";\n }\n }\n }, [popupCharStylesEditorRef]);\n\n useEffect(() => {\n if (popupCharStylesEditorRef?.current) {\n document.addEventListener(\"mousemove\", mouseMoveListener);\n document.addEventListener(\"mouseup\", mouseUpListener);\n\n return () => {\n document.removeEventListener(\"mousemove\", mouseMoveListener);\n document.removeEventListener(\"mouseup\", mouseUpListener);\n };\n }\n return;\n }, [popupCharStylesEditorRef]);\n\n const updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection();\n\n const popupCharStylesEditorElem = popupCharStylesEditorRef.current;\n const nativeSelection = window.getSelection();\n\n if (popupCharStylesEditorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement);\n\n setFloatingElemPosition(rangeRect, popupCharStylesEditorElem, anchorElem);\n }\n }, [editor, anchorElem]);\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar();\n });\n };\n\n window.addEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [editor, updateTextFormatFloatingToolbar, anchorElem]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar();\n });\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateTextFormatFloatingToolbar();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateTextFormatFloatingToolbar();\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateTextFormatFloatingToolbar]);\n\n return (\n <div ref={popupCharStylesEditorRef} className=\"floating-text-format-popup\">\n {editor.isEditable() && (\n <>\n {toolbarElements.map(action => (\n <Fragment key={action.name}>{action.element}</Fragment>\n ))}\n </>\n )}\n </div>\n );\n};\n\ninterface useToolbarProps {\n editor: LexicalEditor;\n anchorElem: HTMLElement;\n}\n\nconst useToolbar: FC<useToolbarProps> = ({\n editor,\n anchorElem = document.body\n}): JSX.Element | null => {\n const { nodeIsText, setNodeIsText, setActiveEditor, setIsEditable, setTextBlockSelection } =\n useRichTextEditor();\n const [toolbarActiveEditor, setToolbarActiveEditor] = useState<LexicalEditor>(editor);\n\n const updateToolbar = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return;\n }\n\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n const selectionState = getLexicalTextSelectionState(toolbarActiveEditor, selection);\n if (selectionState) {\n setTextBlockSelection(selectionState);\n if (\n selectionState.selectedText !== \"\" &&\n !selectionState.state?.link.isSelected\n ) {\n setNodeIsText(true);\n } else {\n setNodeIsText(false);\n }\n }\n }\n\n if (!$isRangeSelection(selection)) {\n setNodeIsText(false);\n return;\n }\n });\n }, [toolbarActiveEditor]);\n\n useEffect(() => {\n document.addEventListener(\"selectionchange\", updateToolbar);\n return () => {\n document.removeEventListener(\"selectionchange\", updateToolbar);\n };\n }, [updateToolbar]);\n\n useEffect(() => {\n return editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_payload, newEditor) => {\n updateToolbar();\n setToolbarActiveEditor(newEditor);\n setActiveEditor(newEditor);\n return false;\n },\n COMMAND_PRIORITY_CRITICAL\n );\n }, [editor, updateToolbar]);\n\n useEffect(() => {\n return mergeRegister(\n editor.registerEditableListener(editable => {\n setIsEditable(editable);\n }),\n toolbarActiveEditor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateToolbar();\n });\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setNodeIsText(false);\n }\n })\n );\n }, [updateToolbar, editor, toolbarActiveEditor]);\n\n if (!nodeIsText) {\n return null;\n }\n\n return createPortal(<FloatingToolbar anchorElem={anchorElem} editor={editor} />, anchorElem);\n};\n\nexport interface ToolbarProps {\n anchorElem?: HTMLElement;\n}\n\nexport const Toolbar = ({ anchorElem = document.body }: ToolbarProps) => {\n const [editor] = useLexicalComposerContext();\n return useToolbar({ editor, anchorElem });\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_lexical","_reactDom","_utils","_lexicalNodes","_LexicalComposerContext","_getDOMRangeRect","_setFloatingElemPosition","_LexicalEditorConfig","_useCurrentSelection","_getSelectedNode","FloatingToolbar","_ref","anchorElem","editor","popupCharStylesEditorRef","useRef","_useLexicalEditorConf","useLexicalEditorConfig","toolbarElements","mouseMoveListener","useCallback","e","current","buttons","style","pointerEvents","x","clientX","y","clientY","elementUnderMouse","document","elementFromPoint","contains","mouseUpListener","useEffect","addEventListener","removeEventListener","updateTextFormatFloatingToolbar","selection","$getSelection","popupCharStylesEditorElem","nativeSelection","window","getSelection","rootElement","getRootElement","isCollapsed","anchorNode","rangeRect","getDOMRangeRect","setFloatingElemPosition","scrollerElem","parentElement","update","getEditorState","read","mergeRegister","registerUpdateListener","_ref2","editorState","registerCommand","SELECTION_CHANGE_COMMAND","COMMAND_PRIORITY_LOW","default","createElement","ref","className","isEditable","Fragment","map","action","key","name","element","isLinkNode","node","getSelectedNode","parent","getParent","$isLinkNode","Toolbar","_ref3","_ref3$anchorElem","body","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","showToolbar","useDeriveValueFromSelection","_ref4","rangeSelection","createPortal","exports"],"sources":["Toolbar.tsx"],"sourcesContent":["import React, { FC, Fragment, useCallback, useEffect, useRef } from \"react\";\nimport {\n $getSelection,\n COMMAND_PRIORITY_LOW,\n LexicalEditor,\n RangeSelection,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport { createPortal } from \"react-dom\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $isLinkNode } from \"@webiny/lexical-nodes\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport \"./Toolbar.css\";\nimport { getDOMRangeRect } from \"~/utils/getDOMRangeRect\";\nimport { setFloatingElemPosition } from \"~/utils/setFloatingElemPosition\";\nimport { useLexicalEditorConfig } from \"~/components/LexicalEditorConfig/LexicalEditorConfig\";\nimport { useDeriveValueFromSelection } from \"~/hooks/useCurrentSelection\";\nimport { getSelectedNode } from \"~/utils/getSelectedNode\";\n\ninterface FloatingToolbarProps {\n anchorElem: HTMLElement;\n editor: LexicalEditor;\n}\n\nconst FloatingToolbar: FC<FloatingToolbarProps> = ({ anchorElem, editor }) => {\n const popupCharStylesEditorRef = useRef<HTMLDivElement | null>(null);\n const { toolbarElements } = useLexicalEditorConfig();\n\n const mouseMoveListener = useCallback(\n (e: MouseEvent) => {\n /* Indicates which mouse button(s) was pressed.\n / 1 = mouse left button\n / 3 = mouse left and right button in the same time\n / More info: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons\n */\n if (popupCharStylesEditorRef?.current && (e.buttons === 1 || e.buttons === 3)) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"none\") {\n const x = e.clientX;\n const y = e.clientY;\n const elementUnderMouse = document.elementFromPoint(x, y);\n\n if (!popupCharStylesEditorRef.current.contains(elementUnderMouse)) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n popupCharStylesEditorRef.current.style.pointerEvents = \"none\";\n }\n }\n }\n },\n [popupCharStylesEditorRef]\n );\n\n const mouseUpListener = useCallback(() => {\n if (popupCharStylesEditorRef?.current) {\n if (popupCharStylesEditorRef.current.style.pointerEvents !== \"auto\") {\n popupCharStylesEditorRef.current.style.pointerEvents = \"auto\";\n }\n }\n }, [popupCharStylesEditorRef]);\n\n useEffect(() => {\n if (popupCharStylesEditorRef?.current) {\n document.addEventListener(\"mousemove\", mouseMoveListener);\n document.addEventListener(\"mouseup\", mouseUpListener);\n\n return () => {\n document.removeEventListener(\"mousemove\", mouseMoveListener);\n document.removeEventListener(\"mouseup\", mouseUpListener);\n };\n }\n return;\n }, [popupCharStylesEditorRef]);\n\n const updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection();\n\n const popupCharStylesEditorElem = popupCharStylesEditorRef.current;\n const nativeSelection = window.getSelection();\n\n if (popupCharStylesEditorElem === null) {\n return;\n }\n\n const rootElement = editor.getRootElement();\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement);\n\n setFloatingElemPosition(rangeRect, popupCharStylesEditorElem, anchorElem);\n }\n }, [editor, anchorElem]);\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement;\n\n const update = () => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar();\n });\n };\n\n window.addEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.addEventListener(\"scroll\", update);\n }\n\n return () => {\n window.removeEventListener(\"resize\", update);\n if (scrollerElem) {\n scrollerElem.removeEventListener(\"scroll\", update);\n }\n };\n }, [editor, updateTextFormatFloatingToolbar, anchorElem]);\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n updateTextFormatFloatingToolbar();\n });\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n updateTextFormatFloatingToolbar();\n });\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n updateTextFormatFloatingToolbar();\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor, updateTextFormatFloatingToolbar]);\n\n return (\n <div ref={popupCharStylesEditorRef} className=\"floating-text-format-popup\">\n {editor.isEditable() && (\n <>\n {toolbarElements.map(action => (\n <Fragment key={action.name}>{action.element}</Fragment>\n ))}\n </>\n )}\n </div>\n );\n};\n\n/**\n * TODO: this logic should live in Node classes. A toolbar should not decide when to show itself.\n */\nfunction isLinkNode(selection: RangeSelection) {\n const node = getSelectedNode(selection);\n const parent = node.getParent();\n\n return $isLinkNode(parent) || $isLinkNode(node);\n}\n\nexport interface ToolbarProps {\n anchorElem?: HTMLElement;\n}\n\nexport const Toolbar = ({ anchorElem = document.body }: ToolbarProps) => {\n const [editor] = useLexicalComposerContext();\n const showToolbar = useDeriveValueFromSelection(({ rangeSelection }) => {\n if (!rangeSelection) {\n return false;\n }\n\n return !isLinkNode(rangeSelection) && !rangeSelection.isCollapsed();\n });\n\n if (!showToolbar) {\n return null;\n }\n\n return createPortal(<FloatingToolbar anchorElem={anchorElem} editor={editor} />, anchorElem);\n};\n"],"mappings":"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"}
@@ -1,43 +1,33 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.BoldAction = void 0;
9
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = _interopRequireDefault(require("react"));
11
10
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
11
  var _lexical = require("lexical");
13
- var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
12
+ var _useCurrentSelection2 = require("../../hooks/useCurrentSelection");
14
13
  var BoldAction = function BoldAction() {
15
- var _textBlockSelection$s;
16
14
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
17
15
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
18
16
  editor = _useLexicalComposerCo2[0];
19
- var _useState = (0, _react.useState)(false),
20
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
21
- isBold = _useState2[0],
22
- setIsBold = _useState2[1];
23
- var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
24
- textBlockSelection = _useRichTextEditor.textBlockSelection;
25
- var isBoldSelected = !!(textBlockSelection !== null && textBlockSelection !== void 0 && (_textBlockSelection$s = textBlockSelection.state) !== null && _textBlockSelection$s !== void 0 && _textBlockSelection$s.bold);
17
+ var _useCurrentSelection = (0, _useCurrentSelection2.useCurrentSelection)(),
18
+ rangeSelection = _useCurrentSelection.rangeSelection;
19
+ var isBoldSelected = rangeSelection ? rangeSelection.hasFormat("bold") : false;
26
20
  var handleClick = function handleClick() {
27
21
  editor.dispatchCommand(_lexical.FORMAT_TEXT_COMMAND, "bold");
28
- setIsBold(!isBold);
29
22
  };
30
- (0, _react.useEffect)(function () {
31
- setIsBold(isBoldSelected);
32
- }, [isBoldSelected]);
33
23
  return /*#__PURE__*/_react.default.createElement("button", {
34
- onClick: function onClick() {
35
- return handleClick();
36
- },
37
- className: "popup-item spaced " + (isBold ? "active" : ""),
24
+ onClick: handleClick,
25
+ className: "popup-item spaced " + (isBoldSelected ? "active" : ""),
38
26
  "aria-label": "Format text as bold"
39
27
  }, /*#__PURE__*/_react.default.createElement("i", {
40
28
  className: "format bold"
41
29
  }));
42
30
  };
43
- exports.BoldAction = BoldAction;
31
+ exports.BoldAction = BoldAction;
32
+
33
+ //# sourceMappingURL=BoldAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_LexicalComposerContext","_lexical","_useRichTextEditor2","BoldAction","_textBlockSelection$s","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useState","useState","_useState2","isBold","setIsBold","_useRichTextEditor","useRichTextEditor","textBlockSelection","isBoldSelected","state","bold","handleClick","dispatchCommand","FORMAT_TEXT_COMMAND","useEffect","createElement","onClick","className","exports"],"sources":["BoldAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const BoldAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isBold, setIsBold] = useState(false);\n const { textBlockSelection } = useRichTextEditor();\n const isBoldSelected = !!textBlockSelection?.state?.bold;\n\n const handleClick = () => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n setIsBold(!isBold);\n };\n\n useEffect(() => {\n setIsBold(isBoldSelected);\n }, [isBoldSelected]);\n\n return (\n <button\n onClick={() => handleClick()}\n className={\"popup-item spaced \" + (isBold ? \"active\" : \"\")}\n aria-label=\"Format text as bold\"\n >\n <i className=\"format bold\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AAEO,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAAA,IAAAC,qBAAA;EAC5B,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,SAAA,GAA4B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAL,eAAA,CAAAC,OAAA,EAAAE,SAAA;IAApCG,MAAM,GAAAD,UAAA;IAAEE,SAAS,GAAAF,UAAA;EACxB,IAAAG,kBAAA,GAA+B,IAAAC,qCAAiB,EAAC,CAAC;IAA1CC,kBAAkB,GAAAF,kBAAA,CAAlBE,kBAAkB;EAC1B,IAAMC,cAAc,GAAG,CAAC,EAACD,kBAAkB,aAAlBA,kBAAkB,gBAAAd,qBAAA,GAAlBc,kBAAkB,CAAEE,KAAK,cAAAhB,qBAAA,eAAzBA,qBAAA,CAA2BiB,IAAI;EAExD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACtBZ,MAAM,CAACa,eAAe,CAACC,4BAAmB,EAAE,MAAM,CAAC;IACnDT,SAAS,CAAC,CAACD,MAAM,CAAC;EACtB,CAAC;EAED,IAAAW,gBAAS,EAAC,YAAM;IACZV,SAAS,CAACI,cAAc,CAAC;EAC7B,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,oBACItB,MAAA,CAAAY,OAAA,CAAAiB,aAAA;IACIC,OAAO,EAAE,SAAAA,QAAA;MAAA,OAAML,WAAW,CAAC,CAAC;IAAA,CAAC;IAC7BM,SAAS,EAAE,oBAAoB,IAAId,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC3D,cAAW;EAAqB,gBAEhCjB,MAAA,CAAAY,OAAA,CAAAiB,aAAA;IAAGE,SAAS,EAAC;EAAa,CAAE,CACxB,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAA1B,UAAA,GAAAA,UAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_LexicalComposerContext","_lexical","_useCurrentSelection2","BoldAction","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useCurrentSelection","useCurrentSelection","rangeSelection","isBoldSelected","hasFormat","handleClick","dispatchCommand","FORMAT_TEXT_COMMAND","createElement","onClick","className","exports"],"sources":["BoldAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useCurrentSelection } from \"~/hooks/useCurrentSelection\";\n\nexport const BoldAction = () => {\n const [editor] = useLexicalComposerContext();\n const { rangeSelection } = useCurrentSelection();\n const isBoldSelected = rangeSelection ? rangeSelection.hasFormat(\"bold\") : false;\n\n const handleClick = () => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"bold\");\n };\n\n return (\n <button\n onClick={handleClick}\n className={\"popup-item spaced \" + (isBoldSelected ? \"active\" : \"\")}\n aria-label=\"Format text as bold\"\n >\n <i className=\"format bold\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AAEO,IAAMI,UAAU,GAAG,SAAbA,UAAUA,CAAA,EAAS;EAC5B,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,oBAAA,GAA2B,IAAAC,yCAAmB,EAAC,CAAC;IAAxCC,cAAc,GAAAF,oBAAA,CAAdE,cAAc;EACtB,IAAMC,cAAc,GAAGD,cAAc,GAAGA,cAAc,CAACE,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK;EAEhF,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACtBN,MAAM,CAACO,eAAe,CAACC,4BAAmB,EAAE,MAAM,CAAC;EACvD,CAAC;EAED,oBACIpB,MAAA,CAAAW,OAAA,CAAAU,aAAA;IACIC,OAAO,EAAEJ,WAAY;IACrBK,SAAS,EAAE,oBAAoB,IAAIP,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAE;IACnE,cAAW;EAAqB,gBAEhChB,MAAA,CAAAW,OAAA,CAAAU,aAAA;IAAGE,SAAS,EAAC;EAAa,CAAE,CACxB,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAAlB,UAAA,GAAAA,UAAA"}
@@ -1,56 +1,50 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.BulletListAction = void 0;
9
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = _interopRequireDefault(require("react"));
11
10
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
- var _webinyList = require("../../commands/webiny-list");
11
+ var _commands = require("../../commands");
13
12
  var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
14
- var _findTypographyStyleByHtmlTag = require("../../utils/findTypographyStyleByHtmlTag");
13
+ var _lexicalTheme = require("@webiny/lexical-theme");
14
+ var _lexicalNodes = require("@webiny/lexical-nodes");
15
+ var _useCurrentElement2 = require("../../hooks/useCurrentElement");
15
16
  var BulletListAction = function BulletListAction() {
16
- var _textBlockSelection$s, _textBlockSelection$s3;
17
17
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
18
18
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
19
19
  editor = _useLexicalComposerCo2[0];
20
- var _useState = (0, _react.useState)(false),
21
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
22
- isActive = _useState2[0],
23
- setIsActive = _useState2[1];
20
+ var _useCurrentElement = (0, _useCurrentElement2.useCurrentElement)(),
21
+ element = _useCurrentElement.element;
24
22
  var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
25
- textBlockSelection = _useRichTextEditor.textBlockSelection,
26
23
  themeEmotionMap = _useRichTextEditor.themeEmotionMap;
27
- var isListSelected = textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s = textBlockSelection.state) === null || _textBlockSelection$s === void 0 ? void 0 : _textBlockSelection$s.list.isSelected;
28
- (0, _react.useEffect)(function () {
29
- var _textBlockSelection$s2;
30
- var isListBulletType = (textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s2 = textBlockSelection.state) === null || _textBlockSelection$s2 === void 0 ? void 0 : _textBlockSelection$s2.textType) === "bullet";
31
- setIsActive(isListBulletType);
32
- }, [textBlockSelection === null || textBlockSelection === void 0 ? void 0 : (_textBlockSelection$s3 = textBlockSelection.state) === null || _textBlockSelection$s3 === void 0 ? void 0 : _textBlockSelection$s3.textType, isListSelected]);
24
+ var isList = (0, _lexicalNodes.$isListNode)(element);
25
+ var isBullet = isList && element.getListType() === "bullet";
33
26
  var formatBulletList = function formatBulletList() {
34
- if (!isActive) {
27
+ if (!isBullet) {
35
28
  var _findTypographyStyleB;
36
- var styleId = themeEmotionMap ? (_findTypographyStyleB = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("ul", themeEmotionMap)) === null || _findTypographyStyleB === void 0 ? void 0 : _findTypographyStyleB.id : undefined;
29
+ var styleId = themeEmotionMap ? (_findTypographyStyleB = (0, _lexicalTheme.findTypographyStyleByHtmlTag)("ul", themeEmotionMap)) === null || _findTypographyStyleB === void 0 ? void 0 : _findTypographyStyleB.id : undefined;
37
30
  // will update the active state in the useEffect
38
- editor.dispatchCommand(_webinyList.INSERT_UNORDERED_WEBINY_LIST_COMMAND, {
31
+ editor.dispatchCommand(_commands.INSERT_UNORDERED_LIST_COMMAND, {
39
32
  themeStyleId: styleId
40
33
  });
41
- setIsActive(true);
42
34
  } else {
43
- editor.dispatchCommand(_webinyList.REMOVE_WEBINY_LIST_COMMAND, undefined);
35
+ editor.dispatchCommand(_commands.REMOVE_LIST_COMMAND, undefined);
44
36
  }
45
37
  };
46
38
  return /*#__PURE__*/_react.default.createElement("button", {
47
39
  onClick: function onClick() {
48
40
  return formatBulletList();
49
41
  },
50
- className: "popup-item spaced " + (isActive ? "active" : ""),
42
+ className: "popup-item spaced " + (isBullet ? "active" : ""),
51
43
  "aria-label": "Format text as bullet list"
52
44
  }, /*#__PURE__*/_react.default.createElement("i", {
53
45
  className: "icon bullet-list"
54
46
  }));
55
47
  };
56
- exports.BulletListAction = BulletListAction;
48
+ exports.BulletListAction = BulletListAction;
49
+
50
+ //# sourceMappingURL=BulletListAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_LexicalComposerContext","_webinyList","_useRichTextEditor2","_findTypographyStyleByHtmlTag","BulletListAction","_textBlockSelection$s","_textBlockSelection$s3","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useState","useState","_useState2","isActive","setIsActive","_useRichTextEditor","useRichTextEditor","textBlockSelection","themeEmotionMap","isListSelected","state","list","isSelected","useEffect","_textBlockSelection$s2","isListBulletType","textType","formatBulletList","_findTypographyStyleB","styleId","findTypographyStyleByHtmlTag","id","undefined","dispatchCommand","INSERT_UNORDERED_WEBINY_LIST_COMMAND","themeStyleId","REMOVE_WEBINY_LIST_COMMAND","createElement","onClick","className","exports"],"sources":["BulletListAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n INSERT_UNORDERED_WEBINY_LIST_COMMAND,\n REMOVE_WEBINY_LIST_COMMAND\n} from \"~/commands/webiny-list\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\n\nexport const BulletListAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isActive, setIsActive] = useState<boolean>(false);\n const { textBlockSelection, themeEmotionMap } = useRichTextEditor();\n const isListSelected = textBlockSelection?.state?.list.isSelected;\n\n useEffect(() => {\n const isListBulletType = textBlockSelection?.state?.textType === \"bullet\";\n setIsActive(isListBulletType);\n }, [textBlockSelection?.state?.textType, isListSelected]);\n\n const formatBulletList = () => {\n if (!isActive) {\n const styleId = themeEmotionMap\n ? findTypographyStyleByHtmlTag(\"ul\", themeEmotionMap)?.id\n : undefined;\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_UNORDERED_WEBINY_LIST_COMMAND, { themeStyleId: styleId });\n setIsActive(true);\n } else {\n editor.dispatchCommand(REMOVE_WEBINY_LIST_COMMAND, undefined);\n }\n };\n\n return (\n <button\n onClick={() => formatBulletList()}\n className={\"popup-item spaced \" + (isActive ? \"active\" : \"\")}\n aria-label=\"Format text as bullet list\"\n >\n <i className=\"icon bullet-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AAIA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,6BAAA,GAAAJ,OAAA;AAEO,IAAMK,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;EAAA,IAAAC,qBAAA,EAAAC,sBAAA;EAClC,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,SAAA,GAAgC,IAAAC,eAAQ,EAAU,KAAK,CAAC;IAAAC,UAAA,OAAAL,eAAA,CAAAC,OAAA,EAAAE,SAAA;IAAjDG,QAAQ,GAAAD,UAAA;IAAEE,WAAW,GAAAF,UAAA;EAC5B,IAAAG,kBAAA,GAAgD,IAAAC,qCAAiB,EAAC,CAAC;IAA3DC,kBAAkB,GAAAF,kBAAA,CAAlBE,kBAAkB;IAAEC,eAAe,GAAAH,kBAAA,CAAfG,eAAe;EAC3C,IAAMC,cAAc,GAAGF,kBAAkB,aAAlBA,kBAAkB,wBAAAf,qBAAA,GAAlBe,kBAAkB,CAAEG,KAAK,cAAAlB,qBAAA,uBAAzBA,qBAAA,CAA2BmB,IAAI,CAACC,UAAU;EAEjE,IAAAC,gBAAS,EAAC,YAAM;IAAA,IAAAC,sBAAA;IACZ,IAAMC,gBAAgB,GAAG,CAAAR,kBAAkB,aAAlBA,kBAAkB,wBAAAO,sBAAA,GAAlBP,kBAAkB,CAAEG,KAAK,cAAAI,sBAAA,uBAAzBA,sBAAA,CAA2BE,QAAQ,MAAK,QAAQ;IACzEZ,WAAW,CAACW,gBAAgB,CAAC;EACjC,CAAC,EAAE,CAACR,kBAAkB,aAAlBA,kBAAkB,wBAAAd,sBAAA,GAAlBc,kBAAkB,CAAEG,KAAK,cAAAjB,sBAAA,uBAAzBA,sBAAA,CAA2BuB,QAAQ,EAAEP,cAAc,CAAC,CAAC;EAEzD,IAAMQ,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;IAC3B,IAAI,CAACd,QAAQ,EAAE;MAAA,IAAAe,qBAAA;MACX,IAAMC,OAAO,GAAGX,eAAe,IAAAU,qBAAA,GACzB,IAAAE,0DAA4B,EAAC,IAAI,EAAEZ,eAAe,CAAC,cAAAU,qBAAA,uBAAnDA,qBAAA,CAAqDG,EAAE,GACvDC,SAAS;MACf;MACAvB,MAAM,CAACwB,eAAe,CAACC,gDAAoC,EAAE;QAAEC,YAAY,EAAEN;MAAQ,CAAC,CAAC;MACvFf,WAAW,CAAC,IAAI,CAAC;IACrB,CAAC,MAAM;MACHL,MAAM,CAACwB,eAAe,CAACG,sCAA0B,EAAEJ,SAAS,CAAC;IACjE;EACJ,CAAC;EAED,oBACItC,MAAA,CAAAc,OAAA,CAAA6B,aAAA;IACIC,OAAO,EAAE,SAAAA,QAAA;MAAA,OAAMX,gBAAgB,CAAC,CAAC;IAAA,CAAC;IAClCY,SAAS,EAAE,oBAAoB,IAAI1B,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA4B,gBAEvCnB,MAAA,CAAAc,OAAA,CAAA6B,aAAA;IAAGE,SAAS,EAAC;EAAkB,CAAE,CAC7B,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAAvC,gBAAA,GAAAA,gBAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_LexicalComposerContext","_commands","_useRichTextEditor2","_lexicalTheme","_lexicalNodes","_useCurrentElement2","BulletListAction","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useCurrentElement","useCurrentElement","element","_useRichTextEditor","useRichTextEditor","themeEmotionMap","isList","$isListNode","isBullet","getListType","formatBulletList","_findTypographyStyleB","styleId","findTypographyStyleByHtmlTag","id","undefined","dispatchCommand","INSERT_UNORDERED_LIST_COMMAND","themeStyleId","REMOVE_LIST_COMMAND","createElement","onClick","className","exports"],"sources":["BulletListAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { INSERT_UNORDERED_LIST_COMMAND, REMOVE_LIST_COMMAND } from \"~/commands\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\nimport { findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { $isListNode, ListNode } from \"@webiny/lexical-nodes\";\nimport { useCurrentElement } from \"~/hooks/useCurrentElement\";\n\nexport const BulletListAction = () => {\n const [editor] = useLexicalComposerContext();\n const { element } = useCurrentElement();\n const { themeEmotionMap } = useRichTextEditor();\n const isList = $isListNode(element);\n\n const isBullet = isList && (element as ListNode).getListType() === \"bullet\";\n\n const formatBulletList = () => {\n if (!isBullet) {\n const styleId = themeEmotionMap\n ? findTypographyStyleByHtmlTag(\"ul\", themeEmotionMap)?.id\n : undefined;\n // will update the active state in the useEffect\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, { themeStyleId: styleId });\n } else {\n editor.dispatchCommand(REMOVE_LIST_COMMAND, undefined);\n }\n };\n\n return (\n <button\n onClick={() => formatBulletList()}\n className={\"popup-item spaced \" + (isBullet ? \"active\" : \"\")}\n aria-label=\"Format text as bullet list\"\n >\n <i className=\"icon bullet-list\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AACA,IAAAK,aAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AAEO,IAAMO,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;EAClC,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,kBAAA,GAAoB,IAAAC,qCAAiB,EAAC,CAAC;IAA/BC,OAAO,GAAAF,kBAAA,CAAPE,OAAO;EACf,IAAAC,kBAAA,GAA4B,IAAAC,qCAAiB,EAAC,CAAC;IAAvCC,eAAe,GAAAF,kBAAA,CAAfE,eAAe;EACvB,IAAMC,MAAM,GAAG,IAAAC,yBAAW,EAACL,OAAO,CAAC;EAEnC,IAAMM,QAAQ,GAAGF,MAAM,IAAKJ,OAAO,CAAcO,WAAW,CAAC,CAAC,KAAK,QAAQ;EAE3E,IAAMC,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA,EAAS;IAC3B,IAAI,CAACF,QAAQ,EAAE;MAAA,IAAAG,qBAAA;MACX,IAAMC,OAAO,GAAGP,eAAe,IAAAM,qBAAA,GACzB,IAAAE,0CAA4B,EAAC,IAAI,EAAER,eAAe,CAAC,cAAAM,qBAAA,uBAAnDA,qBAAA,CAAqDG,EAAE,GACvDC,SAAS;MACf;MACAhB,MAAM,CAACiB,eAAe,CAACC,uCAA6B,EAAE;QAAEC,YAAY,EAAEN;MAAQ,CAAC,CAAC;IACpF,CAAC,MAAM;MACHb,MAAM,CAACiB,eAAe,CAACG,6BAAmB,EAAEJ,SAAS,CAAC;IAC1D;EACJ,CAAC;EAED,oBACI/B,MAAA,CAAAc,OAAA,CAAAsB,aAAA;IACIC,OAAO,EAAE,SAAAA,QAAA;MAAA,OAAMX,gBAAgB,CAAC,CAAC;IAAA,CAAC;IAClCY,SAAS,EAAE,oBAAoB,IAAId,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC7D,cAAW;EAA4B,gBAEvCxB,MAAA,CAAAc,OAAA,CAAAsB,aAAA;IAAGE,SAAS,EAAC;EAAkB,CAAE,CAC7B,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAA9B,gBAAA,GAAAA,gBAAA"}
@@ -1,43 +1,33 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
4
  Object.defineProperty(exports, "__esModule", {
6
5
  value: true
7
6
  });
8
7
  exports.CodeHighlightAction = void 0;
9
8
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
- var _react = _interopRequireWildcard(require("react"));
9
+ var _react = _interopRequireDefault(require("react"));
11
10
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
11
  var _lexical = require("lexical");
13
- var _useRichTextEditor2 = require("../../hooks/useRichTextEditor");
12
+ var _useCurrentSelection2 = require("../../hooks/useCurrentSelection");
14
13
  var CodeHighlightAction = function CodeHighlightAction() {
15
- var _textBlockSelection$s;
16
14
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
17
15
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
18
16
  editor = _useLexicalComposerCo2[0];
19
- var _useState = (0, _react.useState)(false),
20
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
21
- isCode = _useState2[0],
22
- setIsCode = _useState2[1];
23
- var _useRichTextEditor = (0, _useRichTextEditor2.useRichTextEditor)(),
24
- textBlockSelection = _useRichTextEditor.textBlockSelection;
25
- var isCodeSelected = !!(textBlockSelection !== null && textBlockSelection !== void 0 && (_textBlockSelection$s = textBlockSelection.state) !== null && _textBlockSelection$s !== void 0 && _textBlockSelection$s.code);
26
- (0, _react.useEffect)(function () {
27
- setIsCode(isCodeSelected);
28
- }, [isCodeSelected]);
17
+ var _useCurrentSelection = (0, _useCurrentSelection2.useCurrentSelection)(),
18
+ rangeSelection = _useCurrentSelection.rangeSelection;
19
+ var isCodeSelected = rangeSelection ? rangeSelection.hasFormat("code") : false;
29
20
  var handleClick = function handleClick() {
30
21
  editor.dispatchCommand(_lexical.FORMAT_TEXT_COMMAND, "code");
31
- setIsCode(!isCode);
32
22
  };
33
23
  return /*#__PURE__*/_react.default.createElement("button", {
34
- onClick: function onClick() {
35
- return handleClick();
36
- },
37
- className: "popup-item spaced " + (isCode ? "active" : ""),
24
+ onClick: handleClick,
25
+ className: "popup-item spaced " + (isCodeSelected ? "active" : ""),
38
26
  "aria-label": "Text code highlight"
39
27
  }, /*#__PURE__*/_react.default.createElement("i", {
40
28
  className: "format code"
41
29
  }));
42
30
  };
43
- exports.CodeHighlightAction = CodeHighlightAction;
31
+ exports.CodeHighlightAction = CodeHighlightAction;
32
+
33
+ //# sourceMappingURL=CodeHighlightAction.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_LexicalComposerContext","_lexical","_useRichTextEditor2","CodeHighlightAction","_textBlockSelection$s","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useState","useState","_useState2","isCode","setIsCode","_useRichTextEditor","useRichTextEditor","textBlockSelection","isCodeSelected","state","code","useEffect","handleClick","dispatchCommand","FORMAT_TEXT_COMMAND","createElement","onClick","className","exports"],"sources":["CodeHighlightAction.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useRichTextEditor } from \"~/hooks/useRichTextEditor\";\n\nexport const CodeHighlightAction = () => {\n const [editor] = useLexicalComposerContext();\n const [isCode, setIsCode] = useState(false);\n const { textBlockSelection } = useRichTextEditor();\n const isCodeSelected = !!textBlockSelection?.state?.code;\n\n useEffect(() => {\n setIsCode(isCodeSelected);\n }, [isCodeSelected]);\n\n const handleClick = () => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\");\n setIsCode(!isCode);\n };\n\n return (\n <button\n onClick={() => handleClick()}\n className={\"popup-item spaced \" + (isCode ? \"active\" : \"\")}\n aria-label=\"Text code highlight\"\n >\n <i className=\"format code\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,mBAAA,GAAAH,OAAA;AAEO,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAS;EAAA,IAAAC,qBAAA;EACrC,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,SAAA,GAA4B,IAAAC,eAAQ,EAAC,KAAK,CAAC;IAAAC,UAAA,OAAAL,eAAA,CAAAC,OAAA,EAAAE,SAAA;IAApCG,MAAM,GAAAD,UAAA;IAAEE,SAAS,GAAAF,UAAA;EACxB,IAAAG,kBAAA,GAA+B,IAAAC,qCAAiB,EAAC,CAAC;IAA1CC,kBAAkB,GAAAF,kBAAA,CAAlBE,kBAAkB;EAC1B,IAAMC,cAAc,GAAG,CAAC,EAACD,kBAAkB,aAAlBA,kBAAkB,gBAAAd,qBAAA,GAAlBc,kBAAkB,CAAEE,KAAK,cAAAhB,qBAAA,eAAzBA,qBAAA,CAA2BiB,IAAI;EAExD,IAAAC,gBAAS,EAAC,YAAM;IACZP,SAAS,CAACI,cAAc,CAAC;EAC7B,CAAC,EAAE,CAACA,cAAc,CAAC,CAAC;EAEpB,IAAMI,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACtBb,MAAM,CAACc,eAAe,CAACC,4BAAmB,EAAE,MAAM,CAAC;IACnDV,SAAS,CAAC,CAACD,MAAM,CAAC;EACtB,CAAC;EAED,oBACIjB,MAAA,CAAAY,OAAA,CAAAiB,aAAA;IACIC,OAAO,EAAE,SAAAA,QAAA;MAAA,OAAMJ,WAAW,CAAC,CAAC;IAAA,CAAC;IAC7BK,SAAS,EAAE,oBAAoB,IAAId,MAAM,GAAG,QAAQ,GAAG,EAAE,CAAE;IAC3D,cAAW;EAAqB,gBAEhCjB,MAAA,CAAAY,OAAA,CAAAiB,aAAA;IAAGE,SAAS,EAAC;EAAa,CAAE,CACxB,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAA1B,mBAAA,GAAAA,mBAAA"}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_LexicalComposerContext","_lexical","_useCurrentSelection2","CodeHighlightAction","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","_slicedToArray2","default","editor","_useCurrentSelection","useCurrentSelection","rangeSelection","isCodeSelected","hasFormat","handleClick","dispatchCommand","FORMAT_TEXT_COMMAND","createElement","onClick","className","exports"],"sources":["CodeHighlightAction.tsx"],"sourcesContent":["import React from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useCurrentSelection } from \"~/hooks/useCurrentSelection\";\n\nexport const CodeHighlightAction = () => {\n const [editor] = useLexicalComposerContext();\n const { rangeSelection } = useCurrentSelection();\n const isCodeSelected = rangeSelection ? rangeSelection.hasFormat(\"code\") : false;\n\n const handleClick = () => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, \"code\");\n };\n\n return (\n <button\n onClick={handleClick}\n className={\"popup-item spaced \" + (isCodeSelected ? \"active\" : \"\")}\n aria-label=\"Text code highlight\"\n >\n <i className=\"format code\" />\n </button>\n );\n};\n"],"mappings":";;;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,uBAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AAEO,IAAMI,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAA,EAAS;EACrC,IAAAC,qBAAA,GAAiB,IAAAC,iDAAyB,EAAC,CAAC;IAAAC,sBAAA,OAAAC,eAAA,CAAAC,OAAA,EAAAJ,qBAAA;IAArCK,MAAM,GAAAH,sBAAA;EACb,IAAAI,oBAAA,GAA2B,IAAAC,yCAAmB,EAAC,CAAC;IAAxCC,cAAc,GAAAF,oBAAA,CAAdE,cAAc;EACtB,IAAMC,cAAc,GAAGD,cAAc,GAAGA,cAAc,CAACE,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK;EAEhF,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA,EAAS;IACtBN,MAAM,CAACO,eAAe,CAACC,4BAAmB,EAAE,MAAM,CAAC;EACvD,CAAC;EAED,oBACIpB,MAAA,CAAAW,OAAA,CAAAU,aAAA;IACIC,OAAO,EAAEJ,WAAY;IACrBK,SAAS,EAAE,oBAAoB,IAAIP,cAAc,GAAG,QAAQ,GAAG,EAAE,CAAE;IACnE,cAAW;EAAqB,gBAEhChB,MAAA,CAAAW,OAAA,CAAAU,aAAA;IAAGE,SAAS,EAAC;EAAa,CAAE,CACxB,CAAC;AAEjB,CAAC;AAACC,OAAA,CAAAlB,mBAAA,GAAAA,mBAAA"}
@@ -9,11 +9,11 @@ exports.FontColorPicker = exports.FontColorAction = void 0;
9
9
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
12
- var _lexical = require("lexical");
13
12
  var _reactComposition = require("@webiny/react-composition");
14
13
  var _FontColorActionContext = require("../../context/FontColorActionContext");
15
- var _FontColorNode = require("../../nodes/FontColorNode");
14
+ var _lexicalNodes = require("@webiny/lexical-nodes");
16
15
  var _getSelectedNode = require("../../utils/getSelectedNode");
16
+ var _useCurrentSelection = require("../../hooks/useCurrentSelection");
17
17
  var FontColorPicker = (0, _reactComposition.makeComposable)("FontColorPicker", function () {
18
18
  (0, _react.useEffect)(function () {
19
19
  console.log("Default FontColorPicker, please add your own component");
@@ -36,48 +36,31 @@ var FontColorAction = function FontColorAction() {
36
36
  var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
37
37
  _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
38
38
  editor = _useLexicalComposerCo2[0];
39
- var _useState = (0, _react.useState)("#000"),
40
- _useState2 = (0, _slicedToArray2.default)(_useState, 2),
41
- fontColor = _useState2[0],
42
- setFontColor = _useState2[1];
43
- var setFontColorSelect = (0, _react.useCallback)(function (fontColorValue) {
44
- setFontColor(fontColorValue);
45
- }, [fontColor]);
39
+ var fontColor = (0, _useCurrentSelection.useDeriveValueFromSelection)(function (_ref2) {
40
+ var rangeSelection = _ref2.rangeSelection;
41
+ if (!rangeSelection) {
42
+ return "#000";
43
+ }
44
+ var node = (0, _getSelectedNode.getSelectedNode)(rangeSelection);
45
+ return (0, _lexicalNodes.$isFontColorNode)(node) ? node.getColorStyle().color : "#000";
46
+ });
46
47
  var onFontColorSelect = (0, _react.useCallback)(function (colorValue, themeColorName) {
47
- setFontColorSelect(colorValue);
48
- editor.dispatchCommand(_FontColorNode.ADD_FONT_COLOR_COMMAND, {
48
+ editor.dispatchCommand(_lexicalNodes.ADD_FONT_COLOR_COMMAND, {
49
49
  color: colorValue,
50
50
  themeColorName: themeColorName
51
51
  });
52
52
  }, []);
53
- var updatePopup = (0, _react.useCallback)(function () {
54
- editor.getEditorState().read(function () {
55
- var selection = (0, _lexical.$getSelection)();
56
- if (!(0, _lexical.$isRangeSelection)(selection)) {
57
- return;
58
- }
59
- var node = (0, _getSelectedNode.getSelectedNode)(selection);
60
- if ((0, _FontColorNode.$isFontColorNode)(node)) {
61
- var colorStyle = node.getColorStyle();
62
- setFontColor(colorStyle.color);
63
- }
64
- });
65
- }, [editor]);
66
- (0, _react.useEffect)(function () {
67
- document.addEventListener("selectionchange", updatePopup);
68
- return function () {
69
- document.removeEventListener("selectionchange", updatePopup);
70
- };
71
- }, [updatePopup]);
72
- return /*#__PURE__*/_react.default.createElement(_FontColorActionContext.FontColorActionContext.Provider, {
73
- value: {
53
+ var context = (0, _react.useMemo)(function () {
54
+ return {
74
55
  value: fontColor,
75
56
  applyColor: onFontColorSelect
76
- }
57
+ };
58
+ }, [onFontColorSelect, fontColor]);
59
+ return /*#__PURE__*/_react.default.createElement(_FontColorActionContext.FontColorActionContext.Provider, {
60
+ value: context
77
61
  }, /*#__PURE__*/_react.default.createElement(FontColorPicker, null));
78
62
  };
79
63
  exports.FontColorAction = FontColorAction;
80
- {
81
- /* Color picker dropdown settings */
82
- }
83
- FontColorAction.ColorPicker = FontActionColorPicker;
64
+ FontColorAction.ColorPicker = FontActionColorPicker;
65
+
66
+ //# sourceMappingURL=FontColorAction.js.map