59 lines
1.4 KiB
JavaScript
59 lines
1.4 KiB
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 };
|