UNPKG

@churchapps/apphelper-markdown

Version:
59 lines (58 loc) 1.59 kB
/** * 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; }