From ffc2b01796c2c54c72d6ffad27bd0d1153bcc821 Mon Sep 17 00:00:00 2001 From: Yanzhen Yu Date: Fri, 12 Oct 2018 15:56:02 +0800 Subject: [PATCH] add data attribute to element when rebuild --- index.d.ts | 2 +- src/rebuild.ts | 23 ++++++----------------- 2 files changed, 7 insertions(+), 18 deletions(-) diff --git a/index.d.ts b/index.d.ts index 0bc43523..85dc9653 100644 --- a/index.d.ts +++ b/index.d.ts @@ -2,7 +2,7 @@ import { serializedNodeWithId, idNodeMap } from './src/types'; export * from './src/types'; export function snapshot(n: Document): [serializedNodeWithId | null, idNodeMap]; -export function rebuild(n: serializedNodeWithId): [Node | null, idNodeMap]; +export function rebuild(n: serializedNodeWithId): Node | null; export function serializeNodeWithId( n: Node, doc: Document, diff --git a/src/rebuild.ts b/src/rebuild.ts index 13029262..223e3be8 100644 --- a/src/rebuild.ts +++ b/src/rebuild.ts @@ -1,11 +1,4 @@ -import { - serializedNodeWithId, - NodeType, - tagMap, - elementNode, - idNodeMap, - INode, -} from './types'; +import { serializedNodeWithId, NodeType, tagMap, elementNode } from './types'; const tagMap: tagMap = { script: 'noscript', @@ -61,16 +54,17 @@ function buildNode(n: serializedNodeWithId): Node | null { } } -function _rebuild(n: serializedNodeWithId, map: idNodeMap): Node | null { +function rebuild(n: serializedNodeWithId): Node | null { const root = buildNode(n); if (!root) { return null; } - (root as INode).__sn = n; - map[n.id] = root as INode; + if (n.type === NodeType.Element) { + (root as HTMLElement).setAttribute('data-rrid', String(n.id)); + } if (n.type === NodeType.Document || n.type === NodeType.Element) { for (const childN of n.childNodes) { - const childNode = _rebuild(childN, map); + const childNode = rebuild(childN); if (!childNode) { console.warn('Failed to rebuild', childN); } else { @@ -81,9 +75,4 @@ function _rebuild(n: serializedNodeWithId, map: idNodeMap): Node | null { return root; } -function rebuild(n: serializedNodeWithId): [Node | null, idNodeMap] { - const idNodeMap: idNodeMap = {}; - return [_rebuild(n, idNodeMap), idNodeMap]; -} - export default rebuild;