UNPKG

@churchapps/apphelper-markdown

Version:

ChurchApps markdown/lexical editor components

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; }