@webiny/lexical-nodes 5.43.3 → 6.0.0-alpha.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 (75) hide show
  1. package/FontColorNode.d.ts +4 -4
  2. package/FontColorNode.js +96 -145
  3. package/FontColorNode.js.map +1 -1
  4. package/HeadingNode.d.ts +29 -17
  5. package/HeadingNode.js +181 -152
  6. package/HeadingNode.js.map +1 -1
  7. package/ImageNode.js +143 -188
  8. package/ImageNode.js.map +1 -1
  9. package/LinkNode.d.ts +2 -2
  10. package/LinkNode.js +251 -346
  11. package/LinkNode.js.map +1 -1
  12. package/ListItemNode.d.ts +4 -3
  13. package/ListItemNode.js +276 -354
  14. package/ListItemNode.js.map +1 -1
  15. package/ListNode.d.ts +28 -14
  16. package/ListNode.js +174 -208
  17. package/ListNode.js.map +1 -1
  18. package/ParagraphNode.d.ts +28 -16
  19. package/ParagraphNode.js +141 -179
  20. package/ParagraphNode.js.map +1 -1
  21. package/QuoteNode.d.ts +26 -19
  22. package/QuoteNode.js +104 -186
  23. package/QuoteNode.js.map +1 -1
  24. package/components/ImageNode/ContentEditable.js +7 -14
  25. package/components/ImageNode/ContentEditable.js.map +1 -1
  26. package/components/ImageNode/ImageComponent.js +104 -124
  27. package/components/ImageNode/ImageComponent.js.map +1 -1
  28. package/components/ImageNode/ImageResizer.js +78 -83
  29. package/components/ImageNode/ImageResizer.js.map +1 -1
  30. package/components/ImageNode/Placeholder.d.ts +1 -1
  31. package/components/ImageNode/Placeholder.js +10 -16
  32. package/components/ImageNode/Placeholder.js.map +1 -1
  33. package/components/ImageNode/SharedHistoryContext.d.ts +2 -2
  34. package/components/ImageNode/SharedHistoryContext.js +12 -20
  35. package/components/ImageNode/SharedHistoryContext.js.map +1 -1
  36. package/generateInitialLexicalValue.d.ts +4 -0
  37. package/generateInitialLexicalValue.js +27 -0
  38. package/generateInitialLexicalValue.js.map +1 -0
  39. package/index.d.ts +4 -8
  40. package/index.js +44 -230
  41. package/index.js.map +1 -1
  42. package/package.json +4 -4
  43. package/prepareLexicalState.d.ts +2 -0
  44. package/prepareLexicalState.js +53 -0
  45. package/prepareLexicalState.js.map +1 -0
  46. package/types.d.ts +4 -5
  47. package/types.js +1 -5
  48. package/types.js.map +1 -1
  49. package/utils/clearNodeFormating.d.ts +1 -1
  50. package/utils/clearNodeFormating.js +12 -18
  51. package/utils/clearNodeFormating.js.map +1 -1
  52. package/utils/formatList.d.ts +3 -3
  53. package/utils/formatList.js +171 -208
  54. package/utils/formatList.js.map +1 -1
  55. package/utils/formatToHeading.d.ts +2 -2
  56. package/utils/formatToHeading.js +8 -15
  57. package/utils/formatToHeading.js.map +1 -1
  58. package/utils/formatToParagraph.d.ts +1 -1
  59. package/utils/formatToParagraph.js +8 -16
  60. package/utils/formatToParagraph.js.map +1 -1
  61. package/utils/formatToQuote.d.ts +1 -1
  62. package/utils/formatToQuote.js +8 -15
  63. package/utils/formatToQuote.js.map +1 -1
  64. package/utils/getStyleId.d.ts +11 -0
  65. package/utils/getStyleId.js +14 -0
  66. package/utils/getStyleId.js.map +1 -0
  67. package/utils/listNode.d.ts +2 -2
  68. package/utils/listNode.js +37 -50
  69. package/utils/listNode.js.map +1 -1
  70. package/utils/toggleLink.d.ts +1 -1
  71. package/utils/toggleLink.js +41 -45
  72. package/utils/toggleLink.js.map +1 -1
  73. package/TypographyNode.d.ts +0 -39
  74. package/TypographyNode.js +0 -146
  75. package/TypographyNode.js.map +0 -1
@@ -1,5 +1,6 @@
1
- import { EditorConfig, LexicalNode, SerializedTextNode, Spread, TextNode } from "lexical";
2
- import { EditorTheme } from "@webiny/lexical-theme";
1
+ import type { EditorConfig, LexicalNode, SerializedTextNode, Spread } from "lexical";
2
+ import { TextNode } from "lexical";
3
+ import type { EditorTheme } from "@webiny/lexical-theme";
3
4
  export declare class ThemeColorValue {
4
5
  private readonly name;
5
6
  private value;
@@ -15,8 +16,7 @@ export interface FontColorPayload {
15
16
  export type SerializedFontColorNode = Spread<{
16
17
  themeColor: string;
17
18
  color: string;
18
- type: "font-color-node";
19
- version: 1;
19
+ type: "wby-font-color";
20
20
  }, SerializedTextNode>;
21
21
  /**
22
22
  * Main responsibility of this node is to apply custom or Webiny theme color to selected text.
package/FontColorNode.js CHANGED
@@ -1,169 +1,120 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.$applyStylesToNode = $applyStylesToNode;
8
- exports.ThemeColorValue = exports.FontColorNode = exports.ADD_FONT_COLOR_COMMAND = exports.$isFontColorNode = exports.$createFontColorNode = void 0;
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
11
- var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
12
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
13
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
- var _lexical = require("lexical");
16
- var ThemeColorValue = exports.ThemeColorValue = /*#__PURE__*/function () {
1
+ import { $getSelection, $isRangeSelection, createCommand, TextNode } from "lexical";
2
+ export class ThemeColorValue {
17
3
  // Webiny theme color variable, like color1, color2, etc.
18
4
 
19
5
  // This can be a HEX value or a CSS variable.
20
6
 
21
- function ThemeColorValue(value, name) {
22
- (0, _classCallCheck2.default)(this, ThemeColorValue);
7
+ constructor(value, name) {
23
8
  this.value = value;
24
9
  this.name = name ?? "custom";
25
10
  }
26
- return (0, _createClass2.default)(ThemeColorValue, [{
27
- key: "getValue",
28
- value: function getValue() {
29
- return this.value;
30
- }
31
- }, {
32
- key: "getName",
33
- value: function getName() {
34
- return this.name;
35
- }
36
- }, {
37
- key: "updateFromTheme",
38
- value: function updateFromTheme(theme) {
39
- if (theme?.styles?.colors && this.name !== "custom") {
40
- this.value = theme.styles?.colors[this.name];
41
- }
11
+ getValue() {
12
+ return this.value;
13
+ }
14
+ getName() {
15
+ return this.name;
16
+ }
17
+ updateFromTheme(theme) {
18
+ if (theme?.styles?.colors && this.name !== "custom") {
19
+ this.value = theme.styles?.colors[this.name];
42
20
  }
43
- }]);
44
- }();
45
- var ADD_FONT_COLOR_COMMAND = exports.ADD_FONT_COLOR_COMMAND = (0, _lexical.createCommand)("ADD_FONT_COLOR_COMMAND");
46
- var FontColorNodeAttrName = "data-theme-font-color-name";
21
+ }
22
+ }
23
+ export const ADD_FONT_COLOR_COMMAND = createCommand("ADD_FONT_COLOR_COMMAND");
24
+ const FontColorNodeAttrName = "data-theme-font-color-name";
47
25
  /**
48
26
  * Main responsibility of this node is to apply custom or Webiny theme color to selected text.
49
27
  * Extends the original TextNode node to add additional transformation and support for webiny theme font color.
50
28
  */
51
- var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
52
- function FontColorNode(text, color, key) {
53
- var _this;
54
- (0, _classCallCheck2.default)(this, FontColorNode);
55
- _this = (0, _callSuper2.default)(this, FontColorNode, [text, key]);
56
- _this.__color = color;
57
- return _this;
29
+ export class FontColorNode extends TextNode {
30
+ constructor(text, color, key) {
31
+ super(text, key);
32
+ this.__color = color;
58
33
  }
59
- (0, _inherits2.default)(FontColorNode, _TextNode);
60
- return (0, _createClass2.default)(FontColorNode, [{
61
- key: "splitText",
62
- value: function splitText() {
63
- var _this2 = this;
64
- for (var _len = arguments.length, splitOffsets = new Array(_len), _key = 0; _key < _len; _key++) {
65
- splitOffsets[_key] = arguments[_key];
34
+ static getType() {
35
+ return "wby-font-color";
36
+ }
37
+ static clone(node) {
38
+ return new FontColorNode(node.__text, node.__color, node.__key);
39
+ }
40
+ static importJSON(serializedNode) {
41
+ const node = new FontColorNode(serializedNode.text, new ThemeColorValue(serializedNode.color, serializedNode.themeColor));
42
+ node.setTextContent(serializedNode.text);
43
+ node.setFormat(serializedNode.format);
44
+ node.setDetail(serializedNode.detail);
45
+ node.setMode(serializedNode.mode);
46
+ node.setStyle(serializedNode.style);
47
+ return node;
48
+ }
49
+ splitText(...splitOffsets) {
50
+ const newNodes = super.splitText(...splitOffsets);
51
+ const selection = $getSelection();
52
+
53
+ // After splitting, we need to re-apply styling to the new TextNodes.
54
+ const fontColorNodes = newNodes.map(node => {
55
+ if (node instanceof FontColorNode) {
56
+ return node;
66
57
  }
67
- var newNodes = (0, _superPropGet2.default)(FontColorNode, "splitText", this, 3)(splitOffsets);
68
- var selection = (0, _lexical.$getSelection)();
58
+ const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);
59
+ $applyStylesToNode(fontColorNode, this);
60
+ const newNode = node.replace(fontColorNode);
69
61
 
70
- // After splitting, we need to re-apply styling to the new TextNodes.
71
- var fontColorNodes = newNodes.map(function (node) {
72
- if (node instanceof FontColorNode) {
73
- return node;
62
+ // Since we're replacing the existing node, we need to update the selection keys.
63
+ // This is very important to not break the editor functionality!
64
+ if ($isRangeSelection(selection)) {
65
+ const anchor = selection.anchor;
66
+ const focus = selection.focus;
67
+ if (anchor.key === node.getKey()) {
68
+ anchor.key = newNode.getKey();
74
69
  }
75
- var fontColorNode = $createFontColorNode(node.getTextContent(), _this2.__color);
76
- $applyStylesToNode(fontColorNode, _this2);
77
- var newNode = node.replace(fontColorNode);
78
-
79
- // Since we're replacing the existing node, we need to update the selection keys.
80
- // This is very important to not break the editor functionality!
81
- if ((0, _lexical.$isRangeSelection)(selection)) {
82
- var anchor = selection.anchor;
83
- var focus = selection.focus;
84
- if (anchor.key === node.getKey()) {
85
- anchor.key = newNode.getKey();
86
- }
87
- if (focus.key === node.getKey()) {
88
- focus.key = newNode.getKey();
89
- }
70
+ if (focus.key === node.getKey()) {
71
+ focus.key = newNode.getKey();
90
72
  }
91
- return newNode;
92
- });
93
- return fontColorNodes;
94
- }
95
- }, {
96
- key: "exportJSON",
97
- value: function exportJSON() {
98
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(FontColorNode, "exportJSON", this, 3)([])), {}, {
99
- themeColor: this.__color.getName(),
100
- color: this.__color.getValue(),
101
- type: "font-color-node",
102
- version: 1
103
- });
104
- }
105
- }, {
106
- key: "addColorValueToHTMLElement",
107
- value: function addColorValueToHTMLElement(element, theme) {
108
- // Update color from webiny theme
109
- this.__color.updateFromTheme(theme);
110
- element.setAttribute(FontColorNodeAttrName, this.__color.getName());
111
- element.style.color = this.__color.getValue();
112
- return element;
113
- }
114
- }, {
115
- key: "updateDOM",
116
- value: function updateDOM(prevNode, dom, config) {
117
- var isUpdated = (0, _superPropGet2.default)(FontColorNode, "updateDOM", this, 3)([prevNode, dom, config]);
118
- this.__color.updateFromTheme(config.theme);
119
- dom.setAttribute(FontColorNodeAttrName, this.__color.getName());
120
- dom.style.color = this.__color.getValue();
121
- return isUpdated;
122
- }
123
- }, {
124
- key: "getColorStyle",
125
- value: function getColorStyle() {
126
- return {
127
- color: this.__color.getValue(),
128
- themeColor: this.__color.getName()
129
- };
130
- }
131
- }, {
132
- key: "createDOM",
133
- value: function createDOM(config) {
134
- var element = (0, _superPropGet2.default)(FontColorNode, "createDOM", this, 3)([config]);
135
- return this.addColorValueToHTMLElement(element, config.theme);
136
- }
137
- }], [{
138
- key: "getType",
139
- value: function getType() {
140
- return "font-color-node";
141
- }
142
- }, {
143
- key: "clone",
144
- value: function clone(node) {
145
- return new FontColorNode(node.__text, node.__color, node.__key);
146
- }
147
- }, {
148
- key: "importJSON",
149
- value: function importJSON(serializedNode) {
150
- var node = new FontColorNode(serializedNode.text, new ThemeColorValue(serializedNode.color, serializedNode.themeColor));
151
- node.setTextContent(serializedNode.text);
152
- node.setFormat(serializedNode.format);
153
- node.setDetail(serializedNode.detail);
154
- node.setMode(serializedNode.mode);
155
- node.setStyle(serializedNode.style);
156
- return node;
157
- }
158
- }]);
159
- }(_lexical.TextNode);
160
- var $createFontColorNode = exports.$createFontColorNode = function $createFontColorNode(text, color) {
73
+ }
74
+ return newNode;
75
+ });
76
+ return fontColorNodes;
77
+ }
78
+ exportJSON() {
79
+ return {
80
+ ...super.exportJSON(),
81
+ themeColor: this.__color.getName(),
82
+ color: this.__color.getValue(),
83
+ type: "wby-font-color"
84
+ };
85
+ }
86
+ addColorValueToHTMLElement(element, theme) {
87
+ // Update color from webiny theme
88
+ this.__color.updateFromTheme(theme);
89
+ element.setAttribute(FontColorNodeAttrName, this.__color.getName());
90
+ element.style.color = this.__color.getValue();
91
+ return element;
92
+ }
93
+ updateDOM(prevNode, dom, config) {
94
+ const isUpdated = super.updateDOM(prevNode, dom, config);
95
+ this.__color.updateFromTheme(config.theme);
96
+ dom.setAttribute(FontColorNodeAttrName, this.__color.getName());
97
+ dom.style.color = this.__color.getValue();
98
+ return isUpdated;
99
+ }
100
+ getColorStyle() {
101
+ return {
102
+ color: this.__color.getValue(),
103
+ themeColor: this.__color.getName()
104
+ };
105
+ }
106
+ createDOM(config) {
107
+ const element = super.createDOM(config);
108
+ return this.addColorValueToHTMLElement(element, config.theme);
109
+ }
110
+ }
111
+ export const $createFontColorNode = (text, color) => {
161
112
  return new FontColorNode(text, color);
162
113
  };
163
- var $isFontColorNode = exports.$isFontColorNode = function $isFontColorNode(node) {
114
+ export const $isFontColorNode = node => {
164
115
  return node instanceof FontColorNode;
165
116
  };
166
- function $applyStylesToNode(node, source) {
117
+ export function $applyStylesToNode(node, source) {
167
118
  node.setFormat(source.getFormat());
168
119
  node.setStyle(source.getStyle());
169
120
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_lexical","require","ThemeColorValue","exports","value","name","_classCallCheck2","default","_createClass2","key","getValue","getName","updateFromTheme","theme","styles","colors","ADD_FONT_COLOR_COMMAND","createCommand","FontColorNodeAttrName","FontColorNode","_TextNode","text","color","_this","_callSuper2","__color","_inherits2","splitText","_this2","_len","arguments","length","splitOffsets","Array","_key","newNodes","_superPropGet2","selection","$getSelection","fontColorNodes","map","node","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","newNode","replace","$isRangeSelection","anchor","focus","getKey","exportJSON","_objectSpread2","themeColor","type","version","addColorValueToHTMLElement","element","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$isFontColorNode","source","getFormat","getStyle"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n $getSelection,\n $isRangeSelection,\n createCommand,\n EditorConfig,\n LexicalNode,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport class ThemeColorValue {\n // Webiny theme color variable, like color1, color2, etc.\n private readonly name: string;\n // This can be a HEX value or a CSS variable.\n private value: string;\n\n constructor(value: string, name?: string) {\n this.value = value;\n this.name = name ?? \"custom\";\n }\n\n getValue() {\n return this.value;\n }\n\n getName() {\n return this.name;\n }\n\n updateFromTheme(theme: EditorTheme) {\n if (theme?.styles?.colors && this.name !== \"custom\") {\n this.value = theme.styles?.colors[this.name];\n }\n }\n}\n\nexport const ADD_FONT_COLOR_COMMAND = createCommand<FontColorPayload>(\"ADD_FONT_COLOR_COMMAND\");\n\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n color: ThemeColorValue;\n}\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: string;\n color: string;\n type: \"font-color-node\";\n version: 1;\n },\n SerializedTextNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme color to selected text.\n * Extends the original TextNode node to add additional transformation and support for webiny theme font color.\n */\nexport class FontColorNode extends TextNode {\n private readonly __color: ThemeColorValue;\n\n constructor(text: string, color: ThemeColorValue, key?: string) {\n super(text, key);\n this.__color = color;\n }\n\n static override getType(): string {\n return \"font-color-node\";\n }\n\n static override clone(node: FontColorNode): FontColorNode {\n return new FontColorNode(node.__text, node.__color, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n new ThemeColorValue(serializedNode.color, serializedNode.themeColor)\n );\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n override splitText(...splitOffsets: Array<number>): Array<FontColorNode> {\n const newNodes = super.splitText(...splitOffsets);\n\n const selection = $getSelection();\n\n // After splitting, we need to re-apply styling to the new TextNodes.\n const fontColorNodes = newNodes.map(node => {\n if (node instanceof FontColorNode) {\n return node;\n }\n\n const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);\n $applyStylesToNode(fontColorNode, this);\n\n const newNode = node.replace(fontColorNode);\n\n // Since we're replacing the existing node, we need to update the selection keys.\n // This is very important to not break the editor functionality!\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n\n if (anchor.key === node.getKey()) {\n anchor.key = newNode.getKey();\n }\n\n if (focus.key === node.getKey()) {\n focus.key = newNode.getKey();\n }\n }\n\n return newNode;\n });\n\n return fontColorNodes as Array<FontColorNode>;\n }\n\n override exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__color.getName(),\n color: this.__color.getValue(),\n type: \"font-color-node\",\n version: 1\n };\n }\n\n private addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n // Update color from webiny theme\n this.__color.updateFromTheme(theme);\n element.setAttribute(FontColorNodeAttrName, this.__color.getName());\n element.style.color = this.__color.getValue();\n return element;\n }\n\n override updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean {\n const isUpdated = super.updateDOM(prevNode, dom, config);\n this.__color.updateFromTheme(config.theme as EditorTheme);\n\n dom.setAttribute(FontColorNodeAttrName, this.__color.getName());\n dom.style.color = this.__color.getValue();\n return isUpdated;\n }\n\n getColorStyle() {\n return {\n color: this.__color.getValue(),\n themeColor: this.__color.getName()\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme as EditorTheme);\n }\n}\n\nexport const $createFontColorNode = (text: string, color: ThemeColorValue): FontColorNode => {\n return new FontColorNode(text, color);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: TextNode, source: TextNode) {\n node.setFormat(source.getFormat());\n node.setStyle(source.getStyle());\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["$getSelection","$isRangeSelection","createCommand","TextNode","ThemeColorValue","constructor","value","name","getValue","getName","updateFromTheme","theme","styles","colors","ADD_FONT_COLOR_COMMAND","FontColorNodeAttrName","FontColorNode","text","color","key","__color","getType","clone","node","__text","__key","importJSON","serializedNode","themeColor","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","style","splitText","splitOffsets","newNodes","selection","fontColorNodes","map","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","newNode","replace","anchor","focus","getKey","exportJSON","type","addColorValueToHTMLElement","element","setAttribute","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","$isFontColorNode","source","getFormat","getStyle"],"sources":["FontColorNode.ts"],"sourcesContent":["import type { EditorConfig, LexicalNode, SerializedTextNode, Spread } from \"lexical\";\nimport { $getSelection, $isRangeSelection, createCommand, TextNode } from \"lexical\";\nimport type { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport class ThemeColorValue {\n // Webiny theme color variable, like color1, color2, etc.\n private readonly name: string;\n // This can be a HEX value or a CSS variable.\n private value: string;\n\n constructor(value: string, name?: string) {\n this.value = value;\n this.name = name ?? \"custom\";\n }\n\n getValue() {\n return this.value;\n }\n\n getName() {\n return this.name;\n }\n\n updateFromTheme(theme: EditorTheme) {\n if (theme?.styles?.colors && this.name !== \"custom\") {\n this.value = theme.styles?.colors[this.name];\n }\n }\n}\n\nexport const ADD_FONT_COLOR_COMMAND = createCommand<FontColorPayload>(\"ADD_FONT_COLOR_COMMAND\");\n\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n color: ThemeColorValue;\n}\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: string;\n color: string;\n type: \"wby-font-color\";\n },\n SerializedTextNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme color to selected text.\n * Extends the original TextNode node to add additional transformation and support for webiny theme font color.\n */\nexport class FontColorNode extends TextNode {\n private readonly __color: ThemeColorValue;\n\n constructor(text: string, color: ThemeColorValue, key?: string) {\n super(text, key);\n this.__color = color;\n }\n\n static override getType(): string {\n return \"wby-font-color\";\n }\n\n static override clone(node: FontColorNode): FontColorNode {\n return new FontColorNode(node.__text, node.__color, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n new ThemeColorValue(serializedNode.color, serializedNode.themeColor)\n );\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n override splitText(...splitOffsets: Array<number>): Array<FontColorNode> {\n const newNodes = super.splitText(...splitOffsets);\n\n const selection = $getSelection();\n\n // After splitting, we need to re-apply styling to the new TextNodes.\n const fontColorNodes = newNodes.map(node => {\n if (node instanceof FontColorNode) {\n return node;\n }\n\n const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);\n $applyStylesToNode(fontColorNode, this);\n\n const newNode = node.replace(fontColorNode);\n\n // Since we're replacing the existing node, we need to update the selection keys.\n // This is very important to not break the editor functionality!\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n\n if (anchor.key === node.getKey()) {\n anchor.key = newNode.getKey();\n }\n\n if (focus.key === node.getKey()) {\n focus.key = newNode.getKey();\n }\n }\n\n return newNode;\n });\n\n return fontColorNodes as Array<FontColorNode>;\n }\n\n override exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__color.getName(),\n color: this.__color.getValue(),\n type: \"wby-font-color\"\n };\n }\n\n private addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n // Update color from webiny theme\n this.__color.updateFromTheme(theme);\n element.setAttribute(FontColorNodeAttrName, this.__color.getName());\n element.style.color = this.__color.getValue();\n return element;\n }\n\n override updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean {\n const isUpdated = super.updateDOM(prevNode, dom, config);\n this.__color.updateFromTheme(config.theme as EditorTheme);\n\n dom.setAttribute(FontColorNodeAttrName, this.__color.getName());\n dom.style.color = this.__color.getValue();\n return isUpdated;\n }\n\n getColorStyle() {\n return {\n color: this.__color.getValue(),\n themeColor: this.__color.getName()\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme as EditorTheme);\n }\n}\n\nexport const $createFontColorNode = (text: string, color: ThemeColorValue): FontColorNode => {\n return new FontColorNode(text, color);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: TextNode, source: TextNode) {\n node.setFormat(source.getFormat());\n node.setStyle(source.getStyle());\n}\n"],"mappings":"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","ignoreList":[]}
package/HeadingNode.d.ts CHANGED
@@ -1,28 +1,40 @@
1
- import { EditorConfig, LexicalNode, NodeKey, RangeSelection, Spread } from "lexical";
2
- import { HeadingNode as BaseHeadingNode, HeadingTagType, SerializedHeadingNode as BaseSerializedHeadingNode } from "@lexical/rich-text";
3
- import { EditorTheme } from "@webiny/lexical-theme";
4
- import { ParagraphNode } from "./ParagraphNode";
5
- import { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from "./types";
1
+ import type { EditorConfig, LexicalNode, NodeKey, RangeSelection, Spread, LexicalEditor, DOMExportOutput, DOMConversionMap } from "lexical";
2
+ import type { HeadingTagType, SerializedHeadingNode as BaseSerializedHeadingNode } from "@lexical/rich-text";
3
+ import { HeadingNode as BaseHeadingNode } from "@lexical/rich-text";
4
+ import type { EditorTheme } from "@webiny/lexical-theme";
5
+ import type { ParagraphNode } from "./ParagraphNode";
6
+ import type { TypographyStylesNode, ThemeStyleValue } from "./types";
6
7
  export type SerializeHeadingNode = Spread<{
7
- styles: ThemeStyleValue[];
8
- type: "heading-element";
8
+ styles?: ThemeStyleValue[];
9
+ styleId?: string;
10
+ className?: string;
11
+ type: "wby-heading";
9
12
  }, BaseSerializedHeadingNode>;
10
- export declare class HeadingNode extends BaseHeadingNode implements TextNodeThemeStyles, TypographyStylesNode {
11
- __styles: ThemeStyleValue[];
12
- constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey);
13
- private setDefaultTypography;
14
- getTypographyStyleId(): string | undefined;
15
- private hasTypographyStyle;
16
- getThemeStyles(): ThemeStyleValue[];
17
- setThemeStyles(styles: ThemeStyleValue[]): this;
13
+ interface HeadingNodeOptions {
14
+ className?: string;
15
+ styleId?: string;
16
+ key?: NodeKey;
17
+ }
18
+ export declare class HeadingNode extends BaseHeadingNode implements TypographyStylesNode {
19
+ private __styleId;
20
+ private __className;
21
+ constructor(tag: HeadingTagType, options?: HeadingNodeOptions);
22
+ getStyleId(): string | undefined;
23
+ setStyleId(styleId: string | undefined): void;
24
+ setClassName(className: string | undefined): void;
25
+ getClassName(): string | undefined;
18
26
  static getType(): string;
19
27
  static clone(node: HeadingNode): HeadingNode;
20
- protected updateElementWithThemeClasses(element: HTMLElement, theme: EditorTheme): HTMLElement;
21
28
  createDOM(config: EditorConfig): HTMLElement;
29
+ exportDOM(editor: LexicalEditor): DOMExportOutput;
30
+ static importDOM(): DOMConversionMap | null;
22
31
  static importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode;
23
32
  exportJSON(): SerializeHeadingNode;
24
33
  insertNewAfter(selection?: RangeSelection, restoreSelection?: boolean): ParagraphNode | HeadingNode;
25
34
  collapseAtStart(): true;
35
+ protected updateElementWithThemeClasses(element: HTMLElement, theme: EditorTheme): HTMLElement;
36
+ private setDefaultTypography;
26
37
  }
27
- export declare function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode;
38
+ export declare function $createHeadingNode(tag: HeadingTagType, styleId?: string): HeadingNode;
28
39
  export declare function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode;
40
+ export {};