UNPKG

@lexical/overflow

Version:

This package contains selection overflow helpers and nodes for Lexical.

72 lines (65 loc) 1.72 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; } /** * Configures {@link OverflowNode} */ const OverflowExtension = lexical.defineExtension({ name: '@lexical/overflow', nodes: () => [OverflowNode] }); exports.$createOverflowNode = $createOverflowNode; exports.$isOverflowNode = $isOverflowNode; exports.OverflowExtension = OverflowExtension; exports.OverflowNode = OverflowNode;