phx-react
Version:
PHX REACT
112 lines • 4.27 kB
JavaScript
import { $applyNodeReplacement, $isTextNode, TextNode, } from 'lexical';
// @ts-ignore
export class ExtendedTextNode extends TextNode {
constructor(text, key) {
super(text, key);
}
// @ts-ignore
static getType() {
return 'extended-text';
}
// @ts-ignore
static clone(node) {
return new ExtendedTextNode(node.__text, node.__key);
}
// @ts-ignore
static importDOM() {
const importers = TextNode.importDOM();
return {
...importers,
code: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.code),
priority: 1,
}),
em: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.em),
priority: 1,
}),
span: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.span),
priority: 1,
}),
strong: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.strong),
priority: 1,
}),
sub: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.sub),
priority: 1,
}),
sup: () => ({
conversion: patchStyleConversion(importers === null || importers === void 0 ? void 0 : importers.sup),
priority: 1,
}),
};
}
// @ts-ignore
static importJSON(serializedNode) {
return TextNode.importJSON(serializedNode);
}
// @ts-ignore
isSimpleText() {
return this.__type === 'extended-text' && this.__mode === 0;
}
// @ts-ignore
exportJSON() {
return {
...super.exportJSON(),
type: 'extended-text',
version: 1,
};
}
}
export function $createExtendedTextNode(text) {
// @ts-ignore
return $applyNodeReplacement(new ExtendedTextNode(text));
}
export function $isExtendedTextNode(node) {
return node instanceof ExtendedTextNode;
}
function patchStyleConversion(originalDOMConverter) {
return (node) => {
const original = originalDOMConverter === null || originalDOMConverter === void 0 ? void 0 : originalDOMConverter(node);
if (!original) {
return null;
}
const originalOutput = original.conversion(node);
if (!originalOutput) {
return originalOutput;
}
const backgroundColor = node.style.backgroundColor;
const color = node.style.color;
const fontFamily = node.style.fontFamily;
const fontWeight = node.style.fontWeight;
const fontSize = node.style.fontSize;
const textDecoration = node.style.textDecoration;
return {
...originalOutput,
forChild: (lexicalNode, parent) => {
var _a;
const originalForChild = (_a = originalOutput === null || originalOutput === void 0 ? void 0 : originalOutput.forChild) !== null && _a !== void 0 ? _a : ((x) => x);
const result = originalForChild(lexicalNode, parent);
if ($isTextNode(result)) {
const style = [
backgroundColor ? `background-color: ${backgroundColor}` : null,
color ? `color: ${color}` : null,
fontFamily ? `font-family: ${fontFamily}` : null,
fontWeight ? `font-weight: ${fontWeight}` : null,
fontSize ? `font-size: ${fontSize}` : null,
textDecoration ? `text-decoration: ${textDecoration}` : null,
]
.filter((value) => value != null)
.join('; ');
if (style.length > 0) {
return result.setStyle(style);
}
}
return result;
},
};
};
}
//# sourceMappingURL=ExtendedTextNode.js.map