@lexical/overflow
Version:
This package contains selection overflow helpers and nodes for Lexical.
59 lines (54 loc) • 1.43 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 { ElementNode, $applyNodeReplacement } from '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 ElementNode {
/** @internal */
$config() {
return this.config('overflow', {
$transform(node) {
if (node.isEmpty()) {
node.remove();
}
},
extends: 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 $applyNodeReplacement(new OverflowNode());
}
function $isOverflowNode(node) {
return node instanceof OverflowNode;
}
export { $createOverflowNode, $isOverflowNode, OverflowNode };