@webiny/lexical-editor 5.37.0-beta.0 → 5.37.0-beta.1

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 (205) hide show
  1. package/commands/insertFiles.d.ts +14 -0
  2. package/commands/insertFiles.js +9 -0
  3. package/commands/insertFiles.js.map +1 -0
  4. package/commands/webiny-list.js.map +1 -1
  5. package/commands/webiny-quote.js.map +1 -1
  6. package/components/Editor/HeadingEditor.js +7 -9
  7. package/components/Editor/HeadingEditor.js.map +1 -1
  8. package/components/Editor/ParagraphEditor.js +7 -10
  9. package/components/Editor/ParagraphEditor.js.map +1 -1
  10. package/components/Editor/RichTextEditor.d.ts +9 -1
  11. package/components/Editor/RichTextEditor.js +41 -20
  12. package/components/Editor/RichTextEditor.js.map +1 -1
  13. package/components/ImageComponent.d.ts +23 -0
  14. package/components/ImageComponent.js +252 -0
  15. package/components/ImageComponent.js.map +1 -0
  16. package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +19 -10
  17. package/components/LexicalEditorConfig/LexicalEditorConfig.js +63 -9
  18. package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -1
  19. package/components/LexicalEditorConfig/components/Node.d.ts +14 -0
  20. package/components/LexicalEditorConfig/components/Node.js +38 -0
  21. package/components/LexicalEditorConfig/components/Node.js.map +1 -0
  22. package/components/LexicalEditorConfig/components/Plugin.d.ts +13 -0
  23. package/components/LexicalEditorConfig/components/Plugin.js +38 -0
  24. package/components/LexicalEditorConfig/components/Plugin.js.map +1 -0
  25. package/components/LexicalEditorConfig/components/ToolbarElement.d.ts +13 -0
  26. package/components/LexicalEditorConfig/components/ToolbarElement.js +38 -0
  27. package/components/LexicalEditorConfig/components/ToolbarElement.js.map +1 -0
  28. package/components/LexicalHtmlRenderer.d.ts +2 -0
  29. package/components/LexicalHtmlRenderer.js +1 -1
  30. package/components/LexicalHtmlRenderer.js.map +1 -1
  31. package/components/Toolbar/StaticToolbar.css +260 -0
  32. package/components/Toolbar/StaticToolbar.d.ts +3 -0
  33. package/components/Toolbar/StaticToolbar.js +101 -0
  34. package/components/Toolbar/StaticToolbar.js.map +1 -0
  35. package/components/Toolbar/Toolbar.css +215 -4
  36. package/components/Toolbar/Toolbar.d.ts +2 -8
  37. package/components/Toolbar/Toolbar.js +25 -37
  38. package/components/Toolbar/Toolbar.js.map +1 -1
  39. package/components/ToolbarActions/BoldAction.js.map +1 -1
  40. package/components/ToolbarActions/BulletListAction.js +2 -2
  41. package/components/ToolbarActions/BulletListAction.js.map +1 -1
  42. package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
  43. package/components/ToolbarActions/FontColorAction.js +1 -1
  44. package/components/ToolbarActions/FontColorAction.js.map +1 -1
  45. package/components/ToolbarActions/FontSizeAction.js.map +1 -1
  46. package/components/ToolbarActions/ImageAction.d.ts +2 -0
  47. package/components/ToolbarActions/ImageAction.js +53 -0
  48. package/components/ToolbarActions/ImageAction.js.map +1 -0
  49. package/components/ToolbarActions/ItalicAction.js.map +1 -1
  50. package/components/ToolbarActions/LinkAction.js.map +1 -1
  51. package/components/ToolbarActions/NumberedListAction.js +16 -4
  52. package/components/ToolbarActions/NumberedListAction.js.map +1 -1
  53. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  54. package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
  55. package/components/ToolbarActions/TypographyAction.js +1 -1
  56. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  57. package/components/ToolbarActions/UnderlineAction.js.map +1 -1
  58. package/context/FontColorActionContext.js.map +1 -1
  59. package/context/RichTextEditorContext.d.ts +3 -1
  60. package/context/RichTextEditorContext.js +17 -11
  61. package/context/RichTextEditorContext.js.map +1 -1
  62. package/context/SharedHistoryContext.js.map +1 -1
  63. package/context/TextAlignmentActionContextProps.js.map +1 -1
  64. package/context/TypographyActionContext.js.map +1 -1
  65. package/hooks/useFontColorPicker.js.map +1 -1
  66. package/hooks/useList.js.map +1 -1
  67. package/hooks/useQuote.js.map +1 -1
  68. package/hooks/useRichTextEditor.js.map +1 -1
  69. package/hooks/useTextAlignmentAction.js.map +1 -1
  70. package/hooks/useTypographyAction.js.map +1 -1
  71. package/images/icons/insert-image.svg +4 -0
  72. package/index.d.ts +9 -9
  73. package/index.js +50 -44
  74. package/index.js.map +1 -1
  75. package/nodes/FontColorNode.js +0 -4
  76. package/nodes/FontColorNode.js.map +1 -1
  77. package/nodes/HeadingNode.js.map +1 -1
  78. package/nodes/ImageNode.d.ts +50 -0
  79. package/nodes/ImageNode.js +206 -0
  80. package/nodes/ImageNode.js.map +1 -0
  81. package/nodes/ListItemNode.js +0 -4
  82. package/nodes/ListItemNode.js.map +1 -1
  83. package/nodes/ListNode/formatList.js.map +1 -1
  84. package/nodes/ListNode.js +0 -6
  85. package/nodes/ListNode.js.map +1 -1
  86. package/nodes/ParagraphNode.js.map +1 -1
  87. package/nodes/QuoteNode.js.map +1 -1
  88. package/nodes/TypographyElementNode.js +2 -6
  89. package/nodes/TypographyElementNode.js.map +1 -1
  90. package/nodes/imageNode.css +43 -0
  91. package/nodes/webinyNodes.js +2 -1
  92. package/nodes/webinyNodes.js.map +1 -1
  93. package/package.json +6 -5
  94. package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -1
  95. package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -1
  96. package/plugins/CodeHighlightPlugin/index.js.map +1 -1
  97. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +5 -1
  98. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +52 -14
  99. package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
  100. package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
  101. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  102. package/plugins/ImagesPlugin/ImagesPlugin.d.ts +13 -0
  103. package/plugins/ImagesPlugin/ImagesPlugin.js +152 -0
  104. package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -0
  105. package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -1
  106. package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -1
  107. package/plugins/ListPLugin/ListPlugin.d.ts +1 -0
  108. package/plugins/{WebinyListPLugin/WebinyListPlugin.js → ListPLugin/ListPlugin.js} +3 -3
  109. package/plugins/ListPLugin/ListPlugin.js.map +1 -0
  110. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  111. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
  112. package/themes/webinyLexicalTheme.css +0 -6
  113. package/themes/webinyLexicalTheme.js +4 -1
  114. package/themes/webinyLexicalTheme.js.map +1 -1
  115. package/types.d.ts +9 -0
  116. package/types.js +28 -1
  117. package/types.js.map +1 -1
  118. package/ui/ContentEditable.css +22 -0
  119. package/ui/ContentEditable.d.ts +12 -0
  120. package/ui/ContentEditable.js +24 -0
  121. package/ui/ContentEditable.js.map +1 -0
  122. package/ui/Divider.js.map +1 -1
  123. package/ui/DropDown.js.map +1 -1
  124. package/ui/ImageResizer.d.ts +26 -0
  125. package/ui/ImageResizer.js +213 -0
  126. package/ui/ImageResizer.js.map +1 -0
  127. package/ui/LinkPreview.js +7 -7
  128. package/ui/LinkPreview.js.map +1 -1
  129. package/ui/Placeholder.css +2 -5
  130. package/ui/Placeholder.d.ts +3 -1
  131. package/ui/Placeholder.js +5 -1
  132. package/ui/Placeholder.js.map +1 -1
  133. package/ui/TextInput.js.map +1 -1
  134. package/ui/ToolbarActionDialog.js.map +1 -1
  135. package/utils/canUseDOM.d.ts +1 -0
  136. package/utils/canUseDOM.js +8 -0
  137. package/utils/canUseDOM.js.map +1 -0
  138. package/utils/files.d.ts +12 -0
  139. package/utils/files.js +62 -0
  140. package/utils/files.js.map +1 -0
  141. package/utils/findTypographyStyleByHtmlTag.js.map +1 -1
  142. package/utils/generateInitialLexicalValue.js.map +1 -1
  143. package/utils/getDOMRangeRect.js.map +1 -1
  144. package/utils/getLexicalTextSelectionState.js.map +1 -1
  145. package/utils/getSelectedNode.js.map +1 -1
  146. package/utils/getTransparentImage.d.ts +1 -0
  147. package/utils/getTransparentImage.js +10 -0
  148. package/utils/getTransparentImage.js.map +1 -0
  149. package/{plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts → utils/isHTMLElement.d.ts} +3 -4
  150. package/utils/isHTMLElement.js +16 -0
  151. package/utils/isHTMLElement.js.map +1 -0
  152. package/utils/isValidJSON.js.map +1 -1
  153. package/utils/isValidLexicalData.js.map +1 -1
  154. package/utils/nodes/clearNodeFormating.js.map +1 -1
  155. package/utils/nodes/formatToHeading.js.map +1 -1
  156. package/utils/nodes/formatToParagraph.js.map +1 -1
  157. package/utils/nodes/formatToQuote.js.map +1 -1
  158. package/utils/nodes/insertImage.d.ts +2 -0
  159. package/utils/nodes/insertImage.js +22 -0
  160. package/utils/nodes/insertImage.js.map +1 -0
  161. package/utils/nodes/listNode.js.map +1 -1
  162. package/utils/point.js +0 -3
  163. package/utils/point.js.map +1 -1
  164. package/utils/rect.js +0 -5
  165. package/utils/rect.js.map +1 -1
  166. package/utils/sanitizeUrl.js.map +1 -1
  167. package/utils/setFloatingElemPosition.js.map +1 -1
  168. package/utils/styleObjectToString.js.map +1 -1
  169. package/utils/toTypographyEmotionMap.d.ts +1 -1
  170. package/utils/toTypographyEmotionMap.js +7 -2
  171. package/utils/toTypographyEmotionMap.js.map +1 -1
  172. package/components/AddRichTextEditorNodeType.d.ts +0 -6
  173. package/components/AddRichTextEditorNodeType.js +0 -28
  174. package/components/AddRichTextEditorNodeType.js.map +0 -1
  175. package/components/AddRichTextEditorPlugin.d.ts +0 -12
  176. package/components/AddRichTextEditorPlugin.js +0 -33
  177. package/components/AddRichTextEditorPlugin.js.map +0 -1
  178. package/components/AddToolbarAction.d.ts +0 -7
  179. package/components/AddToolbarAction.js +0 -33
  180. package/components/AddToolbarAction.js.map +0 -1
  181. package/components/Toolbar/HeadingToolbar.d.ts +0 -12
  182. package/components/Toolbar/HeadingToolbar.js +0 -23
  183. package/components/Toolbar/HeadingToolbar.js.map +0 -1
  184. package/components/Toolbar/ParagraphToolbar.d.ts +0 -12
  185. package/components/Toolbar/ParagraphToolbar.js +0 -23
  186. package/components/Toolbar/ParagraphToolbar.js.map +0 -1
  187. package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +0 -2
  188. package/components/ToolbarPresets/HeadingToolbarPreset.js +0 -56
  189. package/components/ToolbarPresets/HeadingToolbarPreset.js.map +0 -1
  190. package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +0 -2
  191. package/components/ToolbarPresets/ParagraphToolbarPreset.js +0 -71
  192. package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +0 -1
  193. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +0 -46
  194. package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +0 -1
  195. package/plugins/AutoLinkPlugin/index.d.ts +0 -1
  196. package/plugins/AutoLinkPlugin/index.js +0 -16
  197. package/plugins/AutoLinkPlugin/index.js.map +0 -1
  198. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +0 -17
  199. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +0 -88
  200. package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +0 -1
  201. package/plugins/ClickableLinkPlugin/index.d.ts +0 -1
  202. package/plugins/ClickableLinkPlugin/index.js +0 -16
  203. package/plugins/ClickableLinkPlugin/index.js.map +0 -1
  204. package/plugins/WebinyListPLugin/WebinyListPlugin.d.ts +0 -1
  205. package/plugins/WebinyListPLugin/WebinyListPlugin.js.map +0 -1
@@ -0,0 +1,252 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = ImageComponent;
9
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
10
+ require("../nodes/imageNode.css");
11
+ var _LexicalAutoFocusPlugin = require("@lexical/react/LexicalAutoFocusPlugin");
12
+ var _LexicalComposerContext = require("@lexical/react/LexicalComposerContext");
13
+ var _LexicalErrorBoundary = _interopRequireDefault(require("@lexical/react/LexicalErrorBoundary"));
14
+ var _LexicalHistoryPlugin = require("@lexical/react/LexicalHistoryPlugin");
15
+ var _LexicalNestedComposer = require("@lexical/react/LexicalNestedComposer");
16
+ var _LexicalRichTextPlugin = require("@lexical/react/LexicalRichTextPlugin");
17
+ var _useLexicalNodeSelection = require("@lexical/react/useLexicalNodeSelection");
18
+ var _utils = require("@lexical/utils");
19
+ var _lexical = require("lexical");
20
+ var React = _interopRequireWildcard(require("react"));
21
+ var _Placeholder = require("../ui/Placeholder");
22
+ var _ImageResizer = require("../ui/ImageResizer");
23
+ var _SharedHistoryContext = require("../context/SharedHistoryContext");
24
+ var _ImageNode = require("../nodes/ImageNode");
25
+ var _ContentEditable = require("../ui/ContentEditable");
26
+ /**
27
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
28
+ *
29
+ * This source code is licensed under the MIT license found in the
30
+ * LICENSE file in the root directory of this source tree.
31
+ *
32
+ */
33
+
34
+ var imageCache = new Set();
35
+ function useSuspenseImage(src) {
36
+ if (!imageCache.has(src)) {
37
+ throw new Promise(function (resolve) {
38
+ var img = new Image();
39
+ img.src = src;
40
+ img.onload = function () {
41
+ imageCache.add(src);
42
+ resolve(null);
43
+ };
44
+ });
45
+ }
46
+ }
47
+ function LazyImage(_ref) {
48
+ var id = _ref.id,
49
+ altText = _ref.altText,
50
+ className = _ref.className,
51
+ imageRef = _ref.imageRef,
52
+ src = _ref.src,
53
+ width = _ref.width,
54
+ height = _ref.height,
55
+ maxWidth = _ref.maxWidth;
56
+ useSuspenseImage(src);
57
+ return /*#__PURE__*/React.createElement("img", {
58
+ id: id,
59
+ className: className || undefined,
60
+ src: src,
61
+ alt: altText,
62
+ ref: imageRef,
63
+ style: {
64
+ height: height,
65
+ maxWidth: maxWidth,
66
+ width: width
67
+ },
68
+ draggable: "false"
69
+ });
70
+ }
71
+ function ImageComponent(_ref2) {
72
+ var id = _ref2.id,
73
+ src = _ref2.src,
74
+ altText = _ref2.altText,
75
+ nodeKey = _ref2.nodeKey,
76
+ width = _ref2.width,
77
+ height = _ref2.height,
78
+ maxWidth = _ref2.maxWidth,
79
+ resizable = _ref2.resizable,
80
+ showCaption = _ref2.showCaption,
81
+ caption = _ref2.caption,
82
+ captionsEnabled = _ref2.captionsEnabled;
83
+ var imageRef = (0, React.useRef)(null);
84
+ var buttonRef = (0, React.useRef)(null);
85
+ var _useLexicalNodeSelect = (0, _useLexicalNodeSelection.useLexicalNodeSelection)(nodeKey),
86
+ _useLexicalNodeSelect2 = (0, _slicedToArray2.default)(_useLexicalNodeSelect, 3),
87
+ isSelected = _useLexicalNodeSelect2[0],
88
+ setSelected = _useLexicalNodeSelect2[1],
89
+ clearSelection = _useLexicalNodeSelect2[2];
90
+ var _useState = (0, React.useState)(false),
91
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
92
+ isResizing = _useState2[0],
93
+ setIsResizing = _useState2[1];
94
+ var _useLexicalComposerCo = (0, _LexicalComposerContext.useLexicalComposerContext)(),
95
+ _useLexicalComposerCo2 = (0, _slicedToArray2.default)(_useLexicalComposerCo, 1),
96
+ editor = _useLexicalComposerCo2[0];
97
+ var _useState3 = (0, React.useState)(null),
98
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
99
+ selection = _useState4[0],
100
+ setSelection = _useState4[1];
101
+ var activeEditorRef = (0, React.useRef)(null);
102
+ var onDelete = (0, React.useCallback)(function (payload) {
103
+ if (isSelected && (0, _lexical.$isNodeSelection)((0, _lexical.$getSelection)())) {
104
+ var event = payload;
105
+ event.preventDefault();
106
+ var node = (0, _lexical.$getNodeByKey)(nodeKey);
107
+ if ((0, _ImageNode.$isImageNode)(node)) {
108
+ node.remove();
109
+ }
110
+ setSelected(false);
111
+ }
112
+ return false;
113
+ }, [isSelected, nodeKey, setSelected]);
114
+ var onEnter = (0, React.useCallback)(function (event) {
115
+ var latestSelection = (0, _lexical.$getSelection)();
116
+ var buttonElem = buttonRef.current;
117
+ if (isSelected && (0, _lexical.$isNodeSelection)(latestSelection) && latestSelection.getNodes().length === 1) {
118
+ if (showCaption) {
119
+ // Move focus into nested editor
120
+ (0, _lexical.$setSelection)(null);
121
+ event.preventDefault();
122
+ caption.focus();
123
+ return true;
124
+ } else if (buttonElem !== null && buttonElem !== document.activeElement) {
125
+ event.preventDefault();
126
+ buttonElem.focus();
127
+ return true;
128
+ }
129
+ }
130
+ return false;
131
+ }, [caption, isSelected, showCaption]);
132
+ var onEscape = (0, React.useCallback)(function (event) {
133
+ if (activeEditorRef.current === caption || buttonRef.current === event.target) {
134
+ (0, _lexical.$setSelection)(null);
135
+ editor.update(function () {
136
+ setSelected(true);
137
+ var parentRootElement = editor.getRootElement();
138
+ if (parentRootElement !== null) {
139
+ parentRootElement.focus();
140
+ }
141
+ });
142
+ return true;
143
+ }
144
+ return false;
145
+ }, [caption, editor, setSelected]);
146
+ (0, React.useEffect)(function () {
147
+ var isMounted = true;
148
+ var unregister = (0, _utils.mergeRegister)(editor.registerUpdateListener(function (_ref3) {
149
+ var editorState = _ref3.editorState;
150
+ if (isMounted) {
151
+ setSelection(editorState.read(function () {
152
+ return (0, _lexical.$getSelection)();
153
+ }));
154
+ }
155
+ }), editor.registerCommand(_lexical.SELECTION_CHANGE_COMMAND, function (_, activeEditor) {
156
+ activeEditorRef.current = activeEditor;
157
+ return false;
158
+ }, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.CLICK_COMMAND, function (payload) {
159
+ var event = payload;
160
+ if (isResizing) {
161
+ return true;
162
+ }
163
+ if (event.target === imageRef.current) {
164
+ if (event.shiftKey) {
165
+ setSelected(!isSelected);
166
+ } else {
167
+ clearSelection();
168
+ setSelected(true);
169
+ }
170
+ return true;
171
+ }
172
+ return false;
173
+ }, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.DRAGSTART_COMMAND, function (event) {
174
+ if (event.target === imageRef.current) {
175
+ // TODO This is just a temporary workaround for FF to behave like other browsers.
176
+ // Ideally, this handles drag & drop too (and all browsers).
177
+ event.preventDefault();
178
+ return true;
179
+ }
180
+ return false;
181
+ }, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.KEY_DELETE_COMMAND, onDelete, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.KEY_BACKSPACE_COMMAND, onDelete, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.KEY_ENTER_COMMAND, onEnter, _lexical.COMMAND_PRIORITY_LOW), editor.registerCommand(_lexical.KEY_ESCAPE_COMMAND, onEscape, _lexical.COMMAND_PRIORITY_LOW));
182
+ return function () {
183
+ isMounted = false;
184
+ unregister();
185
+ };
186
+ }, [clearSelection, editor, isResizing, isSelected, nodeKey, onDelete, onEnter, onEscape, setSelected]);
187
+ var setShowCaption = function setShowCaption() {
188
+ editor.update(function () {
189
+ var node = (0, _lexical.$getNodeByKey)(nodeKey);
190
+ if ((0, _ImageNode.$isImageNode)(node)) {
191
+ node.setShowCaption(true);
192
+ }
193
+ });
194
+ };
195
+ var onResizeEnd = function onResizeEnd(nextWidth, nextHeight) {
196
+ // Delay hiding the resize bars for click case
197
+ setTimeout(function () {
198
+ setIsResizing(false);
199
+ }, 200);
200
+ editor.update(function () {
201
+ var node = (0, _lexical.$getNodeByKey)(nodeKey);
202
+ if ((0, _ImageNode.$isImageNode)(node)) {
203
+ node.setWidthAndHeight(nextWidth, nextHeight);
204
+ }
205
+ });
206
+ };
207
+ var onResizeStart = function onResizeStart() {
208
+ setIsResizing(true);
209
+ };
210
+ var _useSharedHistoryCont = (0, _SharedHistoryContext.useSharedHistoryContext)(),
211
+ historyState = _useSharedHistoryCont.historyState;
212
+ var draggable = isSelected && (0, _lexical.$isNodeSelection)(selection) && !isResizing;
213
+ var isFocused = isSelected || isResizing;
214
+ return /*#__PURE__*/React.createElement(React.Suspense, {
215
+ fallback: null
216
+ }, /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
217
+ draggable: draggable
218
+ }, /*#__PURE__*/React.createElement(LazyImage, {
219
+ id: id,
220
+ className: isFocused ? "focused ".concat((0, _lexical.$isNodeSelection)(selection) ? "draggable" : "") : null,
221
+ src: src,
222
+ altText: altText,
223
+ imageRef: imageRef,
224
+ width: width,
225
+ height: height,
226
+ maxWidth: maxWidth
227
+ })), showCaption && /*#__PURE__*/React.createElement("div", {
228
+ className: "image-caption-container"
229
+ }, /*#__PURE__*/React.createElement(_LexicalNestedComposer.LexicalNestedComposer, {
230
+ initialEditor: caption
231
+ }, /*#__PURE__*/React.createElement(_LexicalAutoFocusPlugin.AutoFocusPlugin, null), /*#__PURE__*/React.createElement(_LexicalHistoryPlugin.HistoryPlugin, {
232
+ externalHistoryState: historyState
233
+ }), /*#__PURE__*/React.createElement(_LexicalRichTextPlugin.RichTextPlugin, {
234
+ contentEditable: /*#__PURE__*/React.createElement(_ContentEditable.LexicalContentEditable, {
235
+ className: "ImageNode__contentEditable"
236
+ }),
237
+ placeholder: /*#__PURE__*/React.createElement(_Placeholder.Placeholder, {
238
+ className: "ImageNode__placeholder"
239
+ }, "Enter a caption..."),
240
+ ErrorBoundary: _LexicalErrorBoundary.default
241
+ }))), resizable && (0, _lexical.$isNodeSelection)(selection) && isFocused && /*#__PURE__*/React.createElement(_ImageResizer.ImageResizer, {
242
+ showCaption: showCaption,
243
+ setShowCaption: setShowCaption,
244
+ editor: editor,
245
+ buttonRef: buttonRef,
246
+ imageRef: imageRef,
247
+ maxWidth: maxWidth,
248
+ onResizeStart: onResizeStart,
249
+ onResizeEnd: onResizeEnd,
250
+ captionsEnabled: captionsEnabled
251
+ })));
252
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["require","_LexicalAutoFocusPlugin","_LexicalComposerContext","_LexicalErrorBoundary","_interopRequireDefault","_LexicalHistoryPlugin","_LexicalNestedComposer","_LexicalRichTextPlugin","_useLexicalNodeSelection","_utils","_lexical","React","_interopRequireWildcard","_Placeholder","_ImageResizer","_SharedHistoryContext","_ImageNode","_ContentEditable","imageCache","Set","useSuspenseImage","src","has","Promise","resolve","img","Image","onload","add","LazyImage","_ref","id","altText","className","imageRef","width","height","maxWidth","createElement","undefined","alt","ref","style","draggable","ImageComponent","_ref2","nodeKey","resizable","showCaption","caption","captionsEnabled","useRef","buttonRef","_useLexicalNodeSelect","useLexicalNodeSelection","_useLexicalNodeSelect2","_slicedToArray2","default","isSelected","setSelected","clearSelection","_useState","useState","_useState2","isResizing","setIsResizing","_useLexicalComposerCo","useLexicalComposerContext","_useLexicalComposerCo2","editor","_useState3","_useState4","selection","setSelection","activeEditorRef","onDelete","useCallback","payload","$isNodeSelection","$getSelection","event","preventDefault","node","$getNodeByKey","$isImageNode","remove","onEnter","latestSelection","buttonElem","current","getNodes","length","$setSelection","focus","document","activeElement","onEscape","target","update","parentRootElement","getRootElement","useEffect","isMounted","unregister","mergeRegister","registerUpdateListener","_ref3","editorState","read","registerCommand","SELECTION_CHANGE_COMMAND","_","activeEditor","COMMAND_PRIORITY_LOW","CLICK_COMMAND","shiftKey","DRAGSTART_COMMAND","KEY_DELETE_COMMAND","KEY_BACKSPACE_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","setShowCaption","onResizeEnd","nextWidth","nextHeight","setTimeout","setWidthAndHeight","onResizeStart","_useSharedHistoryCont","useSharedHistoryContext","historyState","isFocused","Suspense","fallback","Fragment","concat","LexicalNestedComposer","initialEditor","AutoFocusPlugin","HistoryPlugin","externalHistoryState","RichTextPlugin","contentEditable","LexicalContentEditable","placeholder","Placeholder","ErrorBoundary","LexicalErrorBoundary","ImageResizer"],"sources":["ImageComponent.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type { GridSelection, LexicalEditor, NodeKey, NodeSelection, RangeSelection } from \"lexical\";\n\nimport \"~/nodes/imageNode.css\";\n\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport LexicalErrorBoundary from \"@lexical/react/LexicalErrorBoundary\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { LexicalNestedComposer } from \"@lexical/react/LexicalNestedComposer\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport {\n $getNodeByKey,\n $getSelection,\n $isNodeSelection,\n $setSelection,\n CLICK_COMMAND,\n COMMAND_PRIORITY_LOW,\n DRAGSTART_COMMAND,\n KEY_BACKSPACE_COMMAND,\n KEY_DELETE_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND\n} from \"lexical\";\nimport * as React from \"react\";\nimport { Suspense, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Placeholder } from \"~/ui/Placeholder\";\nimport { ImageResizer } from \"~/ui/ImageResizer\";\nimport { useSharedHistoryContext } from \"~/context/SharedHistoryContext\";\nimport { $isImageNode } from \"~/nodes/ImageNode\";\nimport { LexicalContentEditable } from \"~/ui/ContentEditable\";\n\nconst imageCache = new Set();\n\nfunction useSuspenseImage(src: string) {\n if (!imageCache.has(src)) {\n throw new Promise(resolve => {\n const img = new Image();\n img.src = src;\n img.onload = () => {\n imageCache.add(src);\n resolve(null);\n };\n });\n }\n}\n\nfunction LazyImage({\n id,\n altText,\n className,\n imageRef,\n src,\n width,\n height,\n maxWidth\n}: {\n id: string;\n altText: string;\n className: string | null;\n height: \"inherit\" | number;\n imageRef: { current: null | HTMLImageElement };\n maxWidth: number;\n src: string;\n width: \"inherit\" | number;\n}): JSX.Element {\n useSuspenseImage(src);\n return (\n <img\n id={id}\n className={className || undefined}\n src={src}\n alt={altText}\n ref={imageRef}\n style={{\n height,\n maxWidth,\n width\n }}\n draggable=\"false\"\n />\n );\n}\n\nexport default function ImageComponent({\n id,\n src,\n altText,\n nodeKey,\n width,\n height,\n maxWidth,\n resizable,\n showCaption,\n caption,\n captionsEnabled\n}: {\n id: string;\n altText: string;\n caption: LexicalEditor;\n height: \"inherit\" | number;\n maxWidth: number;\n nodeKey: NodeKey;\n resizable: boolean;\n showCaption: boolean;\n src: string;\n width: \"inherit\" | number;\n captionsEnabled: boolean;\n}): JSX.Element {\n const imageRef = useRef<null | HTMLImageElement>(null);\n const buttonRef = useRef<HTMLButtonElement | null>(null);\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);\n const [isResizing, setIsResizing] = useState<boolean>(false);\n const [editor] = useLexicalComposerContext();\n const [selection, setSelection] = useState<\n RangeSelection | NodeSelection | GridSelection | null\n >(null);\n const activeEditorRef = useRef<LexicalEditor | null>(null);\n\n const onDelete = useCallback(\n (payload: KeyboardEvent) => {\n if (isSelected && $isNodeSelection($getSelection())) {\n const event: KeyboardEvent = payload;\n event.preventDefault();\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.remove();\n }\n setSelected(false);\n }\n return false;\n },\n [isSelected, nodeKey, setSelected]\n );\n\n const onEnter = useCallback(\n (event: KeyboardEvent) => {\n const latestSelection = $getSelection();\n const buttonElem = buttonRef.current;\n if (\n isSelected &&\n $isNodeSelection(latestSelection) &&\n latestSelection.getNodes().length === 1\n ) {\n if (showCaption) {\n // Move focus into nested editor\n $setSelection(null);\n event.preventDefault();\n caption.focus();\n return true;\n } else if (buttonElem !== null && buttonElem !== document.activeElement) {\n event.preventDefault();\n buttonElem.focus();\n return true;\n }\n }\n return false;\n },\n [caption, isSelected, showCaption]\n );\n\n const onEscape = useCallback(\n (event: KeyboardEvent) => {\n if (activeEditorRef.current === caption || buttonRef.current === event.target) {\n $setSelection(null);\n editor.update(() => {\n setSelected(true);\n const parentRootElement = editor.getRootElement();\n if (parentRootElement !== null) {\n parentRootElement.focus();\n }\n });\n return true;\n }\n return false;\n },\n [caption, editor, setSelected]\n );\n\n useEffect(() => {\n let isMounted = true;\n const unregister = mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n if (isMounted) {\n setSelection(editorState.read(() => $getSelection()));\n }\n }),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n (_, activeEditor) => {\n activeEditorRef.current = activeEditor;\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n payload => {\n const event = payload;\n if (isResizing) {\n return true;\n }\n if (event.target === imageRef.current) {\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n return true;\n }\n\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(\n DRAGSTART_COMMAND,\n event => {\n if (event.target === imageRef.current) {\n // TODO This is just a temporary workaround for FF to behave like other browsers.\n // Ideally, this handles drag & drop too (and all browsers).\n event.preventDefault();\n return true;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n ),\n editor.registerCommand(KEY_DELETE_COMMAND, onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_BACKSPACE_COMMAND, onDelete, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ENTER_COMMAND, onEnter, COMMAND_PRIORITY_LOW),\n editor.registerCommand(KEY_ESCAPE_COMMAND, onEscape, COMMAND_PRIORITY_LOW)\n );\n return () => {\n isMounted = false;\n unregister();\n };\n }, [\n clearSelection,\n editor,\n isResizing,\n isSelected,\n nodeKey,\n onDelete,\n onEnter,\n onEscape,\n setSelected\n ]);\n\n const setShowCaption = () => {\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setShowCaption(true);\n }\n });\n };\n\n const onResizeEnd = (nextWidth: \"inherit\" | number, nextHeight: \"inherit\" | number) => {\n // Delay hiding the resize bars for click case\n setTimeout(() => {\n setIsResizing(false);\n }, 200);\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if ($isImageNode(node)) {\n node.setWidthAndHeight(nextWidth, nextHeight);\n }\n });\n };\n\n const onResizeStart = () => {\n setIsResizing(true);\n };\n\n const { historyState } = useSharedHistoryContext();\n const draggable = isSelected && $isNodeSelection(selection) && !isResizing;\n const isFocused = isSelected || isResizing;\n return (\n <Suspense fallback={null}>\n <>\n <div draggable={draggable}>\n <LazyImage\n id={id}\n className={\n isFocused\n ? `focused ${$isNodeSelection(selection) ? \"draggable\" : \"\"}`\n : null\n }\n src={src}\n altText={altText}\n imageRef={imageRef}\n width={width}\n height={height}\n maxWidth={maxWidth}\n />\n </div>\n {showCaption && (\n <div className=\"image-caption-container\">\n <LexicalNestedComposer initialEditor={caption}>\n <AutoFocusPlugin />\n <HistoryPlugin externalHistoryState={historyState} />\n <RichTextPlugin\n contentEditable={\n <LexicalContentEditable className=\"ImageNode__contentEditable\" />\n }\n placeholder={\n <Placeholder className=\"ImageNode__placeholder\">\n Enter a caption...\n </Placeholder>\n }\n ErrorBoundary={LexicalErrorBoundary}\n />\n </LexicalNestedComposer>\n </div>\n )}\n {resizable && $isNodeSelection(selection) && isFocused && (\n <ImageResizer\n showCaption={showCaption}\n setShowCaption={setShowCaption}\n editor={editor}\n buttonRef={buttonRef}\n imageRef={imageRef}\n maxWidth={maxWidth}\n onResizeStart={onResizeStart}\n onResizeEnd={onResizeEnd}\n captionsEnabled={captionsEnabled}\n />\n )}\n </>\n </Suspense>\n );\n}\n"],"mappings":"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"}
@@ -1,11 +1,20 @@
1
1
  import React from "react";
2
- import { FontColorAction } from "../ToolbarActions/FontColorAction";
3
- import { TypographyAction } from "../ToolbarActions/TypographyAction";
4
- import { TextAlignmentAction } from "../ToolbarActions/TextAlignmentAction";
5
- interface LexicalEditorConfig extends React.FC<unknown> {
6
- FontColorAction: typeof FontColorAction;
7
- TypographyAction: typeof TypographyAction;
8
- TextAlignmentAction: typeof TextAlignmentAction;
9
- }
10
- export declare const LexicalEditorConfig: LexicalEditorConfig;
11
- export {};
2
+ import { ToolbarElementConfig } from "./components/ToolbarElement";
3
+ import { PluginConfig } from "./components/Plugin";
4
+ import { NodeConfig } from "./components/Node";
5
+ export declare const LexicalEditorConfig: {
6
+ ({ children }: {
7
+ children: React.ReactNode;
8
+ }): JSX.Element;
9
+ ToolbarElement: React.FC<import("./components/ToolbarElement").ToolbarElementProps>;
10
+ Plugin: React.FC<import("./components/Plugin").PluginProps>;
11
+ Node: React.FC<import("./components/Node").NodeProps>;
12
+ };
13
+ export declare const LexicalEditorWithConfig: ({ children }: {
14
+ children: React.ReactNode;
15
+ }) => JSX.Element;
16
+ export declare function useLexicalEditorConfig(): {
17
+ toolbarElements: ToolbarElementConfig[];
18
+ plugins: PluginConfig[];
19
+ nodes: NodeConfig[];
20
+ };
@@ -1,19 +1,73 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
3
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports.LexicalEditorConfig = void 0;
8
- var _react = _interopRequireDefault(require("react"));
9
- var _FontColorAction = require("../ToolbarActions/FontColorAction");
10
- var _TypographyAction = require("../ToolbarActions/TypographyAction");
11
- var _TextAlignmentAction = require("../ToolbarActions/TextAlignmentAction");
12
- var LexicalEditorConfig = function LexicalEditorConfig(_ref) {
8
+ exports.LexicalEditorWithConfig = exports.LexicalEditorConfig = void 0;
9
+ exports.useLexicalEditorConfig = useLexicalEditorConfig;
10
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
+ var _react = _interopRequireWildcard(require("react"));
12
+ var _reactComposition = require("@webiny/react-composition");
13
+ var _reactProperties = require("@webiny/react-properties");
14
+ var _ToolbarElement = require("./components/ToolbarElement");
15
+ var _Plugin = require("./components/Plugin");
16
+ var _Node = require("./components/Node");
17
+ var LexicalEditorConfigApply = (0, _reactComposition.makeComposable)("LexicalEditorConfigApply", function (_ref) {
13
18
  var children = _ref.children;
14
19
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, children);
20
+ });
21
+ var createHOC = function createHOC(newChildren) {
22
+ return function (BaseComponent) {
23
+ return function ConfigHOC(_ref2) {
24
+ var children = _ref2.children;
25
+ return /*#__PURE__*/_react.default.createElement(BaseComponent, null, newChildren, children);
26
+ };
27
+ };
28
+ };
29
+ var LexicalEditorConfig = function LexicalEditorConfig(_ref3) {
30
+ var children = _ref3.children;
31
+ return /*#__PURE__*/_react.default.createElement(_reactComposition.Compose, {
32
+ component: LexicalEditorConfigApply,
33
+ with: createHOC(children)
34
+ });
15
35
  };
16
36
  exports.LexicalEditorConfig = LexicalEditorConfig;
17
- LexicalEditorConfig.FontColorAction = _FontColorAction.FontColorAction;
18
- LexicalEditorConfig.TypographyAction = _TypographyAction.TypographyAction;
19
- LexicalEditorConfig.TextAlignmentAction = _TextAlignmentAction.TextAlignmentAction;
37
+ LexicalEditorConfig.ToolbarElement = _ToolbarElement.ToolbarElement;
38
+ LexicalEditorConfig.Plugin = _Plugin.Plugin;
39
+ LexicalEditorConfig.Node = _Node.Node;
40
+ var ViewContext = /*#__PURE__*/_react.default.createContext({
41
+ properties: []
42
+ });
43
+ var LexicalEditorWithConfig = function LexicalEditorWithConfig(_ref4) {
44
+ var children = _ref4.children;
45
+ var _useState = (0, _react.useState)([]),
46
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
47
+ properties = _useState2[0],
48
+ setProperties = _useState2[1];
49
+ var context = {
50
+ properties: properties
51
+ };
52
+ var stateUpdater = function stateUpdater(properties) {
53
+ setProperties(properties);
54
+ };
55
+ return /*#__PURE__*/_react.default.createElement(ViewContext.Provider, {
56
+ value: context
57
+ }, /*#__PURE__*/_react.default.createElement(_reactProperties.Properties, {
58
+ onChange: stateUpdater
59
+ }, /*#__PURE__*/_react.default.createElement(LexicalEditorConfigApply, null), children));
60
+ };
61
+ exports.LexicalEditorWithConfig = LexicalEditorWithConfig;
62
+ function useLexicalEditorConfig() {
63
+ var _useContext = (0, _react.useContext)(ViewContext),
64
+ properties = _useContext.properties;
65
+ var config = (0, _react.useMemo)(function () {
66
+ return (0, _reactProperties.toObject)(properties);
67
+ }, [properties]);
68
+ return {
69
+ toolbarElements: config.toolbarElements || [],
70
+ plugins: config.plugins || [],
71
+ nodes: config.nodes || []
72
+ };
73
+ }
@@ -1 +1 @@
1
- {"version":3,"names":["LexicalEditorConfig","children","FontColorAction","TypographyAction","TextAlignmentAction"],"sources":["LexicalEditorConfig.tsx"],"sourcesContent":["import React from \"react\";\nimport { FontColorAction } from \"~/components/ToolbarActions/FontColorAction\";\nimport { TypographyAction } from \"~/components/ToolbarActions/TypographyAction\";\nimport { TextAlignmentAction } from \"../ToolbarActions/TextAlignmentAction\";\n\ninterface LexicalEditorConfig extends React.FC<unknown> {\n FontColorAction: typeof FontColorAction;\n TypographyAction: typeof TypographyAction;\n TextAlignmentAction: typeof TextAlignmentAction;\n}\n\nexport const LexicalEditorConfig: LexicalEditorConfig = ({ children }) => {\n return <>{children}</>;\n};\n\nLexicalEditorConfig.FontColorAction = FontColorAction;\nLexicalEditorConfig.TypographyAction = TypographyAction;\nLexicalEditorConfig.TextAlignmentAction = TextAlignmentAction;\n"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AAQO,IAAMA,mBAAwC,GAAG,SAA3CA,mBAAwC,OAAqB;EAAA,IAAfC,QAAQ,QAARA,QAAQ;EAC/D,oBAAO,4DAAGA,QAAQ,CAAI;AAC1B,CAAC;AAAC;AAEFD,mBAAmB,CAACE,eAAe,GAAGA,gCAAe;AACrDF,mBAAmB,CAACG,gBAAgB,GAAGA,kCAAgB;AACvDH,mBAAmB,CAACI,mBAAmB,GAAGA,wCAAmB"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactComposition","_reactProperties","_ToolbarElement","_Plugin","_Node","LexicalEditorConfigApply","makeComposable","_ref","children","default","createElement","Fragment","createHOC","newChildren","BaseComponent","ConfigHOC","_ref2","LexicalEditorConfig","_ref3","Compose","component","with","exports","ToolbarElement","Plugin","Node","ViewContext","React","createContext","properties","LexicalEditorWithConfig","_ref4","_useState","useState","_useState2","_slicedToArray2","setProperties","context","stateUpdater","Provider","value","Properties","onChange","useLexicalEditorConfig","_useContext","useContext","config","useMemo","toObject","toolbarElements","plugins","nodes"],"sources":["LexicalEditorConfig.tsx"],"sourcesContent":["import React, { useContext, useMemo, useState } from \"react\";\nimport { makeComposable, Compose, HigherOrderComponent } from \"@webiny/react-composition\";\nimport { Property, Properties, toObject } from \"@webiny/react-properties\";\nimport { ToolbarElement, ToolbarElementConfig } from \"./components/ToolbarElement\";\nimport { Plugin, PluginConfig } from \"./components/Plugin\";\nimport { Node, NodeConfig } from \"./components/Node\";\n\nconst LexicalEditorConfigApply = makeComposable(\"LexicalEditorConfigApply\", ({ children }) => {\n return <>{children}</>;\n});\n\nconst createHOC =\n (newChildren: React.ReactNode): HigherOrderComponent =>\n BaseComponent => {\n return function ConfigHOC({ children }) {\n return (\n <BaseComponent>\n {newChildren}\n {children}\n </BaseComponent>\n );\n };\n };\n\nexport const LexicalEditorConfig = ({ children }: { children: React.ReactNode }) => {\n return <Compose component={LexicalEditorConfigApply} with={createHOC(children)} />;\n};\n\nLexicalEditorConfig.ToolbarElement = ToolbarElement;\nLexicalEditorConfig.Plugin = Plugin;\nLexicalEditorConfig.Node = Node;\n\ninterface ViewContext {\n properties: Property[];\n}\n\nconst ViewContext = React.createContext<ViewContext>({ properties: [] });\n\nexport const LexicalEditorWithConfig = ({ children }: { children: React.ReactNode }) => {\n const [properties, setProperties] = useState<Property[]>([]);\n const context = { properties };\n\n const stateUpdater = (properties: Property[]) => {\n setProperties(properties);\n };\n\n return (\n <ViewContext.Provider value={context}>\n <Properties onChange={stateUpdater}>\n <LexicalEditorConfigApply />\n {children}\n </Properties>\n </ViewContext.Provider>\n );\n};\n\ninterface LexicalEditorConfigData {\n toolbarElements: ToolbarElementConfig[];\n plugins: PluginConfig[];\n nodes: NodeConfig[];\n}\n\nexport function useLexicalEditorConfig() {\n const { properties } = useContext(ViewContext);\n\n const config = useMemo(() => {\n return toObject<LexicalEditorConfigData>(properties);\n }, [properties]);\n\n return {\n toolbarElements: config.toolbarElements || [],\n plugins: config.plugins || [],\n nodes: config.nodes || []\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import React from "react";
2
+ import { Klass, LexicalNode } from "lexical";
3
+ export interface NodeConfig {
4
+ name: string;
5
+ node: Klass<LexicalNode>;
6
+ }
7
+ export interface NodeProps {
8
+ name: string;
9
+ node?: Klass<LexicalNode>;
10
+ remove?: boolean;
11
+ before?: string;
12
+ after?: string;
13
+ }
14
+ export declare const Node: React.FC<NodeProps>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Node = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactProperties = require("@webiny/react-properties");
10
+ var Node = function Node(_ref) {
11
+ var name = _ref.name,
12
+ node = _ref.node,
13
+ _ref$after = _ref.after,
14
+ after = _ref$after === void 0 ? undefined : _ref$after,
15
+ _ref$before = _ref.before,
16
+ before = _ref$before === void 0 ? undefined : _ref$before,
17
+ _ref$remove = _ref.remove,
18
+ remove = _ref$remove === void 0 ? false : _ref$remove;
19
+ var placeBefore = before !== undefined ? "node:".concat(before) : undefined;
20
+ var placeAfter = after !== undefined ? "node:".concat(after) : undefined;
21
+ return /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
22
+ id: "nodes:".concat(name),
23
+ name: "nodes",
24
+ array: true,
25
+ before: placeBefore,
26
+ after: placeAfter,
27
+ remove: remove
28
+ }, /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
29
+ id: "node:".concat(name, ":name"),
30
+ name: "name",
31
+ value: name
32
+ }), node ? /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
33
+ id: "node:".concat(name, ":node"),
34
+ name: "node",
35
+ value: node
36
+ }) : null);
37
+ };
38
+ exports.Node = Node;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactProperties","Node","_ref","name","node","_ref$after","after","undefined","_ref$before","before","_ref$remove","remove","placeBefore","concat","placeAfter","default","createElement","Property","id","array","value","exports"],"sources":["Node.tsx"],"sourcesContent":["import React from \"react\";\nimport { Property } from \"@webiny/react-properties\";\nimport { Klass, LexicalNode } from \"lexical\";\n\nexport interface NodeConfig {\n name: string;\n node: Klass<LexicalNode>;\n}\n\nexport interface NodeProps {\n name: string;\n node?: Klass<LexicalNode>;\n remove?: boolean;\n before?: string;\n after?: string;\n}\n\nexport const Node: React.FC<NodeProps> = ({\n name,\n node,\n after = undefined,\n before = undefined,\n remove = false\n}) => {\n const placeBefore = before !== undefined ? `node:${before}` : undefined;\n const placeAfter = after !== undefined ? `node:${after}` : undefined;\n\n return (\n <Property\n id={`nodes:${name}`}\n name={\"nodes\"}\n array={true}\n before={placeBefore}\n after={placeAfter}\n remove={remove}\n >\n <Property id={`node:${name}:name`} name={\"name\"} value={name} />\n {node ? <Property id={`node:${name}:node`} name={\"node\"} value={node} /> : null}\n </Property>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAgBO,IAAME,IAAyB,GAAG,SAA5BA,IAAyBA,CAAAC,IAAA,EAMhC;EAAA,IALFC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,IAAI,GAAAF,IAAA,CAAJE,IAAI;IAAAC,UAAA,GAAAH,IAAA,CACJI,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAGE,SAAS,GAAAF,UAAA;IAAAG,WAAA,GAAAN,IAAA,CACjBO,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAGD,SAAS,GAAAC,WAAA;IAAAE,WAAA,GAAAR,IAAA,CAClBS,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,KAAK,GAAAA,WAAA;EAEd,IAAME,WAAW,GAAGH,MAAM,KAAKF,SAAS,WAAAM,MAAA,CAAWJ,MAAM,IAAKF,SAAS;EACvE,IAAMO,UAAU,GAAGR,KAAK,KAAKC,SAAS,WAAAM,MAAA,CAAWP,KAAK,IAAKC,SAAS;EAEpE,oBACIV,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IACLC,EAAE,WAAAL,MAAA,CAAWV,IAAI,CAAG;IACpBA,IAAI,EAAE,OAAQ;IACdgB,KAAK,EAAE,IAAK;IACZV,MAAM,EAAEG,WAAY;IACpBN,KAAK,EAAEQ,UAAW;IAClBH,MAAM,EAAEA;EAAO,gBAEfd,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,UAAAL,MAAA,CAAUV,IAAI,UAAQ;IAACA,IAAI,EAAE,MAAO;IAACiB,KAAK,EAAEjB;EAAK,CAAE,CAAC,EAC/DC,IAAI,gBAAGP,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,UAAAL,MAAA,CAAUV,IAAI,UAAQ;IAACA,IAAI,EAAE,MAAO;IAACiB,KAAK,EAAEhB;EAAK,CAAE,CAAC,GAAG,IACrE,CAAC;AAEnB,CAAC;AAACiB,OAAA,CAAApB,IAAA,GAAAA,IAAA"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ export interface PluginConfig {
3
+ name: string;
4
+ element: React.ReactElement;
5
+ }
6
+ export interface PluginProps {
7
+ name: string;
8
+ element?: React.ReactElement<unknown>;
9
+ remove?: boolean;
10
+ before?: string;
11
+ after?: string;
12
+ }
13
+ export declare const Plugin: React.FC<PluginProps>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.Plugin = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactProperties = require("@webiny/react-properties");
10
+ var Plugin = function Plugin(_ref) {
11
+ var name = _ref.name,
12
+ element = _ref.element,
13
+ _ref$after = _ref.after,
14
+ after = _ref$after === void 0 ? undefined : _ref$after,
15
+ _ref$before = _ref.before,
16
+ before = _ref$before === void 0 ? undefined : _ref$before,
17
+ _ref$remove = _ref.remove,
18
+ remove = _ref$remove === void 0 ? false : _ref$remove;
19
+ var placeBefore = before !== undefined ? "plugin:".concat(before) : undefined;
20
+ var placeAfter = after !== undefined ? "plugin:".concat(after) : undefined;
21
+ return /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
22
+ id: "plugins:".concat(name),
23
+ name: "plugins",
24
+ array: true,
25
+ before: placeBefore,
26
+ after: placeAfter,
27
+ remove: remove
28
+ }, /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
29
+ id: "plugin:".concat(name, ":name"),
30
+ name: "name",
31
+ value: name
32
+ }), element ? /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
33
+ id: "plugin:".concat(name, ":element"),
34
+ name: "element",
35
+ value: element
36
+ }) : null);
37
+ };
38
+ exports.Plugin = Plugin;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactProperties","Plugin","_ref","name","element","_ref$after","after","undefined","_ref$before","before","_ref$remove","remove","placeBefore","concat","placeAfter","default","createElement","Property","id","array","value","exports"],"sources":["Plugin.tsx"],"sourcesContent":["import React from \"react\";\nimport { Property } from \"@webiny/react-properties\";\n\nexport interface PluginConfig {\n name: string;\n element: React.ReactElement;\n}\n\nexport interface PluginProps {\n name: string;\n element?: React.ReactElement<unknown>;\n remove?: boolean;\n before?: string;\n after?: string;\n}\n\nexport const Plugin: React.FC<PluginProps> = ({\n name,\n element,\n after = undefined,\n before = undefined,\n remove = false\n}) => {\n const placeBefore = before !== undefined ? `plugin:${before}` : undefined;\n const placeAfter = after !== undefined ? `plugin:${after}` : undefined;\n\n return (\n <Property\n id={`plugins:${name}`}\n name={\"plugins\"}\n array={true}\n before={placeBefore}\n after={placeAfter}\n remove={remove}\n >\n <Property id={`plugin:${name}:name`} name={\"name\"} value={name} />\n {element ? (\n <Property id={`plugin:${name}:element`} name={\"element\"} value={element} />\n ) : null}\n </Property>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAeO,IAAME,MAA6B,GAAG,SAAhCA,MAA6BA,CAAAC,IAAA,EAMpC;EAAA,IALFC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAAC,UAAA,GAAAH,IAAA,CACPI,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAGE,SAAS,GAAAF,UAAA;IAAAG,WAAA,GAAAN,IAAA,CACjBO,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAGD,SAAS,GAAAC,WAAA;IAAAE,WAAA,GAAAR,IAAA,CAClBS,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,KAAK,GAAAA,WAAA;EAEd,IAAME,WAAW,GAAGH,MAAM,KAAKF,SAAS,aAAAM,MAAA,CAAaJ,MAAM,IAAKF,SAAS;EACzE,IAAMO,UAAU,GAAGR,KAAK,KAAKC,SAAS,aAAAM,MAAA,CAAaP,KAAK,IAAKC,SAAS;EAEtE,oBACIV,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IACLC,EAAE,aAAAL,MAAA,CAAaV,IAAI,CAAG;IACtBA,IAAI,EAAE,SAAU;IAChBgB,KAAK,EAAE,IAAK;IACZV,MAAM,EAAEG,WAAY;IACpBN,KAAK,EAAEQ,UAAW;IAClBH,MAAM,EAAEA;EAAO,gBAEfd,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,YAAAL,MAAA,CAAYV,IAAI,UAAQ;IAACA,IAAI,EAAE,MAAO;IAACiB,KAAK,EAAEjB;EAAK,CAAE,CAAC,EACjEC,OAAO,gBACJP,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,YAAAL,MAAA,CAAYV,IAAI,aAAW;IAACA,IAAI,EAAE,SAAU;IAACiB,KAAK,EAAEhB;EAAQ,CAAE,CAAC,GAC3E,IACE,CAAC;AAEnB,CAAC;AAACiB,OAAA,CAAApB,MAAA,GAAAA,MAAA"}
@@ -0,0 +1,13 @@
1
+ import React from "react";
2
+ export interface ToolbarElementConfig {
3
+ name: string;
4
+ element: React.ReactElement;
5
+ }
6
+ export interface ToolbarElementProps {
7
+ name: string;
8
+ element?: React.ReactElement<unknown>;
9
+ remove?: boolean;
10
+ before?: string;
11
+ after?: string;
12
+ }
13
+ export declare const ToolbarElement: React.FC<ToolbarElementProps>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ToolbarElement = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _reactProperties = require("@webiny/react-properties");
10
+ var ToolbarElement = function ToolbarElement(_ref) {
11
+ var name = _ref.name,
12
+ element = _ref.element,
13
+ _ref$after = _ref.after,
14
+ after = _ref$after === void 0 ? undefined : _ref$after,
15
+ _ref$before = _ref.before,
16
+ before = _ref$before === void 0 ? undefined : _ref$before,
17
+ _ref$remove = _ref.remove,
18
+ remove = _ref$remove === void 0 ? false : _ref$remove;
19
+ var placeBefore = before !== undefined ? "element:".concat(before) : undefined;
20
+ var placeAfter = after !== undefined ? "element:".concat(after) : undefined;
21
+ return /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
22
+ id: "element:".concat(name),
23
+ name: "toolbarElements",
24
+ array: true,
25
+ before: placeBefore,
26
+ after: placeAfter,
27
+ remove: remove
28
+ }, /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
29
+ id: "element:".concat(name, ":name"),
30
+ name: "name",
31
+ value: name
32
+ }), element ? /*#__PURE__*/_react.default.createElement(_reactProperties.Property, {
33
+ id: "element:".concat(name, ":element"),
34
+ name: "element",
35
+ value: element
36
+ }) : null);
37
+ };
38
+ exports.ToolbarElement = ToolbarElement;
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactProperties","ToolbarElement","_ref","name","element","_ref$after","after","undefined","_ref$before","before","_ref$remove","remove","placeBefore","concat","placeAfter","default","createElement","Property","id","array","value","exports"],"sources":["ToolbarElement.tsx"],"sourcesContent":["import React from \"react\";\nimport { Property } from \"@webiny/react-properties\";\n\nexport interface ToolbarElementConfig {\n name: string;\n element: React.ReactElement;\n}\n\nexport interface ToolbarElementProps {\n name: string;\n element?: React.ReactElement<unknown>;\n remove?: boolean;\n before?: string;\n after?: string;\n}\n\nexport const ToolbarElement: React.FC<ToolbarElementProps> = ({\n name,\n element,\n after = undefined,\n before = undefined,\n remove = false\n}) => {\n const placeBefore = before !== undefined ? `element:${before}` : undefined;\n const placeAfter = after !== undefined ? `element:${after}` : undefined;\n\n return (\n <Property\n id={`element:${name}`}\n name={\"toolbarElements\"}\n array={true}\n before={placeBefore}\n after={placeAfter}\n remove={remove}\n >\n <Property id={`element:${name}:name`} name={\"name\"} value={name} />\n {element ? (\n <Property id={`element:${name}:element`} name={\"element\"} value={element} />\n ) : null}\n </Property>\n );\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,gBAAA,GAAAD,OAAA;AAeO,IAAME,cAA6C,GAAG,SAAhDA,cAA6CA,CAAAC,IAAA,EAMpD;EAAA,IALFC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IACJC,OAAO,GAAAF,IAAA,CAAPE,OAAO;IAAAC,UAAA,GAAAH,IAAA,CACPI,KAAK;IAALA,KAAK,GAAAD,UAAA,cAAGE,SAAS,GAAAF,UAAA;IAAAG,WAAA,GAAAN,IAAA,CACjBO,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAGD,SAAS,GAAAC,WAAA;IAAAE,WAAA,GAAAR,IAAA,CAClBS,MAAM;IAANA,MAAM,GAAAD,WAAA,cAAG,KAAK,GAAAA,WAAA;EAEd,IAAME,WAAW,GAAGH,MAAM,KAAKF,SAAS,cAAAM,MAAA,CAAcJ,MAAM,IAAKF,SAAS;EAC1E,IAAMO,UAAU,GAAGR,KAAK,KAAKC,SAAS,cAAAM,MAAA,CAAcP,KAAK,IAAKC,SAAS;EAEvE,oBACIV,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IACLC,EAAE,aAAAL,MAAA,CAAaV,IAAI,CAAG;IACtBA,IAAI,EAAE,iBAAkB;IACxBgB,KAAK,EAAE,IAAK;IACZV,MAAM,EAAEG,WAAY;IACpBN,KAAK,EAAEQ,UAAW;IAClBH,MAAM,EAAEA;EAAO,gBAEfd,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,aAAAL,MAAA,CAAaV,IAAI,UAAQ;IAACA,IAAI,EAAE,MAAO;IAACiB,KAAK,EAAEjB;EAAK,CAAE,CAAC,EAClEC,OAAO,gBACJP,MAAA,CAAAkB,OAAA,CAAAC,aAAA,CAAChB,gBAAA,CAAAiB,QAAQ;IAACC,EAAE,aAAAL,MAAA,CAAaV,IAAI,aAAW;IAACA,IAAI,EAAE,SAAU;IAACiB,KAAK,EAAEhB;EAAQ,CAAE,CAAC,GAC5E,IACE,CAAC;AAEnB,CAAC;AAACiB,OAAA,CAAApB,cAAA,GAAAA,cAAA"}
@@ -2,11 +2,13 @@ import React from "react";
2
2
  import { LexicalValue, ThemeEmotionMap } from "../types";
3
3
  import { Klass, LexicalNode } from "lexical";
4
4
  import { WebinyTheme } from "../themes/webinyLexicalTheme";
5
+ import { CSSObject } from "@emotion/react";
5
6
  interface LexicalHtmlRendererProps {
6
7
  nodes?: Klass<LexicalNode>[];
7
8
  value: LexicalValue | null;
8
9
  theme: WebinyTheme;
9
10
  themeEmotionMap?: ThemeEmotionMap;
11
+ themeStylesTransformer?: (cssObject: Record<string, any>) => CSSObject;
10
12
  }
11
13
  export declare const BaseLexicalHtmlRenderer: React.FC<LexicalHtmlRendererProps>;
12
14
  /**