@webiny/lexical-nodes 5.44.1-beta.0 → 5.45.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/FontColorNode.d.ts +6 -6
- package/FontColorNode.js +102 -145
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.d.ts +29 -17
- package/HeadingNode.js +184 -152
- package/HeadingNode.js.map +1 -1
- package/ImageNode.d.ts +1 -11
- package/ImageNode.js +119 -190
- package/ImageNode.js.map +1 -1
- package/LinkNode.d.ts +2 -2
- package/LinkNode.js +249 -346
- package/LinkNode.js.map +1 -1
- package/ListItemNode.d.ts +4 -3
- package/ListItemNode.js +275 -354
- package/ListItemNode.js.map +1 -1
- package/ListNode.d.ts +28 -14
- package/ListNode.js +170 -209
- package/ListNode.js.map +1 -1
- package/ParagraphNode.d.ts +28 -16
- package/ParagraphNode.js +143 -179
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.d.ts +26 -19
- package/QuoteNode.js +102 -188
- package/QuoteNode.js.map +1 -1
- package/README.md +9 -4
- package/components/ImageNode/ImageComponent.d.ts +2 -7
- package/components/ImageNode/ImageComponent.js +72 -166
- package/components/ImageNode/ImageComponent.js.map +1 -1
- package/components/ImageNode/ImageResizer.d.ts +1 -8
- package/components/ImageNode/ImageResizer.js +74 -89
- package/components/ImageNode/ImageResizer.js.map +1 -1
- package/generateInitialLexicalValue.d.ts +4 -0
- package/generateInitialLexicalValue.js +27 -0
- package/generateInitialLexicalValue.js.map +1 -0
- package/index.d.ts +19 -23
- package/index.js +50 -233
- package/index.js.map +1 -1
- package/package.json +16 -20
- package/prepareLexicalState.d.ts +2 -0
- package/prepareLexicalState.js +53 -0
- package/prepareLexicalState.js.map +1 -0
- package/types.d.ts +4 -5
- package/types.js +1 -5
- package/types.js.map +1 -1
- package/utils/clearNodeFormating.d.ts +1 -1
- package/utils/clearNodeFormating.js +12 -18
- package/utils/clearNodeFormating.js.map +1 -1
- package/utils/formatList.d.ts +4 -4
- package/utils/formatList.js +171 -208
- package/utils/formatList.js.map +1 -1
- package/utils/formatToHeading.d.ts +2 -2
- package/utils/formatToHeading.js +8 -15
- package/utils/formatToHeading.js.map +1 -1
- package/utils/formatToParagraph.d.ts +1 -1
- package/utils/formatToParagraph.js +8 -16
- package/utils/formatToParagraph.js.map +1 -1
- package/utils/formatToQuote.d.ts +1 -1
- package/utils/formatToQuote.js +8 -15
- package/utils/formatToQuote.js.map +1 -1
- package/utils/getStyleId.d.ts +11 -0
- package/utils/getStyleId.js +14 -0
- package/utils/getStyleId.js.map +1 -0
- package/utils/listNode.d.ts +2 -2
- package/utils/listNode.js +37 -50
- package/utils/listNode.js.map +1 -1
- package/utils/toggleLink.d.ts +1 -1
- package/utils/toggleLink.js +41 -45
- package/utils/toggleLink.js.map +1 -1
- package/TypographyNode.d.ts +0 -39
- package/TypographyNode.js +0 -146
- package/TypographyNode.js.map +0 -1
- package/components/ImageNode/ContentEditable.css +0 -22
- package/components/ImageNode/ContentEditable.d.ts +0 -12
- package/components/ImageNode/ContentEditable.js +0 -26
- package/components/ImageNode/ContentEditable.js.map +0 -1
- package/components/ImageNode/ImageComponent.css +0 -43
- package/components/ImageNode/Placeholder.css +0 -20
- package/components/ImageNode/Placeholder.d.ts +0 -15
- package/components/ImageNode/Placeholder.js +0 -30
- package/components/ImageNode/Placeholder.js.map +0 -1
- package/components/ImageNode/SharedHistoryContext.d.ts +0 -10
- package/components/ImageNode/SharedHistoryContext.js +0 -27
- package/components/ImageNode/SharedHistoryContext.js.map +0 -1
package/HeadingNode.js
CHANGED
|
@@ -1,165 +1,197 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
var _utils = require("@lexical/utils");
|
|
20
|
-
var _richText = require("@lexical/rich-text");
|
|
21
|
-
var _lexicalTheme = require("@webiny/lexical-theme");
|
|
22
|
-
var HeadingNode = exports.HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
23
|
-
function HeadingNode(tag, typographyStyleId, key) {
|
|
24
|
-
var _this;
|
|
25
|
-
(0, _classCallCheck2.default)(this, HeadingNode);
|
|
26
|
-
_this = (0, _callSuper2.default)(this, HeadingNode, [tag, key]);
|
|
27
|
-
(0, _defineProperty2.default)(_this, "__styles", []);
|
|
28
|
-
if (typographyStyleId) {
|
|
29
|
-
_this.__styles.push({
|
|
30
|
-
styleId: typographyStyleId,
|
|
31
|
-
type: "typography"
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
return _this;
|
|
35
|
-
}
|
|
36
|
-
(0, _inherits2.default)(HeadingNode, _BaseHeadingNode);
|
|
37
|
-
return (0, _createClass2.default)(HeadingNode, [{
|
|
38
|
-
key: "setDefaultTypography",
|
|
39
|
-
value: function setDefaultTypography(themeEmotionMap) {
|
|
40
|
-
var typographyStyle = (0, _lexicalTheme.findTypographyStyleByHtmlTag)(this.__tag, themeEmotionMap);
|
|
41
|
-
if (typographyStyle) {
|
|
42
|
-
this.__styles.push({
|
|
43
|
-
styleId: typographyStyle.id,
|
|
44
|
-
type: "typography"
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}, {
|
|
49
|
-
key: "getTypographyStyleId",
|
|
50
|
-
value: function getTypographyStyleId() {
|
|
51
|
-
var style = this.__styles.find(function (x) {
|
|
52
|
-
return x.type === "typography";
|
|
53
|
-
});
|
|
54
|
-
return style?.styleId || undefined;
|
|
55
|
-
}
|
|
56
|
-
}, {
|
|
57
|
-
key: "hasTypographyStyle",
|
|
58
|
-
value: function hasTypographyStyle() {
|
|
59
|
-
return !!this.getTypographyStyleId();
|
|
60
|
-
}
|
|
61
|
-
}, {
|
|
62
|
-
key: "getThemeStyles",
|
|
63
|
-
value: function getThemeStyles() {
|
|
64
|
-
var self = (0, _superPropGet2.default)(HeadingNode, "getLatest", this, 3)([]);
|
|
65
|
-
return self.__styles;
|
|
1
|
+
import { $applyNodeReplacement, setNodeIndentFromDOM, addClassNamesToElement } from "lexical";
|
|
2
|
+
import { HeadingNode as BaseHeadingNode } from "@lexical/rich-text";
|
|
3
|
+
import { Theme } from "@webiny/lexical-theme";
|
|
4
|
+
import { getStyleId } from "./utils/getStyleId.js";
|
|
5
|
+
function isGoogleDocsTitle(domNode) {
|
|
6
|
+
if (domNode.nodeName.toLowerCase() === "span") {
|
|
7
|
+
return domNode.style.fontSize === "26pt";
|
|
8
|
+
}
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
function $convertHeadingElement(element) {
|
|
12
|
+
const nodeName = element.nodeName.toLowerCase();
|
|
13
|
+
let node = null;
|
|
14
|
+
if (nodeName === "h1" || nodeName === "h2" || nodeName === "h3" || nodeName === "h4" || nodeName === "h5" || nodeName === "h6") {
|
|
15
|
+
node = $createHeadingNode(nodeName);
|
|
16
|
+
if (element.style !== null) {
|
|
17
|
+
setNodeIndentFromDOM(element, node);
|
|
18
|
+
node.setFormat(element.style.textAlign);
|
|
66
19
|
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
node
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export class HeadingNode extends BaseHeadingNode {
|
|
26
|
+
constructor(tag, options = {}) {
|
|
27
|
+
const {
|
|
28
|
+
styleId,
|
|
29
|
+
key,
|
|
30
|
+
className
|
|
31
|
+
} = options;
|
|
32
|
+
super(tag, key);
|
|
33
|
+
this.__styleId = styleId;
|
|
34
|
+
this.__className = className;
|
|
35
|
+
}
|
|
36
|
+
getStyleId() {
|
|
37
|
+
return this.__styleId;
|
|
38
|
+
}
|
|
39
|
+
setStyleId(styleId) {
|
|
40
|
+
this.__styleId = styleId;
|
|
41
|
+
}
|
|
42
|
+
setClassName(className) {
|
|
43
|
+
this.__className = className;
|
|
44
|
+
}
|
|
45
|
+
getClassName() {
|
|
46
|
+
return this.__className;
|
|
47
|
+
}
|
|
48
|
+
static getType() {
|
|
49
|
+
return "wby-heading";
|
|
50
|
+
}
|
|
51
|
+
static clone(node) {
|
|
52
|
+
return new HeadingNode(node.getTag(), {
|
|
53
|
+
key: node.getKey(),
|
|
54
|
+
styleId: node.getStyleId(),
|
|
55
|
+
className: node.getClassName()
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
createDOM(config) {
|
|
59
|
+
const element = super.createDOM(config);
|
|
60
|
+
const theme = Theme.from(config.theme);
|
|
61
|
+
return this.updateElementWithThemeClasses(element, theme);
|
|
62
|
+
}
|
|
63
|
+
exportDOM(editor) {
|
|
64
|
+
const base = super.exportDOM(editor);
|
|
65
|
+
const element = base.element;
|
|
66
|
+
if (element && this.__className) {
|
|
67
|
+
element.classList.add(this.__className);
|
|
73
68
|
}
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
69
|
+
return {
|
|
70
|
+
...base,
|
|
71
|
+
element
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
static importDOM() {
|
|
75
|
+
return {
|
|
76
|
+
h1: () => ({
|
|
77
|
+
conversion: $convertHeadingElement,
|
|
78
|
+
priority: 0
|
|
79
|
+
}),
|
|
80
|
+
h2: () => ({
|
|
81
|
+
conversion: $convertHeadingElement,
|
|
82
|
+
priority: 0
|
|
83
|
+
}),
|
|
84
|
+
h3: () => ({
|
|
85
|
+
conversion: $convertHeadingElement,
|
|
86
|
+
priority: 0
|
|
87
|
+
}),
|
|
88
|
+
h4: () => ({
|
|
89
|
+
conversion: $convertHeadingElement,
|
|
90
|
+
priority: 0
|
|
91
|
+
}),
|
|
92
|
+
h5: () => ({
|
|
93
|
+
conversion: $convertHeadingElement,
|
|
94
|
+
priority: 0
|
|
95
|
+
}),
|
|
96
|
+
h6: () => ({
|
|
97
|
+
conversion: $convertHeadingElement,
|
|
98
|
+
priority: 0
|
|
99
|
+
}),
|
|
100
|
+
p: node => {
|
|
101
|
+
// domNode is a <p> since we matched it by nodeName
|
|
102
|
+
const firstChild = node.firstChild;
|
|
103
|
+
if (firstChild !== null && isGoogleDocsTitle(firstChild)) {
|
|
104
|
+
return {
|
|
105
|
+
conversion: () => ({
|
|
106
|
+
node: null
|
|
107
|
+
}),
|
|
108
|
+
priority: 3
|
|
109
|
+
};
|
|
91
110
|
}
|
|
111
|
+
return null;
|
|
112
|
+
},
|
|
113
|
+
span: node => {
|
|
114
|
+
if (isGoogleDocsTitle(node)) {
|
|
115
|
+
return {
|
|
116
|
+
conversion: () => {
|
|
117
|
+
return {
|
|
118
|
+
node: $createHeadingNode("h1")
|
|
119
|
+
};
|
|
120
|
+
},
|
|
121
|
+
priority: 3
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
92
125
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
static importJSON(serializedNode) {
|
|
129
|
+
const node = $createHeadingNode(serializedNode.tag);
|
|
130
|
+
node.setFormat(serializedNode.format);
|
|
131
|
+
node.setIndent(serializedNode.indent);
|
|
132
|
+
node.setDirection(serializedNode.direction);
|
|
133
|
+
const styleId = getStyleId({
|
|
134
|
+
styleId: serializedNode.styleId,
|
|
135
|
+
styles: serializedNode.styles
|
|
136
|
+
});
|
|
137
|
+
node.setStyleId(styleId);
|
|
138
|
+
node.setClassName(serializedNode.className);
|
|
139
|
+
return node;
|
|
140
|
+
}
|
|
141
|
+
exportJSON() {
|
|
142
|
+
return {
|
|
143
|
+
...super.exportJSON(),
|
|
144
|
+
type: "wby-heading",
|
|
145
|
+
styleId: this.__styleId,
|
|
146
|
+
className: this.__className
|
|
147
|
+
};
|
|
148
|
+
}
|
|
113
149
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
});
|
|
134
|
-
this.replace(newElement);
|
|
135
|
-
return true;
|
|
150
|
+
// Mutation
|
|
151
|
+
insertNewAfter(selection, restoreSelection = true) {
|
|
152
|
+
// Next line for headings are always headings with the same tag
|
|
153
|
+
const newElement = $createHeadingNode(this.getTag());
|
|
154
|
+
const direction = this.getDirection();
|
|
155
|
+
newElement.setDirection(direction);
|
|
156
|
+
this.insertAfter(newElement, restoreSelection);
|
|
157
|
+
return newElement;
|
|
158
|
+
}
|
|
159
|
+
collapseAtStart() {
|
|
160
|
+
const newElement = $createHeadingNode(this.getTag());
|
|
161
|
+
const children = this.getChildren();
|
|
162
|
+
children.forEach(child => newElement.append(child));
|
|
163
|
+
this.replace(newElement);
|
|
164
|
+
return true;
|
|
165
|
+
}
|
|
166
|
+
updateElementWithThemeClasses(element, theme) {
|
|
167
|
+
if (!this.__styleId || !this.__className) {
|
|
168
|
+
this.setDefaultTypography(theme, this.__styleId);
|
|
136
169
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
value: function getType() {
|
|
140
|
-
return "heading-element";
|
|
170
|
+
if (this.__className) {
|
|
171
|
+
addClassNamesToElement(element, this.__className);
|
|
141
172
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
173
|
+
return element;
|
|
174
|
+
}
|
|
175
|
+
setDefaultTypography(theme, styleId) {
|
|
176
|
+
let typographyStyle = theme.getTypographyByTag(this.getTag());
|
|
177
|
+
if (styleId) {
|
|
178
|
+
const byStyleId = theme.getTypographyById(styleId);
|
|
179
|
+
if (byStyleId) {
|
|
180
|
+
typographyStyle = byStyleId;
|
|
181
|
+
}
|
|
146
182
|
}
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
var node = $createHeadingNode(serializedNode.tag);
|
|
151
|
-
node.setFormat(serializedNode.format);
|
|
152
|
-
node.setIndent(serializedNode.indent);
|
|
153
|
-
node.setDirection(serializedNode.direction);
|
|
154
|
-
node.setThemeStyles(serializedNode.styles);
|
|
155
|
-
return node;
|
|
183
|
+
if (typographyStyle) {
|
|
184
|
+
this.__styleId = typographyStyle.id;
|
|
185
|
+
this.__className = typographyStyle.className;
|
|
156
186
|
}
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
function $createHeadingNode(tag,
|
|
160
|
-
return
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
export function $createHeadingNode(tag, styleId) {
|
|
190
|
+
return $applyNodeReplacement(new HeadingNode(tag, {
|
|
191
|
+
styleId
|
|
192
|
+
}));
|
|
161
193
|
}
|
|
162
|
-
function $isHeadingNode(node) {
|
|
194
|
+
export function $isHeadingNode(node) {
|
|
163
195
|
return node instanceof HeadingNode;
|
|
164
196
|
}
|
|
165
197
|
|
package/HeadingNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","exports","_BaseHeadingNode","tag","typographyStyleId","key","_this","_classCallCheck2","default","_callSuper2","_defineProperty2","__styles","push","styleId","type","_inherits2","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","getTypographyStyleId","style","find","x","undefined","hasTypographyStyle","getThemeStyles","self","_superPropGet2","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","exportJSON","_objectSpread2","version","insertNewAfter","selection","restoreSelection","arguments","length","newElement","$createHeadingNode","getTag","direction","getDirection","setDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","BaseHeadingNode","$applyNodeReplacement","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import {\n EditorConfig,\n $applyNodeReplacement,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n HeadingNode as BaseHeadingNode,\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { EditorTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { ParagraphNode } from \"~/ParagraphNode\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"heading-element\";\n },\n BaseSerializedHeadingNode\n>;\n\nexport class HeadingNode\n extends BaseHeadingNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey) {\n super(tag, key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n private setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.__tag, themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n private hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"heading-element\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: EditorTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as EditorTheme);\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"heading-element\",\n version: 1\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, typographyStyleId));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAAA,IAAAA,QAAA,GAAAC,OAAA;AAQA,IAAAC,MAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAKA,IAAAG,aAAA,GAAAH,OAAA;AAAmG,IAYtFI,WAAW,GAAAC,OAAA,CAAAD,WAAA,0BAAAE,gBAAA;EAMpB,SAAAF,YAAYG,GAAmB,EAAEC,iBAA0B,EAAEC,GAAa,EAAE;IAAA,IAAAC,KAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,QAAAR,WAAA;IACxEM,KAAA,OAAAG,WAAA,CAAAD,OAAA,QAAAR,WAAA,GAAMG,GAAG,EAAEE,GAAG;IAAE,IAAAK,gBAAA,CAAAF,OAAA,EAAAF,KAAA,cAHU,EAAE;IAK5B,IAAIF,iBAAiB,EAAE;MACnBE,KAAA,CAAKK,QAAQ,CAACC,IAAI,CAAC;QAAEC,OAAO,EAAET,iBAAiB;QAAEU,IAAI,EAAE;MAAa,CAAC,CAAC;IAC1E;IAAC,OAAAR,KAAA;EACL;EAAC,IAAAS,UAAA,CAAAP,OAAA,EAAAR,WAAA,EAAAE,gBAAA;EAAA,WAAAc,aAAA,CAAAR,OAAA,EAAAR,WAAA;IAAAK,GAAA;IAAAY,KAAA,EAED,SAAQC,oBAAoBA,CAACC,eAAgC,EAAE;MAC3D,IAAMC,eAAe,GAAG,IAAAC,0CAA4B,EAAC,IAAI,CAACC,KAAK,EAAEH,eAAe,CAAC;MACjF,IAAIC,eAAe,EAAE;QACjB,IAAI,CAACT,QAAQ,CAACC,IAAI,CAAC;UAAEC,OAAO,EAAEO,eAAe,CAACG,EAAE;UAAET,IAAI,EAAE;QAAa,CAAC,CAAC;MAC3E;IACJ;EAAC;IAAAT,GAAA;IAAAY,KAAA,EAED,SAAAO,oBAAoBA,CAAA,EAAuB;MACvC,IAAMC,KAAK,GAAG,IAAI,CAACd,QAAQ,CAACe,IAAI,CAAC,UAAAC,CAAC;QAAA,OAAIA,CAAC,CAACb,IAAI,KAAK,YAAY;MAAA,EAAC;MAC9D,OAAOW,KAAK,EAAEZ,OAAO,IAAIe,SAAS;IACtC;EAAC;IAAAvB,GAAA;IAAAY,KAAA,EAED,SAAQY,kBAAkBA,CAAA,EAAY;MAClC,OAAO,CAAC,CAAC,IAAI,CAACL,oBAAoB,CAAC,CAAC;IACxC;EAAC;IAAAnB,GAAA;IAAAY,KAAA,EAED,SAAAa,cAAcA,CAAA,EAAsB;MAChC,IAAMC,IAAI,OAAAC,cAAA,CAAAxB,OAAA,EAAAR,WAAA,2BAAoB;MAC9B,OAAO+B,IAAI,CAACpB,QAAQ;IACxB;EAAC;IAAAN,GAAA;IAAAY,KAAA,EAED,SAAAgB,cAAcA,CAACC,MAAyB,EAAE;MACtC,IAAMH,IAAI,OAAAC,cAAA,CAAAxB,OAAA,EAAAR,WAAA,6BAAsB;MAChC+B,IAAI,CAACpB,QAAQ,OAAAwB,mBAAA,CAAA3B,OAAA,EAAO0B,MAAM,CAAC;MAC3B,OAAOH,IAAI;IACf;EAAC;IAAA1B,GAAA;IAAAY,KAAA,EAUD,SAAUmB,6BAA6BA,CAACC,OAAoB,EAAEC,KAAkB,EAAe;MAC3F,IAAI,CAACA,KAAK,EAAEC,UAAU,EAAE;QACpB,OAAOF,OAAO;MAClB;MAEA,IAAI,CAAC,IAAI,CAACR,kBAAkB,CAAC,CAAC,EAAE;QAC5B,IAAI,CAACX,oBAAoB,CAACoB,KAAK,CAACC,UAAU,CAAC;MAC/C;MAEA,IAAMC,WAAW,GAAG,IAAI,CAAChB,oBAAoB,CAAC,CAAC;MAE/C,IAAIiB,YAAY;;MAEhB;MACA,IAAID,WAAW,EAAE;QACb,IAAMpB,eAAe,GAAGkB,KAAK,CAACC,UAAU,CAACC,WAAW,CAAC;QACrD,IAAIpB,eAAe,EAAE;UACjBqB,YAAY,GAAGrB,eAAe,CAACsB,SAAS;QAC5C;MACJ;MAEA,IAAID,YAAY,EAAE;QACd,IAAAE,6BAAsB,EAACN,OAAO,EAAEI,YAAY,CAAC;MACjD;MAEA,OAAOJ,OAAO;IAClB;EAAC;IAAAhC,GAAA;IAAAY,KAAA,EAED,SAAS2B,SAASA,CAACC,MAAoB,EAAe;MAClD,IAAMR,OAAO,OAAAL,cAAA,CAAAxB,OAAA,EAAAR,WAAA,yBAAmB6C,MAAM,EAAC;MACvC,OAAO,IAAI,CAACT,6BAA6B,CAACC,OAAO,EAAEQ,MAAM,CAACP,KAAoB,CAAC;IACnF;EAAC;IAAAjC,GAAA;IAAAY,KAAA,EAWD,SAAS6B,UAAUA,CAAA,EAAyB;MACxC,WAAAC,cAAA,CAAAvC,OAAA,MAAAuC,cAAA,CAAAvC,OAAA,UAAAwB,cAAA,CAAAxB,OAAA,EAAAR,WAAA;QAEIkC,MAAM,EAAE,IAAI,CAACvB,QAAQ;QACrBG,IAAI,EAAE,iBAAiB;QACvBkC,OAAO,EAAE;MAAC;IAElB;;IAEA;EAAA;IAAA3C,GAAA;IAAAY,KAAA,EACA,SAASgC,cAAcA,CACnBC,SAA0B,EAEC;MAAA,IAD3BC,gBAAgB,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAxB,SAAA,GAAAwB,SAAA,MAAG,IAAI;MAEvB;MACA,IAAME,UAAU,GAAGC,kBAAkB,CAAC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC;MACpD,IAAMC,SAAS,GAAG,IAAI,CAACC,YAAY,CAAC,CAAC;MACrCJ,UAAU,CAACK,YAAY,CAACF,SAAS,CAAC;MAClC,IAAI,CAACG,WAAW,CAACN,UAAU,EAAEH,gBAAgB,CAAC;MAC9C,OAAOG,UAAU;IACrB;EAAC;IAAAjD,GAAA;IAAAY,KAAA,EAED,SAAS4C,eAAeA,CAAA,EAAS;MAC7B,IAAMP,UAAU,GAAGC,kBAAkB,CAAC,IAAI,CAACC,MAAM,CAAC,CAAC,CAAC;MACpD,IAAMM,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAACE,OAAO,CAAC,UAAAC,KAAK;QAAA,OAAIX,UAAU,CAACY,MAAM,CAACD,KAAK,CAAC;MAAA,EAAC;MACnD,IAAI,CAACE,OAAO,CAACb,UAAU,CAAC;MACxB,OAAO,IAAI;IACf;EAAC;IAAAjD,GAAA;IAAAY,KAAA,EA9ED,SAAgBmD,OAAOA,CAAA,EAAW;MAC9B,OAAO,iBAAiB;IAC5B;EAAC;IAAA/D,GAAA;IAAAY,KAAA,EAED,SAAgBoD,KAAKA,CAACC,IAAiB,EAAe;MAClD,OAAO,IAAItE,WAAW,CAACsE,IAAI,CAACd,MAAM,CAAC,CAAC,EAAEc,IAAI,CAAC9C,oBAAoB,CAAC,CAAC,EAAE8C,IAAI,CAACC,KAAK,CAAC;IAClF;EAAC;IAAAlE,GAAA;IAAAY,KAAA,EAmCD,SAAgBuD,UAAUA,CAACC,cAAoC,EAAmB;MAC9E,IAAMH,IAAI,GAAGf,kBAAkB,CAACkB,cAAc,CAACtE,GAAG,CAAC;MACnDmE,IAAI,CAACI,SAAS,CAACD,cAAc,CAACE,MAAM,CAAC;MACrCL,IAAI,CAACM,SAAS,CAACH,cAAc,CAACI,MAAM,CAAC;MACrCP,IAAI,CAACX,YAAY,CAACc,cAAc,CAAChB,SAAS,CAAC;MAC3Ca,IAAI,CAACrC,cAAc,CAACwC,cAAc,CAACvC,MAAM,CAAC;MAC1C,OAAOoC,IAAI;IACf;EAAC;AAAA,EAxFOQ,qBAAe;AAyHpB,SAASvB,kBAAkBA,CAACpD,GAAmB,EAAEC,iBAA0B,EAAe;EAC7F,OAAO,IAAA2E,8BAAqB,EAAC,IAAI/E,WAAW,CAACG,GAAG,EAAEC,iBAAiB,CAAC,CAAC;AACzE;AAEO,SAAS4E,cAAcA,CAACV,IAAoC,EAAuB;EACtF,OAAOA,IAAI,YAAYtE,WAAW;AACtC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["$applyNodeReplacement","setNodeIndentFromDOM","addClassNamesToElement","HeadingNode","BaseHeadingNode","Theme","getStyleId","isGoogleDocsTitle","domNode","nodeName","toLowerCase","style","fontSize","$convertHeadingElement","element","node","$createHeadingNode","setFormat","textAlign","constructor","tag","options","styleId","key","className","__styleId","__className","setStyleId","setClassName","getClassName","getType","clone","getTag","getKey","createDOM","config","theme","from","updateElementWithThemeClasses","exportDOM","editor","base","classList","add","importDOM","h1","conversion","priority","h2","h3","h4","h5","h6","p","firstChild","span","importJSON","serializedNode","format","setIndent","indent","setDirection","direction","styles","exportJSON","type","insertNewAfter","selection","restoreSelection","newElement","getDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","setDefaultTypography","typographyStyle","getTypographyByTag","byStyleId","getTypographyById","id","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import type {\n EditorConfig,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread,\n LexicalEditor,\n DOMExportOutput,\n DOMConversionMap\n} from \"lexical\";\nimport { $applyNodeReplacement, setNodeIndentFromDOM, addClassNamesToElement } from \"lexical\";\nimport type {\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { HeadingNode as BaseHeadingNode } from \"@lexical/rich-text\";\nimport { Theme } from \"@webiny/lexical-theme\";\nimport type { ParagraphNode } from \"~/ParagraphNode.js\";\nimport type { TypographyStylesNode, ThemeStyleValue } from \"~/types.js\";\nimport { getStyleId } from \"~/utils/getStyleId.js\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles?: ThemeStyleValue[];\n styleId?: string;\n className?: string;\n type: \"wby-heading\";\n },\n BaseSerializedHeadingNode\n>;\n\ninterface HeadingNodeOptions {\n className?: string;\n styleId?: string;\n key?: NodeKey;\n}\n\nfunction isGoogleDocsTitle(domNode: HTMLElement) {\n if (domNode.nodeName.toLowerCase() === \"span\") {\n return domNode.style.fontSize === \"26pt\";\n }\n return false;\n}\nfunction $convertHeadingElement(element: HTMLElement) {\n const nodeName = element.nodeName.toLowerCase();\n let node = null;\n if (\n nodeName === \"h1\" ||\n nodeName === \"h2\" ||\n nodeName === \"h3\" ||\n nodeName === \"h4\" ||\n nodeName === \"h5\" ||\n nodeName === \"h6\"\n ) {\n node = $createHeadingNode(nodeName);\n if (element.style !== null) {\n setNodeIndentFromDOM(element, node);\n node.setFormat(element.style.textAlign as any);\n }\n }\n return {\n node\n };\n}\n\nexport class HeadingNode extends BaseHeadingNode implements TypographyStylesNode {\n private __styleId: string | undefined;\n private __className: string | undefined;\n\n constructor(tag: HeadingTagType, options: HeadingNodeOptions = {}) {\n const { styleId, key, className } = options;\n\n super(tag, key);\n\n this.__styleId = styleId;\n this.__className = className;\n }\n\n getStyleId(): string | undefined {\n return this.__styleId;\n }\n\n setStyleId(styleId: string | undefined) {\n this.__styleId = styleId;\n }\n\n setClassName(className: string | undefined) {\n this.__className = className;\n }\n\n getClassName(): string | undefined {\n return this.__className;\n }\n\n static override getType(): string {\n return \"wby-heading\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), {\n key: node.getKey(),\n styleId: node.getStyleId(),\n className: node.getClassName()\n });\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n\n const theme = Theme.from(config.theme);\n\n return this.updateElementWithThemeClasses(element, theme);\n }\n\n override exportDOM(editor: LexicalEditor): DOMExportOutput {\n const base = super.exportDOM(editor);\n\n const element = base.element as HTMLElement;\n if (element && this.__className) {\n element.classList.add(this.__className);\n }\n\n return { ...base, element };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n h1: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n h2: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n h3: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n h4: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n h5: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n h6: () => ({\n conversion: $convertHeadingElement,\n priority: 0\n }),\n p: node => {\n // domNode is a <p> since we matched it by nodeName\n const firstChild = node.firstChild as HTMLElement;\n if (firstChild !== null && isGoogleDocsTitle(firstChild)) {\n return {\n conversion: () => ({\n node: null\n }),\n priority: 3\n };\n }\n return null;\n },\n span: node => {\n if (isGoogleDocsTitle(node)) {\n return {\n conversion: () => {\n return {\n node: $createHeadingNode(\"h1\")\n };\n },\n priority: 3\n };\n }\n return null;\n }\n };\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n\n const styleId = getStyleId({\n styleId: serializedNode.styleId,\n styles: serializedNode.styles\n });\n\n node.setStyleId(styleId);\n node.setClassName(serializedNode.className);\n\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n type: \"wby-heading\",\n styleId: this.__styleId,\n className: this.__className\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: Theme): HTMLElement {\n if (!this.__styleId || !this.__className) {\n this.setDefaultTypography(theme, this.__styleId);\n }\n\n if (this.__className) {\n addClassNamesToElement(element, this.__className);\n }\n\n return element;\n }\n\n private setDefaultTypography(theme: Theme, styleId?: string) {\n let typographyStyle = theme.getTypographyByTag(this.getTag());\n if (styleId) {\n const byStyleId = theme.getTypographyById(styleId);\n if (byStyleId) {\n typographyStyle = byStyleId;\n }\n }\n\n if (typographyStyle) {\n this.__styleId = typographyStyle.id;\n this.__className = typographyStyle.className;\n }\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, styleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, { styleId }));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":"AAUA,SAASA,qBAAqB,EAAEC,oBAAoB,EAAEC,sBAAsB,QAAQ,SAAS;AAK7F,SAASC,WAAW,IAAIC,eAAe,QAAQ,oBAAoB;AACnE,SAASC,KAAK,QAAQ,uBAAuB;AAG7C,SAASC,UAAU;AAkBnB,SAASC,iBAAiBA,CAACC,OAAoB,EAAE;EAC7C,IAAIA,OAAO,CAACC,QAAQ,CAACC,WAAW,CAAC,CAAC,KAAK,MAAM,EAAE;IAC3C,OAAOF,OAAO,CAACG,KAAK,CAACC,QAAQ,KAAK,MAAM;EAC5C;EACA,OAAO,KAAK;AAChB;AACA,SAASC,sBAAsBA,CAACC,OAAoB,EAAE;EAClD,MAAML,QAAQ,GAAGK,OAAO,CAACL,QAAQ,CAACC,WAAW,CAAC,CAAC;EAC/C,IAAIK,IAAI,GAAG,IAAI;EACf,IACIN,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,IAAI,IACjBA,QAAQ,KAAK,IAAI,EACnB;IACEM,IAAI,GAAGC,kBAAkB,CAACP,QAAQ,CAAC;IACnC,IAAIK,OAAO,CAACH,KAAK,KAAK,IAAI,EAAE;MACxBV,oBAAoB,CAACa,OAAO,EAAEC,IAAI,CAAC;MACnCA,IAAI,CAACE,SAAS,CAACH,OAAO,CAACH,KAAK,CAACO,SAAgB,CAAC;IAClD;EACJ;EACA,OAAO;IACHH;EACJ,CAAC;AACL;AAEA,OAAO,MAAMZ,WAAW,SAASC,eAAe,CAAiC;EAI7Ee,WAAWA,CAACC,GAAmB,EAAEC,OAA2B,GAAG,CAAC,CAAC,EAAE;IAC/D,MAAM;MAAEC,OAAO;MAAEC,GAAG;MAAEC;IAAU,CAAC,GAAGH,OAAO;IAE3C,KAAK,CAACD,GAAG,EAAEG,GAAG,CAAC;IAEf,IAAI,CAACE,SAAS,GAAGH,OAAO;IACxB,IAAI,CAACI,WAAW,GAAGF,SAAS;EAChC;EAEAlB,UAAUA,CAAA,EAAuB;IAC7B,OAAO,IAAI,CAACmB,SAAS;EACzB;EAEAE,UAAUA,CAACL,OAA2B,EAAE;IACpC,IAAI,CAACG,SAAS,GAAGH,OAAO;EAC5B;EAEAM,YAAYA,CAACJ,SAA6B,EAAE;IACxC,IAAI,CAACE,WAAW,GAAGF,SAAS;EAChC;EAEAK,YAAYA,CAAA,EAAuB;IAC/B,OAAO,IAAI,CAACH,WAAW;EAC3B;EAEA,OAAgBI,OAAOA,CAAA,EAAW;IAC9B,OAAO,aAAa;EACxB;EAEA,OAAgBC,KAAKA,CAAChB,IAAiB,EAAe;IAClD,OAAO,IAAIZ,WAAW,CAACY,IAAI,CAACiB,MAAM,CAAC,CAAC,EAAE;MAClCT,GAAG,EAAER,IAAI,CAACkB,MAAM,CAAC,CAAC;MAClBX,OAAO,EAAEP,IAAI,CAACT,UAAU,CAAC,CAAC;MAC1BkB,SAAS,EAAET,IAAI,CAACc,YAAY,CAAC;IACjC,CAAC,CAAC;EACN;EAESK,SAASA,CAACC,MAAoB,EAAe;IAClD,MAAMrB,OAAO,GAAG,KAAK,CAACoB,SAAS,CAACC,MAAM,CAAC;IAEvC,MAAMC,KAAK,GAAG/B,KAAK,CAACgC,IAAI,CAACF,MAAM,CAACC,KAAK,CAAC;IAEtC,OAAO,IAAI,CAACE,6BAA6B,CAACxB,OAAO,EAAEsB,KAAK,CAAC;EAC7D;EAESG,SAASA,CAACC,MAAqB,EAAmB;IACvD,MAAMC,IAAI,GAAG,KAAK,CAACF,SAAS,CAACC,MAAM,CAAC;IAEpC,MAAM1B,OAAO,GAAG2B,IAAI,CAAC3B,OAAsB;IAC3C,IAAIA,OAAO,IAAI,IAAI,CAACY,WAAW,EAAE;MAC7BZ,OAAO,CAAC4B,SAAS,CAACC,GAAG,CAAC,IAAI,CAACjB,WAAW,CAAC;IAC3C;IAEA,OAAO;MAAE,GAAGe,IAAI;MAAE3B;IAAQ,CAAC;EAC/B;EAEA,OAAgB8B,SAASA,CAAA,EAA4B;IACjD,OAAO;MACHC,EAAE,EAAEA,CAAA,MAAO;QACPC,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFC,EAAE,EAAEA,CAAA,MAAO;QACPF,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFE,EAAE,EAAEA,CAAA,MAAO;QACPH,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFG,EAAE,EAAEA,CAAA,MAAO;QACPJ,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFI,EAAE,EAAEA,CAAA,MAAO;QACPL,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFK,EAAE,EAAEA,CAAA,MAAO;QACPN,UAAU,EAAEjC,sBAAsB;QAClCkC,QAAQ,EAAE;MACd,CAAC,CAAC;MACFM,CAAC,EAAEtC,IAAI,IAAI;QACP;QACA,MAAMuC,UAAU,GAAGvC,IAAI,CAACuC,UAAyB;QACjD,IAAIA,UAAU,KAAK,IAAI,IAAI/C,iBAAiB,CAAC+C,UAAU,CAAC,EAAE;UACtD,OAAO;YACHR,UAAU,EAAEA,CAAA,MAAO;cACf/B,IAAI,EAAE;YACV,CAAC,CAAC;YACFgC,QAAQ,EAAE;UACd,CAAC;QACL;QACA,OAAO,IAAI;MACf,CAAC;MACDQ,IAAI,EAAExC,IAAI,IAAI;QACV,IAAIR,iBAAiB,CAACQ,IAAI,CAAC,EAAE;UACzB,OAAO;YACH+B,UAAU,EAAEA,CAAA,KAAM;cACd,OAAO;gBACH/B,IAAI,EAAEC,kBAAkB,CAAC,IAAI;cACjC,CAAC;YACL,CAAC;YACD+B,QAAQ,EAAE;UACd,CAAC;QACL;QACA,OAAO,IAAI;MACf;IACJ,CAAC;EACL;EAEA,OAAgBS,UAAUA,CAACC,cAAoC,EAAmB;IAC9E,MAAM1C,IAAI,GAAGC,kBAAkB,CAACyC,cAAc,CAACrC,GAAG,CAAC;IACnDL,IAAI,CAACE,SAAS,CAACwC,cAAc,CAACC,MAAM,CAAC;IACrC3C,IAAI,CAAC4C,SAAS,CAACF,cAAc,CAACG,MAAM,CAAC;IACrC7C,IAAI,CAAC8C,YAAY,CAACJ,cAAc,CAACK,SAAS,CAAC;IAE3C,MAAMxC,OAAO,GAAGhB,UAAU,CAAC;MACvBgB,OAAO,EAAEmC,cAAc,CAACnC,OAAO;MAC/ByC,MAAM,EAAEN,cAAc,CAACM;IAC3B,CAAC,CAAC;IAEFhD,IAAI,CAACY,UAAU,CAACL,OAAO,CAAC;IACxBP,IAAI,CAACa,YAAY,CAAC6B,cAAc,CAACjC,SAAS,CAAC;IAE3C,OAAOT,IAAI;EACf;EAESiD,UAAUA,CAAA,EAAyB;IACxC,OAAO;MACH,GAAG,KAAK,CAACA,UAAU,CAAC,CAAC;MACrBC,IAAI,EAAE,aAAa;MACnB3C,OAAO,EAAE,IAAI,CAACG,SAAS;MACvBD,SAAS,EAAE,IAAI,CAACE;IACpB,CAAC;EACL;;EAEA;EACSwC,cAAcA,CACnBC,SAA0B,EAC1BC,gBAAgB,GAAG,IAAI,EACI;IAC3B;IACA,MAAMC,UAAU,GAAGrD,kBAAkB,CAAC,IAAI,CAACgB,MAAM,CAAC,CAAC,CAAC;IACpD,MAAM8B,SAAS,GAAG,IAAI,CAACQ,YAAY,CAAC,CAAC;IACrCD,UAAU,CAACR,YAAY,CAACC,SAAS,CAAC;IAClC,IAAI,CAACS,WAAW,CAACF,UAAU,EAAED,gBAAgB,CAAC;IAC9C,OAAOC,UAAU;EACrB;EAESG,eAAeA,CAAA,EAAS;IAC7B,MAAMH,UAAU,GAAGrD,kBAAkB,CAAC,IAAI,CAACgB,MAAM,CAAC,CAAC,CAAC;IACpD,MAAMyC,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;IACnCD,QAAQ,CAACE,OAAO,CAACC,KAAK,IAAIP,UAAU,CAACQ,MAAM,CAACD,KAAK,CAAC,CAAC;IACnD,IAAI,CAACE,OAAO,CAACT,UAAU,CAAC;IACxB,OAAO,IAAI;EACf;EAEU/B,6BAA6BA,CAACxB,OAAoB,EAAEsB,KAAY,EAAe;IACrF,IAAI,CAAC,IAAI,CAACX,SAAS,IAAI,CAAC,IAAI,CAACC,WAAW,EAAE;MACtC,IAAI,CAACqD,oBAAoB,CAAC3C,KAAK,EAAE,IAAI,CAACX,SAAS,CAAC;IACpD;IAEA,IAAI,IAAI,CAACC,WAAW,EAAE;MAClBxB,sBAAsB,CAACY,OAAO,EAAE,IAAI,CAACY,WAAW,CAAC;IACrD;IAEA,OAAOZ,OAAO;EAClB;EAEQiE,oBAAoBA,CAAC3C,KAAY,EAAEd,OAAgB,EAAE;IACzD,IAAI0D,eAAe,GAAG5C,KAAK,CAAC6C,kBAAkB,CAAC,IAAI,CAACjD,MAAM,CAAC,CAAC,CAAC;IAC7D,IAAIV,OAAO,EAAE;MACT,MAAM4D,SAAS,GAAG9C,KAAK,CAAC+C,iBAAiB,CAAC7D,OAAO,CAAC;MAClD,IAAI4D,SAAS,EAAE;QACXF,eAAe,GAAGE,SAAS;MAC/B;IACJ;IAEA,IAAIF,eAAe,EAAE;MACjB,IAAI,CAACvD,SAAS,GAAGuD,eAAe,CAACI,EAAE;MACnC,IAAI,CAAC1D,WAAW,GAAGsD,eAAe,CAACxD,SAAS;IAChD;EACJ;AACJ;AAEA,OAAO,SAASR,kBAAkBA,CAACI,GAAmB,EAAEE,OAAgB,EAAe;EACnF,OAAOtB,qBAAqB,CAAC,IAAIG,WAAW,CAACiB,GAAG,EAAE;IAAEE;EAAQ,CAAC,CAAC,CAAC;AACnE;AAEA,OAAO,SAAS+D,cAAcA,CAACtE,IAAoC,EAAuB;EACtF,OAAOA,IAAI,YAAYZ,WAAW;AACtC","ignoreList":[]}
|
package/ImageNode.d.ts
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedEditor, SerializedLexicalNode, Spread } from "lexical";
|
|
1
|
+
import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalNode, NodeKey, SerializedLexicalNode, Spread } from "lexical";
|
|
3
2
|
import { DecoratorNode } from "lexical";
|
|
4
3
|
export type SerializedImageNode = Spread<{
|
|
5
4
|
id: string;
|
|
6
5
|
altText: string;
|
|
7
|
-
caption: SerializedEditor;
|
|
8
6
|
height?: number;
|
|
9
7
|
maxWidth: number;
|
|
10
|
-
showCaption: boolean;
|
|
11
8
|
src: string;
|
|
12
9
|
width?: number;
|
|
13
10
|
}, SerializedLexicalNode>;
|
|
@@ -18,9 +15,6 @@ export interface ImageNodeProps {
|
|
|
18
15
|
maxWidth: number;
|
|
19
16
|
width?: "inherit" | number;
|
|
20
17
|
height?: "inherit" | number;
|
|
21
|
-
showCaption?: boolean;
|
|
22
|
-
caption?: LexicalEditor;
|
|
23
|
-
captionsEnabled?: boolean;
|
|
24
18
|
}
|
|
25
19
|
export declare class ImageNode extends DecoratorNode<JSX.Element> {
|
|
26
20
|
__id: string;
|
|
@@ -29,9 +23,6 @@ export declare class ImageNode extends DecoratorNode<JSX.Element> {
|
|
|
29
23
|
__width: "inherit" | number;
|
|
30
24
|
__height: "inherit" | number;
|
|
31
25
|
__maxWidth: number;
|
|
32
|
-
__showCaption: boolean;
|
|
33
|
-
__caption: LexicalEditor;
|
|
34
|
-
__captionsEnabled: boolean;
|
|
35
26
|
static getType(): string;
|
|
36
27
|
static clone(node: ImageNode): ImageNode;
|
|
37
28
|
static importJSON(serializedNode: SerializedImageNode): ImageNode;
|
|
@@ -45,7 +36,6 @@ export declare class ImageNode extends DecoratorNode<JSX.Element> {
|
|
|
45
36
|
constructor(props: ImageNodeProps, key?: NodeKey);
|
|
46
37
|
exportJSON(): SerializedImageNode;
|
|
47
38
|
setWidthAndHeight(width: "inherit" | number, height: "inherit" | number): void;
|
|
48
|
-
setShowCaption(showCaption: boolean): void;
|
|
49
39
|
createDOM(config: EditorConfig): HTMLElement;
|
|
50
40
|
updateDOM(): false;
|
|
51
41
|
getSrc(): string;
|