@webiny/lexical-nodes 5.44.1-beta.1 → 5.45.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/FontColorNode.d.ts +6 -6
  2. package/FontColorNode.js +102 -145
  3. package/FontColorNode.js.map +1 -1
  4. package/HeadingNode.d.ts +29 -17
  5. package/HeadingNode.js +184 -152
  6. package/HeadingNode.js.map +1 -1
  7. package/ImageNode.d.ts +1 -11
  8. package/ImageNode.js +119 -190
  9. package/ImageNode.js.map +1 -1
  10. package/LinkNode.d.ts +2 -2
  11. package/LinkNode.js +249 -346
  12. package/LinkNode.js.map +1 -1
  13. package/ListItemNode.d.ts +4 -3
  14. package/ListItemNode.js +275 -354
  15. package/ListItemNode.js.map +1 -1
  16. package/ListNode.d.ts +28 -14
  17. package/ListNode.js +170 -209
  18. package/ListNode.js.map +1 -1
  19. package/ParagraphNode.d.ts +28 -16
  20. package/ParagraphNode.js +143 -179
  21. package/ParagraphNode.js.map +1 -1
  22. package/QuoteNode.d.ts +26 -19
  23. package/QuoteNode.js +102 -188
  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 +74 -89
  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 +16 -20
  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 +4 -5
  43. package/types.js +1 -5
  44. package/types.js.map +1 -1
  45. package/utils/clearNodeFormating.d.ts +1 -1
  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 +8 -15
  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 +2 -2
  64. package/utils/listNode.js +37 -50
  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 -146
  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
package/ListNode.js CHANGED
@@ -1,204 +1,163 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.$createListNode = $createListNode;
8
- exports.$isListNode = $isListNode;
9
- exports.ListNode = void 0;
10
- var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
15
- var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
16
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
17
- var _lexical = require("lexical");
18
- var _lexicalTheme = require("@webiny/lexical-theme");
19
- var _utils = require("@lexical/utils");
20
- var _listNode = require("./utils/listNode");
21
- var _ListItemNode = require("./ListItemNode");
22
- var TypographyStyleAttrName = "data-theme-list-style-id";
23
- var ListNode = exports.ListNode = /*#__PURE__*/function (_ElementNode) {
1
+ import { ElementNode, addClassNamesToElement, removeClassNamesFromElement } from "lexical";
2
+ import { Theme } from "@webiny/lexical-theme";
3
+ import { $getListDepth, wrapInListItem } from "./utils/listNode.js";
4
+ import { $isListItemNode } from "./ListItemNode.js";
5
+ export class ListNode extends ElementNode {
24
6
  /** @internal */
25
7
 
26
8
  /** @internal */
27
9
 
28
10
  /** @internal */
29
11
 
30
- function ListNode(listType, themeStyleId, start, key) {
31
- var _this;
32
- (0, _classCallCheck2.default)(this, ListNode);
33
- _this = (0, _callSuper2.default)(this, ListNode, [key]);
34
- _this.__themeStyleId = themeStyleId || "";
35
- var _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;
36
- _this.__listType = _listType;
37
- _this.__tag = _listType === "number" ? "ol" : "ul";
38
- _this.__start = start || 1;
39
- return _this;
12
+ constructor(listType, options = {}) {
13
+ const {
14
+ styleId,
15
+ key,
16
+ className,
17
+ start
18
+ } = options;
19
+ super(key);
20
+ this.__styleId = styleId ?? "";
21
+ this.__className = className;
22
+ const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;
23
+ this.__listType = _listType;
24
+ this.__tag = _listType === "number" ? "ol" : "ul";
25
+ this.__start = start || 1;
40
26
  }
41
- (0, _inherits2.default)(ListNode, _ElementNode);
42
- return (0, _createClass2.default)(ListNode, [{
43
- key: "createDOM",
44
- value: function createDOM(config) {
45
- var tag = this.__tag;
46
- var dom = document.createElement(tag);
47
- var wTheme = config.theme;
48
- if (this.__start !== 1) {
49
- dom.setAttribute("start", String(this.__start));
50
- }
51
-
52
- // If styleId is not set or user removed from theme, set default style
53
- if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {
54
- this.setDefaultThemeListStyleByTag(this.__tag, wTheme);
55
- }
56
-
57
- // @ts-expect-error Internal field.
58
- dom.__lexicalListType = this.__listType;
59
- var theme = config.theme;
60
- setListThemeClassNames(dom, theme, this, this.__themeStyleId);
61
- dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);
62
- return dom;
63
- }
64
- }, {
65
- key: "getStyleId",
66
- value: function getStyleId() {
67
- return this.__themeStyleId;
68
- }
69
- }, {
70
- key: "exportJSON",
71
- value: function exportJSON() {
72
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(ListNode, "exportJSON", this, 3)([])), {}, {
73
- themeStyleId: this.getStyleId(),
74
- listType: this.getListType(),
75
- start: this.getStart(),
76
- tag: this.getTag(),
77
- type: "webiny-list",
78
- version: 1
79
- });
80
- }
81
- }, {
82
- key: "updateDOM",
83
- value: function updateDOM(prevNode, dom, config) {
84
- var wTheme = config.theme;
85
- if (prevNode.__tag !== this.__tag) {
86
- return true;
87
- }
88
-
89
- // if styleId is not set or user removed from theme, set default style.
90
- if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {
91
- this.setDefaultThemeListStyleByTag(this.__tag, wTheme);
92
- }
93
- setListThemeClassNames(dom, config.theme, this, this.__themeStyleId);
94
- dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);
95
- return false;
96
- }
97
- }, {
98
- key: "extractWithChild",
99
- value: function extractWithChild(child) {
100
- return (0, _ListItemNode.$isListItemNode)(child);
101
- }
102
- }, {
103
- key: "getListType",
104
- value: function getListType() {
105
- return this.__listType;
106
- }
107
- }, {
108
- key: "getStart",
109
- value: function getStart() {
110
- return this.__start;
27
+ static getType() {
28
+ return "wby-list";
29
+ }
30
+ createDOM(config) {
31
+ const tag = this.__tag;
32
+ const element = document.createElement(tag);
33
+ if (this.__start !== 1) {
34
+ element.setAttribute("start", String(this.__start));
111
35
  }
36
+ this.updateElementWithThemeClasses(element, Theme.from(config.theme));
112
37
 
113
- /*
114
- * Set default styleId from first style that is found in the theme that contains current ul or ol tag
115
- */
116
- }, {
117
- key: "setDefaultThemeListStyleByTag",
118
- value: function setDefaultThemeListStyleByTag(tag, theme) {
119
- if (!tag) {
120
- return;
121
- }
122
- var themeEmotionMap = theme?.emotionMap;
123
- if (!themeEmotionMap) {
124
- return;
125
- }
126
- var style = (0, _lexicalTheme.findTypographyStyleByHtmlTag)(tag, themeEmotionMap);
127
- if (style) {
128
- this.__themeStyleId = style.id;
38
+ // @ts-expect-error Internal field.
39
+ element.__lexicalListType = this.__listType;
40
+ const theme = Theme.from(config.theme);
41
+ setListThemeClassNames(element, theme, this, this.__styleId);
42
+ return element;
43
+ }
44
+ exportDOM(editor) {
45
+ const base = super.exportDOM(editor);
46
+ const element = base.element;
47
+ if (element && this.__className) {
48
+ element.classList.add(this.__className);
49
+ }
50
+ return {
51
+ ...base,
52
+ element
53
+ };
54
+ }
55
+ static clone(node) {
56
+ return new ListNode(node.getListType(), {
57
+ className: node.getClassName(),
58
+ styleId: node.getStyleId(),
59
+ start: node.getStart(),
60
+ key: node.getKey()
61
+ });
62
+ }
63
+ getStyleId() {
64
+ return this.__styleId;
65
+ }
66
+ setStyleId(styleId) {
67
+ this.__styleId = styleId ?? "";
68
+ }
69
+ setClassName(className) {
70
+ this.__className = className;
71
+ }
72
+ getClassName() {
73
+ return this.__className;
74
+ }
75
+ static importJSON(serializedNode) {
76
+ const node = $createListNode(serializedNode.listType,
77
+ // `styleId` is for backwards compatibility
78
+ serializedNode.styleId ?? serializedNode.styleId, serializedNode.start);
79
+ node.setFormat(serializedNode.format);
80
+ node.setIndent(serializedNode.indent);
81
+ node.setDirection(serializedNode.direction);
82
+ node.setClassName(serializedNode.className);
83
+ return node;
84
+ }
85
+ exportJSON() {
86
+ return {
87
+ ...super.exportJSON(),
88
+ styleId: this.__styleId,
89
+ className: this.__className,
90
+ listType: this.getListType(),
91
+ start: this.getStart(),
92
+ tag: this.getTag(),
93
+ type: "wby-list"
94
+ };
95
+ }
96
+ static importDomConversionMap() {
97
+ return {
98
+ conversion: convertListNode,
99
+ priority: 0
100
+ };
101
+ }
102
+ static importDOM() {
103
+ return {
104
+ ol: () => {
105
+ return this.importDomConversionMap();
106
+ },
107
+ ul: () => {
108
+ return this.importDomConversionMap();
129
109
  }
110
+ };
111
+ }
112
+ updateDOM(prevNode, dom, config) {
113
+ if (prevNode.__tag !== this.__tag) {
114
+ return true;
130
115
  }
131
- }, {
132
- key: "hasThemeStyle",
133
- value: function hasThemeStyle() {
134
- return !!this.__themeStyleId;
135
- }
136
- }, {
137
- key: "getTag",
138
- value: function getTag() {
139
- return this.__tag;
140
- }
141
- }, {
142
- key: "isStyleExistInTheme",
143
- value: function isStyleExistInTheme(theme) {
144
- return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;
145
- }
146
- }], [{
147
- key: "getType",
148
- value: function getType() {
149
- return "webiny-list";
150
- }
151
- }, {
152
- key: "clone",
153
- value: function clone(node) {
154
- return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);
155
- }
156
- }, {
157
- key: "importJSON",
158
- value: function importJSON(serializedNode) {
159
- var node = $createListNode(serializedNode.listType, serializedNode.themeStyleId, serializedNode.start);
160
- node.setFormat(serializedNode.format);
161
- node.setIndent(serializedNode.indent);
162
- node.setDirection(serializedNode.direction);
163
- return node;
116
+ setListThemeClassNames(dom, Theme.from(config.theme), this, this.__styleId);
117
+ return false;
118
+ }
119
+ extractWithChild(child) {
120
+ return $isListItemNode(child);
121
+ }
122
+ getListType() {
123
+ return this.__listType;
124
+ }
125
+ getStart() {
126
+ return this.__start;
127
+ }
128
+ getTag() {
129
+ return this.__tag;
130
+ }
131
+ updateElementWithThemeClasses(element, theme) {
132
+ if (!this.__styleId || !this.__className) {
133
+ this.setDefaultTypography(theme);
164
134
  }
165
- }, {
166
- key: "importDomConversionMap",
167
- value: function importDomConversionMap() {
168
- return {
169
- conversion: convertListNode,
170
- priority: 0
171
- };
135
+ if (this.__className) {
136
+ addClassNamesToElement(element, this.__className);
172
137
  }
173
- }, {
174
- key: "importDOM",
175
- value: function importDOM() {
176
- var _this2 = this;
177
- return {
178
- ol: function ol() {
179
- return _this2.importDomConversionMap();
180
- },
181
- ul: function ul() {
182
- return _this2.importDomConversionMap();
183
- }
184
- };
138
+ return element;
139
+ }
140
+ setDefaultTypography(theme) {
141
+ const typographyStyle = theme.getTypographyByTag(this.getTag());
142
+ if (typographyStyle) {
143
+ this.__styleId = typographyStyle.id;
144
+ this.__className = typographyStyle.className;
185
145
  }
186
- }]);
187
- }(_lexical.ElementNode);
188
- function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
189
- var editorThemeClasses = editorTheme;
190
- var classesToAdd = [];
191
- var classesToRemove = [];
192
- var listTheme = editorThemeClasses.list;
193
- var emotionMap = editorTheme?.emotionMap || {};
146
+ }
147
+ }
148
+ function setListThemeClassNames(dom, theme, node, styleId) {
149
+ const classesToAdd = [];
150
+ const classesToRemove = [];
151
+ const listTheme = theme.tokens.list;
194
152
  if (listTheme !== undefined) {
195
- var listLevelsClassNames = listTheme["".concat(node.__tag, "Depth")] || [];
196
- var listDepth = (0, _listNode.$getListDepth)(node) - 1;
197
- var normalizedListDepth = listDepth % listLevelsClassNames.length;
198
- var listLevelClassName = listLevelsClassNames[normalizedListDepth];
199
- var listClassName = "".concat(listTheme[node.__tag], " ").concat(emotionMap[themeStyleId]?.className ?? "");
200
- var nestedListClassName;
201
- var nestedListTheme = listTheme.nested;
153
+ const listTypography = theme.getTypographyById(styleId);
154
+ const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];
155
+ const listDepth = $getListDepth(node) - 1;
156
+ const normalizedListDepth = listDepth % listLevelsClassNames.length;
157
+ const listLevelClassName = listLevelsClassNames[normalizedListDepth];
158
+ const listClassName = `${listTheme[node.__tag]} ${listTypography?.className ?? ""}`;
159
+ let nestedListClassName;
160
+ const nestedListTheme = listTheme.nested;
202
161
  if (nestedListTheme !== undefined && nestedListTheme.list) {
203
162
  nestedListClassName = nestedListTheme.list;
204
163
  }
@@ -206,28 +165,28 @@ function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
206
165
  classesToAdd.push(listClassName);
207
166
  }
208
167
  if (listLevelClassName !== undefined) {
209
- var listItemClasses = listLevelClassName.split(" ");
210
- classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(listItemClasses));
211
- for (var i = 0; i < listLevelsClassNames.length; i++) {
168
+ const listItemClasses = listLevelClassName.split(" ");
169
+ classesToAdd.push(...listItemClasses);
170
+ for (let i = 0; i < listLevelsClassNames.length; i++) {
212
171
  if (i !== normalizedListDepth) {
213
172
  classesToRemove.push(node.__tag + i);
214
173
  }
215
174
  }
216
175
  }
217
176
  if (nestedListClassName !== undefined) {
218
- var nestedListItemClasses = nestedListClassName.split(" ");
177
+ const nestedListItemClasses = nestedListClassName.split(" ");
219
178
  if (listDepth > 1) {
220
- classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(nestedListItemClasses));
179
+ classesToAdd.push(...nestedListItemClasses);
221
180
  } else {
222
- classesToRemove.push.apply(classesToRemove, (0, _toConsumableArray2.default)(nestedListItemClasses));
181
+ classesToRemove.push(...nestedListItemClasses);
223
182
  }
224
183
  }
225
184
  }
226
185
  if (classesToRemove.length > 0) {
227
- _utils.removeClassNamesFromElement.apply(void 0, [dom].concat(classesToRemove));
186
+ removeClassNamesFromElement(dom, ...classesToRemove);
228
187
  }
229
188
  if (classesToAdd.length > 0) {
230
- _utils.addClassNamesToElement.apply(void 0, [dom].concat(classesToAdd));
189
+ addClassNamesToElement(dom, ...classesToAdd);
231
190
  }
232
191
  }
233
192
 
@@ -237,25 +196,25 @@ function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
237
196
  * or some other inline content.
238
197
  */
239
198
  function normalizeChildren(nodes) {
240
- var normalizedListItems = [];
241
- for (var i = 0; i < nodes.length; i++) {
242
- var node = nodes[i];
243
- if ((0, _ListItemNode.$isListItemNode)(node)) {
199
+ const normalizedListItems = [];
200
+ for (let i = 0; i < nodes.length; i++) {
201
+ const node = nodes[i];
202
+ if ($isListItemNode(node)) {
244
203
  normalizedListItems.push(node);
245
- node.getChildren().forEach(function (child) {
204
+ node.getChildren().forEach(child => {
246
205
  if ($isListNode(child)) {
247
- normalizedListItems.push((0, _listNode.wrapInListItem)(child));
206
+ normalizedListItems.push(wrapInListItem(child));
248
207
  }
249
208
  });
250
209
  } else {
251
- normalizedListItems.push((0, _listNode.wrapInListItem)(node));
210
+ normalizedListItems.push(wrapInListItem(node));
252
211
  }
253
212
  }
254
213
  return normalizedListItems;
255
214
  }
256
215
  function convertListNode(domNode) {
257
- var nodeName = domNode.nodeName.toLowerCase();
258
- var node = null;
216
+ const nodeName = domNode.nodeName.toLowerCase();
217
+ let node = null;
259
218
  if (nodeName === "ol") {
260
219
  node = $createListNode("number");
261
220
  } else if (nodeName === "ul") {
@@ -264,18 +223,20 @@ function convertListNode(domNode) {
264
223
  return {
265
224
  // @ts-expect-error
266
225
  after: normalizeChildren,
267
- node: node
226
+ node
268
227
  };
269
228
  }
270
- var TAG_TO_WEBINY_LIST_TYPE = {
229
+ const TAG_TO_WEBINY_LIST_TYPE = {
271
230
  ol: "number",
272
231
  ul: "bullet"
273
232
  };
274
- function $createListNode(listType, themeStyleId) {
275
- var start = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
276
- return new ListNode(listType, themeStyleId, start);
233
+ export function $createListNode(listType, styleId, start = 1) {
234
+ return new ListNode(listType, {
235
+ start,
236
+ styleId
237
+ });
277
238
  }
278
- function $isListNode(node) {
239
+ export function $isListNode(node) {
279
240
  return node instanceof ListNode;
280
241
  }
281
242
 
package/ListNode.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_lexical","require","_lexicalTheme","_utils","_listNode","_ListItemNode","TypographyStyleAttrName","ListNode","exports","_ElementNode","listType","themeStyleId","start","key","_this","_classCallCheck2","default","_callSuper2","__themeStyleId","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","_inherits2","_createClass2","value","createDOM","config","tag","dom","document","createElement","wTheme","theme","setAttribute","String","hasThemeStyle","isStyleExistInTheme","setDefaultThemeListStyleByTag","__lexicalListType","setListThemeClassNames","getStyleId","exportJSON","_objectSpread2","_superPropGet2","getListType","getStart","getTag","type","version","updateDOM","prevNode","extractWithChild","child","$isListItemNode","themeEmotionMap","emotionMap","style","findTypographyStyleByHtmlTag","id","getType","clone","node","__key","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","importDomConversionMap","conversion","convertListNode","priority","importDOM","_this2","ol","ul","ElementNode","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","listLevelsClassNames","concat","listDepth","$getListDepth","normalizedListDepth","length","listLevelClassName","listClassName","className","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","apply","_toConsumableArray2","i","nestedListItemClasses","removeClassNamesFromElement","addClassNamesToElement","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","wrapInListItem","domNode","nodeName","toLowerCase","after","arguments"],"sources":["ListNode.ts"],"sourcesContent":["import {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { EditorTheme, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/listNode\";\nimport { $isListItemNode, ListItemNode } from \"./ListItemNode\";\nimport { ListType } from \"@lexical/list\";\n\nconst TypographyStyleAttrName = \"data-theme-list-style-id\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n themeStyleId: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"webiny-list\";\n version: 1;\n },\n SerializedElementNode\n>;\n\nexport class ListNode extends ElementNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n private __themeStyleId: string;\n\n constructor(listType: ListType, themeStyleId?: string, start?: number, key?: NodeKey) {\n super(key);\n this.__themeStyleId = themeStyleId || \"\";\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"webiny-list\";\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const dom = document.createElement(tag);\n const wTheme = config.theme as EditorTheme;\n\n if (this.__start !== 1) {\n dom.setAttribute(\"start\", String(this.__start));\n }\n\n // If styleId is not set or user removed from theme, set default style\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n // @ts-expect-error Internal field.\n dom.__lexicalListType = this.__listType;\n const theme = config.theme as EditorTheme;\n setListThemeClassNames(dom, theme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return dom;\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), node.getStyleId(), node.getStart(), node.__key);\n }\n\n getStyleId(): string {\n return this.__themeStyleId;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n serializedNode.themeStyleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n themeStyleId: this.getStyleId(),\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"webiny-list\",\n version: 1\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertListNode,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n const wTheme = config.theme as EditorTheme;\n\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n // if styleId is not set or user removed from theme, set default style.\n if (!this.hasThemeStyle() || !this.isStyleExistInTheme(wTheme)) {\n this.setDefaultThemeListStyleByTag(this.__tag, wTheme);\n }\n\n setListThemeClassNames(dom, config.theme as EditorTheme, this, this.__themeStyleId);\n dom.setAttribute(TypographyStyleAttrName, this.__themeStyleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n\n public getListType(): ListType {\n return this.__listType;\n }\n\n public getStart(): number {\n return this.__start;\n }\n\n /*\n * Set default styleId from first style that is found in the theme that contains current ul or ol tag\n */\n private setDefaultThemeListStyleByTag(tag: string, theme: EditorTheme) {\n if (!tag) {\n return;\n }\n\n const themeEmotionMap = theme?.emotionMap;\n if (!themeEmotionMap) {\n return;\n }\n\n const style = findTypographyStyleByHtmlTag(tag, themeEmotionMap);\n\n if (style) {\n this.__themeStyleId = style.id;\n }\n }\n\n private hasThemeStyle(): boolean {\n return !!this.__themeStyleId;\n }\n\n private getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n private isStyleExistInTheme(theme: EditorTheme): boolean {\n return theme?.emotionMap ? !!theme?.emotionMap[this.__themeStyleId] : false;\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: EditorTheme,\n node: ListNode,\n themeStyleId: string\n): void {\n const editorThemeClasses = editorTheme;\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = editorThemeClasses.list;\n const emotionMap = editorTheme?.emotionMap || {};\n if (listTheme !== undefined) {\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${\n emotionMap[themeStyleId]?.className ?? \"\"\n }`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-expect-error\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, themeStyleId?: string, start = 1): ListNode {\n return new ListNode(listType, themeStyleId, start);\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["ElementNode","addClassNamesToElement","removeClassNamesFromElement","Theme","$getListDepth","wrapInListItem","$isListItemNode","ListNode","constructor","listType","options","styleId","key","className","start","__styleId","__className","_listType","TAG_TO_WEBINY_LIST_TYPE","__listType","__tag","__start","getType","createDOM","config","tag","element","document","createElement","setAttribute","String","updateElementWithThemeClasses","from","theme","__lexicalListType","setListThemeClassNames","exportDOM","editor","base","classList","add","clone","node","getListType","getClassName","getStyleId","getStart","getKey","setStyleId","setClassName","importJSON","serializedNode","$createListNode","setFormat","format","setIndent","indent","setDirection","direction","exportJSON","getTag","type","importDomConversionMap","conversion","convertListNode","priority","importDOM","ol","ul","updateDOM","prevNode","dom","extractWithChild","child","setDefaultTypography","typographyStyle","getTypographyByTag","id","classesToAdd","classesToRemove","listTheme","tokens","list","undefined","listTypography","getTypographyById","listLevelsClassNames","listDepth","normalizedListDepth","length","listLevelClassName","listClassName","nestedListClassName","nestedListTheme","nested","push","listItemClasses","split","i","nestedListItemClasses","normalizeChildren","nodes","normalizedListItems","getChildren","forEach","$isListNode","domNode","nodeName","toLowerCase","after"],"sources":["ListNode.ts"],"sourcesContent":["import type {\n DOMConversion,\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedElementNode,\n Spread\n} from \"lexical\";\nimport { ElementNode, addClassNamesToElement, removeClassNamesFromElement } from \"lexical\";\nimport { Theme } from \"@webiny/lexical-theme\";\nimport type { ListNodeTagType } from \"@lexical/list\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/listNode.js\";\nimport type { ListItemNode } from \"./ListItemNode.js\";\nimport { $isListItemNode } from \"./ListItemNode.js\";\nimport type { ListType } from \"@lexical/list\";\nimport type { TypographyStylesNode } from \"~/types.js\";\n\nexport type SerializedWebinyListNode = Spread<\n {\n styleId?: string;\n className?: string;\n listType: ListType;\n start: number;\n tag: ListNodeTagType;\n type: \"wby-list\";\n },\n SerializedElementNode\n>;\n\ntype ListNodeOptions = {\n styleId?: string;\n className?: string;\n start?: number;\n key?: NodeKey;\n};\n\nexport class ListNode extends ElementNode implements TypographyStylesNode {\n /** @internal */\n __tag: ListNodeTagType;\n /** @internal */\n __start: number;\n /** @internal */\n __listType: ListType;\n\n private __styleId: string;\n private __className: string | undefined;\n\n constructor(listType: ListType, options: ListNodeOptions = {}) {\n const { styleId, key, className, start } = options;\n super(key);\n this.__styleId = styleId ?? \"\";\n this.__className = className;\n const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;\n this.__listType = _listType;\n this.__tag = _listType === \"number\" ? \"ol\" : \"ul\";\n this.__start = start || 1;\n }\n\n static override getType() {\n return \"wby-list\";\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const tag = this.__tag;\n const element = document.createElement(tag);\n\n if (this.__start !== 1) {\n element.setAttribute(\"start\", String(this.__start));\n }\n\n this.updateElementWithThemeClasses(element, Theme.from(config.theme));\n\n // @ts-expect-error Internal field.\n element.__lexicalListType = this.__listType;\n const theme = Theme.from(config.theme);\n setListThemeClassNames(element, theme, this, this.__styleId);\n return element;\n }\n\n override exportDOM(editor: LexicalEditor): DOMExportOutput {\n const base = super.exportDOM(editor);\n\n const element = base.element as HTMLElement;\n if (element && this.__className) {\n element.classList.add(this.__className);\n }\n\n return { ...base, element };\n }\n\n static override clone(node: ListNode): ListNode {\n return new ListNode(node.getListType(), {\n className: node.getClassName(),\n styleId: node.getStyleId(),\n start: node.getStart(),\n key: node.getKey()\n });\n }\n\n getStyleId(): string | undefined {\n return this.__styleId;\n }\n\n setStyleId(styleId: string | undefined) {\n this.__styleId = styleId ?? \"\";\n }\n\n setClassName(className: string | undefined) {\n this.__className = className;\n }\n\n getClassName(): string | undefined {\n return this.__className;\n }\n\n static override importJSON(serializedNode: SerializedWebinyListNode): ListNode {\n const node = $createListNode(\n serializedNode.listType,\n // `styleId` is for backwards compatibility\n serializedNode.styleId ?? serializedNode.styleId,\n serializedNode.start\n );\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n\n node.setClassName(serializedNode.className);\n\n return node;\n }\n\n override exportJSON(): SerializedWebinyListNode {\n return {\n ...super.exportJSON(),\n styleId: this.__styleId,\n className: this.__className,\n listType: this.getListType(),\n start: this.getStart(),\n tag: this.getTag(),\n type: \"wby-list\"\n };\n }\n\n static importDomConversionMap(): DOMConversion<HTMLElement> | null {\n return {\n conversion: convertListNode,\n priority: 0\n };\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n ol: () => {\n return this.importDomConversionMap();\n },\n ul: () => {\n return this.importDomConversionMap();\n }\n };\n }\n\n override updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {\n if (prevNode.__tag !== this.__tag) {\n return true;\n }\n\n setListThemeClassNames(dom, Theme.from(config.theme), this, this.__styleId);\n return false;\n }\n\n override extractWithChild(child: LexicalNode): boolean {\n return $isListItemNode(child);\n }\n\n public getListType(): ListType {\n return this.__listType;\n }\n\n public getStart(): number {\n return this.__start;\n }\n\n private getTag(): ListNodeTagType {\n return this.__tag;\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: Theme): HTMLElement {\n if (!this.__styleId || !this.__className) {\n this.setDefaultTypography(theme);\n }\n\n if (this.__className) {\n addClassNamesToElement(element, this.__className);\n }\n\n return element;\n }\n\n private setDefaultTypography(theme: Theme) {\n const typographyStyle = theme.getTypographyByTag(this.getTag());\n if (typographyStyle) {\n this.__styleId = typographyStyle.id;\n this.__className = typographyStyle.className;\n }\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n theme: Theme,\n node: ListNode,\n styleId: string\n): void {\n const classesToAdd = [];\n const classesToRemove = [];\n const listTheme = theme.tokens.list;\n if (listTheme !== undefined) {\n const listTypography = theme.getTypographyById(styleId);\n const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];\n const listDepth = $getListDepth(node) - 1;\n const normalizedListDepth = listDepth % listLevelsClassNames.length;\n const listLevelClassName = listLevelsClassNames[normalizedListDepth];\n const listClassName = `${listTheme[node.__tag]} ${listTypography?.className ?? \"\"}`;\n let nestedListClassName;\n const nestedListTheme = listTheme.nested;\n\n if (nestedListTheme !== undefined && nestedListTheme.list) {\n nestedListClassName = nestedListTheme.list;\n }\n\n if (listClassName) {\n classesToAdd.push(listClassName);\n }\n\n if (listLevelClassName !== undefined) {\n const listItemClasses = listLevelClassName.split(\" \");\n classesToAdd.push(...listItemClasses);\n for (let i = 0; i < listLevelsClassNames.length; i++) {\n if (i !== normalizedListDepth) {\n classesToRemove.push(node.__tag + i);\n }\n }\n }\n\n if (nestedListClassName !== undefined) {\n const nestedListItemClasses = nestedListClassName.split(\" \");\n\n if (listDepth > 1) {\n classesToAdd.push(...nestedListItemClasses);\n } else {\n classesToRemove.push(...nestedListItemClasses);\n }\n }\n }\n\n if (classesToRemove.length > 0) {\n removeClassNamesFromElement(dom, ...classesToRemove);\n }\n\n if (classesToAdd.length > 0) {\n addClassNamesToElement(dom, ...classesToAdd);\n }\n}\n\n/*\n * This function normalizes the children of a ListNode after the conversion from HTML,\n * ensuring that they are all ListItemNodes and contain either a single nested ListNode\n * or some other inline content.\n */\nfunction normalizeChildren(nodes: Array<ListNode>): Array<ListItemNode> {\n const normalizedListItems: Array<ListItemNode> = [];\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n if ($isListItemNode(node)) {\n normalizedListItems.push(node);\n node.getChildren().forEach(child => {\n if ($isListNode(child)) {\n normalizedListItems.push(wrapInListItem(child));\n }\n });\n } else {\n normalizedListItems.push(wrapInListItem(node));\n }\n }\n return normalizedListItems;\n}\n\nfunction convertListNode(domNode: Node): DOMConversionOutput {\n const nodeName = domNode.nodeName.toLowerCase();\n let node = null;\n\n if (nodeName === \"ol\") {\n node = $createListNode(\"number\");\n } else if (nodeName === \"ul\") {\n node = $createListNode(\"bullet\");\n }\n\n return {\n // @ts-expect-error\n after: normalizeChildren,\n node\n };\n}\n\nconst TAG_TO_WEBINY_LIST_TYPE: Record<string, ListType> = {\n ol: \"number\",\n ul: \"bullet\"\n};\n\nexport function $createListNode(listType: ListType, styleId?: string, start = 1): ListNode {\n return new ListNode(listType, {\n start,\n styleId\n });\n}\n\nexport function $isListNode(node: LexicalNode | null | undefined): node is ListNode {\n return node instanceof ListNode;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,27 +1,39 @@
1
- import { DOMConversionMap, LexicalNode, NodeKey, ParagraphNode as BaseParagraphNode, SerializedParagraphNode as SerializedBaseParagraphNode, Spread } from "lexical";
2
- import { EditorConfig } from "lexical";
3
- import { ThemeEmotionMap } from "@webiny/lexical-theme";
4
- import { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from "./types";
1
+ import type { DOMConversionMap, LexicalNode, NodeKey, SerializedParagraphNode as SerializedBaseParagraphNode, Spread, LexicalEditor, DOMExportOutput, RangeSelection } from "lexical";
2
+ import { ParagraphNode as BaseParagraphNode } from "lexical";
3
+ import type { EditorConfig } from "lexical";
4
+ import { Theme } from "@webiny/lexical-theme";
5
+ import type { TypographyStylesNode, ThemeStyleValue } from "./types.js";
5
6
  export type SerializeParagraphNode = Spread<{
6
- styles: ThemeStyleValue[];
7
- type: "paragraph-element";
7
+ styles?: ThemeStyleValue[];
8
+ styleId?: string;
9
+ className?: string;
10
+ type: "wby-paragraph";
8
11
  }, SerializedBaseParagraphNode>;
9
- export declare class ParagraphNode extends BaseParagraphNode implements TextNodeThemeStyles, TypographyStylesNode {
10
- __styles: ThemeStyleValue[];
11
- constructor(typographyStyleId?: string, key?: NodeKey);
12
- protected setDefaultTypography(themeEmotionMap: ThemeEmotionMap): void;
13
- getTypographyStyleId(): string | undefined;
14
- private hasTypographyStyle;
15
- getThemeStyles(): ThemeStyleValue[];
16
- setThemeStyles(styles: ThemeStyleValue[]): this;
12
+ interface ParagraphNodeOptions {
13
+ className?: string;
14
+ styleId?: string;
15
+ key?: NodeKey;
16
+ }
17
+ export declare class ParagraphNode extends BaseParagraphNode implements TypographyStylesNode {
18
+ private __styleId;
19
+ private __className;
20
+ constructor(options?: ParagraphNodeOptions);
21
+ getStyleId(): string | undefined;
22
+ setStyleId(styleId: string | undefined): void;
23
+ setClassName(className: string | undefined): void;
24
+ getClassName(): string | undefined;
17
25
  static getType(): string;
18
26
  static clone(node: ParagraphNode): ParagraphNode;
19
- private updateElementWithThemeClasses;
27
+ insertNewAfter(rangeSelection: RangeSelection, restoreSelection: boolean): ParagraphNode;
20
28
  createDOM(config: EditorConfig): HTMLElement;
29
+ exportDOM(editor: LexicalEditor): DOMExportOutput;
21
30
  updateDOM(prevNode: ParagraphNode, dom: HTMLElement, config: EditorConfig): boolean;
22
31
  static importDOM(): DOMConversionMap | null;
23
32
  static importJSON(serializedNode: SerializeParagraphNode): BaseParagraphNode;
24
33
  exportJSON(): SerializeParagraphNode;
34
+ protected updateElementWithThemeClasses(element: HTMLElement, theme: Theme): HTMLElement;
35
+ private setDefaultTypography;
25
36
  }
26
- export declare function $createParagraphNode(typographyStyleId?: string): ParagraphNode;
37
+ export declare function $createParagraphNode(styleId?: string): ParagraphNode;
27
38
  export declare function $isParagraphNode(node: LexicalNode | null | undefined): node is ParagraphNode;
39
+ export {};