@churchapps/apphelper-markdown
Version:
ChurchApps markdown/lexical editor components
59 lines (58 loc) • 1.59 kB
JavaScript
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*/
import { $applyNodeReplacement, TextNode } from 'lexical';
export class EmojiNode extends TextNode {
exportJSON() {
const json = {
...super.exportJSON(),
type: 'emoji'
};
return json;
}
static getType() {
return 'emoji';
}
static clone(node) {
return new EmojiNode(node.__text, node.__key);
}
static importJSON(serializedNode) {
const node = new EmojiNode(serializedNode.text);
return node;
}
/*
constructor(text: string, key?: NodeKey) {
super(text, key);
}
*/
createDOM(config) {
const dom = document.createElement('span');
const inner = super.createDOM(config);
dom.className = 'material-symbols-outlined';
dom.appendChild(inner);
return dom;
}
updateDOM(prevNode, dom, config) {
const inner = dom.firstChild;
if (inner === null) {
return true;
}
super.updateDOM(prevNode, inner, config);
return false;
}
}
export function $isEmojiNode(node) {
return node instanceof EmojiNode;
}
export function $createEmojiNode(emojiText) {
const node = new EmojiNode(emojiText).setMode('token');
return $applyNodeReplacement(node);
}
export function $toggleEmojiNode(emojiText) {
const node = new EmojiNode(emojiText).setMode('token');
return node;
}