rittenhop-dev/versions/5.94.2/node_modules/@tryghost/kg-default-nodes/lib/nodes/TKNode.js

67 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-09-23 19:40:12 -04:00
/* eslint-disable ghost/filenames/match-exported-class */
import {$applyNodeReplacement, TextNode} from 'lexical';
export class TKNode extends TextNode {
static getType() {
return 'tk';
}
static clone(node) {
return new TKNode(node.__text, node.__key);
}
constructor(text, key) {
super(text, key);
}
createDOM(config) {
const element = super.createDOM(config);
const classes = config.theme.tk?.split(' ') || [];
element.classList.add(...classes);
element.dataset.kgTk = true;
return element;
}
static importJSON(serializedNode) {
const node = $createTKNode(serializedNode.text);
node.setFormat(serializedNode.format);
node.setDetail(serializedNode.detail);
node.setMode(serializedNode.mode);
node.setStyle(serializedNode.style);
return node;
}
exportJSON() {
return {
...super.exportJSON(),
type: 'tk'
};
}
canInsertTextBefore() {
return false;
}
isTextEntity() {
return true;
}
}
/**
* Generates a TKNode, which is a string following the format of a # followed by some text, eg. #lexical.
* @param text - The text used inside the TKNode.
* @returns - The TKNode with the embedded text.
*/
export function $createTKNode(text) {
return $applyNodeReplacement(new TKNode(text));
}
/**
* Determines if node is a TKNode.
* @param node - The node to be checked.
* @returns true if node is a TKNode, false otherwise.
*/
export function $isTKNode(node) {
return node instanceof TKNode;
}