Commit Graph

119 Commits

Author SHA1 Message Date
Eoghan Murray
e12d240064 Keep track of pause/play state so that player doesn't accidentally 'unpause' a user pause action (#189) 2020-03-31 22:15:17 +08:00
Yanzhen Yu
3f30c47cfb remove useless console.log 2020-03-29 22:05:07 +08:00
Yanzhen Yu
380819ca70 tolerate insertRule error since browser may throw Error on wrong prefix 2020-03-29 21:18:39 +08:00
Yanzhen Yu
6e38ae4735 avoid style sheet rules index overflow 2020-03-29 21:14:45 +08:00
Yanzhen Yu
197526fbe8 ignore style sheet changes before the target DOM was serialized
The serialized DOM will contains all the styles, so this looks safe.
2020-03-22 00:36:20 +08:00
Filip Slatinac
fc6c6c43d5 Checking node existence (#174)
* added our package

* reverted back to old rrweb snapshot

* Array.from does not capture all elements added in the set, we have to manually iterate through the iterator

* package lock

* checking if nodes are in the parent before we try inserting them
2020-03-01 15:02:32 +08:00
Eoghan Murray
444570b7fc Was experiencing case when a TouchEnd event occurred on a text element i.e. (nodeType: 3 / nodeName: #text) (#180)
This was a recording taken with rrweb 0.7.27 (3afff63970) and rrweb-snapshot 0.7.21 (a0dc9481b2) so issue may have been fixed in the intervening commits
2020-03-01 15:00:32 +08:00
Yanzhen Yu
29296b6877 add trigger focus option to replayer, which may helps integration into other apps 2020-02-28 19:48:36 +08:00
David Cramer
9b7f8d6027 Add support for replaying StyleSheetRule events (#178) 2020-02-25 21:07:17 +08:00
David Cramer
046936b3e8 Add observers for stylesheet mutations (#177)
* hack together stylesheet observer

* Add test coverage for insertRule/deleteRule on stylesheets

* Add new observers

* update patch based on changes to master

* Functioning event recording

* Remove print statements

* Fix ID usage and mark add vs remove

* Correct type

Co-authored-by: Jon Perl <perl.jonathan@gmail.com>
2020-02-22 12:59:55 +08:00
Yanzhen Yu
abfb90a778 impl media interactions recording
close #159
close #72
listen to HTMLMediaElement's play/pause events, and replay them
by programmatically play and pause the target element.
2020-01-12 21:37:01 +08:00
Yanzhen Yu
2d07b37701 close #153 emit event when it being casted 2019-12-08 16:45:21 +08:00
Yanzhen Yu
f30328e40c close #143 tweak the code of iterating iterators
Originally we use Array.from to transform iterator into array.
But we found some framework may overwrite the Array.from with a
pollyfill which was not implement correctly.
2019-11-24 22:33:45 +08:00
Filip Slatinac
130e6b2c60 Changing Array.from to iterators. (#145)
* added our package

* reverted back to old rrweb snapshot

* Array.from does not capture all elements added in the set, we have to manually iterate through the iterator

* package lock
2019-11-24 18:22:13 +08:00
mpstv
6a5d0610b7 Try add configurable threshold for events throttling (#147) 2019-11-16 21:25:34 +08:00
Yanzhen Yu
07a46a5997 close #140 transform mutated attributes 2019-11-09 15:49:36 +08:00
yz-yu
b64e1492ab add hooks API (#132) 2019-09-17 23:33:38 +08:00
Yanzhen Yu
487165791a re-add addCustomEvent function via function property 2019-08-12 21:52:24 +08:00
Yanzhen Yu
3beb57273e Revert "temp revert #81"
This reverts commit 835161c737.
2019-08-12 21:26:35 +08:00
Yanzhen Yu
835161c737 temp revert #81
This patch introduce a breaking change in rrweb-record's API, so
we will revert it in 0.7.x and release it in 0.8.
2019-08-12 21:21:53 +08:00
Yanzhen Yu
a95759fc9c hotfix throttle function args 2019-08-11 14:41:06 +08:00
dphuang2
f7a3c992f8 Fix timeOffset on multiple stylesheet loads (#115)
In the case that the replayer triggers multiple FullSnapshot events, it
will call waitForStylesheetLoad multiple times. When the replayer
resumes, it could already have a timeoffset set from a previous
resume in a previous waitForStylesheetLoad call. In this case our new
timeoffset should be the value of our current time in the replay
(timer.timeOffset + getTimeOffset()). To solve this, I created a public
getCurrentTime function which correctly returns the time in the replay
and used that as our new timeoffset when resuming from a stylesheet
load.
2019-08-10 17:29:23 +08:00
Yanzhen Yu
3269089e1f fix#110 add NodeList forEach polyfill 2019-08-07 23:51:40 +08:00
Yanzhen Yu
56c025fde3 close #84 set mousemoveData's source by event source 2019-08-04 15:06:06 +08:00
shenchenxh
61a3c9f8f6 fix 100 (#102) 2019-07-26 16:21:02 +08:00
Yanzhen Yu
f78070a824 impl #81 custom event
This is the record side impl of custom event, according to the
issue, we may also add first-class support for the custom event
tag like display color labels in the replayer-ui.
2019-07-24 22:32:11 +08:00
dphuang2
b0ee3f8279 added 'pointer-events: none' for Replayer iframe (#96)
'pointer-events: none' prevents the user from interacting with the DOM
inside of the iframe. This prevents accidental tampering by a user when
watching replays such as link clicks or DOM manipulation.

pointer-events supported by 97.15% usage: https://caniuse.com/#feat=pointer-events
2019-07-19 13:24:55 +08:00
肉肉肉肉
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