Commit Graph

92 Commits

Author SHA1 Message Date
肉肉肉肉
b569b84794 new feature: add custom style in replayer (#87)
* new feature: add custom style in replayer

* concat style rules for loop
2019-07-10 12:33:54 +08:00
Yanzhen Yu
d43aa974f5 fix#71 fix touch event listener and throttle touch move callback 2019-06-17 18:07:30 +08:00
Yanzhen Yu
52ec5d435b pass mask input option to snapshot 2019-06-15 14:45:42 +08:00
Yanzhen Yu
a51313d973 tweak some code for mask input option 2019-06-15 14:38:03 +08:00
Sebastian Jakob
189df87b9d Option to mask inputs (#80)
* Option to mask inputs

Added option 'maskAllInputs' to replace all user inputs with an Asterisk.

* Update types.d.ts
2019-06-15 12:52:08 +08:00
Yanzhen Yu
d32b31f3e3 remove mitt typings namesapce 2019-06-05 17:33:20 +08:00
Yanzhen Yu
6d3b9c2345 Upgrade the DOM mutation observer
This is an important patch contains some crtical bug fixes for
the DOM mutation observer.
Previously the observer did not handle complex DOM movement very
well. So in this patch we optimized this by distinguishing moved
node better and added a resolving queue to avoid the error caused
by ordering.
2019-06-05 16:39:29 +08:00
Marcos Passos
c1b8651c11 Export useful enums (#77)
Fixes #74
2019-05-31 23:25:44 +08:00
Yanzhen Yu
627ed9439b emit mouse interaction event during replay 2019-05-31 15:28:45 +08:00
yz-yu
2398f5c0b1 start to support live mode (#73)
1. add a liveMode flag to config, when liveMode is set, the timer
will keep running even though all the actions casted
2. add a public method addEvent, which will cast newly added event
in sync
3. move mouse in sync mode with the latest position info
2019-05-26 16:02:52 +08:00
Yanzhen Yu
107296eee3 add the inline stylesheet option when recording 2019-05-12 21:10:34 +08:00
Yanzhen Yu
2d8d4b0c19 fix #62 accept RegExp type block class config 2019-04-14 16:11:54 +08:00
Yanzhen Yu
faed623986 resume with time offset when after wait stylesheet load 2019-04-09 17:00:02 +08:00
Yanzhen Yu
059cbe4fd8 move browser related APIs into runtime 2019-04-02 21:29:14 +08:00
Yanzhen Yu
c04e4bf0a5 impl #23 add custom privacy selectors 2019-04-02 00:25:08 +08:00
Yanzhen Yu
d9ffe4c736 check attribute is null instead of any falsy value 2019-02-17 15:54:14 +08:00
Yanzhen Yu
406e7a8d39 update mutation observer handler
1. deep delete from adds set when node was dropped
2. remove node from dropped set when node was added again
2019-02-03 23:07:35 +08:00
Yanzhen Yu
a69bf87f7f check whether the removed node's ancestors has been removed 2019-02-01 23:13:00 +08:00
Yanzhen Yu
ebd1457ce2 turn some warning message into debug message 2019-01-30 00:47:41 +08:00
yz-yu
22330207eb improve mouse record and replay (#49)
Increase the throttle value of collecting mouse move and add a
transition time to the replayer's mouse. This may decrease the
size of mouse move data and make the replay movement more smooth.
Another change is to move and hover when click event is replayed.
This is to improve the replay of some programmatic click, such as
E2E tests.
2019-01-25 18:25:35 +08:00
Yanzhen Yu
6abf4fd4a0 move all events to an enum and update guide 2019-01-25 17:18:51 +08:00
Yanzhen Yu
264c04b3d6 resolve #47 update dependency 2019-01-24 18:44:37 +08:00
Yanzhen Yu
f03202fcec resolve #48 check focus and blur before call since the target can be HTMLDocument in firefox 2019-01-23 15:02:13 +08:00
yz-yu
3daedfa284 fix remove node observer and check on the result of getNode (#43)
* check removed node and its parent before collect

* add more more checks on the result of getNode
2019-01-21 19:18:51 +08:00
yz-yu
cedc87c69e add checkout config to recorder (#36)
* add checkout config to recorder

* add test cases for checkout feature and extract assertSnapshot method
2019-01-11 10:52:04 +08:00
Yanzhen Yu
b45655ea3a expose iframe as public property 2019-01-07 19:40:38 +08:00
Yanzhen Yu
6973ce2c8d resolve #13 add warning messages when target is not found 2019-01-05 14:18:07 +08:00
Yanzhen Yu
0d000b55b1 resolve #28, init replayer config in the constructor 2019-01-01 13:21:33 +08:00
Yanzhen Yu
8f24cb78b3 fix block strategy
If an element was blocked, its child nodes should also be blocked.
The interactions and mutations on the element and its child nodes
also need to be blocked.
2018-12-30 21:46:23 +08:00
Daniël van de Giessen
e6ad2bc1d3 Corrected value for scrollTo behaviour parameter (#18) 2018-12-29 11:19:36 +08:00
Yanzhen Yu
8221b427a3 fix skip event logic when finding next active event 2018-12-27 18:14:49 +08:00
Yanzhen Yu
848dab8967 restore speed when finished 2018-12-27 17:44:03 +08:00
Yanzhen Yu
6d77c502bb update rrweb-snapshot minor version and set max skip speed 2018-12-27 13:00:23 +08:00
Yanzhen Yu
533885a707 export timer to public API 2018-12-26 20:58:14 +08:00
Yanzhen Yu
05b42322d7 emit speed with skip event 2018-12-26 18:14:47 +08:00
Yanzhen Yu
aaa8bb9e94 add skipInactive option
Skip inactive time is an important and useful feature. We consider
user interaction events as active, and check next user interaction
event after apply incremental snapshot.
If next user interaction event has a time gap larger than the
threshold, we will set a dynamic speed value which will skip the
inactive time interval in about 5 seconds.
2018-12-26 18:05:55 +08:00
Yanzhen Yu
db86ca13fa fix some safari's scroll related issue 2018-12-25 16:30:36 +08:00
Yanzhen Yu
b7cf1548a3 update rrweb-snapshot 2018-12-21 22:33:38 +08:00
Yanzhen Yu
f1fbb9d07e safely scroll element since its last event may fired after being removed 2018-12-21 14:31:19 +08:00
Yanzhen Yu
b3412b1d46 fix resolve missing node when target has both previous and next missing node 2018-12-20 17:29:03 +08:00
Yanzhen Yu
097321619c check is dropped and is removed by ancestors instead of only check parent 2018-12-20 15:29:02 +08:00
Yanzhen Yu
661fa6c7eb Add missingNodeRetryMap
Use a global missing node retry map to handle missing node that
has not been resolved in the same round.
2018-12-20 14:46:58 +08:00
Yanzhen Yu
df1b3d50b7 fix resume to move baseline time by time offset 2018-12-14 14:11:49 +08:00
Yanzhen Yu
a5d0eaa451 only add click animation when cast is not sync 2018-12-14 13:52:47 +08:00
Yanzhen Yu
b9e4117810 fix timer requestAnimationFrame call may not stop after clear
Before this patch, the checker in the timer will stop only when
actions array is empty.
When we call play more than once, it will clear the timer first,
then  push filtered new actions and start the timer again. If
all of this happened in a frame, the checker which should be
cleared may found actions array is not empty and keep check.
So this patch we use timer.raf to hold raf's handle and cancel
it when clear was called.
2018-12-14 13:37:00 +08:00
Yanzhen Yu
6e41bc3bfa add some unit tests to replayer 2018-12-14 13:35:10 +08:00
Yanzhen Yu
c5998d70a3 prevent scroll when dispatch focus 2018-12-07 17:16:01 +08:00
Yanzhen Yu
fda6d1c873 emit pause and resume events 2018-12-06 18:04:40 +08:00
Yanzhen Yu
9d627d1912 fix mouse move time offset may be mutated multiple times 2018-12-06 17:29:19 +08:00
Yanzhen Yu
2c9db926c0 resolve #1 add ignore and block strategy for privacy purpose 2018-12-02 23:23:21 +08:00