@webiny/lexical-editor 5.35.2 → 5.36.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/components/Editor/HeadingEditor.js +1 -1
  2. package/components/Editor/HeadingEditor.js.map +1 -1
  3. package/components/Editor/RichTextEditor.js +1 -1
  4. package/components/Editor/RichTextEditor.js.map +1 -1
  5. package/components/ToolbarActions/QuoteAction.js +0 -2
  6. package/components/ToolbarActions/QuoteAction.js.map +1 -1
  7. package/components/ToolbarActions/TypographyAction.js +30 -3
  8. package/components/ToolbarActions/TypographyAction.js.map +1 -1
  9. package/hooks/useQuote.d.ts +2 -0
  10. package/hooks/{useWebinyQuote.js → useQuote.js} +2 -2
  11. package/hooks/useQuote.js.map +1 -0
  12. package/nodes/HeadingNode.d.ts +34 -0
  13. package/nodes/HeadingNode.js +192 -0
  14. package/nodes/HeadingNode.js.map +1 -0
  15. package/nodes/ParagraphNode.d.ts +32 -0
  16. package/nodes/ParagraphNode.js +218 -0
  17. package/nodes/ParagraphNode.js.map +1 -0
  18. package/nodes/QuoteNode.d.ts +34 -0
  19. package/nodes/QuoteNode.js +225 -0
  20. package/nodes/QuoteNode.js.map +1 -0
  21. package/nodes/TypographyElementNode.js +2 -1
  22. package/nodes/TypographyElementNode.js.map +1 -1
  23. package/nodes/list-node/WebinyListItemNode.js +2 -1
  24. package/nodes/list-node/WebinyListItemNode.js.map +1 -1
  25. package/nodes/list-node/formatList.js +3 -2
  26. package/nodes/list-node/formatList.js.map +1 -1
  27. package/nodes/types.d.ts +15 -0
  28. package/nodes/types.js +5 -0
  29. package/nodes/types.js.map +1 -0
  30. package/nodes/webinyNodes.js +29 -5
  31. package/nodes/webinyNodes.js.map +1 -1
  32. package/package.json +17 -17
  33. package/plugins/FontColorPlugin/FontColorPlugin.js +2 -1
  34. package/plugins/FontColorPlugin/FontColorPlugin.js.map +1 -1
  35. package/plugins/TypographyPlugin/TypographyPlugin.js +9 -5
  36. package/plugins/TypographyPlugin/TypographyPlugin.js.map +1 -1
  37. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.d.ts +1 -1
  38. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js +7 -7
  39. package/plugins/WebinyQuoteNodePlugin/WebinyQuoteNodePlugin.js.map +1 -1
  40. package/themes/webinyLexicalTheme.css +18 -9
  41. package/types.d.ts +2 -3
  42. package/types.js.map +1 -1
  43. package/ui/DropDown.js +52 -19
  44. package/ui/DropDown.js.map +1 -1
  45. package/utils/findTypographyStyleByHtmlTag.d.ts +8 -0
  46. package/utils/findTypographyStyleByHtmlTag.js +16 -0
  47. package/utils/findTypographyStyleByHtmlTag.js.map +1 -0
  48. package/utils/generateInitialLexicalValue.js +2 -1
  49. package/utils/generateInitialLexicalValue.js.map +1 -1
  50. package/utils/getLexicalTextSelectionState.js +19 -3
  51. package/utils/getLexicalTextSelectionState.js.map +1 -1
  52. package/utils/nodes/formatToHeading.d.ts +3 -0
  53. package/utils/nodes/formatToHeading.js +25 -0
  54. package/utils/nodes/formatToHeading.js.map +1 -0
  55. package/utils/nodes/formatToParagraph.d.ts +1 -1
  56. package/utils/nodes/formatToParagraph.js +4 -3
  57. package/utils/nodes/formatToParagraph.js.map +1 -1
  58. package/utils/nodes/formatToQuote.js +8 -3
  59. package/utils/nodes/formatToQuote.js.map +1 -1
  60. package/hooks/useWebinyQuote.d.ts +0 -2
  61. package/hooks/useWebinyQuote.js.map +0 -1
  62. package/nodes/WebinyQuoteNode.d.ts +0 -29
  63. package/nodes/WebinyQuoteNode.js +0 -148
  64. package/nodes/WebinyQuoteNode.js.map +0 -1
@@ -0,0 +1,218 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.$createParagraphNode = $createParagraphNode;
8
+ exports.$isParagraphNode = $isParagraphNode;
9
+ exports.ParagraphNode = void 0;
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
16
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
+ var _lexical = require("lexical");
21
+ var _utils = require("@lexical/utils");
22
+ var _findTypographyStyleByHtmlTag = require("../utils/findTypographyStyleByHtmlTag");
23
+ var ParagraphNode = /*#__PURE__*/function (_BaseParagraphNode) {
24
+ (0, _inherits2.default)(ParagraphNode, _BaseParagraphNode);
25
+ var _super = (0, _createSuper2.default)(ParagraphNode);
26
+ function ParagraphNode(typographyStyleId, key) {
27
+ var _this;
28
+ (0, _classCallCheck2.default)(this, ParagraphNode);
29
+ _this = _super.call(this, key);
30
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__styles", []);
31
+ if (typographyStyleId) {
32
+ _this.__styles.push({
33
+ styleId: typographyStyleId,
34
+ type: "typography"
35
+ });
36
+ }
37
+ return _this;
38
+ }
39
+ (0, _createClass2.default)(ParagraphNode, [{
40
+ key: "setDefaultTypography",
41
+ value: function setDefaultTypography(themeEmotionMap) {
42
+ var typographyStyle = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("p", themeEmotionMap);
43
+ if (typographyStyle) {
44
+ this.__styles.push({
45
+ styleId: typographyStyle.id,
46
+ type: "typography"
47
+ });
48
+ }
49
+ }
50
+ }, {
51
+ key: "setTypography",
52
+ value: function setTypography(typographyStyleId) {
53
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "getWritable", this).call(this);
54
+ var themeStyle = {
55
+ styleId: typographyStyleId,
56
+ type: "typography"
57
+ };
58
+ self.__styles.push(themeStyle);
59
+ return self;
60
+ }
61
+ }, {
62
+ key: "getTypographyStyleId",
63
+ value: function getTypographyStyleId() {
64
+ var style = this.__styles.find(function (x) {
65
+ return x.type === "typography";
66
+ });
67
+ return (style === null || style === void 0 ? void 0 : style.styleId) || undefined;
68
+ }
69
+ }, {
70
+ key: "clearTypographyStyle",
71
+ value: function clearTypographyStyle() {
72
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "getWritable", this).call(this);
73
+ self.__styles = self.__styles.filter(function (s) {
74
+ return s.type !== "typography";
75
+ });
76
+ return self;
77
+ }
78
+ }, {
79
+ key: "hasTypographyStyle",
80
+ value: function hasTypographyStyle() {
81
+ return !!this.getTypographyStyleId();
82
+ }
83
+ }, {
84
+ key: "getThemeStyles",
85
+ value: function getThemeStyles() {
86
+ // getLatest() ensures we are getting the most
87
+ // up-to-date value from the EditorState.
88
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "getLatest", this).call(this);
89
+ return self.__styles;
90
+ }
91
+ }, {
92
+ key: "setThemeStyles",
93
+ value: function setThemeStyles(styles) {
94
+ // getWritable() creates a clone of the node
95
+ // if needed, to ensure we don't try and mutate
96
+ // a stale version of this node.
97
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "getWritable", this).call(this);
98
+ self.__styles = (0, _toConsumableArray2.default)(styles);
99
+ return self;
100
+ }
101
+ }, {
102
+ key: "updateElementWithThemeClasses",
103
+ value: function updateElementWithThemeClasses(element, theme) {
104
+ if (!(theme !== null && theme !== void 0 && theme.emotionMap)) {
105
+ return element;
106
+ }
107
+ if (!this.hasTypographyStyle()) {
108
+ this.setDefaultTypography(theme.emotionMap);
109
+ }
110
+ var typoStyleId = this.getTypographyStyleId();
111
+ var themeClasses;
112
+
113
+ // Typography css class
114
+ if (typoStyleId) {
115
+ var typographyStyle = theme.emotionMap[typoStyleId];
116
+ if (typographyStyle) {
117
+ themeClasses = typographyStyle.className;
118
+ }
119
+ }
120
+ if (themeClasses) {
121
+ (0, _utils.addClassNamesToElement)(element, themeClasses);
122
+ }
123
+ return element;
124
+ }
125
+ }, {
126
+ key: "createDOM",
127
+ value: function createDOM(config) {
128
+ var element = (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "createDOM", this).call(this, config);
129
+ return this.updateElementWithThemeClasses(element, config.theme);
130
+ }
131
+ }, {
132
+ key: "updateDOM",
133
+ value: function updateDOM(prevNode, dom, config) {
134
+ var prevTypoStyleId = prevNode.getTypographyStyleId();
135
+ var nextTypoStyleId = this.getTypographyStyleId();
136
+ if (!nextTypoStyleId) {
137
+ this.updateElementWithThemeClasses(dom, config.theme);
138
+ return false;
139
+ }
140
+ if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {
141
+ this.updateElementWithThemeClasses(dom, config.theme);
142
+ }
143
+ // Returning false tells Lexical that this node does not need its
144
+ // DOM element replacing with a new copy from createDOM.
145
+ return false;
146
+ }
147
+
148
+ /*
149
+ * On copy/paste event this method will be executed in and create a node
150
+ * */
151
+ }, {
152
+ key: "exportJSON",
153
+ value:
154
+ /*
155
+ * Serialize the node to JSON data representation.
156
+ * */
157
+ function exportJSON() {
158
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ParagraphNode.prototype), "exportJSON", this).call(this)), {}, {
159
+ styles: this.__styles,
160
+ type: "paragraph-element",
161
+ version: 1
162
+ });
163
+ }
164
+ }], [{
165
+ key: "getType",
166
+ value: function getType() {
167
+ return "paragraph-element";
168
+ }
169
+ }, {
170
+ key: "clone",
171
+ value: function clone(node) {
172
+ return new ParagraphNode(node.getTypographyStyleId(), node.__key);
173
+ }
174
+ }, {
175
+ key: "importDOM",
176
+ value: function importDOM() {
177
+ return {
178
+ p: function p() {
179
+ return {
180
+ conversion: convertParagraphElement,
181
+ priority: 0
182
+ };
183
+ }
184
+ };
185
+ }
186
+
187
+ /*
188
+ * Serialize the JSON data back into a node
189
+ */
190
+ }, {
191
+ key: "importJSON",
192
+ value: function importJSON(serializedNode) {
193
+ var node = $createParagraphNode();
194
+ node.setFormat(serializedNode.format);
195
+ node.setIndent(serializedNode.indent);
196
+ node.setDirection(serializedNode.direction);
197
+ node.setThemeStyles(serializedNode.styles);
198
+ return node;
199
+ }
200
+ }]);
201
+ return ParagraphNode;
202
+ }(_lexical.ParagraphNode);
203
+ exports.ParagraphNode = ParagraphNode;
204
+ function convertParagraphElement(element) {
205
+ var node = $createParagraphNode();
206
+ if (element.style) {
207
+ node.setFormat(element.style.textAlign);
208
+ }
209
+ return {
210
+ node: node
211
+ };
212
+ }
213
+ function $createParagraphNode(typographyStyleId) {
214
+ return (0, _lexical.$applyNodeReplacement)(new ParagraphNode(typographyStyleId));
215
+ }
216
+ function $isParagraphNode(node) {
217
+ return node instanceof ParagraphNode;
218
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["ParagraphNode","typographyStyleId","key","__styles","push","styleId","type","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","self","themeStyle","style","find","x","undefined","filter","s","getTypographyStyleId","styles","element","theme","emotionMap","hasTypographyStyle","setDefaultTypography","typoStyleId","themeClasses","className","addClassNamesToElement","config","updateElementWithThemeClasses","prevNode","dom","prevTypoStyleId","nextTypoStyleId","version","node","__key","p","conversion","convertParagraphElement","priority","serializedNode","$createParagraphNode","setFormat","format","setIndent","indent","setDirection","direction","setThemeStyles","BaseParagraphNode","textAlign","$applyNodeReplacement","$isParagraphNode"],"sources":["ParagraphNode.ts"],"sourcesContent":["import {\n $applyNodeReplacement,\n DOMConversionMap,\n DOMConversionOutput,\n ElementFormatType,\n LexicalNode,\n NodeKey,\n ParagraphNode as BaseParagraphNode,\n SerializedParagraphNode as SerializedBaseParagraphNode,\n Spread\n} from \"lexical\";\nimport { EditorConfig } from \"lexical\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/nodes/types\";\nimport { WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport { ThemeEmotionMap } from \"~/types\";\n\nexport type SerializeParagraphNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"paragraph-element\";\n },\n SerializedBaseParagraphNode\n>;\n\nexport class ParagraphNode\n extends BaseParagraphNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(typographyStyleId?: string, key?: NodeKey) {\n super(key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"p\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n // getLatest() ensures we are getting the most\n // up-to-date value from the EditorState.\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n // getWritable() creates a clone of the node\n // if needed, to ensure we don't try and mutate\n // a stale version of this node.\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"paragraph-element\";\n }\n\n static override clone(node: ParagraphNode): ParagraphNode {\n return new ParagraphNode(node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): 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 WebinyTheme);\n }\n\n override updateDOM(\n prevNode: BaseParagraphNode,\n dom: HTMLElement,\n config: EditorConfig\n ): boolean {\n const prevTypoStyleId = prevNode.getTypographyStyleId();\n const nextTypoStyleId = this.getTypographyStyleId();\n\n if (!nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n return false;\n }\n\n if (prevTypoStyleId !== nextTypoStyleId && nextTypoStyleId) {\n this.updateElementWithThemeClasses(dom, config.theme as WebinyTheme);\n }\n // Returning false tells Lexical that this node does not need its\n // DOM element replacing with a new copy from createDOM.\n return false;\n }\n\n /*\n * On copy/paste event this method will be executed in and create a node\n * */\n static override importDOM(): DOMConversionMap | null {\n return {\n p: () => ({\n conversion: convertParagraphElement,\n priority: 0\n })\n };\n }\n\n /*\n * Serialize the JSON data back into a node\n */\n static override importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode {\n const node = $createParagraphNode();\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 /*\n * Serialize the node to JSON data representation.\n * */\n override exportJSON(): SerializeParagraphNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"paragraph-element\",\n version: 1\n };\n }\n}\n\nfunction convertParagraphElement(element: HTMLElement): DOMConversionOutput {\n const node = $createParagraphNode();\n if (element.style) {\n node.setFormat(element.style.textAlign as ElementFormatType);\n }\n\n return { node };\n}\n\nexport function $createParagraphNode(typographyStyleId?: string): ParagraphNode {\n return $applyNodeReplacement(new ParagraphNode(typographyStyleId));\n}\n\nexport function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode {\n return node instanceof ParagraphNode;\n}\n"],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /// <reference types="react" />
2
+ /// <reference types="web" />
3
+ import { DOMConversion, DOMConversionMap, EditorConfig, LexicalNode, NodeKey, Spread } from "lexical";
4
+ import { WebinyEditorTheme } from "../themes/webinyLexicalTheme";
5
+ import { ThemeEmotionMap } from "../types";
6
+ import { QuoteNode as BaseQuoteNode, SerializedQuoteNode as BaseSerializedQuoteNode } from "@lexical/rich-text";
7
+ import { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from "./types";
8
+ export declare type SerializedQuoteNode = Spread<{
9
+ styleId?: string;
10
+ styles: ThemeStyleValue[];
11
+ type: "webiny-quote";
12
+ }, BaseSerializedQuoteNode>;
13
+ export declare class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {
14
+ __styles: ThemeStyleValue[];
15
+ constructor(themeStyleId?: string, key?: NodeKey);
16
+ protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap): void;
17
+ protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean;
18
+ setTypography(typographyStyleId: string): this;
19
+ getTypographyStyleId(): string | undefined;
20
+ clearTypographyStyle(): this;
21
+ hasTypographyStyle(): boolean;
22
+ getThemeStyles(): ThemeStyleValue[];
23
+ setThemeStyles(styles: ThemeStyleValue[]): this;
24
+ static getType(): string;
25
+ static clone(node: QuoteNode): QuoteNode;
26
+ addThemeStylesToHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement;
27
+ createDOM(config: EditorConfig): HTMLElement;
28
+ static importDomConversionMap(): DOMConversion<HTMLElement> | null;
29
+ static importDOM(): DOMConversionMap | null;
30
+ static importJSON(serializedNode: SerializedQuoteNode): QuoteNode;
31
+ exportJSON(): SerializedQuoteNode;
32
+ }
33
+ export declare function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode;
34
+ export declare function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.$createQuoteNode = $createQuoteNode;
8
+ exports.$isQuoteNode = $isQuoteNode;
9
+ exports.QuoteNode = void 0;
10
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
+ var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
15
+ var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
16
+ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
17
+ var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
+ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
19
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
20
+ var _utils = require("@lexical/utils");
21
+ var _findTypographyStyleByHtmlTag = require("../utils/findTypographyStyleByHtmlTag");
22
+ var _richText = require("@lexical/rich-text");
23
+ var QuoteNode = /*#__PURE__*/function (_BaseQuoteNode) {
24
+ (0, _inherits2.default)(QuoteNode, _BaseQuoteNode);
25
+ var _super = (0, _createSuper2.default)(QuoteNode);
26
+ function QuoteNode(themeStyleId, key) {
27
+ var _this;
28
+ (0, _classCallCheck2.default)(this, QuoteNode);
29
+ _this = _super.call(this, key);
30
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "__styles", []);
31
+ if (themeStyleId) {
32
+ _this.__styles.push({
33
+ styleId: themeStyleId,
34
+ type: "typography"
35
+ });
36
+ }
37
+ return _this;
38
+ }
39
+
40
+ /*
41
+ * Find the first occurrence of the quoteblock in the theme styles and set as default.
42
+ */
43
+ (0, _createClass2.default)(QuoteNode, [{
44
+ key: "setDefaultTypography",
45
+ value: function setDefaultTypography(themeEmotionMap) {
46
+ var typographyStyle = (0, _findTypographyStyleByHtmlTag.findTypographyStyleByHtmlTag)("quoteblock", themeEmotionMap);
47
+ if (typographyStyle) {
48
+ this.__styles.push({
49
+ styleId: typographyStyle.id,
50
+ type: "typography"
51
+ });
52
+ }
53
+ }
54
+ }, {
55
+ key: "typographyStyleExist",
56
+ value: function typographyStyleExist(themeEmotionMap) {
57
+ var styleId = this.getTypographyStyleId();
58
+ if (!styleId) {
59
+ return false;
60
+ }
61
+ var style = themeEmotionMap[styleId];
62
+ return !!style;
63
+ }
64
+ }, {
65
+ key: "setTypography",
66
+ value: function setTypography(typographyStyleId) {
67
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "getWritable", this).call(this);
68
+ if (!typographyStyleId) {
69
+ return self;
70
+ }
71
+ if (!this.hasTypographyStyle()) {
72
+ var themeStyle = {
73
+ styleId: typographyStyleId,
74
+ type: "typography"
75
+ };
76
+ self.__styles.push(themeStyle);
77
+ }
78
+ return self;
79
+ }
80
+ }, {
81
+ key: "getTypographyStyleId",
82
+ value: function getTypographyStyleId() {
83
+ var style = this.__styles.find(function (x) {
84
+ return x.type === "typography";
85
+ });
86
+ return (style === null || style === void 0 ? void 0 : style.styleId) || undefined;
87
+ }
88
+ }, {
89
+ key: "clearTypographyStyle",
90
+ value: function clearTypographyStyle() {
91
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "getWritable", this).call(this);
92
+ self.__styles = self.__styles.filter(function (s) {
93
+ return s.type !== "typography";
94
+ });
95
+ return self;
96
+ }
97
+ }, {
98
+ key: "hasTypographyStyle",
99
+ value: function hasTypographyStyle() {
100
+ return !!this.getTypographyStyleId();
101
+ }
102
+ }, {
103
+ key: "getThemeStyles",
104
+ value: function getThemeStyles() {
105
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "getLatest", this).call(this);
106
+ return self.__styles;
107
+ }
108
+ }, {
109
+ key: "setThemeStyles",
110
+ value: function setThemeStyles(styles) {
111
+ var self = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "getWritable", this).call(this);
112
+ self.__styles = (0, _toConsumableArray2.default)(styles);
113
+ return self;
114
+ }
115
+ }, {
116
+ key: "addThemeStylesToHTMLElement",
117
+ value: function addThemeStylesToHTMLElement(element, theme) {
118
+ var themeEmotionMap = theme === null || theme === void 0 ? void 0 : theme.emotionMap;
119
+ if (!themeEmotionMap) {
120
+ return element;
121
+ }
122
+
123
+ // style exist and is in active use
124
+ if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {
125
+ var styleId = this.getTypographyStyleId();
126
+ if (styleId) {
127
+ var typographyValue = themeEmotionMap[styleId];
128
+ (0, _utils.addClassNamesToElement)(element, typographyValue === null || typographyValue === void 0 ? void 0 : typographyValue.className);
129
+ return element;
130
+ }
131
+ }
132
+ return element;
133
+ }
134
+ }, {
135
+ key: "createDOM",
136
+ value: function createDOM(config) {
137
+ var element = (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "createDOM", this).call(this, config);
138
+ var wTheme = config.theme;
139
+ var emotionThemeMap = wTheme === null || wTheme === void 0 ? void 0 : wTheme.emotionMap;
140
+ if (!emotionThemeMap) {
141
+ return element;
142
+ }
143
+
144
+ // if styleId is not set or user removed the style from theme, set default style
145
+ if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {
146
+ this.setDefaultTypography(emotionThemeMap);
147
+ }
148
+ this.addThemeStylesToHTMLElement(element, config.theme);
149
+ return element;
150
+ }
151
+ }, {
152
+ key: "exportJSON",
153
+ value: function exportJSON() {
154
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(QuoteNode.prototype), "exportJSON", this).call(this)), {}, {
155
+ type: "webiny-quote",
156
+ styles: this.__styles,
157
+ styleId: this.getTypographyStyleId()
158
+ });
159
+ }
160
+ }], [{
161
+ key: "getType",
162
+ value: function getType() {
163
+ return "webiny-quote";
164
+ }
165
+ }, {
166
+ key: "clone",
167
+ value: function clone(node) {
168
+ return new QuoteNode(node.getTypographyStyleId(), node.__key);
169
+ }
170
+ }, {
171
+ key: "importDomConversionMap",
172
+ value: function importDomConversionMap() {
173
+ return {
174
+ conversion: convertBlockquoteElement,
175
+ priority: 0
176
+ };
177
+ }
178
+ }, {
179
+ key: "importDOM",
180
+ value: function importDOM() {
181
+ var _this2 = this;
182
+ return {
183
+ blockquote: function blockquote() {
184
+ return _this2.importDomConversionMap();
185
+ }
186
+ };
187
+ }
188
+ }, {
189
+ key: "importJSON",
190
+ value: function importJSON(serializedNode) {
191
+ var _serializedNode$style;
192
+ var node = $createQuoteNode();
193
+ node.setFormat(serializedNode.format);
194
+ node.setIndent(serializedNode.indent);
195
+ node.setDirection(serializedNode.direction);
196
+ if (!!(serializedNode !== null && serializedNode !== void 0 && (_serializedNode$style = serializedNode.styles) !== null && _serializedNode$style !== void 0 && _serializedNode$style.length)) {
197
+ node.setThemeStyles(serializedNode.styles);
198
+ return node;
199
+ }
200
+ // for old nodes data migrate the style id into the list
201
+ if (!!(serializedNode !== null && serializedNode !== void 0 && serializedNode.styleId)) {
202
+ var styles = [{
203
+ styleId: serializedNode.styleId,
204
+ type: "typography"
205
+ }];
206
+ node.setThemeStyles(styles);
207
+ }
208
+ return node;
209
+ }
210
+ }]);
211
+ return QuoteNode;
212
+ }(_richText.QuoteNode);
213
+ exports.QuoteNode = QuoteNode;
214
+ function convertBlockquoteElement() {
215
+ var node = $createQuoteNode();
216
+ return {
217
+ node: node
218
+ };
219
+ }
220
+ function $createQuoteNode(themeStyleId, key) {
221
+ return new QuoteNode(themeStyleId, key);
222
+ }
223
+ function $isQuoteNode(node) {
224
+ return node instanceof QuoteNode;
225
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["QuoteNode","themeStyleId","key","__styles","push","styleId","type","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","id","getTypographyStyleId","style","typographyStyleId","self","hasTypographyStyle","themeStyle","find","x","undefined","filter","s","styles","element","theme","emotionMap","typographyStyleExist","typographyValue","addClassNamesToElement","className","config","wTheme","emotionThemeMap","setDefaultTypography","addThemeStylesToHTMLElement","node","__key","conversion","convertBlockquoteElement","priority","blockquote","importDomConversionMap","serializedNode","$createQuoteNode","setFormat","format","setIndent","indent","setDirection","direction","length","setThemeStyles","BaseQuoteNode","$isQuoteNode"],"sources":["QuoteNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n EditorConfig,\n LexicalNode,\n NodeKey,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme, WebinyTheme } from \"~/themes/webinyLexicalTheme\";\nimport { ThemeEmotionMap } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { findTypographyStyleByHtmlTag } from \"~/utils/findTypographyStyleByHtmlTag\";\nimport {\n QuoteNode as BaseQuoteNode,\n SerializedQuoteNode as BaseSerializedQuoteNode\n} from \"@lexical/rich-text\";\nimport { TextNodeThemeStyles, ThemeStyleValue, TypographyStylesNode } from \"~/nodes/types\";\n\nexport type SerializedQuoteNode = Spread<\n {\n styleId?: string;\n styles: ThemeStyleValue[];\n type: \"webiny-quote\";\n },\n BaseSerializedQuoteNode\n>;\n\nexport class QuoteNode extends BaseQuoteNode implements TextNodeThemeStyles, TypographyStylesNode {\n __styles: ThemeStyleValue[] = [];\n\n constructor(themeStyleId?: string, key?: NodeKey) {\n super(key);\n if (themeStyleId) {\n this.__styles.push({ styleId: themeStyleId, type: \"typography\" });\n }\n }\n\n /*\n * Find the first occurrence of the quoteblock in the theme styles and set as default.\n */\n protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(\"quoteblock\", themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n protected typographyStyleExist(themeEmotionMap: ThemeEmotionMap): boolean {\n const styleId = this.getTypographyStyleId();\n if (!styleId) {\n return false;\n }\n const style = themeEmotionMap[styleId];\n return !!style;\n }\n\n setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!typographyStyleId) {\n return self;\n }\n\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n 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 \"webiny-quote\";\n }\n\n static override clone(node: QuoteNode): QuoteNode {\n return new QuoteNode(node.getTypographyStyleId(), node.__key);\n }\n\n addThemeStylesToHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const themeEmotionMap = theme?.emotionMap;\n\n if (!themeEmotionMap) {\n return element;\n }\n\n // style exist and is in active use\n if (this.hasTypographyStyle() && this.typographyStyleExist(themeEmotionMap)) {\n const styleId = this.getTypographyStyleId();\n if (styleId) {\n const typographyValue = themeEmotionMap[styleId];\n addClassNamesToElement(element, typographyValue?.className);\n return element;\n }\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n const wTheme = config.theme as WebinyTheme;\n const emotionThemeMap = wTheme?.emotionMap;\n\n if (!emotionThemeMap) {\n return element;\n }\n\n // if styleId is not set or user removed the style from theme, set default style\n if (!this.hasTypographyStyle() || !this.typographyStyleExist(emotionThemeMap)) {\n this.setDefaultTypography(emotionThemeMap);\n }\n\n this.addThemeStylesToHTMLElement(element, config.theme);\n return element;\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertBlockquoteElement,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n blockquote: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n static override importJSON(serializedNode: SerializedQuoteNode): QuoteNode {\n const node = $createQuoteNode();\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n if (!!serializedNode?.styles?.length) {\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n // for old nodes data migrate the style id into the list\n if (!!serializedNode?.styleId) {\n const styles = [\n { styleId: serializedNode.styleId, type: \"typography\" }\n ] as ThemeStyleValue[];\n node.setThemeStyles(styles);\n }\n return node;\n }\n\n override exportJSON(): SerializedQuoteNode {\n return {\n ...super.exportJSON(),\n type: \"webiny-quote\",\n styles: this.__styles,\n styleId: this.getTypographyStyleId()\n };\n }\n}\n\nfunction convertBlockquoteElement() {\n const node = $createQuoteNode();\n return {\n node\n };\n}\n\nexport function $createQuoteNode(themeStyleId?: string, key?: NodeKey): QuoteNode {\n return new QuoteNode(themeStyleId, key);\n}\n\nexport function $isQuoteNode(node: LexicalNode | null | undefined): node is QuoteNode {\n return node instanceof QuoteNode;\n}\n"],"mappings":"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"}
@@ -16,6 +16,7 @@ var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
  var _lexical = require("lexical");
18
18
  var _utils = require("@lexical/utils");
19
+ var _ParagraphNode = require("./ParagraphNode");
19
20
  // Command and payload
20
21
  var ADD_TYPOGRAPHY_ELEMENT_COMMAND = (0, _lexical.createCommand)("ADD_TYPOGRAPHY_ELEMENT_COMMAND");
21
22
  exports.ADD_TYPOGRAPHY_ELEMENT_COMMAND = ADD_TYPOGRAPHY_ELEMENT_COMMAND;
@@ -103,7 +104,7 @@ var TypographyElementNode = /*#__PURE__*/function (_ElementNode) {
103
104
  }, {
104
105
  key: "collapseAtStart",
105
106
  value: function collapseAtStart() {
106
- var paragraph = (0, _lexical.$createParagraphNode)();
107
+ var paragraph = (0, _ParagraphNode.$createParagraphNode)();
107
108
  var children = this.getChildren();
108
109
  children.forEach(function (child) {
109
110
  return paragraph.append(child);
@@ -1 +1 @@
1
- {"version":3,"names":["ADD_TYPOGRAPHY_ELEMENT_COMMAND","createCommand","TypographyNodeAttrName","TypographyElementNode","value","key","__tag","tag","__styleId","id","__name","name","__css","css","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","typographyStyles","styleId","type","version","config","document","createElement","addStylesHTMLElement","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","node","__key","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyElementNode"],"sources":["TypographyElementNode.ts"],"sourcesContent":["import {\n $createParagraphNode,\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme } from \"~/themes/webinyLexicalTheme\";\nimport { TypographyHTMLTag, TypographyValue } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_ELEMENT_COMMAND: LexicalCommand<TypographyPayload> = createCommand(\n \"ADD_TYPOGRAPHY_ELEMENT_COMMAND\"\n);\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyElementNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyElementNode): TypographyElementNode {\n return new TypographyElementNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyElementNode {\n const node = new TypographyElementNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyElementNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (\n value: TypographyValue,\n key?: NodeKey\n): TypographyElementNode => {\n return new TypographyElementNode(value, key);\n};\n\nexport const $isTypographyElementNode = (node: ElementNode | LexicalNode | null): boolean => {\n return node instanceof TypographyElementNode;\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["ADD_TYPOGRAPHY_ELEMENT_COMMAND","createCommand","TypographyNodeAttrName","TypographyElementNode","value","key","__tag","tag","__styleId","id","__name","name","__css","css","element","theme","typographyStyleValue","emotionMap","undefined","styles","addClassNamesToElement","className","setAttribute","typographyStyles","styleId","type","version","config","document","createElement","addStylesHTMLElement","newElement","$createTypographyNode","direction","getDirection","setDirection","insertAfter","paragraph","$createParagraphNode","children","getChildren","forEach","child","append","replace","node","__key","serializedNode","setFormat","format","setIndent","indent","ElementNode","$isTypographyElementNode"],"sources":["TypographyElementNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n ElementNode,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { WebinyEditorTheme } from \"~/themes/webinyLexicalTheme\";\nimport { TypographyHTMLTag, TypographyValue } from \"~/types\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport { $createParagraphNode } from \"~/nodes/ParagraphNode\";\n\n// Command and payload\nexport const ADD_TYPOGRAPHY_ELEMENT_COMMAND: LexicalCommand<TypographyPayload> = createCommand(\n \"ADD_TYPOGRAPHY_ELEMENT_COMMAND\"\n);\nconst TypographyNodeAttrName = \"data-typography-style-id\";\n\nexport interface TypographyPayload {\n value: TypographyValue;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\n// Node\nexport type SerializedTypographyNode = Spread<\n {\n tag: TypographyHTMLTag;\n styleId: string;\n name: string;\n typographyStyles: Record<string, any>;\n type: \"typography-el-node\";\n version: 1;\n },\n SerializedElementNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme typography to selected text.\n * Extends the original ElementNode node to add additional transformation and support for webiny theme typography.\n */\nexport class TypographyElementNode extends ElementNode {\n __styleId: string;\n __tag: TypographyHTMLTag;\n __name: string;\n __css: Record<string, any>;\n\n constructor(value: TypographyValue, key?: NodeKey) {\n super(key);\n this.__tag = value.tag;\n this.__styleId = value.id;\n this.__name = value.name;\n this.__css = value.css;\n }\n\n static override getType(): string {\n return \"typography-el-node\";\n }\n\n static override clone(node: TypographyElementNode): TypographyElementNode {\n return new TypographyElementNode(\n {\n css: node.__css,\n id: node.__styleId,\n name: node.__name,\n tag: node.__tag\n },\n node.__key\n );\n }\n getTypographyValue(): TypographyValue {\n return {\n tag: this.__tag,\n css: this.__css,\n id: this.__styleId,\n name: this.__name\n };\n }\n\n addStylesHTMLElement(element: HTMLElement, theme: WebinyEditorTheme): HTMLElement {\n const typographyStyleValue = theme?.emotionMap\n ? theme?.emotionMap[this.__styleId]\n : undefined;\n if (typographyStyleValue) {\n this.__css = typographyStyleValue.styles;\n addClassNamesToElement(element, typographyStyleValue.className);\n }\n element.setAttribute(TypographyNodeAttrName, this.__styleId);\n\n return element;\n }\n\n override exportJSON(): SerializedTypographyNode {\n return {\n ...super.exportJSON(),\n tag: this.__tag,\n typographyStyles: this.__css,\n name: this.__name,\n styleId: this.__styleId,\n type: \"typography-el-node\",\n version: 1\n };\n }\n\n static override importJSON(serializedNode: SerializedTypographyNode): TypographyElementNode {\n const node = new TypographyElementNode({\n id: serializedNode.styleId,\n css: serializedNode.typographyStyles,\n tag: serializedNode.tag,\n name: serializedNode.name\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n return this.addStylesHTMLElement(element, config.theme);\n }\n\n override updateDOM(): boolean {\n return false;\n }\n\n override insertNewAfter(): TypographyElementNode {\n const newElement = $createTypographyNode({\n tag: this.__tag,\n name: this.__name,\n css: this.__css,\n id: this.__styleId\n });\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const paragraph = $createParagraphNode();\n const children = this.getChildren();\n children.forEach(child => paragraph.append(child));\n this.replace(paragraph);\n return true;\n }\n}\n\nexport const $createTypographyNode = (\n value: TypographyValue,\n key?: NodeKey\n): TypographyElementNode => {\n return new TypographyElementNode(value, key);\n};\n\nexport const $isTypographyElementNode = (node: ElementNode | LexicalNode | null): boolean => {\n return node instanceof TypographyElementNode;\n};\n"],"mappings":"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"}
@@ -22,6 +22,7 @@ var _WebinyListNode = require("./WebinyListNode");
22
22
  var _list = require("@lexical/list");
23
23
  var _utils = require("@lexical/utils");
24
24
  var _formatList = require("./formatList");
25
+ var _ParagraphNode = require("../ParagraphNode");
25
26
  /** @noInheritDoc */
26
27
  var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
27
28
  (0, _inherits2.default)(WebinyListItemNode, _ElementNode);
@@ -184,7 +185,7 @@ var WebinyListItemNode = /*#__PURE__*/function (_ElementNode) {
184
185
  }, {
185
186
  key: "collapseAtStart",
186
187
  value: function collapseAtStart(selection) {
187
- var paragraph = (0, _lexical.$createParagraphNode)();
188
+ var paragraph = (0, _ParagraphNode.$createParagraphNode)();
188
189
  var children = this.getChildren();
189
190
  children.forEach(function (child) {
190
191
  return paragraph.append(child);