@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
package/ListNode.js CHANGED
@@ -1,204 +1,168 @@
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 } from "lexical";
2
+ import { findTypographyStyleByHtmlTag } from "@webiny/lexical-theme";
3
+ import { addClassNamesToElement, removeClassNamesFromElement } from "@lexical/utils";
4
+ import { $getListDepth, wrapInListItem } from "./utils/listNode";
5
+ import { $isListItemNode } from "./ListItemNode";
6
+ export class ListNode extends ElementNode {
24
7
  /** @internal */
25
8
 
26
9
  /** @internal */
27
10
 
28
11
  /** @internal */
29
12
 
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;
13
+ constructor(listType, options = {}) {
14
+ const {
15
+ styleId,
16
+ key,
17
+ className,
18
+ start
19
+ } = options;
20
+ super(key);
21
+ this.__styleId = styleId ?? "";
22
+ this.__className = className;
23
+ const _listType = TAG_TO_WEBINY_LIST_TYPE[listType] || listType;
24
+ this.__listType = _listType;
25
+ this.__tag = _listType === "number" ? "ol" : "ul";
26
+ this.__start = start || 1;
40
27
  }
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;
28
+ static getType() {
29
+ return "wby-list";
30
+ }
31
+ createDOM(config) {
32
+ const tag = this.__tag;
33
+ const element = document.createElement(tag);
34
+ if (this.__start !== 1) {
35
+ element.setAttribute("start", String(this.__start));
111
36
  }
37
+ this.updateElementWithThemeClasses(element, config.theme);
112
38
 
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;
39
+ // @ts-expect-error Internal field.
40
+ element.__lexicalListType = this.__listType;
41
+ const theme = config.theme;
42
+ setListThemeClassNames(element, theme, this, this.__styleId);
43
+ return element;
44
+ }
45
+ exportDOM(editor) {
46
+ const base = super.exportDOM(editor);
47
+ const element = base.element;
48
+ if (element && this.__className) {
49
+ element.classList.add(this.__className);
50
+ }
51
+ return {
52
+ ...base,
53
+ element
54
+ };
55
+ }
56
+ static clone(node) {
57
+ return new ListNode(node.getListType(), {
58
+ className: node.getClassName(),
59
+ styleId: node.getStyleId(),
60
+ start: node.getStart(),
61
+ key: node.getKey()
62
+ });
63
+ }
64
+ getStyleId() {
65
+ return this.__styleId;
66
+ }
67
+ setStyleId(styleId) {
68
+ this.__styleId = styleId ?? "";
69
+ }
70
+ setClassName(className) {
71
+ this.__className = className;
72
+ }
73
+ getClassName() {
74
+ return this.__className;
75
+ }
76
+ static importJSON(serializedNode) {
77
+ const node = $createListNode(serializedNode.listType,
78
+ // `styleId` is for backwards compatibility
79
+ serializedNode.styleId ?? serializedNode.styleId, serializedNode.start);
80
+ node.setFormat(serializedNode.format);
81
+ node.setIndent(serializedNode.indent);
82
+ node.setDirection(serializedNode.direction);
83
+ node.setClassName(serializedNode.className);
84
+ return node;
85
+ }
86
+ exportJSON() {
87
+ return {
88
+ ...super.exportJSON(),
89
+ styleId: this.__styleId,
90
+ className: this.__className,
91
+ listType: this.getListType(),
92
+ start: this.getStart(),
93
+ tag: this.getTag(),
94
+ type: "wby-list"
95
+ };
96
+ }
97
+ static importDomConversionMap() {
98
+ return {
99
+ conversion: convertListNode,
100
+ priority: 0
101
+ };
102
+ }
103
+ static importDOM() {
104
+ return {
105
+ ol: () => {
106
+ return this.importDomConversionMap();
107
+ },
108
+ ul: () => {
109
+ return this.importDomConversionMap();
129
110
  }
111
+ };
112
+ }
113
+ updateDOM(prevNode, dom, config) {
114
+ if (prevNode.__tag !== this.__tag) {
115
+ return true;
130
116
  }
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);
117
+ setListThemeClassNames(dom, config.theme, this, this.__styleId);
118
+ return false;
119
+ }
120
+ extractWithChild(child) {
121
+ return $isListItemNode(child);
122
+ }
123
+ getListType() {
124
+ return this.__listType;
125
+ }
126
+ getStart() {
127
+ return this.__start;
128
+ }
129
+ getTag() {
130
+ return this.__tag;
131
+ }
132
+ updateElementWithThemeClasses(element, theme) {
133
+ if (!theme?.emotionMap) {
134
+ return element;
155
135
  }
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;
136
+ if (!this.__styleId || !this.__className) {
137
+ this.setDefaultTypography(theme.emotionMap);
164
138
  }
165
- }, {
166
- key: "importDomConversionMap",
167
- value: function importDomConversionMap() {
168
- return {
169
- conversion: convertListNode,
170
- priority: 0
171
- };
139
+ if (this.__className) {
140
+ addClassNamesToElement(element, this.__className);
172
141
  }
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
- };
142
+ return element;
143
+ }
144
+ setDefaultTypography(themeEmotionMap) {
145
+ const typographyStyle = findTypographyStyleByHtmlTag(this.getTag(), themeEmotionMap);
146
+ if (typographyStyle) {
147
+ this.__styleId = typographyStyle.id;
148
+ this.__className = typographyStyle.className;
185
149
  }
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 || {};
150
+ }
151
+ }
152
+ function setListThemeClassNames(dom, editorTheme, node, styleId) {
153
+ const editorThemeClasses = editorTheme;
154
+ const classesToAdd = [];
155
+ const classesToRemove = [];
156
+ const listTheme = editorThemeClasses.list;
157
+ const emotionMap = editorTheme?.emotionMap || {};
194
158
  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;
159
+ const listLevelsClassNames = listTheme[`${node.__tag}Depth`] || [];
160
+ const listDepth = $getListDepth(node) - 1;
161
+ const normalizedListDepth = listDepth % listLevelsClassNames.length;
162
+ const listLevelClassName = listLevelsClassNames[normalizedListDepth];
163
+ const listClassName = `${listTheme[node.__tag]} ${emotionMap[styleId]?.className ?? ""}`;
164
+ let nestedListClassName;
165
+ const nestedListTheme = listTheme.nested;
202
166
  if (nestedListTheme !== undefined && nestedListTheme.list) {
203
167
  nestedListClassName = nestedListTheme.list;
204
168
  }
@@ -206,28 +170,28 @@ function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
206
170
  classesToAdd.push(listClassName);
207
171
  }
208
172
  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++) {
173
+ const listItemClasses = listLevelClassName.split(" ");
174
+ classesToAdd.push(...listItemClasses);
175
+ for (let i = 0; i < listLevelsClassNames.length; i++) {
212
176
  if (i !== normalizedListDepth) {
213
177
  classesToRemove.push(node.__tag + i);
214
178
  }
215
179
  }
216
180
  }
217
181
  if (nestedListClassName !== undefined) {
218
- var nestedListItemClasses = nestedListClassName.split(" ");
182
+ const nestedListItemClasses = nestedListClassName.split(" ");
219
183
  if (listDepth > 1) {
220
- classesToAdd.push.apply(classesToAdd, (0, _toConsumableArray2.default)(nestedListItemClasses));
184
+ classesToAdd.push(...nestedListItemClasses);
221
185
  } else {
222
- classesToRemove.push.apply(classesToRemove, (0, _toConsumableArray2.default)(nestedListItemClasses));
186
+ classesToRemove.push(...nestedListItemClasses);
223
187
  }
224
188
  }
225
189
  }
226
190
  if (classesToRemove.length > 0) {
227
- _utils.removeClassNamesFromElement.apply(void 0, [dom].concat(classesToRemove));
191
+ removeClassNamesFromElement(dom, ...classesToRemove);
228
192
  }
229
193
  if (classesToAdd.length > 0) {
230
- _utils.addClassNamesToElement.apply(void 0, [dom].concat(classesToAdd));
194
+ addClassNamesToElement(dom, ...classesToAdd);
231
195
  }
232
196
  }
233
197
 
@@ -237,25 +201,25 @@ function setListThemeClassNames(dom, editorTheme, node, themeStyleId) {
237
201
  * or some other inline content.
238
202
  */
239
203
  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)) {
204
+ const normalizedListItems = [];
205
+ for (let i = 0; i < nodes.length; i++) {
206
+ const node = nodes[i];
207
+ if ($isListItemNode(node)) {
244
208
  normalizedListItems.push(node);
245
- node.getChildren().forEach(function (child) {
209
+ node.getChildren().forEach(child => {
246
210
  if ($isListNode(child)) {
247
- normalizedListItems.push((0, _listNode.wrapInListItem)(child));
211
+ normalizedListItems.push(wrapInListItem(child));
248
212
  }
249
213
  });
250
214
  } else {
251
- normalizedListItems.push((0, _listNode.wrapInListItem)(node));
215
+ normalizedListItems.push(wrapInListItem(node));
252
216
  }
253
217
  }
254
218
  return normalizedListItems;
255
219
  }
256
220
  function convertListNode(domNode) {
257
- var nodeName = domNode.nodeName.toLowerCase();
258
- var node = null;
221
+ const nodeName = domNode.nodeName.toLowerCase();
222
+ let node = null;
259
223
  if (nodeName === "ol") {
260
224
  node = $createListNode("number");
261
225
  } else if (nodeName === "ul") {
@@ -264,18 +228,20 @@ function convertListNode(domNode) {
264
228
  return {
265
229
  // @ts-expect-error
266
230
  after: normalizeChildren,
267
- node: node
231
+ node
268
232
  };
269
233
  }
270
- var TAG_TO_WEBINY_LIST_TYPE = {
234
+ const TAG_TO_WEBINY_LIST_TYPE = {
271
235
  ol: "number",
272
236
  ul: "bullet"
273
237
  };
274
- function $createListNode(listType, themeStyleId) {
275
- var start = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
276
- return new ListNode(listType, themeStyleId, start);
238
+ export function $createListNode(listType, styleId, start = 1) {
239
+ return new ListNode(listType, {
240
+ start,
241
+ styleId
242
+ });
277
243
  }
278
- function $isListNode(node) {
244
+ export function $isListNode(node) {
279
245
  return node instanceof ListNode;
280
246
  }
281
247
 
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","findTypographyStyleByHtmlTag","addClassNamesToElement","removeClassNamesFromElement","$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","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","emotionMap","setDefaultTypography","themeEmotionMap","typographyStyle","id","editorTheme","editorThemeClasses","classesToAdd","classesToRemove","listTheme","list","undefined","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 } from \"lexical\";\nimport type { EditorTheme, ThemeEmotionMap } from \"@webiny/lexical-theme\";\nimport { findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { addClassNamesToElement, removeClassNamesFromElement } from \"@lexical/utils\";\nimport type { ListNodeTagType } from \"@lexical/list/LexicalListNode\";\nimport { $getListDepth, wrapInListItem } from \"~/utils/listNode\";\nimport type { ListItemNode } from \"./ListItemNode\";\nimport { $isListItemNode } from \"./ListItemNode\";\nimport type { ListType } from \"@lexical/list\";\nimport type { TypographyStylesNode } from \"~/types\";\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, config.theme as EditorTheme);\n\n // @ts-expect-error Internal field.\n element.__lexicalListType = this.__listType;\n const theme = config.theme as EditorTheme;\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, config.theme as EditorTheme, 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: EditorTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.__styleId || !this.__className) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n if (this.__className) {\n addClassNamesToElement(element, this.__className);\n }\n\n return element;\n }\n\n private setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.getTag(), themeEmotionMap);\n if (typographyStyle) {\n this.__styleId = typographyStyle.id;\n this.__className = typographyStyle.className;\n }\n }\n}\n\nfunction setListThemeClassNames(\n dom: HTMLElement,\n editorTheme: EditorTheme,\n node: ListNode,\n styleId: 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]} ${emotionMap[styleId]?.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 type { EditorTheme } from "@webiny/lexical-theme";
5
+ import type { TypographyStylesNode, ThemeStyleValue } from "./types";
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: EditorTheme): 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 {};