@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.
- package/commands/insertFiles.d.ts +14 -0
- package/commands/insertFiles.js +9 -0
- package/commands/insertFiles.js.map +1 -0
- package/commands/webiny-list.js.map +1 -1
- package/commands/webiny-quote.js.map +1 -1
- package/components/Editor/HeadingEditor.js +7 -9
- package/components/Editor/HeadingEditor.js.map +1 -1
- package/components/Editor/ParagraphEditor.js +7 -10
- package/components/Editor/ParagraphEditor.js.map +1 -1
- package/components/Editor/RichTextEditor.d.ts +9 -1
- package/components/Editor/RichTextEditor.js +41 -20
- package/components/Editor/RichTextEditor.js.map +1 -1
- package/components/ImageComponent.d.ts +23 -0
- package/components/ImageComponent.js +252 -0
- package/components/ImageComponent.js.map +1 -0
- package/components/LexicalEditorConfig/LexicalEditorConfig.d.ts +19 -10
- package/components/LexicalEditorConfig/LexicalEditorConfig.js +63 -9
- package/components/LexicalEditorConfig/LexicalEditorConfig.js.map +1 -1
- package/components/LexicalEditorConfig/components/Node.d.ts +14 -0
- package/components/LexicalEditorConfig/components/Node.js +38 -0
- package/components/LexicalEditorConfig/components/Node.js.map +1 -0
- package/components/LexicalEditorConfig/components/Plugin.d.ts +13 -0
- package/components/LexicalEditorConfig/components/Plugin.js +38 -0
- package/components/LexicalEditorConfig/components/Plugin.js.map +1 -0
- package/components/LexicalEditorConfig/components/ToolbarElement.d.ts +13 -0
- package/components/LexicalEditorConfig/components/ToolbarElement.js +38 -0
- package/components/LexicalEditorConfig/components/ToolbarElement.js.map +1 -0
- package/components/LexicalHtmlRenderer.d.ts +2 -0
- package/components/LexicalHtmlRenderer.js +1 -1
- package/components/LexicalHtmlRenderer.js.map +1 -1
- package/components/Toolbar/StaticToolbar.css +260 -0
- package/components/Toolbar/StaticToolbar.d.ts +3 -0
- package/components/Toolbar/StaticToolbar.js +101 -0
- package/components/Toolbar/StaticToolbar.js.map +1 -0
- package/components/Toolbar/Toolbar.css +215 -4
- package/components/Toolbar/Toolbar.d.ts +2 -8
- package/components/Toolbar/Toolbar.js +25 -37
- package/components/Toolbar/Toolbar.js.map +1 -1
- package/components/ToolbarActions/BoldAction.js.map +1 -1
- package/components/ToolbarActions/BulletListAction.js +2 -2
- package/components/ToolbarActions/BulletListAction.js.map +1 -1
- package/components/ToolbarActions/CodeHighlightAction.js.map +1 -1
- package/components/ToolbarActions/FontColorAction.js +1 -1
- package/components/ToolbarActions/FontColorAction.js.map +1 -1
- package/components/ToolbarActions/FontSizeAction.js.map +1 -1
- package/components/ToolbarActions/ImageAction.d.ts +2 -0
- package/components/ToolbarActions/ImageAction.js +53 -0
- package/components/ToolbarActions/ImageAction.js.map +1 -0
- package/components/ToolbarActions/ItalicAction.js.map +1 -1
- package/components/ToolbarActions/LinkAction.js.map +1 -1
- package/components/ToolbarActions/NumberedListAction.js +16 -4
- package/components/ToolbarActions/NumberedListAction.js.map +1 -1
- package/components/ToolbarActions/QuoteAction.js.map +1 -1
- package/components/ToolbarActions/TextAlignmentAction.js.map +1 -1
- package/components/ToolbarActions/TypographyAction.js +1 -1
- package/components/ToolbarActions/TypographyAction.js.map +1 -1
- package/components/ToolbarActions/UnderlineAction.js.map +1 -1
- package/context/FontColorActionContext.js.map +1 -1
- package/context/RichTextEditorContext.d.ts +3 -1
- package/context/RichTextEditorContext.js +17 -11
- package/context/RichTextEditorContext.js.map +1 -1
- package/context/SharedHistoryContext.js.map +1 -1
- package/context/TextAlignmentActionContextProps.js.map +1 -1
- package/context/TypographyActionContext.js.map +1 -1
- package/hooks/useFontColorPicker.js.map +1 -1
- package/hooks/useList.js.map +1 -1
- package/hooks/useQuote.js.map +1 -1
- package/hooks/useRichTextEditor.js.map +1 -1
- package/hooks/useTextAlignmentAction.js.map +1 -1
- package/hooks/useTypographyAction.js.map +1 -1
- package/images/icons/insert-image.svg +4 -0
- package/index.d.ts +9 -9
- package/index.js +50 -44
- package/index.js.map +1 -1
- package/nodes/FontColorNode.js +0 -4
- package/nodes/FontColorNode.js.map +1 -1
- package/nodes/HeadingNode.js.map +1 -1
- package/nodes/ImageNode.d.ts +50 -0
- package/nodes/ImageNode.js +206 -0
- package/nodes/ImageNode.js.map +1 -0
- package/nodes/ListItemNode.js +0 -4
- package/nodes/ListItemNode.js.map +1 -1
- package/nodes/ListNode/formatList.js.map +1 -1
- package/nodes/ListNode.js +0 -6
- package/nodes/ListNode.js.map +1 -1
- package/nodes/ParagraphNode.js.map +1 -1
- package/nodes/QuoteNode.js.map +1 -1
- package/nodes/TypographyElementNode.js +2 -6
- package/nodes/TypographyElementNode.js.map +1 -1
- package/nodes/imageNode.css +43 -0
- package/nodes/webinyNodes.js +2 -1
- package/nodes/webinyNodes.js.map +1 -1
- package/package.json +6 -5
- package/plugins/BlurEventPlugin/BlurEventPlugin.js.map +1 -1
- package/plugins/CodeHighlightPlugin/CodeHighlightPlugin.js.map +1 -1
- package/plugins/CodeHighlightPlugin/index.js.map +1 -1
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.css +5 -1
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js +52 -14
- package/plugins/FloatingLinkEditorPlugin/FloatingLinkEditorPlugin.js.map +1 -1
- package/plugins/FloatingLinkEditorPlugin/index.js.map +1 -1
- package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
- package/plugins/ImagesPlugin/ImagesPlugin.d.ts +13 -0
- package/plugins/ImagesPlugin/ImagesPlugin.js +152 -0
- package/plugins/ImagesPlugin/ImagesPlugin.js.map +1 -0
- package/plugins/LexicalUpdateStatePlugin/LexicalUpdateStatePlugin.js.map +1 -1
- package/plugins/LexicalUpdateStatePlugin/index.js.map +1 -1
- package/plugins/ListPLugin/ListPlugin.d.ts +1 -0
- package/plugins/{WebinyListPLugin/WebinyListPlugin.js → ListPLugin/ListPlugin.js} +3 -3
- package/plugins/ListPLugin/ListPlugin.js.map +1 -0
- package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
- package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
- package/themes/webinyLexicalTheme.css +0 -6
- package/themes/webinyLexicalTheme.js +4 -1
- package/themes/webinyLexicalTheme.js.map +1 -1
- package/types.d.ts +9 -0
- package/types.js +28 -1
- package/types.js.map +1 -1
- package/ui/ContentEditable.css +22 -0
- package/ui/ContentEditable.d.ts +12 -0
- package/ui/ContentEditable.js +24 -0
- package/ui/ContentEditable.js.map +1 -0
- package/ui/Divider.js.map +1 -1
- package/ui/DropDown.js.map +1 -1
- package/ui/ImageResizer.d.ts +26 -0
- package/ui/ImageResizer.js +213 -0
- package/ui/ImageResizer.js.map +1 -0
- package/ui/LinkPreview.js +7 -7
- package/ui/LinkPreview.js.map +1 -1
- package/ui/Placeholder.css +2 -5
- package/ui/Placeholder.d.ts +3 -1
- package/ui/Placeholder.js +5 -1
- package/ui/Placeholder.js.map +1 -1
- package/ui/TextInput.js.map +1 -1
- package/ui/ToolbarActionDialog.js.map +1 -1
- package/utils/canUseDOM.d.ts +1 -0
- package/utils/canUseDOM.js +8 -0
- package/utils/canUseDOM.js.map +1 -0
- package/utils/files.d.ts +12 -0
- package/utils/files.js +62 -0
- package/utils/files.js.map +1 -0
- package/utils/findTypographyStyleByHtmlTag.js.map +1 -1
- package/utils/generateInitialLexicalValue.js.map +1 -1
- package/utils/getDOMRangeRect.js.map +1 -1
- package/utils/getLexicalTextSelectionState.js.map +1 -1
- package/utils/getSelectedNode.js.map +1 -1
- package/utils/getTransparentImage.d.ts +1 -0
- package/utils/getTransparentImage.js +10 -0
- package/utils/getTransparentImage.js.map +1 -0
- package/{plugins/AutoLinkPlugin/AutoLinkPlugin.d.ts → utils/isHTMLElement.d.ts} +3 -4
- package/utils/isHTMLElement.js +16 -0
- package/utils/isHTMLElement.js.map +1 -0
- package/utils/isValidJSON.js.map +1 -1
- package/utils/isValidLexicalData.js.map +1 -1
- package/utils/nodes/clearNodeFormating.js.map +1 -1
- package/utils/nodes/formatToHeading.js.map +1 -1
- package/utils/nodes/formatToParagraph.js.map +1 -1
- package/utils/nodes/formatToQuote.js.map +1 -1
- package/utils/nodes/insertImage.d.ts +2 -0
- package/utils/nodes/insertImage.js +22 -0
- package/utils/nodes/insertImage.js.map +1 -0
- package/utils/nodes/listNode.js.map +1 -1
- package/utils/point.js +0 -3
- package/utils/point.js.map +1 -1
- package/utils/rect.js +0 -5
- package/utils/rect.js.map +1 -1
- package/utils/sanitizeUrl.js.map +1 -1
- package/utils/setFloatingElemPosition.js.map +1 -1
- package/utils/styleObjectToString.js.map +1 -1
- package/utils/toTypographyEmotionMap.d.ts +1 -1
- package/utils/toTypographyEmotionMap.js +7 -2
- package/utils/toTypographyEmotionMap.js.map +1 -1
- package/components/AddRichTextEditorNodeType.d.ts +0 -6
- package/components/AddRichTextEditorNodeType.js +0 -28
- package/components/AddRichTextEditorNodeType.js.map +0 -1
- package/components/AddRichTextEditorPlugin.d.ts +0 -12
- package/components/AddRichTextEditorPlugin.js +0 -33
- package/components/AddRichTextEditorPlugin.js.map +0 -1
- package/components/AddToolbarAction.d.ts +0 -7
- package/components/AddToolbarAction.js +0 -33
- package/components/AddToolbarAction.js.map +0 -1
- package/components/Toolbar/HeadingToolbar.d.ts +0 -12
- package/components/Toolbar/HeadingToolbar.js +0 -23
- package/components/Toolbar/HeadingToolbar.js.map +0 -1
- package/components/Toolbar/ParagraphToolbar.d.ts +0 -12
- package/components/Toolbar/ParagraphToolbar.js +0 -23
- package/components/Toolbar/ParagraphToolbar.js.map +0 -1
- package/components/ToolbarPresets/HeadingToolbarPreset.d.ts +0 -2
- package/components/ToolbarPresets/HeadingToolbarPreset.js +0 -56
- package/components/ToolbarPresets/HeadingToolbarPreset.js.map +0 -1
- package/components/ToolbarPresets/ParagraphToolbarPreset.d.ts +0 -2
- package/components/ToolbarPresets/ParagraphToolbarPreset.js +0 -71
- package/components/ToolbarPresets/ParagraphToolbarPreset.js.map +0 -1
- package/plugins/AutoLinkPlugin/AutoLinkPlugin.js +0 -46
- package/plugins/AutoLinkPlugin/AutoLinkPlugin.js.map +0 -1
- package/plugins/AutoLinkPlugin/index.d.ts +0 -1
- package/plugins/AutoLinkPlugin/index.js +0 -16
- package/plugins/AutoLinkPlugin/index.js.map +0 -1
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.d.ts +0 -17
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js +0 -88
- package/plugins/ClickableLinkPlugin/ClickableLinkPlugin.js.map +0 -1
- package/plugins/ClickableLinkPlugin/index.d.ts +0 -1
- package/plugins/ClickableLinkPlugin/index.js +0 -16
- package/plugins/ClickableLinkPlugin/index.js.map +0 -1
- package/plugins/WebinyListPLugin/WebinyListPlugin.d.ts +0 -1
- 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 {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var
|
|
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.
|
|
18
|
-
LexicalEditorConfig.
|
|
19
|
-
LexicalEditorConfig.
|
|
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":["
|
|
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
|
/**
|