@webiny/lexical-nodes 5.41.4 → 5.42.0-beta.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.
package/FontColorNode.js CHANGED
@@ -8,8 +8,7 @@ exports.$applyStylesToNode = $applyStylesToNode;
8
8
  exports.ThemeColorValue = exports.FontColorNode = exports.ADD_FONT_COLOR_COMMAND = exports.$isFontColorNode = exports.$createFontColorNode = void 0;
9
9
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
10
  var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
11
- var _get3 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
12
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
11
+ var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
13
12
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
14
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -61,12 +60,11 @@ var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
61
60
  return (0, _createClass2.default)(FontColorNode, [{
62
61
  key: "splitText",
63
62
  value: function splitText() {
64
- var _get2,
65
- _this2 = this;
63
+ var _this2 = this;
66
64
  for (var _len = arguments.length, splitOffsets = new Array(_len), _key = 0; _key < _len; _key++) {
67
65
  splitOffsets[_key] = arguments[_key];
68
66
  }
69
- var newNodes = (_get2 = (0, _get3.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "splitText", this)).call.apply(_get2, [this].concat(splitOffsets));
67
+ var newNodes = (0, _superPropGet2.default)(FontColorNode, "splitText", this, 3)(splitOffsets);
70
68
  var selection = (0, _lexical.$getSelection)();
71
69
 
72
70
  // After splitting, we need to re-apply styling to the new TextNodes.
@@ -97,7 +95,7 @@ var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
97
95
  }, {
98
96
  key: "exportJSON",
99
97
  value: function exportJSON() {
100
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get3.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "exportJSON", this).call(this)), {}, {
98
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(FontColorNode, "exportJSON", this, 3)([])), {}, {
101
99
  themeColor: this.__color.getName(),
102
100
  color: this.__color.getValue(),
103
101
  type: "font-color-node",
@@ -116,7 +114,7 @@ var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
116
114
  }, {
117
115
  key: "updateDOM",
118
116
  value: function updateDOM(prevNode, dom, config) {
119
- var isUpdated = (0, _get3.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "updateDOM", this).call(this, prevNode, dom, config);
117
+ var isUpdated = (0, _superPropGet2.default)(FontColorNode, "updateDOM", this, 3)([prevNode, dom, config]);
120
118
  this.__color.updateFromTheme(config.theme);
121
119
  dom.setAttribute(FontColorNodeAttrName, this.__color.getName());
122
120
  dom.style.color = this.__color.getValue();
@@ -133,7 +131,7 @@ var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
133
131
  }, {
134
132
  key: "createDOM",
135
133
  value: function createDOM(config) {
136
- var element = (0, _get3.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "createDOM", this).call(this, config);
134
+ var element = (0, _superPropGet2.default)(FontColorNode, "createDOM", this, 3)([config]);
137
135
  return this.addColorValueToHTMLElement(element, config.theme);
138
136
  }
139
137
  }], [{
@@ -1 +1 @@
1
- {"version":3,"names":["_lexical","require","ThemeColorValue","exports","value","name","_classCallCheck2","default","_createClass2","key","getValue","getName","updateFromTheme","theme","styles","colors","ADD_FONT_COLOR_COMMAND","createCommand","FontColorNodeAttrName","FontColorNode","_TextNode","text","color","_this","_callSuper2","__color","_inherits2","splitText","_get2","_this2","_len","arguments","length","splitOffsets","Array","_key","newNodes","_get3","_getPrototypeOf2","prototype","call","apply","concat","selection","$getSelection","fontColorNodes","map","node","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","newNode","replace","$isRangeSelection","anchor","focus","getKey","exportJSON","_objectSpread2","themeColor","type","version","addColorValueToHTMLElement","element","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$isFontColorNode","source","getFormat","getStyle"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n $getSelection,\n $isRangeSelection,\n createCommand,\n EditorConfig,\n LexicalNode,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport class ThemeColorValue {\n // Webiny theme color variable, like color1, color2, etc.\n private readonly name: string;\n // This can be a HEX value or a CSS variable.\n private value: string;\n\n constructor(value: string, name?: string) {\n this.value = value;\n this.name = name ?? \"custom\";\n }\n\n getValue() {\n return this.value;\n }\n\n getName() {\n return this.name;\n }\n\n updateFromTheme(theme: EditorTheme) {\n if (theme?.styles?.colors && this.name !== \"custom\") {\n this.value = theme.styles?.colors[this.name];\n }\n }\n}\n\nexport const ADD_FONT_COLOR_COMMAND = createCommand<FontColorPayload>(\"ADD_FONT_COLOR_COMMAND\");\n\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n color: ThemeColorValue;\n}\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: string;\n color: string;\n type: \"font-color-node\";\n version: 1;\n },\n SerializedTextNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme color to selected text.\n * Extends the original TextNode node to add additional transformation and support for webiny theme font color.\n */\nexport class FontColorNode extends TextNode {\n private readonly __color: ThemeColorValue;\n\n constructor(text: string, color: ThemeColorValue, key?: string) {\n super(text, key);\n this.__color = color;\n }\n\n static override getType(): string {\n return \"font-color-node\";\n }\n\n static override clone(node: FontColorNode): FontColorNode {\n return new FontColorNode(node.__text, node.__color, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n new ThemeColorValue(serializedNode.color, serializedNode.themeColor)\n );\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n override splitText(...splitOffsets: Array<number>): Array<FontColorNode> {\n const newNodes = super.splitText(...splitOffsets);\n\n const selection = $getSelection();\n\n // After splitting, we need to re-apply styling to the new TextNodes.\n const fontColorNodes = newNodes.map(node => {\n if (node instanceof FontColorNode) {\n return node;\n }\n\n const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);\n $applyStylesToNode(fontColorNode, this);\n\n const newNode = node.replace(fontColorNode);\n\n // Since we're replacing the existing node, we need to update the selection keys.\n // This is very important to not break the editor functionality!\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n\n if (anchor.key === node.getKey()) {\n anchor.key = newNode.getKey();\n }\n\n if (focus.key === node.getKey()) {\n focus.key = newNode.getKey();\n }\n }\n\n return newNode;\n });\n\n return fontColorNodes as Array<FontColorNode>;\n }\n\n override exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__color.getName(),\n color: this.__color.getValue(),\n type: \"font-color-node\",\n version: 1\n };\n }\n\n private addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n // Update color from webiny theme\n this.__color.updateFromTheme(theme);\n element.setAttribute(FontColorNodeAttrName, this.__color.getName());\n element.style.color = this.__color.getValue();\n return element;\n }\n\n override updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean {\n const isUpdated = super.updateDOM(prevNode, dom, config);\n this.__color.updateFromTheme(config.theme as EditorTheme);\n\n dom.setAttribute(FontColorNodeAttrName, this.__color.getName());\n dom.style.color = this.__color.getValue();\n return isUpdated;\n }\n\n getColorStyle() {\n return {\n color: this.__color.getValue(),\n themeColor: this.__color.getName()\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme as EditorTheme);\n }\n}\n\nexport const $createFontColorNode = (text: string, color: ThemeColorValue): FontColorNode => {\n return new FontColorNode(text, color);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: TextNode, source: TextNode) {\n node.setFormat(source.getFormat());\n node.setStyle(source.getStyle());\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lexical","require","ThemeColorValue","exports","value","name","_classCallCheck2","default","_createClass2","key","getValue","getName","updateFromTheme","theme","styles","colors","ADD_FONT_COLOR_COMMAND","createCommand","FontColorNodeAttrName","FontColorNode","_TextNode","text","color","_this","_callSuper2","__color","_inherits2","splitText","_this2","_len","arguments","length","splitOffsets","Array","_key","newNodes","_superPropGet2","selection","$getSelection","fontColorNodes","map","node","fontColorNode","$createFontColorNode","getTextContent","$applyStylesToNode","newNode","replace","$isRangeSelection","anchor","focus","getKey","exportJSON","_objectSpread2","themeColor","type","version","addColorValueToHTMLElement","element","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$isFontColorNode","source","getFormat","getStyle"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n $getSelection,\n $isRangeSelection,\n createCommand,\n EditorConfig,\n LexicalNode,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport class ThemeColorValue {\n // Webiny theme color variable, like color1, color2, etc.\n private readonly name: string;\n // This can be a HEX value or a CSS variable.\n private value: string;\n\n constructor(value: string, name?: string) {\n this.value = value;\n this.name = name ?? \"custom\";\n }\n\n getValue() {\n return this.value;\n }\n\n getName() {\n return this.name;\n }\n\n updateFromTheme(theme: EditorTheme) {\n if (theme?.styles?.colors && this.name !== \"custom\") {\n this.value = theme.styles?.colors[this.name];\n }\n }\n}\n\nexport const ADD_FONT_COLOR_COMMAND = createCommand<FontColorPayload>(\"ADD_FONT_COLOR_COMMAND\");\n\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n color: ThemeColorValue;\n}\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: string;\n color: string;\n type: \"font-color-node\";\n version: 1;\n },\n SerializedTextNode\n>;\n\n/**\n * Main responsibility of this node is to apply custom or Webiny theme color to selected text.\n * Extends the original TextNode node to add additional transformation and support for webiny theme font color.\n */\nexport class FontColorNode extends TextNode {\n private readonly __color: ThemeColorValue;\n\n constructor(text: string, color: ThemeColorValue, key?: string) {\n super(text, key);\n this.__color = color;\n }\n\n static override getType(): string {\n return \"font-color-node\";\n }\n\n static override clone(node: FontColorNode): FontColorNode {\n return new FontColorNode(node.__text, node.__color, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n new ThemeColorValue(serializedNode.color, serializedNode.themeColor)\n );\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n override splitText(...splitOffsets: Array<number>): Array<FontColorNode> {\n const newNodes = super.splitText(...splitOffsets);\n\n const selection = $getSelection();\n\n // After splitting, we need to re-apply styling to the new TextNodes.\n const fontColorNodes = newNodes.map(node => {\n if (node instanceof FontColorNode) {\n return node;\n }\n\n const fontColorNode = $createFontColorNode(node.getTextContent(), this.__color);\n $applyStylesToNode(fontColorNode, this);\n\n const newNode = node.replace(fontColorNode);\n\n // Since we're replacing the existing node, we need to update the selection keys.\n // This is very important to not break the editor functionality!\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor;\n const focus = selection.focus;\n\n if (anchor.key === node.getKey()) {\n anchor.key = newNode.getKey();\n }\n\n if (focus.key === node.getKey()) {\n focus.key = newNode.getKey();\n }\n }\n\n return newNode;\n });\n\n return fontColorNodes as Array<FontColorNode>;\n }\n\n override exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__color.getName(),\n color: this.__color.getValue(),\n type: \"font-color-node\",\n version: 1\n };\n }\n\n private addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n // Update color from webiny theme\n this.__color.updateFromTheme(theme);\n element.setAttribute(FontColorNodeAttrName, this.__color.getName());\n element.style.color = this.__color.getValue();\n return element;\n }\n\n override updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean {\n const isUpdated = super.updateDOM(prevNode, dom, config);\n this.__color.updateFromTheme(config.theme as EditorTheme);\n\n dom.setAttribute(FontColorNodeAttrName, this.__color.getName());\n dom.style.color = this.__color.getValue();\n return isUpdated;\n }\n\n getColorStyle() {\n return {\n color: this.__color.getValue(),\n themeColor: this.__color.getName()\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme as EditorTheme);\n }\n}\n\nexport const $createFontColorNode = (text: string, color: ThemeColorValue): FontColorNode => {\n return new FontColorNode(text, color);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: TextNode, source: TextNode) {\n node.setFormat(source.getFormat());\n node.setStyle(source.getStyle());\n}\n"],"mappings":"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","ignoreList":[]}
package/HeadingNode.js CHANGED
@@ -12,8 +12,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
14
  var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
15
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
16
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
17
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
19
18
  var _lexical = require("lexical");
@@ -62,13 +61,13 @@ var HeadingNode = exports.HeadingNode = /*#__PURE__*/function (_BaseHeadingNode)
62
61
  }, {
63
62
  key: "getThemeStyles",
64
63
  value: function getThemeStyles() {
65
- var self = (0, _get2.default)((0, _getPrototypeOf2.default)(HeadingNode.prototype), "getLatest", this).call(this);
64
+ var self = (0, _superPropGet2.default)(HeadingNode, "getLatest", this, 3)([]);
66
65
  return self.__styles;
67
66
  }
68
67
  }, {
69
68
  key: "setThemeStyles",
70
69
  value: function setThemeStyles(styles) {
71
- var self = (0, _get2.default)((0, _getPrototypeOf2.default)(HeadingNode.prototype), "getWritable", this).call(this);
70
+ var self = (0, _superPropGet2.default)(HeadingNode, "getWritable", this, 3)([]);
72
71
  self.__styles = (0, _toConsumableArray2.default)(styles);
73
72
  return self;
74
73
  }
@@ -99,13 +98,13 @@ var HeadingNode = exports.HeadingNode = /*#__PURE__*/function (_BaseHeadingNode)
99
98
  }, {
100
99
  key: "createDOM",
101
100
  value: function createDOM(config) {
102
- var element = (0, _get2.default)((0, _getPrototypeOf2.default)(HeadingNode.prototype), "createDOM", this).call(this, config);
101
+ var element = (0, _superPropGet2.default)(HeadingNode, "createDOM", this, 3)([config]);
103
102
  return this.updateElementWithThemeClasses(element, config.theme);
104
103
  }
105
104
  }, {
106
105
  key: "exportJSON",
107
106
  value: function exportJSON() {
108
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(HeadingNode.prototype), "exportJSON", this).call(this)), {}, {
107
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(HeadingNode, "exportJSON", this, 3)([])), {}, {
109
108
  styles: this.__styles,
110
109
  type: "heading-element",
111
110
  version: 1
@@ -1 +1 @@
1
- {"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","exports","_BaseHeadingNode","tag","typographyStyleId","key","_this","_classCallCheck2","default","_callSuper2","_defineProperty2","__styles","push","styleId","type","_inherits2","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","getTypographyStyleId","style","find","x","undefined","hasTypographyStyle","getThemeStyles","self","_get2","_getPrototypeOf2","prototype","call","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","exportJSON","_objectSpread2","version","insertNewAfter","selection","restoreSelection","arguments","length","newElement","$createHeadingNode","getTag","direction","getDirection","setDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","BaseHeadingNode","$applyNodeReplacement","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import {\n EditorConfig,\n $applyNodeReplacement,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n HeadingNode as BaseHeadingNode,\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { EditorTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { ParagraphNode } from \"~/ParagraphNode\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"heading-element\";\n },\n BaseSerializedHeadingNode\n>;\n\nexport class HeadingNode\n extends BaseHeadingNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey) {\n super(tag, key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n private setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.__tag, themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n private hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"heading-element\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: EditorTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as EditorTheme);\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"heading-element\",\n version: 1\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, typographyStyleId));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","exports","_BaseHeadingNode","tag","typographyStyleId","key","_this","_classCallCheck2","default","_callSuper2","_defineProperty2","__styles","push","styleId","type","_inherits2","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","getTypographyStyleId","style","find","x","undefined","hasTypographyStyle","getThemeStyles","self","_superPropGet2","setThemeStyles","styles","_toConsumableArray2","updateElementWithThemeClasses","element","theme","emotionMap","typoStyleId","themeClasses","className","addClassNamesToElement","createDOM","config","exportJSON","_objectSpread2","version","insertNewAfter","selection","restoreSelection","arguments","length","newElement","$createHeadingNode","getTag","direction","getDirection","setDirection","insertAfter","collapseAtStart","children","getChildren","forEach","child","append","replace","getType","clone","node","__key","importJSON","serializedNode","setFormat","format","setIndent","indent","BaseHeadingNode","$applyNodeReplacement","$isHeadingNode"],"sources":["HeadingNode.ts"],"sourcesContent":["import {\n EditorConfig,\n $applyNodeReplacement,\n LexicalNode,\n NodeKey,\n RangeSelection,\n Spread\n} from \"lexical\";\nimport { addClassNamesToElement } from \"@lexical/utils\";\nimport {\n HeadingNode as BaseHeadingNode,\n HeadingTagType,\n SerializedHeadingNode as BaseSerializedHeadingNode\n} from \"@lexical/rich-text\";\nimport { EditorTheme, ThemeEmotionMap, findTypographyStyleByHtmlTag } from \"@webiny/lexical-theme\";\nimport { ParagraphNode } from \"~/ParagraphNode\";\nimport { TypographyStylesNode, ThemeStyleValue, TextNodeThemeStyles } from \"~/types\";\n\nexport type SerializeHeadingNode = Spread<\n {\n styles: ThemeStyleValue[];\n type: \"heading-element\";\n },\n BaseSerializedHeadingNode\n>;\n\nexport class HeadingNode\n extends BaseHeadingNode\n implements TextNodeThemeStyles, TypographyStylesNode\n{\n __styles: ThemeStyleValue[] = [];\n\n constructor(tag: HeadingTagType, typographyStyleId?: string, key?: NodeKey) {\n super(tag, key);\n\n if (typographyStyleId) {\n this.__styles.push({ styleId: typographyStyleId, type: \"typography\" });\n }\n }\n\n private setDefaultTypography(themeEmotionMap: ThemeEmotionMap) {\n const typographyStyle = findTypographyStyleByHtmlTag(this.__tag, themeEmotionMap);\n if (typographyStyle) {\n this.__styles.push({ styleId: typographyStyle.id, type: \"typography\" });\n }\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n private hasTypographyStyle(): boolean {\n return !!this.getTypographyStyleId();\n }\n\n getThemeStyles(): ThemeStyleValue[] {\n const self = super.getLatest();\n return self.__styles;\n }\n\n setThemeStyles(styles: ThemeStyleValue[]) {\n const self = super.getWritable();\n self.__styles = [...styles];\n return self;\n }\n\n static override getType(): string {\n return \"heading-element\";\n }\n\n static override clone(node: HeadingNode): HeadingNode {\n return new HeadingNode(node.getTag(), node.getTypographyStyleId(), node.__key);\n }\n\n protected updateElementWithThemeClasses(element: HTMLElement, theme: EditorTheme): HTMLElement {\n if (!theme?.emotionMap) {\n return element;\n }\n\n if (!this.hasTypographyStyle()) {\n this.setDefaultTypography(theme.emotionMap);\n }\n\n const typoStyleId = this.getTypographyStyleId();\n\n let themeClasses;\n\n // Typography css class\n if (typoStyleId) {\n const typographyStyle = theme.emotionMap[typoStyleId];\n if (typographyStyle) {\n themeClasses = typographyStyle.className;\n }\n }\n\n if (themeClasses) {\n addClassNamesToElement(element, themeClasses);\n }\n\n return element;\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.updateElementWithThemeClasses(element, config.theme as EditorTheme);\n }\n\n static override importJSON(serializedNode: SerializeHeadingNode): BaseHeadingNode {\n const node = $createHeadingNode(serializedNode.tag);\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n node.setThemeStyles(serializedNode.styles);\n return node;\n }\n\n override exportJSON(): SerializeHeadingNode {\n return {\n ...super.exportJSON(),\n styles: this.__styles,\n type: \"heading-element\",\n version: 1\n };\n }\n\n // Mutation\n override insertNewAfter(\n selection?: RangeSelection,\n restoreSelection = true\n ): ParagraphNode | HeadingNode {\n // Next line for headings are always headings with the same tag\n const newElement = $createHeadingNode(this.getTag());\n const direction = this.getDirection();\n newElement.setDirection(direction);\n this.insertAfter(newElement, restoreSelection);\n return newElement;\n }\n\n override collapseAtStart(): true {\n const newElement = $createHeadingNode(this.getTag());\n const children = this.getChildren();\n children.forEach(child => newElement.append(child));\n this.replace(newElement);\n return true;\n }\n}\n\nexport function $createHeadingNode(tag: HeadingTagType, typographyStyleId?: string): HeadingNode {\n return $applyNodeReplacement(new HeadingNode(tag, typographyStyleId));\n}\n\nexport function $isHeadingNode(node: LexicalNode | null | undefined): node is HeadingNode {\n return node instanceof HeadingNode;\n}\n"],"mappings":"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","ignoreList":[]}
package/ImageNode.js CHANGED
@@ -23,7 +23,7 @@ var _lexical = require("lexical");
23
23
  */
24
24
 
25
25
  var ImageComponent = /*#__PURE__*/_react.default.lazy(function () {
26
- return import( /* webpackChunkName: "LexicalNodesComponentsImageNodeImageComponent" */"./components/ImageNode/ImageComponent");
26
+ return import(/* webpackChunkName: "LexicalNodesComponentsImageNodeImageComponent" */"./components/ImageNode/ImageComponent");
27
27
  });
28
28
  var ImageNode = exports.ImageNode = /*#__PURE__*/function (_DecoratorNode) {
29
29
  function ImageNode(props, key) {
package/ImageNode.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_lexical","ImageComponent","React","lazy","ImageNode","exports","_DecoratorNode","props","key","_this","_classCallCheck2","default","_callSuper2","__id","id","__src","src","__altText","altText","__maxWidth","maxWidth","__width","width","__height","height","__showCaption","showCaption","__caption","caption","createEditor","__captionsEnabled","captionsEnabled","undefined","_inherits2","_createClass2","value","exportDOM","element","document","createElement","setAttribute","toString","exportJSON","getAltText","toJSON","getSrc","type","version","setWidthAndHeight","writable","getWritable","setShowCaption","createDOM","config","span","theme","className","image","updateDOM","decorate","Suspense","fallback","nodeKey","getKey","resizable","getType","clone","node","__key","importJSON","serializedNode","$createImageNode","nestedEditor","editorState","parseEditorState","isEmpty","setEditorState","importDOM","DecoratorNode","$applyNodeReplacement","$isImageNode"],"sources":["ImageNode.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport React, { Suspense } from \"react\";\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, createEditor, DecoratorNode } from \"lexical\";\n\nconst ImageComponent = React.lazy(\n () =>\n import(\n /* webpackChunkName: \"LexicalNodesComponentsImageNodeImageComponent\" */\n \"./components/ImageNode/ImageComponent\"\n )\n);\n\nexport type SerializedImageNode = Spread<\n {\n id: string;\n altText: string;\n caption: SerializedEditor;\n height?: number;\n maxWidth: number;\n showCaption: boolean;\n src: string;\n width?: number;\n },\n SerializedLexicalNode\n>;\n\nexport interface ImageNodeProps {\n id: string;\n src: string;\n altText: string;\n maxWidth: number;\n width?: \"inherit\" | number;\n height?: \"inherit\" | number;\n showCaption?: boolean;\n caption?: LexicalEditor;\n captionsEnabled?: boolean;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __id: string;\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __maxWidth: number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean;\n\n static override getType(): string {\n return \"image\";\n }\n\n static override clone(node: ImageNode): ImageNode {\n return new ImageNode(\n {\n id: node.__id,\n src: node.__src,\n altText: node.__altText,\n maxWidth: node.__maxWidth,\n width: node.__width,\n height: node.__height,\n showCaption: node.__showCaption,\n caption: node.__caption,\n captionsEnabled: node.__captionsEnabled\n },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { id, altText, height, width, maxWidth, caption, src, showCaption } = serializedNode;\n const node = $createImageNode({\n id,\n altText,\n height,\n maxWidth,\n showCaption,\n src,\n width\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"id\", this.__id);\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n /**\n * Control how an HTMLElement is represented in Lexical.\n * DOM data comes from clipboard or parsing HTML to nodes with the available lexical functions.\n * (@see @lexical/html package: https://github.com/facebook/lexical/blob/main/packages/lexical-html/README.md).\n */\n static override importDOM(): DOMConversionMap | null {\n /**\n * By returning 'null' value, we are preventing image node to be created.\n * Example of how to implement and create the node:\n * https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/nodes/ImageNode.tsx#L94\n */\n return null;\n }\n\n constructor(props: ImageNodeProps, key?: NodeKey) {\n super(key);\n this.__id = props.id;\n this.__src = props.src;\n this.__altText = props.altText;\n this.__maxWidth = props.maxWidth;\n this.__width = props.width || \"inherit\";\n this.__height = props.height || \"inherit\";\n this.__showCaption = props.showCaption || false;\n this.__caption = props.caption || createEditor();\n this.__captionsEnabled = props.captionsEnabled || props.captionsEnabled === undefined;\n }\n\n override exportJSON(): SerializedImageNode {\n return {\n id: this.__id,\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width\n };\n }\n\n setWidthAndHeight(width: \"inherit\" | number, height: \"inherit\" | number): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n // View\n override createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n override updateDOM(): false {\n return false;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n override decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n id={this.__id}\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n resizable={true}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createImageNode(props: ImageNodeProps, key?: string): ImageNode {\n return $applyNodeReplacement(new ImageNode(props, key));\n}\n\nexport function $isImageNode(node: LexicalNode | null | undefined): node is ImageNode {\n return node instanceof ImageNode;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_lexical","ImageComponent","React","lazy","ImageNode","exports","_DecoratorNode","props","key","_this","_classCallCheck2","default","_callSuper2","__id","id","__src","src","__altText","altText","__maxWidth","maxWidth","__width","width","__height","height","__showCaption","showCaption","__caption","caption","createEditor","__captionsEnabled","captionsEnabled","undefined","_inherits2","_createClass2","value","exportDOM","element","document","createElement","setAttribute","toString","exportJSON","getAltText","toJSON","getSrc","type","version","setWidthAndHeight","writable","getWritable","setShowCaption","createDOM","config","span","theme","className","image","updateDOM","decorate","Suspense","fallback","nodeKey","getKey","resizable","getType","clone","node","__key","importJSON","serializedNode","$createImageNode","nestedEditor","editorState","parseEditorState","isEmpty","setEditorState","importDOM","DecoratorNode","$applyNodeReplacement","$isImageNode"],"sources":["ImageNode.tsx"],"sourcesContent":["/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\nimport React, { Suspense } from \"react\";\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n SerializedEditor,\n SerializedLexicalNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, createEditor, DecoratorNode } from \"lexical\";\n\nconst ImageComponent = React.lazy(\n () =>\n import(\n /* webpackChunkName: \"LexicalNodesComponentsImageNodeImageComponent\" */\n \"./components/ImageNode/ImageComponent\"\n )\n);\n\nexport type SerializedImageNode = Spread<\n {\n id: string;\n altText: string;\n caption: SerializedEditor;\n height?: number;\n maxWidth: number;\n showCaption: boolean;\n src: string;\n width?: number;\n },\n SerializedLexicalNode\n>;\n\nexport interface ImageNodeProps {\n id: string;\n src: string;\n altText: string;\n maxWidth: number;\n width?: \"inherit\" | number;\n height?: \"inherit\" | number;\n showCaption?: boolean;\n caption?: LexicalEditor;\n captionsEnabled?: boolean;\n}\n\nexport class ImageNode extends DecoratorNode<JSX.Element> {\n __id: string;\n __src: string;\n __altText: string;\n __width: \"inherit\" | number;\n __height: \"inherit\" | number;\n __maxWidth: number;\n __showCaption: boolean;\n __caption: LexicalEditor;\n // Captions cannot yet be used within editor cells\n __captionsEnabled: boolean;\n\n static override getType(): string {\n return \"image\";\n }\n\n static override clone(node: ImageNode): ImageNode {\n return new ImageNode(\n {\n id: node.__id,\n src: node.__src,\n altText: node.__altText,\n maxWidth: node.__maxWidth,\n width: node.__width,\n height: node.__height,\n showCaption: node.__showCaption,\n caption: node.__caption,\n captionsEnabled: node.__captionsEnabled\n },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedImageNode): ImageNode {\n const { id, altText, height, width, maxWidth, caption, src, showCaption } = serializedNode;\n const node = $createImageNode({\n id,\n altText,\n height,\n maxWidth,\n showCaption,\n src,\n width\n });\n const nestedEditor = node.__caption;\n const editorState = nestedEditor.parseEditorState(caption.editorState);\n if (!editorState.isEmpty()) {\n nestedEditor.setEditorState(editorState);\n }\n return node;\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement(\"img\");\n element.setAttribute(\"id\", this.__id);\n element.setAttribute(\"src\", this.__src);\n element.setAttribute(\"alt\", this.__altText);\n element.setAttribute(\"width\", this.__width.toString());\n element.setAttribute(\"height\", this.__height.toString());\n return { element };\n }\n\n /**\n * Control how an HTMLElement is represented in Lexical.\n * DOM data comes from clipboard or parsing HTML to nodes with the available lexical functions.\n * (@see @lexical/html package: https://github.com/facebook/lexical/blob/main/packages/lexical-html/README.md).\n */\n static override importDOM(): DOMConversionMap | null {\n /**\n * By returning 'null' value, we are preventing image node to be created.\n * Example of how to implement and create the node:\n * https://github.com/facebook/lexical/blob/main/packages/lexical-playground/src/nodes/ImageNode.tsx#L94\n */\n return null;\n }\n\n constructor(props: ImageNodeProps, key?: NodeKey) {\n super(key);\n this.__id = props.id;\n this.__src = props.src;\n this.__altText = props.altText;\n this.__maxWidth = props.maxWidth;\n this.__width = props.width || \"inherit\";\n this.__height = props.height || \"inherit\";\n this.__showCaption = props.showCaption || false;\n this.__caption = props.caption || createEditor();\n this.__captionsEnabled = props.captionsEnabled || props.captionsEnabled === undefined;\n }\n\n override exportJSON(): SerializedImageNode {\n return {\n id: this.__id,\n altText: this.getAltText(),\n caption: this.__caption.toJSON(),\n height: this.__height === \"inherit\" ? 0 : this.__height,\n maxWidth: this.__maxWidth,\n showCaption: this.__showCaption,\n src: this.getSrc(),\n type: \"image\",\n version: 1,\n width: this.__width === \"inherit\" ? 0 : this.__width\n };\n }\n\n setWidthAndHeight(width: \"inherit\" | number, height: \"inherit\" | number): void {\n const writable = this.getWritable();\n writable.__width = width;\n writable.__height = height;\n }\n\n setShowCaption(showCaption: boolean): void {\n const writable = this.getWritable();\n writable.__showCaption = showCaption;\n }\n\n // View\n override createDOM(config: EditorConfig): HTMLElement {\n const span = document.createElement(\"span\");\n const theme = config.theme;\n const className = theme.image;\n if (className !== undefined) {\n span.className = className;\n }\n return span;\n }\n\n override updateDOM(): false {\n return false;\n }\n\n getSrc(): string {\n return this.__src;\n }\n\n getAltText(): string {\n return this.__altText;\n }\n\n override decorate(): JSX.Element {\n return (\n <Suspense fallback={null}>\n <ImageComponent\n id={this.__id}\n src={this.__src}\n altText={this.__altText}\n width={this.__width}\n height={this.__height}\n maxWidth={this.__maxWidth}\n nodeKey={this.getKey()}\n showCaption={this.__showCaption}\n caption={this.__caption}\n captionsEnabled={this.__captionsEnabled}\n resizable={true}\n />\n </Suspense>\n );\n }\n}\n\nexport function $createImageNode(props: ImageNodeProps, key?: string): ImageNode {\n return $applyNodeReplacement(new ImageNode(props, key));\n}\n\nexport function $isImageNode(node: LexicalNode | null | undefined): node is ImageNode {\n return node instanceof ImageNode;\n}\n"],"mappings":"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","ignoreList":[]}
package/LinkNode.js CHANGED
@@ -13,8 +13,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
13
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
15
15
  var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
16
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
17
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
16
+ var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
18
17
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
19
18
  var _utils = require("@lexical/utils");
20
19
  var _lexical = require("lexical");
@@ -131,7 +130,7 @@ var LinkNode = exports.LinkNode = /*#__PURE__*/function (_ElementNode) {
131
130
  }, {
132
131
  key: "exportJSON",
133
132
  value: function exportJSON() {
134
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(LinkNode.prototype), "exportJSON", this).call(this)), {}, {
133
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(LinkNode, "exportJSON", this, 3)([])), {}, {
135
134
  rel: this.getRel(),
136
135
  target: this.getTarget(),
137
136
  title: this.getTitle(),
@@ -193,7 +192,7 @@ var LinkNode = exports.LinkNode = /*#__PURE__*/function (_ElementNode) {
193
192
  }, {
194
193
  key: "setAlt",
195
194
  value: function setAlt(text) {
196
- var writable = (0, _get2.default)((0, _getPrototypeOf2.default)(LinkNode.prototype), "getWritable", this).call(this);
195
+ var writable = (0, _superPropGet2.default)(LinkNode, "getWritable", this, 3)([]);
197
196
  writable.__alt = text;
198
197
  }
199
198
  }, {
@@ -343,7 +342,7 @@ var AutoLinkNode = exports.AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
343
342
  return (0, _createClass2.default)(AutoLinkNode, [{
344
343
  key: "exportJSON",
345
344
  value: function exportJSON() {
346
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(AutoLinkNode.prototype), "exportJSON", this).call(this)), {}, {
345
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(AutoLinkNode, "exportJSON", this, 3)([])), {}, {
347
346
  type: "autolink",
348
347
  version: 1
349
348
  });
package/LinkNode.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"names":["_utils","require","_lexical","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","exports","_ElementNode","url","_this","attributes","arguments","length","undefined","key","_classCallCheck2","default","_callSuper2","_attributes$target","target","_attributes$rel","rel","_attributes$title","title","_attributes$alt","alt","__url","__target","__rel","__title","__alt","_inherits2","_createClass2","value","createDOM","config","element","document","createElement","href","sanitizeUrl","setAttribute","addClassNamesToElement","theme","link","updateDOM","prevNode","anchor","removeAttribute","parsedUrl","URL","has","protocol","_unused","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","call","getRel","getTarget","getTitle","getAlt","type","getURL","version","getLatest","setURL","writable","getWritable","setTarget","setRel","setTitle","setAlt","text","insertNewAfter","selection","restoreSelection","getParentOrThrow","$isElementNode","linkNode","$createLinkNode","append","canInsertTextBefore","canInsertTextAfter","canBeEmpty","isInline","extractWithChild","_","$isRangeSelection","anchorNode","getNode","focusNode","focus","isParentOf","getTextContent","getType","clone","node","__key","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","setFormat","format","setIndent","indent","setDirection","direction","ElementNode","domNode","isHTMLAnchorElement","content","textContent","children","getAttribute","$applyNodeReplacement","$isLinkNode","AutoLinkNode","_LinkNode","$createAutoLinkNode","$isAutoLinkNode","TOGGLE_LINK_COMMAND","createCommand"],"sources":["LinkNode.ts"],"sourcesContent":["/** @module @lexical/link */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n RangeSelection,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n SerializedElementNode\n} from \"lexical\";\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport {\n $applyNodeReplacement,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n Spread\n} from \"lexical\";\n\nexport type LinkAttributes = {\n rel?: null | string;\n target?: null | string;\n title?: null | string;\n alt?: null | string;\n};\n\ndeclare global {\n interface HTMLAnchorElement {\n alt?: string;\n }\n}\n\nexport type SerializedLinkNode = Spread<\n {\n url: string;\n },\n Spread<LinkAttributes, SerializedElementNode>\n>;\n\nconst SUPPORTED_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n /** @internal */\n __url: string;\n /** @internal */\n __target: null | string;\n /** @internal */\n __rel: null | string;\n /** @internal */\n __title: null | string;\n /** @internal */\n __alt: null | string;\n\n static override getType(): string {\n return \"link\";\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new LinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title, alt: node.__alt },\n node.__key\n );\n }\n\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(key);\n const { target = null, rel = null, title = null, alt = null } = attributes;\n this.__url = url;\n this.__target = target;\n this.__rel = rel;\n this.__title = title;\n this.__alt = alt;\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\") as HTMLAnchorElement;\n element.href = this.sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n if (this.__alt) {\n element.setAttribute(\"alt\", this.__alt);\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n override updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement): boolean {\n const url = this.__url;\n const target = this.__target;\n const rel = this.__rel;\n const title = this.__title;\n const alt = this.__alt;\n\n if (url !== prevNode.__url) {\n anchor.href = url;\n }\n\n if (target !== prevNode.__target) {\n if (target) {\n anchor.target = target;\n } else {\n anchor.removeAttribute(\"target\");\n }\n }\n\n if (rel !== prevNode.__rel) {\n if (rel) {\n anchor.rel = rel;\n } else {\n anchor.removeAttribute(\"rel\");\n }\n }\n\n if (title !== prevNode.__title) {\n if (title) {\n anchor.title = title;\n } else {\n anchor.removeAttribute(\"title\");\n }\n }\n\n if (alt !== prevNode.__alt) {\n if (alt) {\n anchor.setAttribute(\"alt\", alt);\n } else {\n anchor.removeAttribute(\"alt\");\n }\n }\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title,\n alt: serializedNode.alt\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\";\n }\n } catch {\n return url;\n }\n return url;\n }\n\n override exportJSON(): SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n rel: this.getRel(),\n target: this.getTarget(),\n title: this.getTitle(),\n alt: this.getAlt(),\n type: \"link\",\n url: this.getURL(),\n version: 1\n };\n }\n\n getURL(): string {\n return this.getLatest().__url;\n }\n\n setURL(url: string): void {\n const writable = this.getWritable();\n writable.__url = url;\n }\n\n getTarget(): null | string {\n return this.getLatest().__target;\n }\n\n setTarget(target: null | string): void {\n const writable = this.getWritable();\n writable.__target = target;\n }\n\n getRel(): null | string {\n return this.getLatest().__rel;\n }\n\n setRel(rel: null | string): void {\n const writable = this.getWritable();\n writable.__rel = rel;\n }\n\n getTitle(): null | string {\n return this.getLatest().__title;\n }\n\n setTitle(title: null | string): void {\n const writable = this.getWritable();\n writable.__title = title;\n }\n\n getAlt(): string | null {\n return this.__alt;\n }\n\n setAlt(text: string | null): void {\n const writable = super.getWritable();\n writable.__alt = text;\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title,\n alt: this.__alt\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n\n override canInsertTextBefore(): false {\n return false;\n }\n\n override canInsertTextAfter(): false {\n return false;\n }\n\n override canBeEmpty(): false {\n return false;\n }\n\n override isInline(): true {\n return true;\n }\n\n override extractWithChild(_: LexicalNode, selection: RangeSelection): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n );\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if ((content !== null && content !== \"\") || domNode.children.length > 0) {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\"),\n alt: domNode.getAttribute(\"alt\")\n });\n }\n }\n return { node };\n}\n\n/**\n * Takes a URL and creates a LinkNode.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createLinkNode(url: string, attributes?: LinkAttributes): LinkNode {\n return $applyNodeReplacement(new LinkNode(url, attributes));\n}\n\n/**\n * Determines if node is a LinkNode.\n * @param node - The node to be checked.\n * @returns true if node is a LinkNode, false otherwise.\n */\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode;\n}\n\nexport type SerializedAutoLinkNode = SerializedLinkNode;\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\nexport class AutoLinkNode extends LinkNode {\n static override getType(): string {\n return \"autolink\";\n }\n\n static override clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n const node = $createAutoLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n static override importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null;\n }\n\n override exportJSON(): SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"autolink\",\n version: 1\n };\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n}\n\n/**\n * Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated\n * during typing, which is especially useful when a button to generate a LinkNode is not practical.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createAutoLinkNode(url: string, attributes?: LinkAttributes): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode(url, attributes));\n}\n\n/**\n * Determines if node is an AutoLinkNode.\n * @param node - The node to be checked.\n * @returns true if node is an AutoLinkNode, false otherwise.\n */\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode;\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<\n string | ({ url: string } & LinkAttributes) | null\n> = createCommand(\"TOGGLE_LINK_COMMAND\");\n"],"mappings":";;;;;;;;;;;;;;;;;;AAoBA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AArBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AA2CA,IAAME,uBAAuB,GAAG,IAAIC,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;AAEvF;AAAA,IACaC,QAAQ,GAAAC,OAAA,CAAAD,QAAA,0BAAAE,YAAA;EAwBjB,SAAAF,SAAYG,GAAW,EAAkD;IAAA,IAAAC,KAAA;IAAA,IAAhDC,UAA0B,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEG,GAAa,GAAAH,SAAA,CAAAC,MAAA,OAAAD,SAAA,MAAAE,SAAA;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAX,QAAA;IACnEI,KAAA,OAAAQ,WAAA,CAAAD,OAAA,QAAAX,QAAA,GAAMS,GAAG;IACT,IAAAI,kBAAA,GAAgER,UAAU,CAAlES,MAAM;MAANA,MAAM,GAAAD,kBAAA,cAAG,IAAI,GAAAA,kBAAA;MAAAE,eAAA,GAA2CV,UAAU,CAAnDW,GAAG;MAAHA,GAAG,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;MAAAE,iBAAA,GAA+BZ,UAAU,CAAvCa,KAAK;MAALA,KAAK,GAAAD,iBAAA,cAAG,IAAI,GAAAA,iBAAA;MAAAE,eAAA,GAAiBd,UAAU,CAAzBe,GAAG;MAAHA,GAAG,GAAAD,eAAA,cAAG,IAAI,GAAAA,eAAA;IAC3Df,KAAA,CAAKiB,KAAK,GAAGlB,GAAG;IAChBC,KAAA,CAAKkB,QAAQ,GAAGR,MAAM;IACtBV,KAAA,CAAKmB,KAAK,GAAGP,GAAG;IAChBZ,KAAA,CAAKoB,OAAO,GAAGN,KAAK;IACpBd,KAAA,CAAKqB,KAAK,GAAGL,GAAG;IAAC,OAAAhB,KAAA;EACrB;EAAC,IAAAsB,UAAA,CAAAf,OAAA,EAAAX,QAAA,EAAAE,YAAA;EAAA,WAAAyB,aAAA,CAAAhB,OAAA,EAAAX,QAAA;IAAAS,GAAA;IAAAmB,KAAA,EAED,SAAAC,UAAmBC,MAAoB,EAAqB;MACxD,IAAMC,OAAO,GAAGC,QAAQ,CAACC,aAAa,CAAC,GAAG,CAAsB;MAChEF,OAAO,CAACG,IAAI,GAAG,IAAI,CAACC,WAAW,CAAC,IAAI,CAACd,KAAK,CAAC;MAC3C,IAAI,IAAI,CAACC,QAAQ,KAAK,IAAI,EAAE;QACxBS,OAAO,CAACjB,MAAM,GAAG,IAAI,CAACQ,QAAQ;MAClC;MACA,IAAI,IAAI,CAACC,KAAK,KAAK,IAAI,EAAE;QACrBQ,OAAO,CAACf,GAAG,GAAG,IAAI,CAACO,KAAK;MAC5B;MACA,IAAI,IAAI,CAACC,OAAO,KAAK,IAAI,EAAE;QACvBO,OAAO,CAACb,KAAK,GAAG,IAAI,CAACM,OAAO;MAChC;MACA,IAAI,IAAI,CAACC,KAAK,EAAE;QACZM,OAAO,CAACK,YAAY,CAAC,KAAK,EAAE,IAAI,CAACX,KAAK,CAAC;MAC3C;MACA,IAAAY,6BAAsB,EAACN,OAAO,EAAED,MAAM,CAACQ,KAAK,CAACC,IAAI,CAAC;MAClD,OAAOR,OAAO;IAClB;EAAC;IAAAtB,GAAA;IAAAmB,KAAA,EAED,SAAAY,UAAmBC,QAAkB,EAAEC,MAAyB,EAAW;MACvE,IAAMvC,GAAG,GAAG,IAAI,CAACkB,KAAK;MACtB,IAAMP,MAAM,GAAG,IAAI,CAACQ,QAAQ;MAC5B,IAAMN,GAAG,GAAG,IAAI,CAACO,KAAK;MACtB,IAAML,KAAK,GAAG,IAAI,CAACM,OAAO;MAC1B,IAAMJ,GAAG,GAAG,IAAI,CAACK,KAAK;MAEtB,IAAItB,GAAG,KAAKsC,QAAQ,CAACpB,KAAK,EAAE;QACxBqB,MAAM,CAACR,IAAI,GAAG/B,GAAG;MACrB;MAEA,IAAIW,MAAM,KAAK2B,QAAQ,CAACnB,QAAQ,EAAE;QAC9B,IAAIR,MAAM,EAAE;UACR4B,MAAM,CAAC5B,MAAM,GAAGA,MAAM;QAC1B,CAAC,MAAM;UACH4B,MAAM,CAACC,eAAe,CAAC,QAAQ,CAAC;QACpC;MACJ;MAEA,IAAI3B,GAAG,KAAKyB,QAAQ,CAAClB,KAAK,EAAE;QACxB,IAAIP,GAAG,EAAE;UACL0B,MAAM,CAAC1B,GAAG,GAAGA,GAAG;QACpB,CAAC,MAAM;UACH0B,MAAM,CAACC,eAAe,CAAC,KAAK,CAAC;QACjC;MACJ;MAEA,IAAIzB,KAAK,KAAKuB,QAAQ,CAACjB,OAAO,EAAE;QAC5B,IAAIN,KAAK,EAAE;UACPwB,MAAM,CAACxB,KAAK,GAAGA,KAAK;QACxB,CAAC,MAAM;UACHwB,MAAM,CAACC,eAAe,CAAC,OAAO,CAAC;QACnC;MACJ;MAEA,IAAIvB,GAAG,KAAKqB,QAAQ,CAAChB,KAAK,EAAE;QACxB,IAAIL,GAAG,EAAE;UACLsB,MAAM,CAACN,YAAY,CAAC,KAAK,EAAEhB,GAAG,CAAC;QACnC,CAAC,MAAM;UACHsB,MAAM,CAACC,eAAe,CAAC,KAAK,CAAC;QACjC;MACJ;MAEA,OAAO,KAAK;IAChB;EAAC;IAAAlC,GAAA;IAAAmB,KAAA,EA0BD,SAAAO,YAAYhC,GAAW,EAAU;MAC7B,IAAI;QACA,IAAMyC,SAAS,GAAG,IAAIC,GAAG,CAAC1C,GAAG,CAAC;QAC9B;QACA,IAAI,CAACL,uBAAuB,CAACgD,GAAG,CAACF,SAAS,CAACG,QAAQ,CAAC,EAAE;UAClD,OAAO,aAAa;QACxB;MACJ,CAAC,CAAC,OAAAC,OAAA,EAAM;QACJ,OAAO7C,GAAG;MACd;MACA,OAAOA,GAAG;IACd;EAAC;IAAAM,GAAA;IAAAmB,KAAA,EAED,SAAAqB,WAAA,EAAmE;MAC/D,WAAAC,cAAA,CAAAvC,OAAA,MAAAuC,cAAA,CAAAvC,OAAA,UAAAwC,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAAX,QAAA,CAAAqD,SAAA,uBAAAC,IAAA;QAEItC,GAAG,EAAE,IAAI,CAACuC,MAAM,CAAC,CAAC;QAClBzC,MAAM,EAAE,IAAI,CAAC0C,SAAS,CAAC,CAAC;QACxBtC,KAAK,EAAE,IAAI,CAACuC,QAAQ,CAAC,CAAC;QACtBrC,GAAG,EAAE,IAAI,CAACsC,MAAM,CAAC,CAAC;QAClBC,IAAI,EAAE,MAAM;QACZxD,GAAG,EAAE,IAAI,CAACyD,MAAM,CAAC,CAAC;QAClBC,OAAO,EAAE;MAAC;IAElB;EAAC;IAAApD,GAAA;IAAAmB,KAAA,EAED,SAAAgC,OAAA,EAAiB;MACb,OAAO,IAAI,CAACE,SAAS,CAAC,CAAC,CAACzC,KAAK;IACjC;EAAC;IAAAZ,GAAA;IAAAmB,KAAA,EAED,SAAAmC,OAAO5D,GAAW,EAAQ;MACtB,IAAM6D,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAAC3C,KAAK,GAAGlB,GAAG;IACxB;EAAC;IAAAM,GAAA;IAAAmB,KAAA,EAED,SAAA4B,UAAA,EAA2B;MACvB,OAAO,IAAI,CAACM,SAAS,CAAC,CAAC,CAACxC,QAAQ;IACpC;EAAC;IAAAb,GAAA;IAAAmB,KAAA,EAED,SAAAsC,UAAUpD,MAAqB,EAAQ;MACnC,IAAMkD,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAAC1C,QAAQ,GAAGR,MAAM;IAC9B;EAAC;IAAAL,GAAA;IAAAmB,KAAA,EAED,SAAA2B,OAAA,EAAwB;MACpB,OAAO,IAAI,CAACO,SAAS,CAAC,CAAC,CAACvC,KAAK;IACjC;EAAC;IAAAd,GAAA;IAAAmB,KAAA,EAED,SAAAuC,OAAOnD,GAAkB,EAAQ;MAC7B,IAAMgD,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAACzC,KAAK,GAAGP,GAAG;IACxB;EAAC;IAAAP,GAAA;IAAAmB,KAAA,EAED,SAAA6B,SAAA,EAA0B;MACtB,OAAO,IAAI,CAACK,SAAS,CAAC,CAAC,CAACtC,OAAO;IACnC;EAAC;IAAAf,GAAA;IAAAmB,KAAA,EAED,SAAAwC,SAASlD,KAAoB,EAAQ;MACjC,IAAM8C,QAAQ,GAAG,IAAI,CAACC,WAAW,CAAC,CAAC;MACnCD,QAAQ,CAACxC,OAAO,GAAGN,KAAK;IAC5B;EAAC;IAAAT,GAAA;IAAAmB,KAAA,EAED,SAAA8B,OAAA,EAAwB;MACpB,OAAO,IAAI,CAACjC,KAAK;IACrB;EAAC;IAAAhB,GAAA;IAAAmB,KAAA,EAED,SAAAyC,OAAOC,IAAmB,EAAQ;MAC9B,IAAMN,QAAQ,OAAAb,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAAX,QAAA,CAAAqD,SAAA,wBAAAC,IAAA,MAAsB;MACpCU,QAAQ,CAACvC,KAAK,GAAG6C,IAAI;IACzB;EAAC;IAAA7D,GAAA;IAAAmB,KAAA,EAED,SAAA2C,eACIC,SAAyB,EAEP;MAAA,IADlBC,gBAAgB,GAAAnE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAEvB,IAAMyB,OAAO,GAAG,IAAI,CAAC2C,gBAAgB,CAAC,CAAC,CAACH,cAAc,CAACC,SAAS,EAAEC,gBAAgB,CAAC;MACnF,IAAI,IAAAE,uBAAc,EAAC5C,OAAO,CAAC,EAAE;QACzB,IAAM6C,QAAQ,GAAGC,eAAe,CAAC,IAAI,CAACxD,KAAK,EAAE;UACzCL,GAAG,EAAE,IAAI,CAACO,KAAK;UACfT,MAAM,EAAE,IAAI,CAACQ,QAAQ;UACrBJ,KAAK,EAAE,IAAI,CAACM,OAAO;UACnBJ,GAAG,EAAE,IAAI,CAACK;QACd,CAAC,CAAC;QACFM,OAAO,CAAC+C,MAAM,CAACF,QAAQ,CAAC;QACxB,OAAOA,QAAQ;MACnB;MACA,OAAO,IAAI;IACf;EAAC;IAAAnE,GAAA;IAAAmB,KAAA,EAED,SAAAmD,oBAAA,EAAsC;MAClC,OAAO,KAAK;IAChB;EAAC;IAAAtE,GAAA;IAAAmB,KAAA,EAED,SAAAoD,mBAAA,EAAqC;MACjC,OAAO,KAAK;IAChB;EAAC;IAAAvE,GAAA;IAAAmB,KAAA,EAED,SAAAqD,WAAA,EAA6B;MACzB,OAAO,KAAK;IAChB;EAAC;IAAAxE,GAAA;IAAAmB,KAAA,EAED,SAAAsD,SAAA,EAA0B;MACtB,OAAO,IAAI;IACf;EAAC;IAAAzE,GAAA;IAAAmB,KAAA,EAED,SAAAuD,iBAA0BC,CAAc,EAAEZ,SAAyB,EAAW;MAC1E,IAAI,CAAC,IAAAa,0BAAiB,EAACb,SAAS,CAAC,EAAE;QAC/B,OAAO,KAAK;MAChB;MAEA,IAAMc,UAAU,GAAGd,SAAS,CAAC9B,MAAM,CAAC6C,OAAO,CAAC,CAAC;MAC7C,IAAMC,SAAS,GAAGhB,SAAS,CAACiB,KAAK,CAACF,OAAO,CAAC,CAAC;MAE3C,OACI,IAAI,CAACG,UAAU,CAACJ,UAAU,CAAC,IAC3B,IAAI,CAACI,UAAU,CAACF,SAAS,CAAC,IAC1BhB,SAAS,CAACmB,cAAc,CAAC,CAAC,CAACpF,MAAM,GAAG,CAAC;IAE7C;EAAC;IAAAE,GAAA;IAAAmB,KAAA,EAhPD;;IAEA;;IAEA;;IAEA;;IAEA;;IAGA,SAAAgE,QAAA,EAAkC;MAC9B,OAAO,MAAM;IACjB;EAAC;IAAAnF,GAAA;IAAAmB,KAAA,EAED,SAAAiE,MAAsBC,IAAc,EAAY;MAC5C,OAAO,IAAI9F,QAAQ,CACf8F,IAAI,CAACzE,KAAK,EACV;QAAEL,GAAG,EAAE8E,IAAI,CAACvE,KAAK;QAAET,MAAM,EAAEgF,IAAI,CAACxE,QAAQ;QAAEJ,KAAK,EAAE4E,IAAI,CAACtE,OAAO;QAAEJ,GAAG,EAAE0E,IAAI,CAACrE;MAAM,CAAC,EAChFqE,IAAI,CAACC,KACT,CAAC;IACL;EAAC;IAAAtF,GAAA;IAAAmB,KAAA,EA6ED,SAAAoE,UAAA,EAAqD;MACjD,OAAO;QACHC,CAAC,EAAE,SAAAA,EAAA;UAAA,OAAO;YACNC,UAAU,EAAEC,oBAAoB;YAChCC,QAAQ,EAAE;UACd,CAAC;QAAA;MACL,CAAC;IACL;EAAC;IAAA3F,GAAA;IAAAmB,KAAA,EAED,SAAAyE,WACIC,cAA2D,EACnD;MACR,IAAMR,IAAI,GAAGjB,eAAe,CAACyB,cAAc,CAACnG,GAAG,EAAE;QAC7Ca,GAAG,EAAEsF,cAAc,CAACtF,GAAG;QACvBF,MAAM,EAAEwF,cAAc,CAACxF,MAAM;QAC7BI,KAAK,EAAEoF,cAAc,CAACpF,KAAK;QAC3BE,GAAG,EAAEkF,cAAc,CAAClF;MACxB,CAAC,CAAC;MACF0E,IAAI,CAACS,SAAS,CAACD,cAAc,CAACE,MAAM,CAAC;MACrCV,IAAI,CAACW,SAAS,CAACH,cAAc,CAACI,MAAM,CAAC;MACrCZ,IAAI,CAACa,YAAY,CAACL,cAAc,CAACM,SAAS,CAAC;MAC3C,OAAOd,IAAI;IACf;EAAC;AAAA,EAzHyBe,oBAAW;AAoPzC,SAASV,oBAAoBA,CAACW,OAAa,EAAuB;EAC9D,IAAIhB,IAAI,GAAG,IAAI;EACf,IAAI,IAAAiB,0BAAmB,EAACD,OAAO,CAAC,EAAE;IAC9B,IAAME,OAAO,GAAGF,OAAO,CAACG,WAAW;IACnC,IAAKD,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,EAAE,IAAKF,OAAO,CAACI,QAAQ,CAAC3G,MAAM,GAAG,CAAC,EAAE;MACrEuF,IAAI,GAAGjB,eAAe,CAACiC,OAAO,CAACK,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;QACvDnG,GAAG,EAAE8F,OAAO,CAACK,YAAY,CAAC,KAAK,CAAC;QAChCrG,MAAM,EAAEgG,OAAO,CAACK,YAAY,CAAC,QAAQ,CAAC;QACtCjG,KAAK,EAAE4F,OAAO,CAACK,YAAY,CAAC,OAAO,CAAC;QACpC/F,GAAG,EAAE0F,OAAO,CAACK,YAAY,CAAC,KAAK;MACnC,CAAC,CAAC;IACN;EACJ;EACA,OAAO;IAAErB,IAAI,EAAJA;EAAK,CAAC;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACO,SAASjB,eAAeA,CAAC1E,GAAW,EAAEE,UAA2B,EAAY;EAChF,OAAO,IAAA+G,8BAAqB,EAAC,IAAIpH,QAAQ,CAACG,GAAG,EAAEE,UAAU,CAAC,CAAC;AAC/D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASgH,WAAWA,CAACvB,IAAoC,EAAoB;EAChF,OAAOA,IAAI,YAAY9F,QAAQ;AACnC;AAIA;AACA;AAAA,IACasH,YAAY,GAAArH,OAAA,CAAAqH,YAAA,0BAAAC,SAAA;EAAA,SAAAD,aAAA;IAAA,IAAA5G,gBAAA,CAAAC,OAAA,QAAA2G,YAAA;IAAA,WAAA1G,WAAA,CAAAD,OAAA,QAAA2G,YAAA,EAAAhH,SAAA;EAAA;EAAA,IAAAoB,UAAA,CAAAf,OAAA,EAAA2G,YAAA,EAAAC,SAAA;EAAA,WAAA5F,aAAA,CAAAhB,OAAA,EAAA2G,YAAA;IAAA7G,GAAA;IAAAmB,KAAA,EA8BrB,SAAAqB,WAAA,EAA8C;MAC1C,WAAAC,cAAA,CAAAvC,OAAA,MAAAuC,cAAA,CAAAvC,OAAA,UAAAwC,KAAA,CAAAxC,OAAA,MAAAyC,gBAAA,CAAAzC,OAAA,EAAA2G,YAAA,CAAAjE,SAAA,uBAAAC,IAAA;QAEIK,IAAI,EAAE,UAAU;QAChBE,OAAO,EAAE;MAAC;IAElB;EAAC;IAAApD,GAAA;IAAAmB,KAAA,EAED,SAAA2C,eACIC,SAAyB,EAEP;MAAA,IADlBC,gBAAgB,GAAAnE,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MAEvB,IAAMyB,OAAO,GAAG,IAAI,CAAC2C,gBAAgB,CAAC,CAAC,CAACH,cAAc,CAACC,SAAS,EAAEC,gBAAgB,CAAC;MACnF,IAAI,IAAAE,uBAAc,EAAC5C,OAAO,CAAC,EAAE;QACzB,IAAM6C,QAAQ,GAAG4C,mBAAmB,CAAC,IAAI,CAACnG,KAAK,EAAE;UAC7CL,GAAG,EAAE,IAAI,CAACO,KAAK;UACfT,MAAM,EAAE,IAAI,CAACQ,QAAQ;UACrBJ,KAAK,EAAE,IAAI,CAACM;QAChB,CAAC,CAAC;QACFO,OAAO,CAAC+C,MAAM,CAACF,QAAQ,CAAC;QACxB,OAAOA,QAAQ;MACnB;MACA,OAAO,IAAI;IACf;EAAC;IAAAnE,GAAA;IAAAmB,KAAA,EApDD,SAAAgE,QAAA,EAAkC;MAC9B,OAAO,UAAU;IACrB;EAAC;IAAAnF,GAAA;IAAAmB,KAAA,EAED,SAAAiE,MAAsBC,IAAkB,EAAgB;MACpD,OAAO,IAAIwB,YAAY,CACnBxB,IAAI,CAACzE,KAAK,EACV;QAAEL,GAAG,EAAE8E,IAAI,CAACvE,KAAK;QAAET,MAAM,EAAEgF,IAAI,CAACxE,QAAQ;QAAEJ,KAAK,EAAE4E,IAAI,CAACtE;MAAQ,CAAC,EAC/DsE,IAAI,CAACC,KACT,CAAC;IACL;EAAC;IAAAtF,GAAA;IAAAmB,KAAA,EAED,SAAAyE,WAA2BC,cAAsC,EAAgB;MAC7E,IAAMR,IAAI,GAAG0B,mBAAmB,CAAClB,cAAc,CAACnG,GAAG,EAAE;QACjDa,GAAG,EAAEsF,cAAc,CAACtF,GAAG;QACvBF,MAAM,EAAEwF,cAAc,CAACxF,MAAM;QAC7BI,KAAK,EAAEoF,cAAc,CAACpF;MAC1B,CAAC,CAAC;MACF4E,IAAI,CAACS,SAAS,CAACD,cAAc,CAACE,MAAM,CAAC;MACrCV,IAAI,CAACW,SAAS,CAACH,cAAc,CAACI,MAAM,CAAC;MACrCZ,IAAI,CAACa,YAAY,CAACL,cAAc,CAACM,SAAS,CAAC;MAC3C,OAAOd,IAAI;IACf;EAAC;IAAArF,GAAA;IAAAmB,KAAA,EAED,SAAAoE,UAAA,EAAkC;MAC9B;MACA,OAAO,IAAI;IACf;EAAC;AAAA,EA5B6BhG,QAAQ;AAwD1C;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwH,mBAAmBA,CAACrH,GAAW,EAAEE,UAA2B,EAAgB;EACxF,OAAO,IAAA+G,8BAAqB,EAAC,IAAIE,YAAY,CAACnH,GAAG,EAAEE,UAAU,CAAC,CAAC;AACnE;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASoH,eAAeA,CAAC3B,IAAoC,EAAwB;EACxF,OAAOA,IAAI,YAAYwB,YAAY;AACvC;AAEO,IAAMI,mBAEZ,GAAAzH,OAAA,CAAAyH,mBAAA,GAAG,IAAAC,sBAAa,EAAC,qBAAqB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_utils","require","_lexical","SUPPORTED_URL_PROTOCOLS","Set","LinkNode","exports","_ElementNode","url","_this","attributes","arguments","length","undefined","key","_classCallCheck2","default","_callSuper2","_attributes$target","target","_attributes$rel","rel","_attributes$title","title","_attributes$alt","alt","__url","__target","__rel","__title","__alt","_inherits2","_createClass2","value","createDOM","config","element","document","createElement","href","sanitizeUrl","setAttribute","addClassNamesToElement","theme","link","updateDOM","prevNode","anchor","removeAttribute","parsedUrl","URL","has","protocol","_unused","exportJSON","_objectSpread2","_superPropGet2","getRel","getTarget","getTitle","getAlt","type","getURL","version","getLatest","setURL","writable","getWritable","setTarget","setRel","setTitle","setAlt","text","insertNewAfter","selection","restoreSelection","getParentOrThrow","$isElementNode","linkNode","$createLinkNode","append","canInsertTextBefore","canInsertTextAfter","canBeEmpty","isInline","extractWithChild","_","$isRangeSelection","anchorNode","getNode","focusNode","focus","isParentOf","getTextContent","getType","clone","node","__key","importDOM","a","conversion","convertAnchorElement","priority","importJSON","serializedNode","setFormat","format","setIndent","indent","setDirection","direction","ElementNode","domNode","isHTMLAnchorElement","content","textContent","children","getAttribute","$applyNodeReplacement","$isLinkNode","AutoLinkNode","_LinkNode","$createAutoLinkNode","$isAutoLinkNode","TOGGLE_LINK_COMMAND","createCommand"],"sources":["LinkNode.ts"],"sourcesContent":["/** @module @lexical/link */\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport type {\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n RangeSelection,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n SerializedElementNode\n} from \"lexical\";\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from \"@lexical/utils\";\nimport {\n $applyNodeReplacement,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n Spread\n} from \"lexical\";\n\nexport type LinkAttributes = {\n rel?: null | string;\n target?: null | string;\n title?: null | string;\n alt?: null | string;\n};\n\ndeclare global {\n interface HTMLAnchorElement {\n alt?: string;\n }\n}\n\nexport type SerializedLinkNode = Spread<\n {\n url: string;\n },\n Spread<LinkAttributes, SerializedElementNode>\n>;\n\nconst SUPPORTED_URL_PROTOCOLS = new Set([\"http:\", \"https:\", \"mailto:\", \"sms:\", \"tel:\"]);\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n /** @internal */\n __url: string;\n /** @internal */\n __target: null | string;\n /** @internal */\n __rel: null | string;\n /** @internal */\n __title: null | string;\n /** @internal */\n __alt: null | string;\n\n static override getType(): string {\n return \"link\";\n }\n\n static override clone(node: LinkNode): LinkNode {\n return new LinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title, alt: node.__alt },\n node.__key\n );\n }\n\n constructor(url: string, attributes: LinkAttributes = {}, key?: NodeKey) {\n super(key);\n const { target = null, rel = null, title = null, alt = null } = attributes;\n this.__url = url;\n this.__target = target;\n this.__rel = rel;\n this.__title = title;\n this.__alt = alt;\n }\n\n override createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement(\"a\") as HTMLAnchorElement;\n element.href = this.sanitizeUrl(this.__url);\n if (this.__target !== null) {\n element.target = this.__target;\n }\n if (this.__rel !== null) {\n element.rel = this.__rel;\n }\n if (this.__title !== null) {\n element.title = this.__title;\n }\n if (this.__alt) {\n element.setAttribute(\"alt\", this.__alt);\n }\n addClassNamesToElement(element, config.theme.link);\n return element;\n }\n\n override updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement): boolean {\n const url = this.__url;\n const target = this.__target;\n const rel = this.__rel;\n const title = this.__title;\n const alt = this.__alt;\n\n if (url !== prevNode.__url) {\n anchor.href = url;\n }\n\n if (target !== prevNode.__target) {\n if (target) {\n anchor.target = target;\n } else {\n anchor.removeAttribute(\"target\");\n }\n }\n\n if (rel !== prevNode.__rel) {\n if (rel) {\n anchor.rel = rel;\n } else {\n anchor.removeAttribute(\"rel\");\n }\n }\n\n if (title !== prevNode.__title) {\n if (title) {\n anchor.title = title;\n } else {\n anchor.removeAttribute(\"title\");\n }\n }\n\n if (alt !== prevNode.__alt) {\n if (alt) {\n anchor.setAttribute(\"alt\", alt);\n } else {\n anchor.removeAttribute(\"alt\");\n }\n }\n\n return false;\n }\n\n static override importDOM(): DOMConversionMap | null {\n return {\n a: () => ({\n conversion: convertAnchorElement,\n priority: 1\n })\n };\n }\n\n static override importJSON(\n serializedNode: SerializedLinkNode | SerializedAutoLinkNode\n ): LinkNode {\n const node = $createLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title,\n alt: serializedNode.alt\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url);\n // eslint-disable-next-line no-script-url\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return \"about:blank\";\n }\n } catch {\n return url;\n }\n return url;\n }\n\n override exportJSON(): SerializedLinkNode | SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n rel: this.getRel(),\n target: this.getTarget(),\n title: this.getTitle(),\n alt: this.getAlt(),\n type: \"link\",\n url: this.getURL(),\n version: 1\n };\n }\n\n getURL(): string {\n return this.getLatest().__url;\n }\n\n setURL(url: string): void {\n const writable = this.getWritable();\n writable.__url = url;\n }\n\n getTarget(): null | string {\n return this.getLatest().__target;\n }\n\n setTarget(target: null | string): void {\n const writable = this.getWritable();\n writable.__target = target;\n }\n\n getRel(): null | string {\n return this.getLatest().__rel;\n }\n\n setRel(rel: null | string): void {\n const writable = this.getWritable();\n writable.__rel = rel;\n }\n\n getTitle(): null | string {\n return this.getLatest().__title;\n }\n\n setTitle(title: null | string): void {\n const writable = this.getWritable();\n writable.__title = title;\n }\n\n getAlt(): string | null {\n return this.__alt;\n }\n\n setAlt(text: string | null): void {\n const writable = super.getWritable();\n writable.__alt = text;\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title,\n alt: this.__alt\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n\n override canInsertTextBefore(): false {\n return false;\n }\n\n override canInsertTextAfter(): false {\n return false;\n }\n\n override canBeEmpty(): false {\n return false;\n }\n\n override isInline(): true {\n return true;\n }\n\n override extractWithChild(_: LexicalNode, selection: RangeSelection): boolean {\n if (!$isRangeSelection(selection)) {\n return false;\n }\n\n const anchorNode = selection.anchor.getNode();\n const focusNode = selection.focus.getNode();\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n );\n }\n}\n\nfunction convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node = null;\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent;\n if ((content !== null && content !== \"\") || domNode.children.length > 0) {\n node = $createLinkNode(domNode.getAttribute(\"href\") || \"\", {\n rel: domNode.getAttribute(\"rel\"),\n target: domNode.getAttribute(\"target\"),\n title: domNode.getAttribute(\"title\"),\n alt: domNode.getAttribute(\"alt\")\n });\n }\n }\n return { node };\n}\n\n/**\n * Takes a URL and creates a LinkNode.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createLinkNode(url: string, attributes?: LinkAttributes): LinkNode {\n return $applyNodeReplacement(new LinkNode(url, attributes));\n}\n\n/**\n * Determines if node is a LinkNode.\n * @param node - The node to be checked.\n * @returns true if node is a LinkNode, false otherwise.\n */\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode;\n}\n\nexport type SerializedAutoLinkNode = SerializedLinkNode;\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\nexport class AutoLinkNode extends LinkNode {\n static override getType(): string {\n return \"autolink\";\n }\n\n static override clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode(\n node.__url,\n { rel: node.__rel, target: node.__target, title: node.__title },\n node.__key\n );\n }\n\n static override importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n const node = $createAutoLinkNode(serializedNode.url, {\n rel: serializedNode.rel,\n target: serializedNode.target,\n title: serializedNode.title\n });\n node.setFormat(serializedNode.format);\n node.setIndent(serializedNode.indent);\n node.setDirection(serializedNode.direction);\n return node;\n }\n\n static override importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null;\n }\n\n override exportJSON(): SerializedAutoLinkNode {\n return {\n ...super.exportJSON(),\n type: \"autolink\",\n version: 1\n };\n }\n\n override insertNewAfter(\n selection: RangeSelection,\n restoreSelection = true\n ): null | ElementNode {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection);\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode(this.__url, {\n rel: this.__rel,\n target: this.__target,\n title: this.__title\n });\n element.append(linkNode);\n return linkNode;\n }\n return null;\n }\n}\n\n/**\n * Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated\n * during typing, which is especially useful when a button to generate a LinkNode is not practical.\n * @param url - The URL the LinkNode should direct to.\n * @param attributes - Optional HTML a tag attributes. { target, rel, title }\n * @returns The LinkNode.\n */\nexport function $createAutoLinkNode(url: string, attributes?: LinkAttributes): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode(url, attributes));\n}\n\n/**\n * Determines if node is an AutoLinkNode.\n * @param node - The node to be checked.\n * @returns true if node is an AutoLinkNode, false otherwise.\n */\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode;\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<\n string | ({ url: string } & LinkAttributes) | null\n> = createCommand(\"TOGGLE_LINK_COMMAND\");\n"],"mappings":"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","ignoreList":[]}
package/ListItemNode.js CHANGED
@@ -12,8 +12,7 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
14
14
  var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
15
- var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
16
- var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
15
+ var _superPropGet2 = _interopRequireDefault(require("@babel/runtime/helpers/superPropGet"));
17
16
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
18
17
  var _lexical = require("lexical");
19
18
  var _ListNode = require("./ListNode");
@@ -59,7 +58,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
59
58
  }, {
60
59
  key: "exportJSON",
61
60
  value: function exportJSON() {
62
- return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "exportJSON", this).call(this)), {}, {
61
+ return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _superPropGet2.default)(ListItemNode, "exportJSON", this, 3)([])), {}, {
63
62
  checked: this.getChecked(),
64
63
  type: "webiny-listitem",
65
64
  value: this.getValue(),
@@ -76,7 +75,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
76
75
  this.append.apply(this, (0, _toConsumableArray2.default)(children));
77
76
  node.remove();
78
77
  } else {
79
- (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "append", this).call(this, node);
78
+ (0, _superPropGet2.default)(ListItemNode, "append", this, 3)([node]);
80
79
  }
81
80
  }
82
81
  return this;
@@ -85,7 +84,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
85
84
  key: "replace",
86
85
  value: function replace(replaceWithNode, includeChildren) {
87
86
  if ($isListItemNode(replaceWithNode)) {
88
- return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "replace", this).call(this, replaceWithNode);
87
+ return (0, _superPropGet2.default)(ListItemNode, "replace", this, 3)([replaceWithNode]);
89
88
  }
90
89
  this.setIndent(0);
91
90
  var list = this.getParentOrThrow();
@@ -132,7 +131,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
132
131
  }
133
132
  var siblings = this.getNextSiblings();
134
133
  if ($isListItemNode(node)) {
135
- var after = (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertAfter", this).call(this, node);
134
+ var after = (0, _superPropGet2.default)(ListItemNode, "insertAfter", this, 3)([node]);
136
135
  var afterListNode = node.getParentOrThrow();
137
136
  if ((0, _ListNode.$isListNode)(afterListNode)) {
138
137
  (0, _formatList.updateChildrenListItemValue)(afterListNode);
@@ -169,7 +168,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
169
168
  value: function remove(preserveEmptyParent) {
170
169
  var prevSibling = this.getPreviousSibling();
171
170
  var nextSibling = this.getNextSibling();
172
- (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "remove", this).call(this, preserveEmptyParent);
171
+ (0, _superPropGet2.default)(ListItemNode, "remove", this, 3)([preserveEmptyParent]);
173
172
  if (prevSibling && nextSibling && (0, _listNode.isNestedListNode)(prevSibling) && (0, _listNode.isNestedListNode)(nextSibling)) {
174
173
  (0, _formatList.mergeLists)(prevSibling.getFirstChild(), nextSibling.getFirstChild());
175
174
  nextSibling.remove();
@@ -297,7 +296,7 @@ var ListItemNode = exports.ListItemNode = /*#__PURE__*/function (_ElementNode) {
297
296
  (0, _formatList.updateChildrenListItemValue)(parent, siblings);
298
297
  }
299
298
  }
300
- return (0, _get2.default)((0, _getPrototypeOf2.default)(ListItemNode.prototype), "insertBefore", this).call(this, nodeToInsert);
299
+ return (0, _superPropGet2.default)(ListItemNode, "insertBefore", this, 3)([nodeToInsert]);
301
300
  }
302
301
  }, {
303
302
  key: "canInsertAfter",