UNPKG

@lexical/overflow

Version:

This package contains selection overflow helpers and nodes for Lexical.

63 lines (57 loc) 1.51 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. * */ 'use strict'; var lexical = require('lexical'); /** * 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. * */ /** @noInheritDoc */ class OverflowNode extends lexical.ElementNode { /** @internal */ $config() { return this.config('overflow', { $transform(node) { if (node.isEmpty()) { node.remove(); } }, extends: lexical.ElementNode }); } createDOM(config) { const div = document.createElement('span'); const className = config.theme.characterLimit; if (typeof className === 'string') { div.className = className; } return div; } updateDOM(prevNode, dom) { return false; } insertNewAfter(selection, restoreSelection = true) { const parent = this.getParentOrThrow(); return parent.insertNewAfter(selection, restoreSelection); } excludeFromCopy() { return true; } } function $createOverflowNode() { return lexical.$applyNodeReplacement(new OverflowNode()); } function $isOverflowNode(node) { return node instanceof OverflowNode; } exports.$createOverflowNode = $createOverflowNode; exports.$isOverflowNode = $isOverflowNode; exports.OverflowNode = OverflowNode;