MCPcopy
hub / github.com/rrweb-io/rrweb / createTree

Function createTree

packages/rrdom/test/diff.test.ts:59–91  ·  view source on GitHub ↗

* Create a document tree or a RRDom tree according to the given ElementType data. * * @param treeNode the given data structure * @param rrDocument determine to generate a RRDom tree. * @param mirror determine to generate the Dom tree.

(
  treeNode: ElementType,
  rrDocument?: RRDocument,
  mirror: NodeMirror = createMirror(),
)

Source from the content-addressed store, hash-verified

57 * @param mirror determine to generate the Dom tree.
58 */
59function createTree(
60 treeNode: ElementType,
61 rrDocument?: RRDocument,
62 mirror: NodeMirror = createMirror(),
63): Node | RRNode {
64 type TNode = typeof rrDocument extends RRDocument ? RRNode : Node;
65 let root: TNode;
66
67 root = (
68 rrDocument
69 ? rrDocument.createElement(treeNode.tagName)
70 : document.createElement(treeNode.tagName)
71 ) as TNode;
72
73 const sn = Object.assign({}, elementSn, {
74 tagName: treeNode.tagName,
75 id: treeNode.id,
76 });
77
78 if (rrDocument) {
79 rrDocument.mirror.add(root as unknown as RRNode, sn);
80 } else {
81 mirror.add(root as unknown as Node, sn);
82 }
83
84 if (treeNode.children)
85 for (let child of treeNode.children) {
86 const childNode = createTree(child, rrDocument, mirror) as TNode;
87 if (rrDocument) root.appendChild(childNode);
88 else root.appendChild(childNode);
89 }
90 return root;
91}
92
93function shuffle(list: number[]) {
94 let currentIndex = list.length - 1;

Callers 1

diff.test.tsFile · 0.85

Calls 4

createMirrorFunction · 0.90
createElementMethod · 0.65
addMethod · 0.65
appendChildMethod · 0.65

Tested by

no test coverage detected