Commit Graph

11 Commits

Author SHA1 Message Date
Yanzhen Yu
cff1617959 fix mutation filter in recorder and change the order of apply mutations in replayer
This change include two critical fix for both recorder and replayer.

In the recorder, previously we filter text and attribute mutations by check its target id,
but this was a wrong approach because removed node also has id at the callback moment.
We corrected this by checking whether the mirror map still has the target id in its keys.

In the replayer side, the issue was we got exceptions when calling insertBefore which says
the ref node was not the child node of the caller node. This will happen when the previous
or next sibling has been removed in the same callback but the previousId or nextId was
recorded.
After apply remove node mutations before add node mutations, we can make sure the removed
siblings will not exist in the mirror map when apply add node mutations. When we get node
from mirror map with an removed id, we will get null and pass it to insertBefore which
is valid.
As a side note, this apply order is safe because we ensured all the remove node mutations
do not include removing newly added nodes in the same callback.
2018-10-31 12:06:41 +08:00
Yanzhen Yu
d588f738b8 rewrite mutation observer handler with lazy child list calculation 2018-10-22 23:08:05 +08:00
Yanzhen Yu
a88a79d821 add meta event and fix childList observer, also update related replayer 2018-10-22 10:48:56 +08:00
Yanzhen Yu
6c8cf5c379 implemented the play any offset feature 2018-10-18 16:24:01 +08:00
Yanzhen Yu
8186f05e1c export more props of replayer to the UI 2018-10-17 17:47:38 +08:00
Yanzhen Yu
d827fdc947 impl dynamic config and pause. Bump 0.3.0 2018-10-16 15:31:56 +08:00
Yanzhen Yu
a98df40c93 update id map when DOM changed and handle element scroll event 2018-10-15 19:28:36 +08:00
Yanzhen Yu
2816726e23 impl replay the mutations and mouse interactions 2018-10-15 12:37:47 +08:00
Yanzhen Yu
95713f1ea7 apply viewport resize and input event changes 2018-10-12 16:04:07 +08:00
Yanzhen Yu
f4bf94aa2d use raf to impl a more accurate timer and replay events async 2018-10-12 14:30:44 +08:00
Yanzhen Yu
e93fd177be import snapshot rebuilder into replayer 2018-10-12 13:33:53 +08:00