@webiny/lexical-nodes 5.40.0-beta.2 → 5.40.0-beta.4
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 +8 -14
- package/FontColorNode.js.map +1 -1
- package/HeadingNode.js +6 -10
- package/HeadingNode.js.map +1 -1
- package/ImageNode.js +5 -8
- package/ImageNode.js.map +1 -1
- package/LinkNode.d.ts +2 -7
- package/LinkNode.js +29 -137
- package/LinkNode.js.map +1 -1
- package/ListItemNode.js +5 -8
- package/ListItemNode.js.map +1 -1
- package/ListNode.js +5 -8
- package/ListNode.js.map +1 -1
- package/ParagraphNode.js +6 -10
- package/ParagraphNode.js.map +1 -1
- package/QuoteNode.js +6 -10
- package/QuoteNode.js.map +1 -1
- package/TypographyNode.js +8 -14
- package/TypographyNode.js.map +1 -1
- package/components/ImageNode/ContentEditable.js.map +1 -1
- package/components/ImageNode/ImageComponent.d.ts +4 -2
- package/components/ImageNode/ImageComponent.js +12 -11
- package/components/ImageNode/ImageComponent.js.map +1 -1
- package/components/ImageNode/ImageResizer.js +5 -4
- package/components/ImageNode/ImageResizer.js.map +1 -1
- package/components/ImageNode/Placeholder.js.map +1 -1
- package/components/ImageNode/SharedHistoryContext.js +7 -8
- package/components/ImageNode/SharedHistoryContext.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.js +13 -2
- package/index.js.map +1 -1
- package/package.json +6 -6
- package/types.js.map +1 -1
- package/utils/clearNodeFormating.js +1 -2
- package/utils/clearNodeFormating.js.map +1 -1
- package/utils/formatList.js.map +1 -1
- package/utils/formatToHeading.js +1 -2
- package/utils/formatToHeading.js.map +1 -1
- package/utils/formatToParagraph.js +1 -2
- package/utils/formatToParagraph.js.map +1 -1
- package/utils/formatToQuote.js +1 -2
- package/utils/formatToQuote.js.map +1 -1
- package/utils/listNode.js.map +1 -1
- package/utils/toggleLink.d.ts +8 -0
- package/utils/toggleLink.js +135 -0
- package/utils/toggleLink.js.map +1 -0
package/FontColorNode.js
CHANGED
|
@@ -9,30 +9,28 @@ exports.FontColorNode = exports.ADD_FONT_COLOR_COMMAND = exports.$isFontColorNod
|
|
|
9
9
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
10
10
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
11
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
12
13
|
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
13
14
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
14
15
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
15
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
16
16
|
var _lexical = require("lexical");
|
|
17
|
-
var ADD_FONT_COLOR_COMMAND = (0, _lexical.createCommand)("ADD_FONT_COLOR_COMMAND");
|
|
18
|
-
exports.ADD_FONT_COLOR_COMMAND = ADD_FONT_COLOR_COMMAND;
|
|
17
|
+
var ADD_FONT_COLOR_COMMAND = exports.ADD_FONT_COLOR_COMMAND = (0, _lexical.createCommand)("ADD_FONT_COLOR_COMMAND");
|
|
19
18
|
var FontColorNodeAttrName = "data-theme-font-color-name";
|
|
20
19
|
/**
|
|
21
20
|
* Main responsibility of this node is to apply custom or Webiny theme color to selected text.
|
|
22
21
|
* Extends the original TextNode node to add additional transformation and support for webiny theme font color.
|
|
23
22
|
*/
|
|
24
|
-
var FontColorNode = /*#__PURE__*/function (_TextNode) {
|
|
25
|
-
(0, _inherits2.default)(FontColorNode, _TextNode);
|
|
26
|
-
var _super = (0, _createSuper2.default)(FontColorNode);
|
|
23
|
+
var FontColorNode = exports.FontColorNode = /*#__PURE__*/function (_TextNode) {
|
|
27
24
|
function FontColorNode(text, color, themeColor, key) {
|
|
28
25
|
var _this;
|
|
29
26
|
(0, _classCallCheck2.default)(this, FontColorNode);
|
|
30
|
-
_this =
|
|
27
|
+
_this = (0, _callSuper2.default)(this, FontColorNode, [text, key]);
|
|
31
28
|
_this.__themeColor = themeColor || "custom";
|
|
32
29
|
_this.__color = color;
|
|
33
30
|
return _this;
|
|
34
31
|
}
|
|
35
|
-
(0,
|
|
32
|
+
(0, _inherits2.default)(FontColorNode, _TextNode);
|
|
33
|
+
return (0, _createClass2.default)(FontColorNode, [{
|
|
36
34
|
key: "exportJSON",
|
|
37
35
|
value: function exportJSON() {
|
|
38
36
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(FontColorNode.prototype), "exportJSON", this).call(this)), {}, {
|
|
@@ -104,17 +102,13 @@ var FontColorNode = /*#__PURE__*/function (_TextNode) {
|
|
|
104
102
|
return node;
|
|
105
103
|
}
|
|
106
104
|
}]);
|
|
107
|
-
return FontColorNode;
|
|
108
105
|
}(_lexical.TextNode);
|
|
109
|
-
exports
|
|
110
|
-
var $createFontColorNode = function $createFontColorNode(text, color, themeColor, key) {
|
|
106
|
+
var $createFontColorNode = exports.$createFontColorNode = function $createFontColorNode(text, color, themeColor, key) {
|
|
111
107
|
return new FontColorNode(text, color, themeColor, key);
|
|
112
108
|
};
|
|
113
|
-
exports.$
|
|
114
|
-
var $isFontColorNode = function $isFontColorNode(node) {
|
|
109
|
+
var $isFontColorNode = exports.$isFontColorNode = function $isFontColorNode(node) {
|
|
115
110
|
return node instanceof FontColorNode;
|
|
116
111
|
};
|
|
117
|
-
exports.$isFontColorNode = $isFontColorNode;
|
|
118
112
|
function $applyStylesToNode(node, nodeStyleProvider) {
|
|
119
113
|
node.setFormat(nodeStyleProvider.format);
|
|
120
114
|
node.setStyle(nodeStyleProvider.style);
|
package/FontColorNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","ADD_FONT_COLOR_COMMAND","
|
|
1
|
+
{"version":3,"names":["_lexical","require","ADD_FONT_COLOR_COMMAND","exports","createCommand","FontColorNodeAttrName","FontColorNode","_TextNode","text","color","themeColor","key","_this","_classCallCheck2","default","_callSuper2","__themeColor","__color","_inherits2","_createClass2","value","exportJSON","_objectSpread2","_get2","_getPrototypeOf2","prototype","call","type","version","addColorValueToHTMLElement","element","theme","hasThemeColor","styles","colors","setAttribute","style","updateDOM","prevNode","dom","config","isUpdated","getColorStyle","createDOM","getType","clone","node","__text","__key","importJSON","serializedNode","setTextContent","setFormat","format","setDetail","detail","setMode","mode","setStyle","TextNode","$createFontColorNode","$isFontColorNode","$applyStylesToNode","nodeStyleProvider"],"sources":["FontColorNode.ts"],"sourcesContent":["import {\n createCommand,\n EditorConfig,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n RangeSelection,\n SerializedTextNode,\n Spread,\n TextNode\n} from \"lexical\";\nimport { EditorTheme } from \"@webiny/lexical-theme\";\n\nexport const ADD_FONT_COLOR_COMMAND: LexicalCommand<FontColorPayload> =\n createCommand(\"ADD_FONT_COLOR_COMMAND\");\nconst FontColorNodeAttrName = \"data-theme-font-color-name\";\n\nexport interface FontColorPayload {\n // This color can be hex string\n color: string;\n // webiny theme color variable like color1, color2...\n themeColorName: string | undefined;\n caption?: LexicalEditor;\n key?: NodeKey;\n}\n\ntype ThemeStyleColorName = string;\ntype ThemeColor = \"custom\" | ThemeStyleColorName;\n\nexport type SerializedFontColorNode = Spread<\n {\n themeColor: ThemeColor;\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 __themeColor: ThemeColor;\n __color: string;\n\n constructor(text: string, color: string, themeColor?: ThemeColor, key?: NodeKey) {\n super(text, key);\n this.__themeColor = themeColor || \"custom\";\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.__themeColor, node.__key);\n }\n\n static override importJSON(serializedNode: SerializedFontColorNode): TextNode {\n const node = new FontColorNode(\n serializedNode.text,\n serializedNode.color,\n 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 exportJSON(): SerializedFontColorNode {\n return {\n ...super.exportJSON(),\n themeColor: this.__themeColor,\n color: this.__color,\n type: \"font-color-node\",\n version: 1\n };\n }\n\n addColorValueToHTMLElement(element: HTMLElement, theme: EditorTheme): HTMLElement {\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n element.setAttribute(FontColorNodeAttrName, this.__themeColor);\n element.style.color = this.__color;\n return element;\n }\n\n override updateDOM(prevNode: FontColorNode, dom: HTMLElement, config: EditorConfig): boolean {\n const theme = config.theme;\n const isUpdated = super.updateDOM(prevNode, dom, config);\n const hasThemeColor = this.__themeColor !== \"custom\";\n // get the updated color from webiny theme\n if (hasThemeColor && theme?.styles?.colors) {\n this.__color = theme.styles.colors[this.__themeColor];\n }\n\n dom.setAttribute(FontColorNodeAttrName, this.__themeColor);\n dom.style.color = this.__color;\n return isUpdated;\n }\n\n getColorStyle(): { color: string; themeColor: ThemeColor } {\n return {\n color: this.__color,\n themeColor: this.__themeColor\n };\n }\n\n override createDOM(config: EditorConfig): HTMLElement {\n const element = super.createDOM(config);\n return this.addColorValueToHTMLElement(element, config.theme);\n }\n}\n\nexport const $createFontColorNode = (\n text: string,\n color: string,\n themeColor?: ThemeColor,\n key?: NodeKey\n): FontColorNode => {\n return new FontColorNode(text, color, themeColor, key);\n};\n\nexport const $isFontColorNode = (node: LexicalNode): node is FontColorNode => {\n return node instanceof FontColorNode;\n};\n\nexport function $applyStylesToNode(node: FontColorNode, nodeStyleProvider: RangeSelection) {\n node.setFormat(nodeStyleProvider.format);\n node.setStyle(nodeStyleProvider.style);\n}\n"],"mappings":"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","ignoreList":[]}
|
package/HeadingNode.js
CHANGED
|
@@ -11,24 +11,21 @@ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/obje
|
|
|
11
11
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
12
12
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
13
13
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
14
|
-
var
|
|
14
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
15
15
|
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
16
16
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
17
17
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
18
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
19
18
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
20
19
|
var _lexical = require("lexical");
|
|
21
20
|
var _utils = require("@lexical/utils");
|
|
22
21
|
var _richText = require("@lexical/rich-text");
|
|
23
22
|
var _lexicalTheme = require("@webiny/lexical-theme");
|
|
24
|
-
var HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
25
|
-
(0, _inherits2.default)(HeadingNode, _BaseHeadingNode);
|
|
26
|
-
var _super = (0, _createSuper2.default)(HeadingNode);
|
|
23
|
+
var HeadingNode = exports.HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
27
24
|
function HeadingNode(tag, typographyStyleId, key) {
|
|
28
25
|
var _this;
|
|
29
26
|
(0, _classCallCheck2.default)(this, HeadingNode);
|
|
30
|
-
_this =
|
|
31
|
-
(0, _defineProperty2.default)(
|
|
27
|
+
_this = (0, _callSuper2.default)(this, HeadingNode, [tag, key]);
|
|
28
|
+
(0, _defineProperty2.default)(_this, "__styles", []);
|
|
32
29
|
if (typographyStyleId) {
|
|
33
30
|
_this.__styles.push({
|
|
34
31
|
styleId: typographyStyleId,
|
|
@@ -37,7 +34,8 @@ var HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
|
37
34
|
}
|
|
38
35
|
return _this;
|
|
39
36
|
}
|
|
40
|
-
(0,
|
|
37
|
+
(0, _inherits2.default)(HeadingNode, _BaseHeadingNode);
|
|
38
|
+
return (0, _createClass2.default)(HeadingNode, [{
|
|
41
39
|
key: "setDefaultTypography",
|
|
42
40
|
value: function setDefaultTypography(themeEmotionMap) {
|
|
43
41
|
var typographyStyle = (0, _lexicalTheme.findTypographyStyleByHtmlTag)(this.__tag, themeEmotionMap);
|
|
@@ -180,9 +178,7 @@ var HeadingNode = /*#__PURE__*/function (_BaseHeadingNode) {
|
|
|
180
178
|
return node;
|
|
181
179
|
}
|
|
182
180
|
}]);
|
|
183
|
-
return HeadingNode;
|
|
184
181
|
}(_richText.HeadingNode);
|
|
185
|
-
exports.HeadingNode = HeadingNode;
|
|
186
182
|
function $createHeadingNode(tag, typographyStyleId) {
|
|
187
183
|
return (0, _lexical.$applyNodeReplacement)(new HeadingNode(tag, typographyStyleId));
|
|
188
184
|
}
|
package/HeadingNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lexical","require","_utils","_richText","_lexicalTheme","HeadingNode","_BaseHeadingNode","_inherits2","default","_super","_createSuper2","tag","typographyStyleId","key","_this","_classCallCheck2","call","_defineProperty2","_assertThisInitialized2","__styles","push","styleId","type","_createClass2","value","setDefaultTypography","themeEmotionMap","typographyStyle","findTypographyStyleByHtmlTag","__tag","id","setTypography","self","_get2","_getPrototypeOf2","prototype","hasTypographyStyle","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","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","exports","$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 { WebinyTheme, 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 protected 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 setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n 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: WebinyTheme): 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 WebinyTheme);\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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"}
|
|
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","setTypography","self","_get2","_getPrototypeOf2","prototype","call","hasTypographyStyle","themeStyle","getTypographyStyleId","style","find","x","undefined","clearTypographyStyle","filter","s","getThemeStyles","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 { WebinyTheme, 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 protected 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 setTypography(typographyStyleId: string): this {\n const self = super.getWritable();\n if (!this.hasTypographyStyle()) {\n const themeStyle = {\n styleId: typographyStyleId,\n type: \"typography\"\n } as ThemeStyleValue;\n self.__styles.push(themeStyle);\n }\n return self;\n }\n\n getTypographyStyleId(): string | undefined {\n const style = this.__styles.find(x => x.type === \"typography\");\n return style?.styleId || undefined;\n }\n\n clearTypographyStyle(): this {\n const self = super.getWritable();\n self.__styles = self.__styles.filter(s => s.type !== \"typography\");\n return self;\n }\n\n 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: WebinyTheme): 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 WebinyTheme);\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
|
@@ -10,8 +10,8 @@ exports.$isImageNode = $isImageNode;
|
|
|
10
10
|
exports.ImageNode = void 0;
|
|
11
11
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
12
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
13
14
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
15
15
|
var _interopRequireWildcard2 = _interopRequireDefault(require("@babel/runtime/helpers/interopRequireWildcard"));
|
|
16
16
|
var _react = _interopRequireWildcard3(require("react"));
|
|
17
17
|
var _lexical = require("lexical");
|
|
@@ -28,13 +28,11 @@ var ImageComponent = /*#__PURE__*/_react.default.lazy(function () {
|
|
|
28
28
|
return (0, _interopRequireWildcard2.default)(require( /* webpackChunkName: "LexicalNodesComponentsImageNodeImageComponent" */"./components/ImageNode/ImageComponent"));
|
|
29
29
|
});
|
|
30
30
|
});
|
|
31
|
-
var ImageNode = /*#__PURE__*/function (_DecoratorNode) {
|
|
32
|
-
(0, _inherits2.default)(ImageNode, _DecoratorNode);
|
|
33
|
-
var _super = (0, _createSuper2.default)(ImageNode);
|
|
31
|
+
var ImageNode = exports.ImageNode = /*#__PURE__*/function (_DecoratorNode) {
|
|
34
32
|
function ImageNode(props, key) {
|
|
35
33
|
var _this;
|
|
36
34
|
(0, _classCallCheck2.default)(this, ImageNode);
|
|
37
|
-
_this =
|
|
35
|
+
_this = (0, _callSuper2.default)(this, ImageNode, [key]);
|
|
38
36
|
_this.__id = props.id;
|
|
39
37
|
_this.__src = props.src;
|
|
40
38
|
_this.__altText = props.altText;
|
|
@@ -46,7 +44,8 @@ var ImageNode = /*#__PURE__*/function (_DecoratorNode) {
|
|
|
46
44
|
_this.__captionsEnabled = props.captionsEnabled || props.captionsEnabled === undefined;
|
|
47
45
|
return _this;
|
|
48
46
|
}
|
|
49
|
-
(0,
|
|
47
|
+
(0, _inherits2.default)(ImageNode, _DecoratorNode);
|
|
48
|
+
return (0, _createClass2.default)(ImageNode, [{
|
|
50
49
|
key: "exportDOM",
|
|
51
50
|
value: function exportDOM() {
|
|
52
51
|
var element = document.createElement("img");
|
|
@@ -202,9 +201,7 @@ var ImageNode = /*#__PURE__*/function (_DecoratorNode) {
|
|
|
202
201
|
return null;
|
|
203
202
|
}
|
|
204
203
|
}]);
|
|
205
|
-
return ImageNode;
|
|
206
204
|
}(_lexical.DecoratorNode);
|
|
207
|
-
exports.ImageNode = ImageNode;
|
|
208
205
|
function $createImageNode(props, key) {
|
|
209
206
|
return (0, _lexical.$applyNodeReplacement)(new ImageNode(props, key));
|
|
210
207
|
}
|
package/ImageNode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard3","require","_lexical","ImageComponent","React","lazy","Promise","resolve","then","_interopRequireWildcard2","default","ImageNode","_DecoratorNode","_inherits2","_super","_createSuper2","props","key","_this","_classCallCheck2","call","__id","id","__src","src","__altText","altText","__maxWidth","maxWidth","__width","width","__height","height","__showCaption","showCaption","__caption","caption","createEditor","__captionsEnabled","captionsEnabled","undefined","_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","exports","$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 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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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard3","require","_lexical","ImageComponent","React","lazy","Promise","resolve","then","_interopRequireWildcard2","default","ImageNode","exports","_DecoratorNode","props","key","_this","_classCallCheck2","_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 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.d.ts
CHANGED
|
@@ -51,6 +51,8 @@ export declare class LinkNode extends ElementNode {
|
|
|
51
51
|
setRel(rel: null | string): void;
|
|
52
52
|
getTitle(): null | string;
|
|
53
53
|
setTitle(title: null | string): void;
|
|
54
|
+
getAlt(): string | null;
|
|
55
|
+
setAlt(text: string | null): void;
|
|
54
56
|
insertNewAfter(selection: RangeSelection, restoreSelection?: boolean): null | ElementNode;
|
|
55
57
|
canInsertTextBefore(): false;
|
|
56
58
|
canInsertTextAfter(): false;
|
|
@@ -97,10 +99,3 @@ export declare function $isAutoLinkNode(node: LexicalNode | null | undefined): n
|
|
|
97
99
|
export declare const TOGGLE_LINK_COMMAND: LexicalCommand<string | ({
|
|
98
100
|
url: string;
|
|
99
101
|
} & LinkAttributes) | null>;
|
|
100
|
-
/**
|
|
101
|
-
* Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null,
|
|
102
|
-
* but saves any children and brings them up to the parent node.
|
|
103
|
-
* @param url - The URL the link directs to.
|
|
104
|
-
* @param attributes - Optional HTML a tag attributes. { target, rel, title }
|
|
105
|
-
*/
|
|
106
|
-
export declare function toggleLink(url: null | string, attributes?: LinkAttributes): void;
|
package/LinkNode.js
CHANGED
|
@@ -9,14 +9,13 @@ exports.$createLinkNode = $createLinkNode;
|
|
|
9
9
|
exports.$isAutoLinkNode = $isAutoLinkNode;
|
|
10
10
|
exports.$isLinkNode = $isLinkNode;
|
|
11
11
|
exports.TOGGLE_LINK_COMMAND = exports.LinkNode = exports.AutoLinkNode = void 0;
|
|
12
|
-
exports.toggleLink = toggleLink;
|
|
13
12
|
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
|
14
13
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
15
14
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
15
|
+
var _callSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/callSuper"));
|
|
16
16
|
var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
|
|
17
17
|
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
18
18
|
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
19
|
-
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
|
|
20
19
|
var _utils = require("@lexical/utils");
|
|
21
20
|
var _lexical = require("lexical");
|
|
22
21
|
/** @module @lexical/link */
|
|
@@ -31,15 +30,13 @@ var _lexical = require("lexical");
|
|
|
31
30
|
var SUPPORTED_URL_PROTOCOLS = new Set(["http:", "https:", "mailto:", "sms:", "tel:"]);
|
|
32
31
|
|
|
33
32
|
/** @noInheritDoc */
|
|
34
|
-
var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
35
|
-
(0, _inherits2.default)(LinkNode, _ElementNode);
|
|
36
|
-
var _super = (0, _createSuper2.default)(LinkNode);
|
|
33
|
+
var LinkNode = exports.LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
37
34
|
function LinkNode(url) {
|
|
38
35
|
var _this;
|
|
39
36
|
var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
40
37
|
var key = arguments.length > 2 ? arguments[2] : undefined;
|
|
41
38
|
(0, _classCallCheck2.default)(this, LinkNode);
|
|
42
|
-
_this =
|
|
39
|
+
_this = (0, _callSuper2.default)(this, LinkNode, [key]);
|
|
43
40
|
var _attributes$target = attributes.target,
|
|
44
41
|
target = _attributes$target === void 0 ? null : _attributes$target,
|
|
45
42
|
_attributes$rel = attributes.rel,
|
|
@@ -55,7 +52,8 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
55
52
|
_this.__alt = alt;
|
|
56
53
|
return _this;
|
|
57
54
|
}
|
|
58
|
-
(0,
|
|
55
|
+
(0, _inherits2.default)(LinkNode, _ElementNode);
|
|
56
|
+
return (0, _createClass2.default)(LinkNode, [{
|
|
59
57
|
key: "createDOM",
|
|
60
58
|
value: function createDOM(config) {
|
|
61
59
|
var element = document.createElement("a");
|
|
@@ -69,8 +67,8 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
69
67
|
if (this.__title !== null) {
|
|
70
68
|
element.title = this.__title;
|
|
71
69
|
}
|
|
72
|
-
if (this.__alt
|
|
73
|
-
element.alt
|
|
70
|
+
if (this.__alt) {
|
|
71
|
+
element.setAttribute("alt", this.__alt);
|
|
74
72
|
}
|
|
75
73
|
(0, _utils.addClassNamesToElement)(element, config.theme.link);
|
|
76
74
|
return element;
|
|
@@ -109,7 +107,7 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
109
107
|
}
|
|
110
108
|
if (alt !== prevNode.__alt) {
|
|
111
109
|
if (alt) {
|
|
112
|
-
anchor.alt
|
|
110
|
+
anchor.setAttribute("alt", alt);
|
|
113
111
|
} else {
|
|
114
112
|
anchor.removeAttribute("alt");
|
|
115
113
|
}
|
|
@@ -137,6 +135,7 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
137
135
|
rel: this.getRel(),
|
|
138
136
|
target: this.getTarget(),
|
|
139
137
|
title: this.getTitle(),
|
|
138
|
+
alt: this.getAlt(),
|
|
140
139
|
type: "link",
|
|
141
140
|
url: this.getURL(),
|
|
142
141
|
version: 1
|
|
@@ -186,6 +185,17 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
186
185
|
var writable = this.getWritable();
|
|
187
186
|
writable.__title = title;
|
|
188
187
|
}
|
|
188
|
+
}, {
|
|
189
|
+
key: "getAlt",
|
|
190
|
+
value: function getAlt() {
|
|
191
|
+
return this.__alt;
|
|
192
|
+
}
|
|
193
|
+
}, {
|
|
194
|
+
key: "setAlt",
|
|
195
|
+
value: function setAlt(text) {
|
|
196
|
+
var writable = (0, _get2.default)((0, _getPrototypeOf2.default)(LinkNode.prototype), "getWritable", this).call(this);
|
|
197
|
+
writable.__alt = text;
|
|
198
|
+
}
|
|
189
199
|
}, {
|
|
190
200
|
key: "insertNewAfter",
|
|
191
201
|
value: function insertNewAfter(selection) {
|
|
@@ -195,7 +205,8 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
195
205
|
var linkNode = $createLinkNode(this.__url, {
|
|
196
206
|
rel: this.__rel,
|
|
197
207
|
target: this.__target,
|
|
198
|
-
title: this.__title
|
|
208
|
+
title: this.__title,
|
|
209
|
+
alt: this.__alt
|
|
199
210
|
});
|
|
200
211
|
element.append(linkNode);
|
|
201
212
|
return linkNode;
|
|
@@ -275,7 +286,8 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
275
286
|
var node = $createLinkNode(serializedNode.url, {
|
|
276
287
|
rel: serializedNode.rel,
|
|
277
288
|
target: serializedNode.target,
|
|
278
|
-
title: serializedNode.title
|
|
289
|
+
title: serializedNode.title,
|
|
290
|
+
alt: serializedNode.alt
|
|
279
291
|
});
|
|
280
292
|
node.setFormat(serializedNode.format);
|
|
281
293
|
node.setIndent(serializedNode.indent);
|
|
@@ -283,9 +295,7 @@ var LinkNode = /*#__PURE__*/function (_ElementNode) {
|
|
|
283
295
|
return node;
|
|
284
296
|
}
|
|
285
297
|
}]);
|
|
286
|
-
return LinkNode;
|
|
287
298
|
}(_lexical.ElementNode);
|
|
288
|
-
exports.LinkNode = LinkNode;
|
|
289
299
|
function convertAnchorElement(domNode) {
|
|
290
300
|
var node = null;
|
|
291
301
|
if ((0, _utils.isHTMLAnchorElement)(domNode)) {
|
|
@@ -324,14 +334,13 @@ function $isLinkNode(node) {
|
|
|
324
334
|
}
|
|
325
335
|
// Custom node type to override `canInsertTextAfter` that will
|
|
326
336
|
// allow typing within the link
|
|
327
|
-
var AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
|
|
328
|
-
(0, _inherits2.default)(AutoLinkNode, _LinkNode);
|
|
329
|
-
var _super2 = (0, _createSuper2.default)(AutoLinkNode);
|
|
337
|
+
var AutoLinkNode = exports.AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
|
|
330
338
|
function AutoLinkNode() {
|
|
331
339
|
(0, _classCallCheck2.default)(this, AutoLinkNode);
|
|
332
|
-
return
|
|
340
|
+
return (0, _callSuper2.default)(this, AutoLinkNode, arguments);
|
|
333
341
|
}
|
|
334
|
-
(0,
|
|
342
|
+
(0, _inherits2.default)(AutoLinkNode, _LinkNode);
|
|
343
|
+
return (0, _createClass2.default)(AutoLinkNode, [{
|
|
335
344
|
key: "exportJSON",
|
|
336
345
|
value: function exportJSON() {
|
|
337
346
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _get2.default)((0, _getPrototypeOf2.default)(AutoLinkNode.prototype), "exportJSON", this).call(this)), {}, {
|
|
@@ -389,7 +398,6 @@ var AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
|
|
|
389
398
|
return null;
|
|
390
399
|
}
|
|
391
400
|
}]);
|
|
392
|
-
return AutoLinkNode;
|
|
393
401
|
}(LinkNode);
|
|
394
402
|
/**
|
|
395
403
|
* Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated
|
|
@@ -398,7 +406,6 @@ var AutoLinkNode = /*#__PURE__*/function (_LinkNode) {
|
|
|
398
406
|
* @param attributes - Optional HTML a tag attributes. { target, rel, title }
|
|
399
407
|
* @returns The LinkNode.
|
|
400
408
|
*/
|
|
401
|
-
exports.AutoLinkNode = AutoLinkNode;
|
|
402
409
|
function $createAutoLinkNode(url, attributes) {
|
|
403
410
|
return (0, _lexical.$applyNodeReplacement)(new AutoLinkNode(url, attributes));
|
|
404
411
|
}
|
|
@@ -411,121 +418,6 @@ function $createAutoLinkNode(url, attributes) {
|
|
|
411
418
|
function $isAutoLinkNode(node) {
|
|
412
419
|
return node instanceof AutoLinkNode;
|
|
413
420
|
}
|
|
414
|
-
var TOGGLE_LINK_COMMAND = (0, _lexical.createCommand)("TOGGLE_LINK_COMMAND");
|
|
415
|
-
|
|
416
|
-
/**
|
|
417
|
-
* Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null,
|
|
418
|
-
* but saves any children and brings them up to the parent node.
|
|
419
|
-
* @param url - The URL the link directs to.
|
|
420
|
-
* @param attributes - Optional HTML a tag attributes. { target, rel, title }
|
|
421
|
-
*/
|
|
422
|
-
exports.TOGGLE_LINK_COMMAND = TOGGLE_LINK_COMMAND;
|
|
423
|
-
function toggleLink(url) {
|
|
424
|
-
var attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
425
|
-
var target = attributes.target,
|
|
426
|
-
title = attributes.title;
|
|
427
|
-
var rel = attributes.rel === undefined ? "noreferrer" : attributes.rel;
|
|
428
|
-
var selection = (0, _lexical.$getSelection)();
|
|
429
|
-
if (!(0, _lexical.$isRangeSelection)(selection)) {
|
|
430
|
-
return;
|
|
431
|
-
}
|
|
432
|
-
var nodes = selection.extract();
|
|
433
|
-
if (url === null) {
|
|
434
|
-
// Remove LinkNodes
|
|
435
|
-
nodes.forEach(function (node) {
|
|
436
|
-
var parent = node.getParent();
|
|
437
|
-
if ($isLinkNode(parent)) {
|
|
438
|
-
var children = parent.getChildren();
|
|
439
|
-
for (var i = 0; i < children.length; i++) {
|
|
440
|
-
parent.insertBefore(children[i]);
|
|
441
|
-
}
|
|
442
|
-
parent.remove();
|
|
443
|
-
}
|
|
444
|
-
});
|
|
445
|
-
} else {
|
|
446
|
-
// Add or merge LinkNodes
|
|
447
|
-
if (nodes.length === 1) {
|
|
448
|
-
var firstNode = nodes[0];
|
|
449
|
-
// if the first node is a LinkNode or if its
|
|
450
|
-
// parent is a LinkNode, we update the URL, target and rel.
|
|
451
|
-
var _linkNode = $isLinkNode(firstNode) ? firstNode : $getLinkAncestor(firstNode);
|
|
452
|
-
if (_linkNode !== null) {
|
|
453
|
-
_linkNode.setURL(url);
|
|
454
|
-
if (target !== undefined) {
|
|
455
|
-
_linkNode.setTarget(target);
|
|
456
|
-
}
|
|
457
|
-
if (rel !== null) {
|
|
458
|
-
_linkNode.setRel(rel);
|
|
459
|
-
}
|
|
460
|
-
if (title !== undefined) {
|
|
461
|
-
_linkNode.setTitle(title);
|
|
462
|
-
}
|
|
463
|
-
return;
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
var prevParent = null;
|
|
467
|
-
var linkNode = null;
|
|
468
|
-
nodes.forEach(function (node) {
|
|
469
|
-
var parent = node.getParent();
|
|
470
|
-
if (parent === linkNode || parent === null || (0, _lexical.$isElementNode)(node) && !node.isInline()) {
|
|
471
|
-
return;
|
|
472
|
-
}
|
|
473
|
-
if ($isLinkNode(parent)) {
|
|
474
|
-
linkNode = parent;
|
|
475
|
-
parent.setURL(url);
|
|
476
|
-
if (target !== undefined) {
|
|
477
|
-
parent.setTarget(target);
|
|
478
|
-
}
|
|
479
|
-
if (rel !== null) {
|
|
480
|
-
linkNode.setRel(rel);
|
|
481
|
-
}
|
|
482
|
-
if (title !== undefined) {
|
|
483
|
-
linkNode.setTitle(title);
|
|
484
|
-
}
|
|
485
|
-
return;
|
|
486
|
-
}
|
|
487
|
-
if (!parent.is(prevParent)) {
|
|
488
|
-
prevParent = parent;
|
|
489
|
-
linkNode = $createLinkNode(url, {
|
|
490
|
-
rel: rel,
|
|
491
|
-
target: target
|
|
492
|
-
});
|
|
493
|
-
if ($isLinkNode(parent)) {
|
|
494
|
-
if (node.getPreviousSibling() === null) {
|
|
495
|
-
parent.insertBefore(linkNode);
|
|
496
|
-
} else {
|
|
497
|
-
parent.insertAfter(linkNode);
|
|
498
|
-
}
|
|
499
|
-
} else {
|
|
500
|
-
node.insertBefore(linkNode);
|
|
501
|
-
}
|
|
502
|
-
}
|
|
503
|
-
if ($isLinkNode(node)) {
|
|
504
|
-
if (node.is(linkNode)) {
|
|
505
|
-
return;
|
|
506
|
-
}
|
|
507
|
-
if (linkNode !== null) {
|
|
508
|
-
var children = node.getChildren();
|
|
509
|
-
for (var i = 0; i < children.length; i++) {
|
|
510
|
-
linkNode.append(children[i]);
|
|
511
|
-
}
|
|
512
|
-
}
|
|
513
|
-
node.remove();
|
|
514
|
-
return;
|
|
515
|
-
}
|
|
516
|
-
if (linkNode !== null) {
|
|
517
|
-
linkNode.append(node);
|
|
518
|
-
}
|
|
519
|
-
});
|
|
520
|
-
}
|
|
521
|
-
}
|
|
522
|
-
function $getLinkAncestor(node) {
|
|
523
|
-
return $getAncestor(node, $isLinkNode);
|
|
524
|
-
}
|
|
525
|
-
function $getAncestor(node, predicate) {
|
|
526
|
-
var parent = node;
|
|
527
|
-
while (parent !== null && (parent = parent.getParent()) !== null && !predicate(parent)) {}
|
|
528
|
-
return parent;
|
|
529
|
-
}
|
|
421
|
+
var TOGGLE_LINK_COMMAND = exports.TOGGLE_LINK_COMMAND = (0, _lexical.createCommand)("TOGGLE_LINK_COMMAND");
|
|
530
422
|
|
|
531
423
|
//# sourceMappingURL=LinkNode.js.map
|