Skip to main content

@lexical/link

Classes

AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:337

Extends

Constructors

Constructor

new AutoLinkNode(url, attributes, key?): AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:342

Parameters
url

string = ''

attributes

AutoLinkAttributes = {}

key?

string

Returns

AutoLinkNode

Overrides

LinkNode.constructor

Properties

__isUnlinked

__isUnlinked: boolean

Defined in: packages/lexical-link/src/index.ts:340

Indicates whether the autolink was ever unlinked. *

Methods

canBeEmpty()

canBeEmpty(): false

Defined in: packages/lexical-link/src/index.ts:251

Returns

false

Inherited from

LinkNode.canBeEmpty

canInsertTextAfter()

canInsertTextAfter(): false

Defined in: packages/lexical-link/src/index.ts:247

Returns

false

Inherited from

LinkNode.canInsertTextAfter

canInsertTextBefore()

canInsertTextBefore(): false

Defined in: packages/lexical-link/src/index.ts:243

Returns

false

Inherited from

LinkNode.canInsertTextBefore

createDOM()

createDOM(config): LinkHTMLElementType

Defined in: packages/lexical-link/src/index.ts:381

Called during the reconciliation process to determine which nodes to insert into the DOM for this Lexical Node.

This method must return exactly one HTMLElement. Nested elements are not supported.

Do not attempt to update the Lexical EditorState during this phase of the update lifecycle.

Parameters
config

EditorConfig

Returns

LinkHTMLElementType

Overrides

LinkNode.createDOM

exportJSON()

exportJSON(): SerializedAutoLinkNode

Defined in: packages/lexical-link/src/index.ts:417

Controls how the this node is serialized to JSON. This is important for copy and paste between Lexical editors sharing the same namespace. It's also important if you're serializing to JSON for persistent storage somewhere. See Serialization & Deserialization.

Returns

SerializedAutoLinkNode

Overrides

LinkNode.exportJSON

extractWithChild()

extractWithChild(child, selection, destination): boolean

Defined in: packages/lexical-link/src/index.ts:259

Parameters
child

LexicalNode

selection

BaseSelection

destination

"clone" | "html"

Returns

boolean

Inherited from

LinkNode.extractWithChild

getIsUnlinked()

getIsUnlinked(): boolean

Defined in: packages/lexical-link/src/index.ts:371

Returns

boolean

getRel()

getRel(): null | string

Defined in: packages/lexical-link/src/index.ts:210

Returns

null | string

Inherited from

LinkNode.getRel

getTarget()

getTarget(): null | string

Defined in: packages/lexical-link/src/index.ts:200

Returns

null | string

Inherited from

LinkNode.getTarget

getTitle()

getTitle(): null | string

Defined in: packages/lexical-link/src/index.ts:220

Returns

null | string

Inherited from

LinkNode.getTitle

getType()

getType(): string

Defined in: packages/lexical/src/LexicalNode.ts:562

Returns the string type of this node.

Returns

string

Inherited from

LinkNode.getType

getURL()

getURL(): string

Defined in: packages/lexical-link/src/index.ts:190

Returns

string

Inherited from

LinkNode.getURL

insertNewAfter()

insertNewAfter(selection, restoreSelection): null | ElementNode

Defined in: packages/lexical-link/src/index.ts:424

Parameters
selection

RangeSelection

restoreSelection

boolean = true

Returns

null | ElementNode

Overrides

LinkNode.insertNewAfter

isEmailURI()

isEmailURI(): boolean

Defined in: packages/lexical-link/src/index.ts:278

Returns

boolean

Inherited from

LinkNode.isEmailURI

isInline()

isInline(): true

Defined in: packages/lexical-link/src/index.ts:255

Returns

true

Inherited from

LinkNode.isInline

isWebSiteURI()

isWebSiteURI(): boolean

Defined in: packages/lexical-link/src/index.ts:282

Returns

boolean

Inherited from

LinkNode.isWebSiteURI

sanitizeUrl()

sanitizeUrl(url): string

Defined in: packages/lexical-link/src/index.ts:166

Parameters
url

string

Returns

string

Inherited from

LinkNode.sanitizeUrl

setIsUnlinked()

setIsUnlinked(value): this

Defined in: packages/lexical-link/src/index.ts:375

Parameters
value

boolean

Returns

this

setRel()

setRel(rel): this

Defined in: packages/lexical-link/src/index.ts:214

Parameters
rel

null | string

Returns

this

Inherited from

LinkNode.setRel

setTarget()

setTarget(target): this

Defined in: packages/lexical-link/src/index.ts:204

Parameters
target

null | string

Returns

this

Inherited from

LinkNode.setTarget

setTitle()

setTitle(title): this

Defined in: packages/lexical-link/src/index.ts:224

Parameters
title

null | string

Returns

this

Inherited from

LinkNode.setTitle

setURL()

setURL(url): this

Defined in: packages/lexical-link/src/index.ts:194

Parameters
url

string

Returns

this

Inherited from

LinkNode.setURL

updateDOM()

updateDOM(prevNode, anchor, config): boolean

Defined in: packages/lexical-link/src/index.ts:389

Called when a node changes and should update the DOM in whatever way is necessary to make it align with any changes that might have happened during the update.

Returning "true" here will cause lexical to unmount and recreate the DOM node (by calling createDOM). You would need to do this if the element tag changes, for instance.

Parameters
prevNode

this

anchor

LinkHTMLElementType

config

EditorConfig

Returns

boolean

Overrides

LinkNode.updateDOM

updateFromJSON()

updateFromJSON(serializedNode): this

Defined in: packages/lexical-link/src/index.ts:404

Update this LexicalNode instance from serialized JSON. It's recommended to implement as much logic as possible in this method instead of the static importJSON method, so that the functionality can be inherited in subclasses.

The LexicalUpdateJSON utility type should be used to ignore any type, version, or children properties in the JSON so that the extended JSON from subclasses are acceptable parameters for the super call.

If overridden, this method must call super.

Parameters
serializedNode

LexicalUpdateJSON<SerializedAutoLinkNode>

Returns

this

Example
class MyTextNode extends TextNode {
// ...
static importJSON(serializedNode: SerializedMyTextNode): MyTextNode {
return $createMyTextNode()
.updateFromJSON(serializedNode);
}
updateFromJSON(
serializedNode: LexicalUpdateJSON<SerializedMyTextNode>,
): this {
return super.updateFromJSON(serializedNode)
.setMyProperty(serializedNode.myProperty);
}
}
Overrides

LinkNode.updateFromJSON

updateLinkDOM()

updateLinkDOM(prevNode, anchor, config): void

Defined in: packages/lexical-link/src/index.ts:112

Parameters
prevNode

null | AutoLinkNode

anchor

LinkHTMLElementType

config

EditorConfig

Returns

void

Inherited from

LinkNode.updateLinkDOM

clone()

static clone(node): AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:358

Clones this node, creating a new node with a different key and adding it to the EditorState (but not attaching it anywhere!). All nodes must implement this method.

Parameters
node

AutoLinkNode

Returns

AutoLinkNode

Overrides

LinkNode.clone

getType()

static getType(): string

Defined in: packages/lexical-link/src/index.ts:354

Returns the string type of this node. Every node must implement this and it MUST BE UNIQUE amongst nodes registered on the editor.

Returns

string

Overrides

LinkNode.getType

importDOM()

static importDOM(): null

Defined in: packages/lexical-link/src/index.ts:412

Returns

null

Overrides

LinkNode.importDOM

importJSON()

static importJSON(serializedNode): AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:400

Controls how the this node is deserialized from JSON. This is usually boilerplate, but provides an abstraction between the node implementation and serialized interface that can be important if you ever make breaking changes to a node schema (by adding or removing properties). See Serialization & Deserialization.

Parameters
serializedNode

SerializedAutoLinkNode

Returns

AutoLinkNode

Overrides

LinkNode.importJSON


LinkNode

Defined in: packages/lexical-link/src/index.ts:70

Extends

Extended by

Constructors

Constructor

new LinkNode(url, attributes, key?): LinkNode

Defined in: packages/lexical-link/src/index.ts:92

Parameters
url

string = ''

attributes

LinkAttributes = {}

key?

string

Returns

LinkNode

Overrides

ElementNode.constructor

Methods

canBeEmpty()

canBeEmpty(): false

Defined in: packages/lexical-link/src/index.ts:251

Returns

false

Overrides

ElementNode.canBeEmpty

canInsertTextAfter()

canInsertTextAfter(): false

Defined in: packages/lexical-link/src/index.ts:247

Returns

false

Overrides

ElementNode.canInsertTextAfter

canInsertTextBefore()

canInsertTextBefore(): false

Defined in: packages/lexical-link/src/index.ts:243

Returns

false

Overrides

ElementNode.canInsertTextBefore

createDOM()

createDOM(config): LinkHTMLElementType

Defined in: packages/lexical-link/src/index.ts:105

Called during the reconciliation process to determine which nodes to insert into the DOM for this Lexical Node.

This method must return exactly one HTMLElement. Nested elements are not supported.

Do not attempt to update the Lexical EditorState during this phase of the update lifecycle.

Parameters
config

EditorConfig

Returns

LinkHTMLElementType

Overrides

ElementNode.createDOM

exportJSON()

exportJSON(): SerializedLinkNode | SerializedAutoLinkNode

Defined in: packages/lexical-link/src/index.ts:180

Controls how the this node is serialized to JSON. This is important for copy and paste between Lexical editors sharing the same namespace. It's also important if you're serializing to JSON for persistent storage somewhere. See Serialization & Deserialization.

Returns

SerializedLinkNode | SerializedAutoLinkNode

Overrides

ElementNode.exportJSON

extractWithChild()

extractWithChild(child, selection, destination): boolean

Defined in: packages/lexical-link/src/index.ts:259

Parameters
child

LexicalNode

selection

BaseSelection

destination

"clone" | "html"

Returns

boolean

Overrides

ElementNode.extractWithChild

getRel()

getRel(): null | string

Defined in: packages/lexical-link/src/index.ts:210

Returns

null | string

getTarget()

getTarget(): null | string

Defined in: packages/lexical-link/src/index.ts:200

Returns

null | string

getTitle()

getTitle(): null | string

Defined in: packages/lexical-link/src/index.ts:220

Returns

null | string

getURL()

getURL(): string

Defined in: packages/lexical-link/src/index.ts:190

Returns

string

insertNewAfter()

insertNewAfter(_, restoreSelection): null | ElementNode

Defined in: packages/lexical-link/src/index.ts:230

Parameters
_

RangeSelection

restoreSelection

boolean = true

Returns

null | ElementNode

Overrides

ElementNode.insertNewAfter

isEmailURI()

isEmailURI(): boolean

Defined in: packages/lexical-link/src/index.ts:278

Returns

boolean

isInline()

isInline(): true

Defined in: packages/lexical-link/src/index.ts:255

Returns

true

Overrides

ElementNode.isInline

isWebSiteURI()

isWebSiteURI(): boolean

Defined in: packages/lexical-link/src/index.ts:282

Returns

boolean

sanitizeUrl()

sanitizeUrl(url): string

Defined in: packages/lexical-link/src/index.ts:166

Parameters
url

string

Returns

string

setRel()

setRel(rel): this

Defined in: packages/lexical-link/src/index.ts:214

Parameters
rel

null | string

Returns

this

setTarget()

setTarget(target): this

Defined in: packages/lexical-link/src/index.ts:204

Parameters
target

null | string

Returns

this

setTitle()

setTitle(title): this

Defined in: packages/lexical-link/src/index.ts:224

Parameters
title

null | string

Returns

this

setURL()

setURL(url): this

Defined in: packages/lexical-link/src/index.ts:194

Parameters
url

string

Returns

this

updateDOM()

updateDOM(prevNode, anchor, config): boolean

Defined in: packages/lexical-link/src/index.ts:135

Called when a node changes and should update the DOM in whatever way is necessary to make it align with any changes that might have happened during the update.

Returning "true" here will cause lexical to unmount and recreate the DOM node (by calling createDOM). You would need to do this if the element tag changes, for instance.

Parameters
prevNode

this

anchor

LinkHTMLElementType

config

EditorConfig

Returns

boolean

Overrides

ElementNode.updateDOM

updateFromJSON()

updateFromJSON(serializedNode): this

Defined in: packages/lexical-link/src/index.ts:157

Update this LexicalNode instance from serialized JSON. It's recommended to implement as much logic as possible in this method instead of the static importJSON method, so that the functionality can be inherited in subclasses.

The LexicalUpdateJSON utility type should be used to ignore any type, version, or children properties in the JSON so that the extended JSON from subclasses are acceptable parameters for the super call.

If overridden, this method must call super.

Parameters
serializedNode

LexicalUpdateJSON<SerializedLinkNode>

Returns

this

Example
class MyTextNode extends TextNode {
// ...
static importJSON(serializedNode: SerializedMyTextNode): MyTextNode {
return $createMyTextNode()
.updateFromJSON(serializedNode);
}
updateFromJSON(
serializedNode: LexicalUpdateJSON<SerializedMyTextNode>,
): this {
return super.updateFromJSON(serializedNode)
.setMyProperty(serializedNode.myProperty);
}
}
Overrides

ElementNode.updateFromJSON

updateLinkDOM()

updateLinkDOM(prevNode, anchor, config): void

Defined in: packages/lexical-link/src/index.ts:112

Parameters
prevNode

null | LinkNode

anchor

LinkHTMLElementType

config

EditorConfig

Returns

void

clone()

static clone(node): LinkNode

Defined in: packages/lexical-link/src/index.ts:84

Clones this node, creating a new node with a different key and adding it to the EditorState (but not attaching it anywhere!). All nodes must implement this method.

Parameters
node

LinkNode

Returns

LinkNode

Overrides

ElementNode.clone

getType()

static getType(): string

Defined in: packages/lexical-link/src/index.ts:80

Returns the string type of this node. Every node must implement this and it MUST BE UNIQUE amongst nodes registered on the editor.

Returns

string

Overrides

ElementNode.getType

importDOM()

static importDOM(): null | DOMConversionMap

Defined in: packages/lexical-link/src/index.ts:144

Returns

null | DOMConversionMap

Overrides

ElementNode.importDOM

importJSON()

static importJSON(serializedNode): LinkNode

Defined in: packages/lexical-link/src/index.ts:153

Controls how the this node is deserialized from JSON. This is usually boilerplate, but provides an abstraction between the node implementation and serialized interface that can be important if you ever make breaking changes to a node schema (by adding or removing properties). See Serialization & Deserialization.

Parameters
serializedNode

SerializedLinkNode

Returns

LinkNode

Overrides

ElementNode.importJSON

Type Aliases

AutoLinkAttributes

AutoLinkAttributes = Partial<Spread<LinkAttributes, { isUnlinked?: boolean; }>>

Defined in: packages/lexical-link/src/index.ts:48


LinkAttributes

LinkAttributes = object

Defined in: packages/lexical-link/src/index.ts:42

Properties

rel?

optional rel: null | string

Defined in: packages/lexical-link/src/index.ts:43

target?

optional target: null | string

Defined in: packages/lexical-link/src/index.ts:44

title?

optional title: null | string

Defined in: packages/lexical-link/src/index.ts:45


SerializedAutoLinkNode

SerializedAutoLinkNode = Spread<{ isUnlinked: boolean; }, SerializedLinkNode>

Defined in: packages/lexical-link/src/index.ts:328


SerializedLinkNode

SerializedLinkNode = Spread<{ url: string; }, Spread<LinkAttributes, SerializedElementNode>>

Defined in: packages/lexical-link/src/index.ts:52

Variables

const TOGGLE_LINK_COMMAND: LexicalCommand<string | object & LinkAttributes | null>

Defined in: packages/lexical-link/src/index.ts:471


const toggleLink: (url, attributes) => void = $toggleLink

Defined in: packages/lexical-link/src/index.ts:702

Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null, but saves any children and brings them up to the parent node.

Parameters

url

The URL the link directs to.

null | string

attributes

LinkAttributes = {}

Optional HTML a tag attributes. { target, rel, title }

Returns

void

Deprecated

renamed to $toggleLink by @lexical/eslint-plugin rules-of-lexical

Functions

$createAutoLinkNode()

$createAutoLinkNode(url, attributes?): AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:453

Takes a URL and creates an AutoLinkNode. AutoLinkNodes are generally automatically generated during typing, which is especially useful when a button to generate a LinkNode is not practical.

Parameters

url

string = ''

The URL the LinkNode should direct to.

attributes?

Partial<Spread<LinkAttributes, { isUnlinked?: boolean; }>>

Optional HTML a tag attributes. { target, rel, title }

Returns

AutoLinkNode

The LinkNode.


$createLinkNode()

$createLinkNode(url, attributes?): LinkNode

Defined in: packages/lexical-link/src/index.ts:310

Takes a URL and creates a LinkNode.

Parameters

url

string = ''

The URL the LinkNode should direct to.

attributes?

LinkAttributes

Optional HTML a tag attributes { target, rel, title }

Returns

LinkNode

The LinkNode.


$isAutoLinkNode()

$isAutoLinkNode(node): node is AutoLinkNode

Defined in: packages/lexical-link/src/index.ts:465

Determines if node is an AutoLinkNode.

Parameters

node

The node to be checked.

undefined | null | LexicalNode

Returns

node is AutoLinkNode

true if node is an AutoLinkNode, false otherwise.


$isLinkNode()

$isLinkNode(node): node is LinkNode

Defined in: packages/lexical-link/src/index.ts:322

Determines if node is a LinkNode.

Parameters

node

The node to be checked.

undefined | null | LexicalNode

Returns

node is LinkNode

true if node is a LinkNode, false otherwise.


$toggleLink(url, attributes): void

Defined in: packages/lexical-link/src/index.ts:541

Generates or updates a LinkNode. It can also delete a LinkNode if the URL is null, but saves any children and brings them up to the parent node.

Parameters

url

The URL the link directs to.

null | string

attributes

LinkAttributes = {}

Optional HTML a tag attributes. { target, rel, title }

Returns

void


formatUrl()

formatUrl(url): string

Defined in: packages/lexical-link/src/index.ts:723

Formats a URL string by adding appropriate protocol if missing

Parameters

url

string

URL to format

Returns

string

Formatted URL with appropriate protocol