@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 +6 -8
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.js +5 -6
- package/HeadingNode.js.map +1 -1
- package/ImageNode.js +1 -1
- package/ImageNode.js.map +1 -1
- package/LinkNode.js +4 -5
- package/LinkNode.js.map +1 -1
- package/ListItemNode.js +7 -8
- package/ListItemNode.js.map +1 -1
- package/ListNode.js +2 -3
- package/ListNode.js.map +1 -1
- package/ParagraphNode.js +5 -6
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.js +5 -6
- package/QuoteNode.js.map +1 -1
- package/TypographyNode.js +2 -3
- package/TypographyNode.js.map +1 -1
- package/components/ImageNode/ImageResizer.js +27 -27
- package/components/ImageNode/ImageResizer.js.map +1 -1
- package/index.js.map +1 -1
- package/package.json +5 -5
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
|
|
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
|
|
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 = (
|
|
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,
|
|
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,
|
|
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,
|
|
134
|
+
var element = (0, _superPropGet2.default)(FontColorNode, "createDOM", this, 3)([config]);
|
|
137
135
|
return this.addColorValueToHTMLElement(element, config.theme);
|
|
138
136
|
}
|
|
139
137
|
}], [{
|
package/FontColorNode.js.map
CHANGED
|
@@ -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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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
|
package/HeadingNode.js.map
CHANGED
|
@@ -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(
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
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":"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","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
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
299
|
+
return (0, _superPropGet2.default)(ListItemNode, "insertBefore", this, 3)([nodeToInsert]);
|
|
301
300
|
}
|
|
302
301
|
}, {
|
|
303
302
|
key: "canInsertAfter",
|