@webiny/lexical-nodes 6.0.0-beta.0 → 6.0.0-rc.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 (83) hide show
  1. package/FontColorNode.d.ts +24 -22
  2. package/FontColorNode.js +114 -103
  3. package/FontColorNode.js.map +1 -1
  4. package/HeadingNode.d.ts +30 -20
  5. package/HeadingNode.js +185 -176
  6. package/HeadingNode.js.map +1 -1
  7. package/ImageNode.d.ts +2 -12
  8. package/ImageNode.js +119 -193
  9. package/ImageNode.js.map +1 -1
  10. package/LinkNode.d.ts +6 -6
  11. package/LinkNode.js +249 -347
  12. package/LinkNode.js.map +1 -1
  13. package/ListItemNode.d.ts +6 -5
  14. package/ListItemNode.js +275 -352
  15. package/ListItemNode.js.map +1 -1
  16. package/ListNode.d.ts +32 -19
  17. package/ListNode.js +170 -210
  18. package/ListNode.js.map +1 -1
  19. package/ParagraphNode.d.ts +30 -20
  20. package/ParagraphNode.js +144 -201
  21. package/ParagraphNode.js.map +1 -1
  22. package/QuoteNode.d.ts +27 -20
  23. package/QuoteNode.js +102 -208
  24. package/QuoteNode.js.map +1 -1
  25. package/README.md +9 -4
  26. package/components/ImageNode/ImageComponent.d.ts +2 -7
  27. package/components/ImageNode/ImageComponent.js +72 -166
  28. package/components/ImageNode/ImageComponent.js.map +1 -1
  29. package/components/ImageNode/ImageResizer.d.ts +1 -8
  30. package/components/ImageNode/ImageResizer.js +80 -95
  31. package/components/ImageNode/ImageResizer.js.map +1 -1
  32. package/generateInitialLexicalValue.d.ts +4 -0
  33. package/generateInitialLexicalValue.js +27 -0
  34. package/generateInitialLexicalValue.js.map +1 -0
  35. package/index.d.ts +19 -23
  36. package/index.js +50 -233
  37. package/index.js.map +1 -1
  38. package/package.json +22 -19
  39. package/prepareLexicalState.d.ts +2 -0
  40. package/prepareLexicalState.js +53 -0
  41. package/prepareLexicalState.js.map +1 -0
  42. package/types.d.ts +5 -9
  43. package/types.js +1 -5
  44. package/types.js.map +1 -1
  45. package/utils/clearNodeFormating.d.ts +2 -2
  46. package/utils/clearNodeFormating.js +12 -18
  47. package/utils/clearNodeFormating.js.map +1 -1
  48. package/utils/formatList.d.ts +4 -4
  49. package/utils/formatList.js +171 -208
  50. package/utils/formatList.js.map +1 -1
  51. package/utils/formatToHeading.d.ts +2 -2
  52. package/utils/formatToHeading.js +8 -15
  53. package/utils/formatToHeading.js.map +1 -1
  54. package/utils/formatToParagraph.d.ts +1 -1
  55. package/utils/formatToParagraph.js +8 -16
  56. package/utils/formatToParagraph.js.map +1 -1
  57. package/utils/formatToQuote.d.ts +1 -1
  58. package/utils/formatToQuote.js +10 -17
  59. package/utils/formatToQuote.js.map +1 -1
  60. package/utils/getStyleId.d.ts +11 -0
  61. package/utils/getStyleId.js +14 -0
  62. package/utils/getStyleId.js.map +1 -0
  63. package/utils/listNode.d.ts +14 -4
  64. package/utils/listNode.js +43 -49
  65. package/utils/listNode.js.map +1 -1
  66. package/utils/toggleLink.d.ts +1 -1
  67. package/utils/toggleLink.js +41 -45
  68. package/utils/toggleLink.js.map +1 -1
  69. package/TypographyNode.d.ts +0 -39
  70. package/TypographyNode.js +0 -147
  71. package/TypographyNode.js.map +0 -1
  72. package/components/ImageNode/ContentEditable.css +0 -22
  73. package/components/ImageNode/ContentEditable.d.ts +0 -12
  74. package/components/ImageNode/ContentEditable.js +0 -26
  75. package/components/ImageNode/ContentEditable.js.map +0 -1
  76. package/components/ImageNode/ImageComponent.css +0 -43
  77. package/components/ImageNode/Placeholder.css +0 -20
  78. package/components/ImageNode/Placeholder.d.ts +0 -15
  79. package/components/ImageNode/Placeholder.js +0 -30
  80. package/components/ImageNode/Placeholder.js.map +0 -1
  81. package/components/ImageNode/SharedHistoryContext.d.ts +0 -10
  82. package/components/ImageNode/SharedHistoryContext.js +0 -27
  83. package/components/ImageNode/SharedHistoryContext.js.map +0 -1
@@ -1,41 +1,43 @@
1
- import { EditorConfig, LexicalCommand, LexicalEditor, LexicalNode, NodeKey, RangeSelection, SerializedTextNode, Spread, TextNode } from "lexical";
2
- import { EditorTheme } from "@webiny/lexical-theme";
3
- export declare const ADD_FONT_COLOR_COMMAND: LexicalCommand<FontColorPayload>;
1
+ import type { EditorConfig, LexicalNode, SerializedTextNode, Spread } from "lexical";
2
+ import { TextNode } from "lexical";
3
+ import { Theme } from "@webiny/lexical-theme";
4
+ export declare class ThemeColorValue {
5
+ private readonly id;
6
+ private value;
7
+ constructor(value: string, name?: string);
8
+ getValue(): string;
9
+ getName(): string;
10
+ updateFromTheme(theme: Theme): void;
11
+ }
12
+ export declare const ADD_FONT_COLOR_COMMAND: import("lexical").LexicalCommand<FontColorPayload>;
4
13
  export interface FontColorPayload {
5
- color: string;
6
- themeColorName: string | undefined;
7
- caption?: LexicalEditor;
8
- key?: NodeKey;
14
+ color: ThemeColorValue;
9
15
  }
10
- declare type ThemeStyleColorName = string;
11
- declare type ThemeColor = "custom" | ThemeStyleColorName;
12
- export declare type SerializedFontColorNode = Spread<{
13
- themeColor: ThemeColor;
16
+ export type SerializedFontColorNode = Spread<{
17
+ themeColor: string;
14
18
  color: string;
15
- type: "font-color-node";
16
- version: 1;
19
+ type: "wby-font-color";
17
20
  }, SerializedTextNode>;
18
21
  /**
19
22
  * Main responsibility of this node is to apply custom or Webiny theme color to selected text.
20
23
  * Extends the original TextNode node to add additional transformation and support for webiny theme font color.
21
24
  */
22
25
  export declare class FontColorNode extends TextNode {
23
- __themeColor: ThemeColor;
24
- __color: string;
25
- constructor(text: string, color: string, themeColor?: ThemeColor, key?: NodeKey);
26
+ private readonly __color;
27
+ constructor(text: string, color: ThemeColorValue, key?: string);
26
28
  static getType(): string;
27
29
  static clone(node: FontColorNode): FontColorNode;
28
30
  static importJSON(serializedNode: SerializedFontColorNode): TextNode;
31
+ splitText(...splitOffsets: Array<number>): Array<FontColorNode>;
29
32
  exportJSON(): SerializedFontColorNode;
30
- addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement;
31
- updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean;
33
+ private addColorValueToHTMLElement;
34
+ updateDOM(prevNode: this, dom: HTMLElement, config: EditorConfig): boolean;
32
35
  getColorStyle(): {
33
36
  color: string;
34
- themeColor: ThemeColor;
37
+ themeColor: string;
35
38
  };
36
39
  createDOM(config: EditorConfig): HTMLElement;
37
40
  }
38
- export declare const $createFontColorNode: (text: string, color: string, themeColor?: ThemeColor, key?: NodeKey) => FontColorNode;
41
+ export declare const $createFontColorNode: (text: string, color: ThemeColorValue) => FontColorNode;
39
42
  export declare const $isFontColorNode: (node: LexicalNode) => node is FontColorNode;
40
- export declare function $applyStylesToNode(node: FontColorNode, nodeStyleProvider: RangeSelection): void;
41
- export {};
43
+ export declare function $applyStylesToNode(node: TextNode, source: TextNode): void;
package/FontColorNode.js CHANGED
@@ -1,117 +1,128 @@
1
- "use strict";
1
+ import { $getSelection, $isRangeSelection, createCommand, TextNode } from "lexical";
2
+ import { Theme } from "@webiny/lexical-theme";
3
+ export class ThemeColorValue {
4
+ // Webiny theme color variable, like color1, color2, etc.
2
5
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.$applyStylesToNode = $applyStylesToNode;
8
- exports.FontColorNode = exports.ADD_FONT_COLOR_COMMAND = exports.$isFontColorNode = exports.$createFontColorNode = void 0;
9
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
12
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
13
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
14
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
16
- var _lexical = require("lexical");
17
- var ADD_FONT_COLOR_COMMAND = exports.ADD_FONT_COLOR_COMMAND = (0, _lexical.createCommand)("ADD_FONT_COLOR_COMMAND");
18
- var FontColorNodeAttrName = "data-theme-font-color-name";
6
+ // This can be a HEX value or a CSS variable.
7
+
8
+ constructor(value, name) {
9
+ this.value = value;
10
+ this.id = name ?? "custom";
11
+ }
12
+ getValue() {
13
+ return this.value;
14
+ }
15
+ getName() {
16
+ return this.id;
17
+ }
18
+ updateFromTheme(theme) {
19
+ if (theme.colors && this.id !== "custom") {
20
+ const color = theme.colors.find(color => color.id === this.id);
21
+ if (color) {
22
+ this.value = color.value;
23
+ }
24
+ }
25
+ }
26
+ }
27
+ export const ADD_FONT_COLOR_COMMAND = createCommand("ADD_FONT_COLOR_COMMAND");
28
+ const FontColorNodeAttrName = "data-theme-font-color-name";
19
29
  /**
20
30
  * Main responsibility of this node is to apply custom or Webiny theme color to selected text.
21
31
  * Extends the original TextNode node to add additional transformation and support for webiny theme font color.
22
32
  */
23
- var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
24
- function FontColorNode(text, color, themeColor, key) {
25
- var _this;
26
- (0, _classCallCheck2.default)(this, FontColorNode);
27
- _this = (0, _callSuper2.default)(this, FontColorNode, [text, key]);
28
- _this.__themeColor = themeColor || "custom";
29
- _this.__color = color;
30
- return _this;
33
+ export class FontColorNode extends TextNode {
34
+ constructor(text, color, key) {
35
+ super(text, key);
36
+ this.__color = color;
31
37
  }
32
- (0, _inherits2.default)(FontColorNode, _TextNode);
33
- return (0, _createClass2.default)(FontColorNode, [{
34
- key: "exportJSON",
35
- value: function exportJSON() {
36
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "exportJSON", this).call(this)), {}, {
37
- themeColor: this.__themeColor,
38
- color: this.__color,
39
- type: "font-color-node",
40
- version: 1
41
- });
42
- }
43
- }, {
44
- key: "addColorValueToHTMLElement",
45
- value: function addColorValueToHTMLElement(element, theme) {
46
- var hasThemeColor = this.__themeColor !== "custom";
47
- // get the updated color from webiny theme
48
- if (hasThemeColor && theme?.styles?.colors) {
49
- this.__color = theme.styles.colors[this.__themeColor];
38
+ static getType() {
39
+ return "wby-font-color";
40
+ }
41
+ static clone(node) {
42
+ return new FontColorNode(node.__text, node.__color, node.__key);
43
+ }
44
+ static importJSON(serializedNode) {
45
+ const node = new FontColorNode(serializedNode.text, new ThemeColorValue(serializedNode.color, serializedNode.themeColor));
46
+ node.setTextContent(serializedNode.text);
47
+ node.setFormat(serializedNode.format);
48
+ node.setDetail(serializedNode.detail);
49
+ node.setMode(serializedNode.mode);
50
+ node.setStyle(serializedNode.style);
51
+ return node;
52
+ }
53
+ splitText(...splitOffsets) {
54
+ const newNodes = super.splitText(...splitOffsets);
55
+ const selection = $getSelection();
56
+
57
+ // After splitting, we need to re-apply styling to the new TextNodes.
58
+ const fontColorNodes = newNodes.map(node => {
59
+ if (node instanceof FontColorNode) {
60
+ return node;
50
61
  }
51
- element.setAttribute(FontColorNodeAttrName, this.__themeColor);
52
- element.style.color = this.__color;
53
- return element;
54
- }
55
- }, {
56
- key: "updateDOM",
57
- value: function updateDOM(prevNode, dom, config) {
58
- var theme = config.theme;
59
- var isUpdated = (0, _get2.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "updateDOM", this).call(this, prevNode, dom, config);
60
- var hasThemeColor = this.__themeColor !== "custom";
61
- // get the updated color from webiny theme
62
- if (hasThemeColor && theme?.styles?.colors) {
63
- this.__color = theme.styles.colors[this.__themeColor];
62
+ const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);
63
+ $applyStylesToNode(fontColorNode, this);
64
+ const newNode = node.replace(fontColorNode);
65
+
66
+ // Since we're replacing the existing node, we need to update the selection keys.
67
+ // This is very important to not break the editor functionality!
68
+ if ($isRangeSelection(selection)) {
69
+ const anchor = selection.anchor;
70
+ const focus = selection.focus;
71
+ if (anchor.key === node.getKey()) {
72
+ anchor.key = newNode.getKey();
73
+ }
74
+ if (focus.key === node.getKey()) {
75
+ focus.key = newNode.getKey();
76
+ }
64
77
  }
65
- dom.setAttribute(FontColorNodeAttrName, this.__themeColor);
66
- dom.style.color = this.__color;
67
- return isUpdated;
68
- }
69
- }, {
70
- key: "getColorStyle",
71
- value: function getColorStyle() {
72
- return {
73
- color: this.__color,
74
- themeColor: this.__themeColor
75
- };
76
- }
77
- }, {
78
- key: "createDOM",
79
- value: function createDOM(config) {
80
- var element = (0, _get2.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "createDOM", this).call(this, config);
81
- return this.addColorValueToHTMLElement(element, config.theme);
82
- }
83
- }], [{
84
- key: "getType",
85
- value: function getType() {
86
- return "font-color-node";
87
- }
88
- }, {
89
- key: "clone",
90
- value: function clone(node) {
91
- return new FontColorNode(node.__text, node.__color, node.__themeColor, node.__key);
92
- }
93
- }, {
94
- key: "importJSON",
95
- value: function importJSON(serializedNode) {
96
- var node = new FontColorNode(serializedNode.text, serializedNode.color, serializedNode.themeColor);
97
- node.setTextContent(serializedNode.text);
98
- node.setFormat(serializedNode.format);
99
- node.setDetail(serializedNode.detail);
100
- node.setMode(serializedNode.mode);
101
- node.setStyle(serializedNode.style);
102
- return node;
103
- }
104
- }]);
105
- }(_lexical.TextNode);
106
- var $createFontColorNode = exports.$createFontColorNode = function $createFontColorNode(text, color, themeColor, key) {
107
- return new FontColorNode(text, color, themeColor, key);
78
+ return newNode;
79
+ });
80
+ return fontColorNodes;
81
+ }
82
+ exportJSON() {
83
+ return {
84
+ ...super.exportJSON(),
85
+ themeColor: this.__color.getName(),
86
+ color: this.__color.getValue(),
87
+ type: "wby-font-color"
88
+ };
89
+ }
90
+ addColorValueToHTMLElement(element, theme) {
91
+ // Update color from webiny theme
92
+ this.__color.updateFromTheme(theme);
93
+ element.setAttribute(FontColorNodeAttrName, this.__color.getName());
94
+ element.style.color = this.__color.getValue();
95
+ return element;
96
+ }
97
+ updateDOM(prevNode, dom, config) {
98
+ const isUpdated = super.updateDOM(prevNode, dom, config);
99
+ const theme = Theme.from(config.theme);
100
+ this.__color.updateFromTheme(theme);
101
+ dom.setAttribute(FontColorNodeAttrName, this.__color.getName());
102
+ dom.style.color = this.__color.getValue();
103
+ return isUpdated;
104
+ }
105
+ getColorStyle() {
106
+ return {
107
+ color: this.__color.getValue(),
108
+ themeColor: this.__color.getName()
109
+ };
110
+ }
111
+ createDOM(config) {
112
+ const element = super.createDOM(config);
113
+ const theme = Theme.from(config.theme);
114
+ return this.addColorValueToHTMLElement(element, theme);
115
+ }
116
+ }
117
+ export const $createFontColorNode = (text, color) => {
118
+ return new FontColorNode(text, color);
108
119
  };
109
- var $isFontColorNode = exports.$isFontColorNode = function $isFontColorNode(node) {
120
+ export const $isFontColorNode = node => {
110
121
  return node instanceof FontColorNode;
111
122
  };
112
- function $applyStylesToNode(node, nodeStyleProvider) {
113
- node.setFormat(nodeStyleProvider.format);
114
- node.setStyle(nodeStyleProvider.style);
123
+ export function $applyStylesToNode(node, source) {
124
+ node.setFormat(source.getFormat());
125
+ node.setStyle(source.getStyle());
115
126
  }
116
127
 
117
128
  //# sourceMappingURL=FontColorNode.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["_lexical","require","ADD_FONT_COLOR_COMMAND","exports","createCommand","FontColorNodeAttrName","FontColorNode","_TextNode","text","color","themeColor","key","_this","_classCallCheck2","default","_callSuper2","__themeColor","__color","_inherits2","_createClass2","value","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","call","type","version","addColorValueToHTMLElement","element","theme","hasThemeColor","styles","colors","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","node","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$createFontColorNode","$isFontColorNode","$applyStylesToNode","nodeStyleProvider"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n RangeSelection,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport const ADD_FONT_COLOR_COMMAND: LexicalCommand<FontColorPayload> =\n createCommand(\"ADD_FONT_COLOR_COMMAND\");\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n // This color can be hex string\n color: string;\n // webiny theme color variable like color1, color2...\n themeColorName: string | undefined;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\ntype ThemeStyleColorName = string;\ntype ThemeColor = \"custom\" | ThemeStyleColorName;\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: ThemeColor;\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 __themeColor: ThemeColor;\n __color: string;\n\n constructor(text: string, color: string, themeColor?: ThemeColor, key?: NodeKey) {\n super(text, key);\n this.__themeColor = themeColor || \"custom\";\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.__themeColor, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n serializedNode.color,\n 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 exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__themeColor,\n color: this.__color,\n type: \"font-color-node\",\n version: 1\n };\n }\n\n addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n element.setAttribute(FontColorNodeAttrName, this.__themeColor);\n element.style.color = this.__color;\n return element;\n }\n\n override updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean {\n const theme = config.theme;\n const isUpdated = super.updateDOM(prevNode, dom, config);\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n dom.setAttribute(FontColorNodeAttrName, this.__themeColor);\n dom.style.color = this.__color;\n return isUpdated;\n }\n\n getColorStyle(): { color: string; themeColor: ThemeColor } {\n return {\n color: this.__color,\n themeColor: this.__themeColor\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme);\n }\n}\n\nexport const $createFontColorNode = (\n text: string,\n color: string,\n themeColor?: ThemeColor,\n key?: NodeKey\n): FontColorNode => {\n return new FontColorNode(text, color, themeColor, key);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: FontColorNode, nodeStyleProvider: RangeSelection) {\n node.setFormat(nodeStyleProvider.format);\n node.setStyle(nodeStyleProvider.style);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["$getSelection","$isRangeSelection","createCommand","TextNode","Theme","ThemeColorValue","constructor","value","name","id","getValue","getName","updateFromTheme","theme","colors","color","find","ADD_FONT_COLOR_COMMAND","FontColorNodeAttrName","FontColorNode","text","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","from","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 { Theme } from \"@webiny/lexical-theme\";\n\nexport class ThemeColorValue {\n // Webiny theme color variable, like color1, color2, etc.\n private readonly id: 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.id = name ?? \"custom\";\n }\n\n getValue() {\n return this.value;\n }\n\n getName() {\n return this.id;\n }\n\n updateFromTheme(theme: Theme) {\n if (theme.colors && this.id !== \"custom\") {\n const color = theme.colors.find(color => color.id === this.id);\n if (color) {\n this.value = color.value;\n }\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: Theme): 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 const theme = Theme.from(config.theme);\n this.__color.updateFromTheme(theme);\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 const theme = Theme.from(config.theme);\n return this.addColorValueToHTMLElement(element, theme);\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,30 +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 { WebinyTheme, ThemeEmotionMap } from "@webiny/lexical-theme";
4
- import { ParagraphNode } from "./ParagraphNode";
5
- import { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from "./types";
6
- export declare type SerializeHeadingNode = Spread<{
7
- styles: ThemeStyleValue[];
8
- type: "heading-element";
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 { Theme } from "@webiny/lexical-theme";
5
+ import type { ParagraphNode } from "./ParagraphNode.js";
6
+ import type { TypographyStylesNode, ThemeStyleValue } from "./types.js";
7
+ export type SerializeHeadingNode = Spread<{
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
- protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap): void;
14
- setTypography(typographyStyleId: string): this;
15
- getTypographyStyleId(): string | undefined;
16
- clearTypographyStyle(): this;
17
- hasTypographyStyle(): boolean;
18
- getThemeStyles(): ThemeStyleValue[];
19
- 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;
20
26
  static getType(): string;
21
27
  static clone(node: HeadingNode): HeadingNode;
22
- protected updateElementWithThemeClasses(element: HTMLElement, theme: WebinyTheme): HTMLElement;
23
28
  createDOM(config: EditorConfig): HTMLElement;
29
+ exportDOM(editor: LexicalEditor): DOMExportOutput;
30
+ static importDOM(): DOMConversionMap | null;
24
31
  static importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode;
25
32
  exportJSON(): SerializeHeadingNode;
26
33
  insertNewAfter(selection?: RangeSelection, restoreSelection?: boolean): ParagraphNode | HeadingNode;
27
34
  collapseAtStart(): true;
35
+ protected updateElementWithThemeClasses(element: HTMLElement, theme: Theme): HTMLElement;
36
+ private setDefaultTypography;
28
37
  }
29
- export declare function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode;
38
+ export declare function $createHeadingNode(tag: HeadingTagType, styleId?: string): HeadingNode;
30
39
  export declare function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode;
40
+ export {};