import {
DOMConversionFn,
- DOMConversionMap,
+ DOMConversionMap, EditorConfig,
LexicalNode,
Spread
} from "lexical";
-import {EditorConfig} from "lexical/LexicalEditor";
import {$isListItemNode, ListItemNode, ListNode, ListType, SerializedListNode} from "@lexical/list";
import {$createCustomListItemNode} from "./custom-list-item";
+import {extractDirectionFromElement} from "./_common";
export type SerializedCustomListNode = Spread<{
static clone(node: CustomListNode) {
const newNode = new CustomListNode(node.__listType, node.__start, node.__key);
newNode.__id = node.__id;
+ newNode.__dir = node.__dir;
return newNode;
}
dom.setAttribute('id', this.__id);
}
+ if (this.__dir) {
+ dom.setAttribute('dir', this.__dir);
+ }
+
return dom;
}
+ updateDOM(prevNode: ListNode, dom: HTMLElement, config: EditorConfig): boolean {
+ return super.updateDOM(prevNode, dom, config) ||
+ prevNode.__dir !== this.__dir;
+ }
+
exportJSON(): SerializedCustomListNode {
return {
...super.exportJSON(),
static importJSON(serializedNode: SerializedCustomListNode): CustomListNode {
const node = $createCustomListNode(serializedNode.listType);
node.setId(serializedNode.id);
+ node.setDirection(serializedNode.direction);
return node;
}
(baseResult.node as CustomListNode).setId(element.id);
}
+ if (element.dir && baseResult?.node) {
+ (baseResult.node as CustomListNode).setDirection(extractDirectionFromElement(element));
+ }
+
if (baseResult) {
baseResult.after = $normalizeChildren;
}