Spaces:
Running
Running
import type { | |
EditorConfig, | |
LexicalNode, | |
NodeKey, | |
SerializedTextNode, | |
} from 'lexical' | |
import { | |
$applyNodeReplacement, | |
TextNode, | |
} from 'lexical' | |
export class VariableValueBlockNode extends TextNode { | |
static getType(): string { | |
return 'variable-value-block' | |
} | |
static clone(node: VariableValueBlockNode): VariableValueBlockNode { | |
return new VariableValueBlockNode(node.__text, node.__key) | |
} | |
constructor(text: string, key?: NodeKey) { | |
super(text, key) | |
} | |
createDOM(config: EditorConfig): HTMLElement { | |
const element = super.createDOM(config) | |
element.classList.add('inline-flex', 'items-center', 'px-0.5', 'h-[22px]', 'text-[#155EEF]', 'rounded-[5px]', 'align-middle') | |
return element | |
} | |
static importJSON(serializedNode: SerializedTextNode): TextNode { | |
const node = $createVariableValueBlockNode(serializedNode.text) | |
node.setFormat(serializedNode.format) | |
node.setDetail(serializedNode.detail) | |
node.setMode(serializedNode.mode) | |
node.setStyle(serializedNode.style) | |
return node | |
} | |
exportJSON(): SerializedTextNode { | |
return { | |
detail: this.getDetail(), | |
format: this.getFormat(), | |
mode: this.getMode(), | |
style: this.getStyle(), | |
text: this.getTextContent(), | |
type: 'variable-value-block', | |
version: 1, | |
} | |
} | |
canInsertTextBefore(): boolean { | |
return false | |
} | |
} | |
export function $createVariableValueBlockNode(text = ''): VariableValueBlockNode { | |
return $applyNodeReplacement(new VariableValueBlockNode(text)) | |
} | |
export function $isVariableValueNodeBlock( | |
node: LexicalNode | null | undefined, | |
): node is VariableValueBlockNode { | |
return node instanceof VariableValueBlockNode | |
} | |