@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/LinkNode.js CHANGED
@@ -1,22 +1,3 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
6
- });
7
- exports.$createAutoLinkNode = $createAutoLinkNode;
8
- exports.$createLinkNode = $createLinkNode;
9
- exports.$isAutoLinkNode = $isAutoLinkNode;
10
- exports.$isLinkNode = $isLinkNode;
11
- exports.TOGGLE_LINK_COMMAND = exports.LinkNode = exports.AutoLinkNode = void 0;
12
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
13
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
- var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
16
- var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
17
- var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
- var _utils = require("@lexical/utils");
19
- var _lexical = require("lexical");
20
1
  /** @module @lexical/link */
21
2
  /**
22
3
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -26,279 +7,221 @@ var _lexical = require("lexical");
26
7
  *
27
8
  */
28
9
 
29
- var SUPPORTED_URL_PROTOCOLS = new Set(["http:", "https:", "mailto:", "sms:", "tel:"]);
10
+ import { addClassNamesToElement, isHTMLAnchorElement } from "@lexical/utils";
11
+ import { $applyNodeReplacement, $isElementNode, $isRangeSelection, createCommand, ElementNode } from "lexical";
12
+ const SUPPORTED_URL_PROTOCOLS = new Set(["http:", "https:", "mailto:", "sms:", "tel:"]);
30
13
 
31
14
  /** @noInheritDoc */
32
- var LinkNode = exports.LinkNode = /*#__PURE__*/function (_ElementNode) {
33
- function LinkNode(url) {
34
- var _this;
35
- var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
36
- var key = arguments.length > 2 ? arguments[2] : undefined;
37
- (0, _classCallCheck2.default)(this, LinkNode);
38
- _this = (0, _callSuper2.default)(this, LinkNode, [key]);
39
- var _attributes$target = attributes.target,
40
- target = _attributes$target === void 0 ? null : _attributes$target,
41
- _attributes$rel = attributes.rel,
42
- rel = _attributes$rel === void 0 ? null : _attributes$rel,
43
- _attributes$title = attributes.title,
44
- title = _attributes$title === void 0 ? null : _attributes$title,
45
- _attributes$alt = attributes.alt,
46
- alt = _attributes$alt === void 0 ? null : _attributes$alt;
47
- _this.__url = url;
48
- _this.__target = target;
49
- _this.__rel = rel;
50
- _this.__title = title;
51
- _this.__alt = alt;
52
- return _this;
53
- }
54
- (0, _inherits2.default)(LinkNode, _ElementNode);
55
- return (0, _createClass2.default)(LinkNode, [{
56
- key: "createDOM",
57
- value: function createDOM(config) {
58
- var element = document.createElement("a");
59
- element.href = this.sanitizeUrl(this.__url);
60
- if (this.__target !== null) {
61
- element.target = this.__target;
62
- }
63
- if (this.__rel !== null) {
64
- element.rel = this.__rel;
65
- }
66
- if (this.__title !== null) {
67
- element.title = this.__title;
68
- }
69
- if (this.__alt) {
70
- element.setAttribute("alt", this.__alt);
71
- }
72
- (0, _utils.addClassNamesToElement)(element, config.theme.link);
73
- return element;
74
- }
75
- }, {
76
- key: "updateDOM",
77
- value: function updateDOM(prevNode, anchor) {
78
- var url = this.__url;
79
- var target = this.__target;
80
- var rel = this.__rel;
81
- var title = this.__title;
82
- var alt = this.__alt;
83
- if (url !== prevNode.__url) {
84
- anchor.href = url;
85
- }
86
- if (target !== prevNode.__target) {
87
- if (target) {
88
- anchor.target = target;
89
- } else {
90
- anchor.removeAttribute("target");
91
- }
92
- }
93
- if (rel !== prevNode.__rel) {
94
- if (rel) {
95
- anchor.rel = rel;
96
- } else {
97
- anchor.removeAttribute("rel");
98
- }
99
- }
100
- if (title !== prevNode.__title) {
101
- if (title) {
102
- anchor.title = title;
103
- } else {
104
- anchor.removeAttribute("title");
105
- }
106
- }
107
- if (alt !== prevNode.__alt) {
108
- if (alt) {
109
- anchor.setAttribute("alt", alt);
110
- } else {
111
- anchor.removeAttribute("alt");
112
- }
113
- }
114
- return false;
115
- }
116
- }, {
117
- key: "sanitizeUrl",
118
- value: function sanitizeUrl(url) {
119
- try {
120
- var parsedUrl = new URL(url);
121
- // eslint-disable-next-line no-script-url
122
- if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {
123
- return "about:blank";
124
- }
125
- } catch (_unused) {
126
- return url;
127
- }
128
- return url;
129
- }
130
- }, {
131
- key: "exportJSON",
132
- value: function exportJSON() {
133
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(LinkNode, "exportJSON", this, 3)([])), {}, {
134
- rel: this.getRel(),
135
- target: this.getTarget(),
136
- title: this.getTitle(),
137
- alt: this.getAlt(),
138
- type: "link",
139
- url: this.getURL(),
140
- version: 1
141
- });
142
- }
143
- }, {
144
- key: "getURL",
145
- value: function getURL() {
146
- return this.getLatest().__url;
147
- }
148
- }, {
149
- key: "setURL",
150
- value: function setURL(url) {
151
- var writable = this.getWritable();
152
- writable.__url = url;
153
- }
154
- }, {
155
- key: "getTarget",
156
- value: function getTarget() {
157
- return this.getLatest().__target;
158
- }
159
- }, {
160
- key: "setTarget",
161
- value: function setTarget(target) {
162
- var writable = this.getWritable();
163
- writable.__target = target;
164
- }
165
- }, {
166
- key: "getRel",
167
- value: function getRel() {
168
- return this.getLatest().__rel;
169
- }
170
- }, {
171
- key: "setRel",
172
- value: function setRel(rel) {
173
- var writable = this.getWritable();
174
- writable.__rel = rel;
15
+ export class LinkNode extends ElementNode {
16
+ /** @internal */
17
+
18
+ /** @internal */
19
+
20
+ /** @internal */
21
+
22
+ /** @internal */
23
+
24
+ /** @internal */
25
+
26
+ static getType() {
27
+ return "wby-link";
28
+ }
29
+ static clone(node) {
30
+ return new LinkNode(node.__url, {
31
+ rel: node.__rel,
32
+ target: node.__target,
33
+ title: node.__title,
34
+ alt: node.__alt
35
+ }, node.__key);
36
+ }
37
+ constructor(url, attributes = {}, key) {
38
+ super(key);
39
+ const {
40
+ target = null,
41
+ rel = null,
42
+ title = null,
43
+ alt = null
44
+ } = attributes;
45
+ this.__url = url;
46
+ this.__target = target;
47
+ this.__rel = rel;
48
+ this.__title = title;
49
+ this.__alt = alt;
50
+ }
51
+ createDOM(config) {
52
+ const element = document.createElement("a");
53
+ element.href = this.sanitizeUrl(this.__url);
54
+ if (this.__target !== null) {
55
+ element.target = this.__target;
175
56
  }
176
- }, {
177
- key: "getTitle",
178
- value: function getTitle() {
179
- return this.getLatest().__title;
57
+ if (this.__rel !== null) {
58
+ element.rel = this.__rel;
180
59
  }
181
- }, {
182
- key: "setTitle",
183
- value: function setTitle(title) {
184
- var writable = this.getWritable();
185
- writable.__title = title;
60
+ if (this.__title !== null) {
61
+ element.title = this.__title;
186
62
  }
187
- }, {
188
- key: "getAlt",
189
- value: function getAlt() {
190
- return this.__alt;
63
+ if (this.__alt) {
64
+ element.setAttribute("alt", this.__alt);
191
65
  }
192
- }, {
193
- key: "setAlt",
194
- value: function setAlt(text) {
195
- var writable = (0, _superPropGet2.default)(LinkNode, "getWritable", this, 3)([]);
196
- writable.__alt = text;
66
+ addClassNamesToElement(element, config.theme.link);
67
+ return element;
68
+ }
69
+ updateDOM(prevNode, anchor) {
70
+ const url = this.__url;
71
+ const target = this.__target;
72
+ const rel = this.__rel;
73
+ const title = this.__title;
74
+ const alt = this.__alt;
75
+ if (url !== prevNode.__url) {
76
+ anchor.href = url;
197
77
  }
198
- }, {
199
- key: "insertNewAfter",
200
- value: function insertNewAfter(selection) {
201
- var restoreSelection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
202
- var element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);
203
- if ((0, _lexical.$isElementNode)(element)) {
204
- var linkNode = $createLinkNode(this.__url, {
205
- rel: this.__rel,
206
- target: this.__target,
207
- title: this.__title,
208
- alt: this.__alt
209
- });
210
- element.append(linkNode);
211
- return linkNode;
78
+ if (target !== prevNode.__target) {
79
+ if (target) {
80
+ anchor.target = target;
81
+ } else {
82
+ anchor.removeAttribute("target");
212
83
  }
213
- return null;
214
- }
215
- }, {
216
- key: "canInsertTextBefore",
217
- value: function canInsertTextBefore() {
218
- return false;
219
- }
220
- }, {
221
- key: "canInsertTextAfter",
222
- value: function canInsertTextAfter() {
223
- return false;
224
- }
225
- }, {
226
- key: "canBeEmpty",
227
- value: function canBeEmpty() {
228
- return false;
229
- }
230
- }, {
231
- key: "isInline",
232
- value: function isInline() {
233
- return true;
234
84
  }
235
- }, {
236
- key: "extractWithChild",
237
- value: function extractWithChild(_, selection) {
238
- if (!(0, _lexical.$isRangeSelection)(selection)) {
239
- return false;
85
+ if (rel !== prevNode.__rel) {
86
+ if (rel) {
87
+ anchor.rel = rel;
88
+ } else {
89
+ anchor.removeAttribute("rel");
240
90
  }
241
- var anchorNode = selection.anchor.getNode();
242
- var focusNode = selection.focus.getNode();
243
- return this.isParentOf(anchorNode) && this.isParentOf(focusNode) && selection.getTextContent().length > 0;
244
91
  }
245
- }], [{
246
- key: "getType",
247
- value: /** @internal */
248
-
249
- /** @internal */
250
-
251
- /** @internal */
252
-
253
- /** @internal */
254
-
255
- /** @internal */
256
-
257
- function getType() {
258
- return "link";
92
+ if (title !== prevNode.__title) {
93
+ if (title) {
94
+ anchor.title = title;
95
+ } else {
96
+ anchor.removeAttribute("title");
97
+ }
259
98
  }
260
- }, {
261
- key: "clone",
262
- value: function clone(node) {
263
- return new LinkNode(node.__url, {
264
- rel: node.__rel,
265
- target: node.__target,
266
- title: node.__title,
267
- alt: node.__alt
268
- }, node.__key);
99
+ if (alt !== prevNode.__alt) {
100
+ if (alt) {
101
+ anchor.setAttribute("alt", alt);
102
+ } else {
103
+ anchor.removeAttribute("alt");
104
+ }
269
105
  }
270
- }, {
271
- key: "importDOM",
272
- value: function importDOM() {
273
- return {
274
- a: function a() {
275
- return {
276
- conversion: convertAnchorElement,
277
- priority: 1
278
- };
279
- }
280
- };
106
+ return false;
107
+ }
108
+ static importDOM() {
109
+ return {
110
+ a: () => ({
111
+ conversion: convertAnchorElement,
112
+ priority: 1
113
+ })
114
+ };
115
+ }
116
+ static importJSON(serializedNode) {
117
+ const node = $createLinkNode(serializedNode.url, {
118
+ rel: serializedNode.rel,
119
+ target: serializedNode.target,
120
+ title: serializedNode.title,
121
+ alt: serializedNode.alt
122
+ });
123
+ node.setFormat(serializedNode.format);
124
+ node.setIndent(serializedNode.indent);
125
+ node.setDirection(serializedNode.direction);
126
+ return node;
127
+ }
128
+ sanitizeUrl(url) {
129
+ try {
130
+ const parsedUrl = new URL(url);
131
+ // eslint-disable-next-line no-script-url
132
+ if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {
133
+ return "about:blank";
134
+ }
135
+ } catch {
136
+ return url;
281
137
  }
282
- }, {
283
- key: "importJSON",
284
- value: function importJSON(serializedNode) {
285
- var node = $createLinkNode(serializedNode.url, {
286
- rel: serializedNode.rel,
287
- target: serializedNode.target,
288
- title: serializedNode.title,
289
- alt: serializedNode.alt
138
+ return url;
139
+ }
140
+ exportJSON() {
141
+ return {
142
+ ...super.exportJSON(),
143
+ rel: this.getRel(),
144
+ target: this.getTarget(),
145
+ title: this.getTitle(),
146
+ alt: this.getAlt(),
147
+ type: "wby-link",
148
+ url: this.getURL()
149
+ };
150
+ }
151
+ getURL() {
152
+ return this.getLatest().__url;
153
+ }
154
+ setURL(url) {
155
+ const writable = this.getWritable();
156
+ writable.__url = url;
157
+ }
158
+ getTarget() {
159
+ return this.getLatest().__target;
160
+ }
161
+ setTarget(target) {
162
+ const writable = this.getWritable();
163
+ writable.__target = target;
164
+ }
165
+ getRel() {
166
+ return this.getLatest().__rel;
167
+ }
168
+ setRel(rel) {
169
+ const writable = this.getWritable();
170
+ writable.__rel = rel;
171
+ }
172
+ getTitle() {
173
+ return this.getLatest().__title;
174
+ }
175
+ setTitle(title) {
176
+ const writable = this.getWritable();
177
+ writable.__title = title;
178
+ }
179
+ getAlt() {
180
+ return this.__alt;
181
+ }
182
+ setAlt(text) {
183
+ const writable = super.getWritable();
184
+ writable.__alt = text;
185
+ }
186
+ insertNewAfter(selection, restoreSelection = true) {
187
+ const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);
188
+ if ($isElementNode(element)) {
189
+ const linkNode = $createLinkNode(this.__url, {
190
+ rel: this.__rel,
191
+ target: this.__target,
192
+ title: this.__title,
193
+ alt: this.__alt
290
194
  });
291
- node.setFormat(serializedNode.format);
292
- node.setIndent(serializedNode.indent);
293
- node.setDirection(serializedNode.direction);
294
- return node;
195
+ element.append(linkNode);
196
+ return linkNode;
295
197
  }
296
- }]);
297
- }(_lexical.ElementNode);
198
+ return null;
199
+ }
200
+ canInsertTextBefore() {
201
+ return false;
202
+ }
203
+ canInsertTextAfter() {
204
+ return false;
205
+ }
206
+ canBeEmpty() {
207
+ return false;
208
+ }
209
+ isInline() {
210
+ return true;
211
+ }
212
+ extractWithChild(_, selection) {
213
+ if (!$isRangeSelection(selection)) {
214
+ return false;
215
+ }
216
+ const anchorNode = selection.anchor.getNode();
217
+ const focusNode = selection.focus.getNode();
218
+ return this.isParentOf(anchorNode) && this.isParentOf(focusNode) && selection.getTextContent().length > 0;
219
+ }
220
+ }
298
221
  function convertAnchorElement(domNode) {
299
- var node = null;
300
- if ((0, _utils.isHTMLAnchorElement)(domNode)) {
301
- var content = domNode.textContent;
222
+ let node = null;
223
+ if (isHTMLAnchorElement(domNode)) {
224
+ const content = domNode.textContent;
302
225
  if (content !== null && content !== "" || domNode.children.length > 0) {
303
226
  node = $createLinkNode(domNode.getAttribute("href") || "", {
304
227
  rel: domNode.getAttribute("rel"),
@@ -309,7 +232,7 @@ function convertAnchorElement(domNode) {
309
232
  }
310
233
  }
311
234
  return {
312
- node: node
235
+ node
313
236
  };
314
237
  }
315
238
 
@@ -319,8 +242,8 @@ function convertAnchorElement(domNode) {
319
242
  * @param attributes - Optional HTML a tag attributes { target, rel, title }
320
243
  * @returns The LinkNode.
321
244
  */
322
- function $createLinkNode(url, attributes) {
323
- return (0, _lexical.$applyNodeReplacement)(new LinkNode(url, attributes));
245
+ export function $createLinkNode(url, attributes) {
246
+ return $applyNodeReplacement(new LinkNode(url, attributes));
324
247
  }
325
248
 
326
249
  /**
@@ -328,76 +251,58 @@ function $createLinkNode(url, attributes) {
328
251
  * @param node - The node to be checked.
329
252
  * @returns true if node is a LinkNode, false otherwise.
330
253
  */
331
- function $isLinkNode(node) {
254
+ export function $isLinkNode(node) {
332
255
  return node instanceof LinkNode;
333
256
  }
334
257
  // Custom node type to override `canInsertTextAfter` that will
335
258
  // allow typing within the link
336
- var AutoLinkNode = exports.AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
337
- function AutoLinkNode() {
338
- (0, _classCallCheck2.default)(this, AutoLinkNode);
339
- return (0, _callSuper2.default)(this, AutoLinkNode, arguments);
340
- }
341
- (0, _inherits2.default)(AutoLinkNode, _LinkNode);
342
- return (0, _createClass2.default)(AutoLinkNode, [{
343
- key: "exportJSON",
344
- value: function exportJSON() {
345
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(AutoLinkNode, "exportJSON", this, 3)([])), {}, {
346
- type: "autolink",
347
- version: 1
348
- });
349
- }
350
- }, {
351
- key: "insertNewAfter",
352
- value: function insertNewAfter(selection) {
353
- var restoreSelection = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
354
- var element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);
355
- if ((0, _lexical.$isElementNode)(element)) {
356
- var linkNode = $createAutoLinkNode(this.__url, {
357
- rel: this.__rel,
358
- target: this.__target,
359
- title: this.__title
360
- });
361
- element.append(linkNode);
362
- return linkNode;
363
- }
364
- return null;
365
- }
366
- }], [{
367
- key: "getType",
368
- value: function getType() {
369
- return "autolink";
370
- }
371
- }, {
372
- key: "clone",
373
- value: function clone(node) {
374
- return new AutoLinkNode(node.__url, {
375
- rel: node.__rel,
376
- target: node.__target,
377
- title: node.__title
378
- }, node.__key);
379
- }
380
- }, {
381
- key: "importJSON",
382
- value: function importJSON(serializedNode) {
383
- var node = $createAutoLinkNode(serializedNode.url, {
384
- rel: serializedNode.rel,
385
- target: serializedNode.target,
386
- title: serializedNode.title
259
+ export class AutoLinkNode extends LinkNode {
260
+ static getType() {
261
+ return "autolink";
262
+ }
263
+ static clone(node) {
264
+ return new AutoLinkNode(node.__url, {
265
+ rel: node.__rel,
266
+ target: node.__target,
267
+ title: node.__title
268
+ }, node.__key);
269
+ }
270
+ static importJSON(serializedNode) {
271
+ const node = $createAutoLinkNode(serializedNode.url, {
272
+ rel: serializedNode.rel,
273
+ target: serializedNode.target,
274
+ title: serializedNode.title
275
+ });
276
+ node.setFormat(serializedNode.format);
277
+ node.setIndent(serializedNode.indent);
278
+ node.setDirection(serializedNode.direction);
279
+ return node;
280
+ }
281
+ static importDOM() {
282
+ // TODO: Should link node should handle the import over autolink?
283
+ return null;
284
+ }
285
+ exportJSON() {
286
+ return {
287
+ ...super.exportJSON(),
288
+ type: "autolink"
289
+ };
290
+ }
291
+ insertNewAfter(selection, restoreSelection = true) {
292
+ const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);
293
+ if ($isElementNode(element)) {
294
+ const linkNode = $createAutoLinkNode(this.__url, {
295
+ rel: this.__rel,
296
+ target: this.__target,
297
+ title: this.__title
387
298
  });
388
- node.setFormat(serializedNode.format);
389
- node.setIndent(serializedNode.indent);
390
- node.setDirection(serializedNode.direction);
391
- return node;
392
- }
393
- }, {
394
- key: "importDOM",
395
- value: function importDOM() {
396
- // TODO: Should link node should handle the import over autolink?
397
- return null;
299
+ element.append(linkNode);
300
+ return linkNode;
398
301
  }
399
- }]);
400
- }(LinkNode);
302
+ return null;
303
+ }
304
+ }
305
+
401
306
  /**
402
307
  * Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated
403
308
  * during typing, which is especially useful when a button to generate a LinkNode is not practical.
@@ -405,8 +310,8 @@ var AutoLinkNode = exports.AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
405
310
  * @param attributes - Optional HTML a tag attributes. { target, rel, title }
406
311
  * @returns The LinkNode.
407
312
  */
408
- function $createAutoLinkNode(url, attributes) {
409
- return (0, _lexical.$applyNodeReplacement)(new AutoLinkNode(url, attributes));
313
+ export function $createAutoLinkNode(url, attributes) {
314
+ return $applyNodeReplacement(new AutoLinkNode(url, attributes));
410
315
  }
411
316
 
412
317
  /**
@@ -414,9 +319,9 @@ function $createAutoLinkNode(url, attributes) {
414
319
  * @param node - The node to be checked.
415
320
  * @returns true if node is an AutoLinkNode, false otherwise.
416
321
  */
417
- function $isAutoLinkNode(node) {
322
+ export function $isAutoLinkNode(node) {
418
323
  return node instanceof AutoLinkNode;
419
324
  }
420
- var TOGGLE_LINK_COMMAND = exports.TOGGLE_LINK_COMMAND = (0, _lexical.createCommand)("TOGGLE_LINK_COMMAND");
325
+ export const TOGGLE_LINK_COMMAND = createCommand("TOGGLE_LINK_COMMAND");
421
326
 
422
327
  //# sourceMappingURL=LinkNode.js.map