Skip to main content

@lexical/mark

Classes​

MarkNode​

Defined in: packages/lexical-mark/src/MarkNode.ts:36

Extends​

Constructors​

Constructor​

new MarkNode(ids?, key?): MarkNode

Defined in: packages/lexical-mark/src/MarkNode.ts:60

Parameters​
ids?​

readonly string[] = NO_IDS

key?​

string

Returns​

MarkNode

Overrides​

ElementNode.constructor

Methods​

$config()​

$config(): BaseStaticNodeConfig & object & StaticNodeTypeAccessor<"mark"> & StaticNodeConfigAccessor<{ extends: typeof ElementNode; }>

Defined in: packages/lexical-mark/src/MarkNode.ts:40

Override this to implement the new static node configuration protocol, this method is called directly on the prototype and must not depend on anything initialized in the constructor. Generally it should be a trivial implementation.

Returns​

BaseStaticNodeConfig & object & StaticNodeTypeAccessor<"mark"> & StaticNodeConfigAccessor<{ extends: typeof ElementNode; }>

Example​
class MyNode extends TextNode {
$config() {
return this.config('my-node', {extends: TextNode});
}
}
Overrides​

ElementNode.$config

addID()​

addID(id): this

Defined in: packages/lexical-mark/src/MarkNode.ts:114

Parameters​
id​

string

Returns​

this

afterCloneFrom()​

afterCloneFrom(prevNode): void

Defined in: packages/lexical-mark/src/MarkNode.ts:44

Perform any state updates on the clone of prevNode that are not already handled by the constructor call in the static clone method. If you have state to update in your clone that is not handled directly by the constructor, it is advisable to override this method but it is required to include a call to super.afterCloneFrom(prevNode) in your implementation. This is only intended to be called by $cloneWithProperties function or via a super call.

Parameters​
prevNode​

this

Returns​

void

Example​
class ClassesTextNode extends TextNode {
// Not shown: static getType, static importJSON, exportJSON, createDOM, updateDOM
__classes = new Set<string>();
static clone(node: ClassesTextNode): ClassesTextNode {
// The inherited TextNode constructor is used here, so
// classes is not set by this method.
return new ClassesTextNode(node.__text, node.__key);
}
afterCloneFrom(node: this): void {
// This calls TextNode.afterCloneFrom and LexicalNode.afterCloneFrom
// for necessary state updates
super.afterCloneFrom(node);
this.__addClasses(node.__classes);
}
// This method is a private implementation detail, it is not
// suitable for the public API because it does not call getWritable
__addClasses(classNames: Iterable<string>): this {
for (const className of classNames) {
this.__classes.add(className);
}
return this;
}
addClass(...classNames: string[]): this {
return this.getWritable().__addClasses(classNames);
}
removeClass(...classNames: string[]): this {
const node = this.getWritable();
for (const className of classNames) {
this.__classes.delete(className);
}
return this;
}
getClasses(): Set<string> {
return this.getLatest().__classes;
}
}
Overrides​

ElementNode.afterCloneFrom

canBeEmpty()​

canBeEmpty(): false

Defined in: packages/lexical-mark/src/MarkNode.ts:147

Returns​

false

Overrides​

ElementNode.canBeEmpty

canInsertTextAfter()​

canInsertTextAfter(): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:143

Returns​

boolean

Overrides​

ElementNode.canInsertTextAfter

canInsertTextBefore()​

canInsertTextBefore(): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:139

Returns​

boolean

Overrides​

ElementNode.canInsertTextBefore

createDOM()​

createDOM(config): HTMLElement

Defined in: packages/lexical-mark/src/MarkNode.ts:65

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​

HTMLElement

Overrides​

ElementNode.createDOM

deleteID()​

deleteID(id): this

Defined in: packages/lexical-mark/src/MarkNode.ts:119

Parameters​
id​

string

Returns​

this

excludeFromCopy()​

excludeFromCopy(destination): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:178

Parameters​
destination​

"clone" | "html"

Returns​

boolean

Overrides​

ElementNode.excludeFromCopy

exportJSON()​

exportJSON(): SerializedMarkNode

Defined in: packages/lexical-mark/src/MarkNode.ts:53

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​

SerializedMarkNode

Overrides​

ElementNode.exportJSON

extractWithChild()​

extractWithChild(child, selection, destination): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:155

Parameters​
child​

LexicalNode

selection​

BaseSelection

destination​

"clone" | "html"

Returns​

boolean

Overrides​

ElementNode.extractWithChild

getIDs()​

getIDs(): string[]

Defined in: packages/lexical-mark/src/MarkNode.ts:104

Returns​

string[]

hasID()​

hasID(id): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:100

Parameters​
id​

string

Returns​

boolean

insertNewAfter()​

insertNewAfter(selection, restoreSelection?): ElementNode | null

Defined in: packages/lexical-mark/src/MarkNode.ts:130

Parameters​
selection​

RangeSelection

restoreSelection?​

boolean = true

Returns​

ElementNode | null

Overrides​

ElementNode.insertNewAfter

isInline()​

isInline(): true

Defined in: packages/lexical-mark/src/MarkNode.ts:151

If the method is overridden and returns true, ensure that canBeEmpty() returns false for the inline node to work correctly

Returns​

true

Overrides​

ElementNode.isInline

setIDs()​

setIDs(ids): this

Defined in: packages/lexical-mark/src/MarkNode.ts:108

Parameters​
ids​

readonly string[]

Returns​

this

updateDOM()​

updateDOM(prevNode, element, config): boolean

Defined in: packages/lexical-mark/src/MarkNode.ts:74

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

element​

HTMLElement

config​

EditorConfig

Returns​

boolean

Overrides​

ElementNode.updateDOM

updateFromJSON()​

updateFromJSON(serializedNode): this

Defined in: packages/lexical-mark/src/MarkNode.ts:49

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<SerializedMarkNode>

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

Type Aliases​

SerializedMarkNode​

SerializedMarkNode = Spread<{ ids: string[]; }, SerializedElementNode>

Defined in: packages/lexical-mark/src/MarkNode.ts:26

Variables​

MarkExtension​

const MarkExtension: LexicalExtension<ExtensionConfigBase, "@lexical/mark", unknown, unknown>

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

Configures MarkNode

Functions​

$createMarkNode()​

$createMarkNode(ids?): MarkNode

Defined in: packages/lexical-mark/src/MarkNode.ts:183

Parameters​

ids?​

readonly string[] = NO_IDS

Returns​

MarkNode


$getMarkIDs()​

$getMarkIDs(node, offset): string[] | null

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

Parameters​

node​

TextNode

offset​

number

Returns​

string[] | null


$isMarkNode()​

$isMarkNode(node): node is MarkNode

Defined in: packages/lexical-mark/src/MarkNode.ts:187

Parameters​

node​

LexicalNode | null

Returns​

node is MarkNode


$unwrapMarkNode()​

$unwrapMarkNode(node): void

Defined in: packages/lexical-mark/src/index.ts:28

Parameters​

node​

MarkNode

Returns​

void


$wrapSelectionInMarkNode()​

$wrapSelectionInMarkNode(selection, isBackward, id, createNode?): void

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

Parameters​

selection​

RangeSelection

isBackward​

boolean

id​

string

createNode?​

(ids) => MarkNode

Returns​

void