Commit Graph

912 Commits

Author SHA1 Message Date
Yanzhen Yu
0ad53b232c Release 0.5.0 2020-08-09 13:38:26 +08:00
yz-yu
7aa760e731 Refactoring rrweb-player (#26)
* enable drag and drop in controller

* setup svelte v3 workflow and entry point

* add ts eslint config and do compatibility fallbacks in API

* rewrite replayer in svelte v3

* fix css import

* fix fullscreen API
2020-08-09 13:35:25 +08:00
Yanzhen Yu
5e9e1a2522 Release 0.9.0 2020-08-09 13:10:55 +08:00
Yanzhen Yu
be4cccd6e3 close #268 subscribe latest player state before resume 2020-08-09 13:05:55 +08:00
Yanzhen Yu
006b709c00 remove the internal use of resume API 2020-08-09 13:03:12 +08:00
Yanzhen Yu
54baa27b36 remove global body style 2020-08-09 12:50:38 +08:00
Yanzhen Yu
a90999d96e close #274 implement the new state management proposal 2020-08-08 17:07:37 +08:00
Jason Barry
db28bc4428 Fixes missing space when converting srcset to use absolute URLs (#40)
* Fixes missing space when converting srcset to use absolute URLs

* Fix integration snapshot
2020-08-05 10:09:59 +08:00
Eoghan Murray
6e53410e2b Reset the lastPlayedEvent as it would otherwise be used to discard events in machine.ts as follows: (#250) 2020-07-28 22:52:50 +08:00
Jin
d92bc733df :feat add tips (#23)
Co-authored-by: jinwentao <jinwentao@huya.com>
2020-07-25 17:14:39 +08:00
吴泽康
f7d43f5fee Add nested scroll support (#31) 2020-07-25 15:05:45 +08:00
Yanzhen Yu
9d24b8c315 Release 0.8.5 2020-07-23 23:48:09 +08:00
Yanzhen Yu
7802916dfc close #263 Since we improved the block class strategy,
we need to check parent node before pushAdd.
2020-07-23 23:47:03 +08:00
Yanzhen Yu
6a58ff28f9 Release 0.8.4 2020-07-19 08:55:51 +08:00
Yanzhen Yu
6cf3253d94 close #254 hotfix: only use virtual parent in sync mode 2020-07-19 08:54:18 +08:00
Yanzhen Yu
ad32b8be8d close #240 fix block class to handle text node changes 2020-07-18 17:36:33 +08:00
Yanzhen Yu
4ee86743a5 Release 0.8.3 2020-07-18 16:57:57 +08:00
Yanzhen Yu
6f08ec3ca7 add the patch function to utils 2020-07-18 16:56:22 +08:00
Yanzhen Yu
c5580f97f4 close #228 safe access content document, which may be destroyed manually 2020-07-18 15:29:01 +08:00
Yanzhen Yu
0756319b8e close #244 pass fullsnapshot event to the callback 2020-07-18 15:16:59 +08:00
Yanzhen Yu
d7a1b0c9e3 fix unit tests 2020-07-18 15:07:47 +08:00
yz-yu
7de7eb5e54 mask input options and sampling options (#252)
* part of #80, support mask input options

* close #188 enhance sampling options
Use a more general sampling strategy interface to describe the
configuration of sampling events collection.

Implemented mousmove, mouse interaction, scroll and input sampling
strategy.
2020-07-18 15:05:19 +08:00
Yanzhen Yu
785ff391b9 add textarea and select to default options 2020-07-18 14:08:36 +08:00
Yanzhen Yu
4199e55da1 Release 0.8.0 2020-07-18 13:58:27 +08:00
Yanzhen Yu
9ea534505f support mask select fields 2020-07-18 13:58:09 +08:00
Yanzhen Yu
f6781fda04 Release 0.7.29 2020-07-18 13:52:42 +08:00
Yanzhen Yu
3ebdcbdf03 fix mask textarea 2020-07-18 13:50:47 +08:00
Yanzhen Yu
c206e100f1 Release 0.7.28 2020-07-18 13:32:36 +08:00
Yanzhen Yu
e4593ff76d part of rrweb #80, support configure mask input types 2020-07-18 13:31:32 +08:00
Eoghan Murray
63c3bd744e Don't obscure text of form buttons under maskAllInputs (more modern style would be a <button>) (#35) 2020-07-17 23:17:07 +08:00
Eoghan Murray
286b520907 Restore functioning of #200 - this got broken after #242 (#246)
- What was broken was that it would just play activity from the first page view, but then would stop at the second page view (meta) as actions after that had been discarded
 - This restores the functionality given by the comment 'return the events from last meta to the end.' - we never want to discard events that are after the baseline time
 - I believe 'session' is the incorrect terminology for this function name, as a session in web analytics usually means a series of page views
2020-07-16 00:12:37 +08:00
yz-yu
e2cc42e393 fix the skip event calculation (#242) 2020-07-11 17:06:56 +08:00
Yanzhen Yu
3e2b596664 tweak the code of getting last session, without splice events array 2020-07-11 11:03:40 +08:00
Yanzhen Yu
4bf533a675 fast-forward implementation v1
related to #6

Since the currently 'play at any time offset' implementation is pretty simple,
there are many things we can do to optimize its performance.

In this patch, we do the following optimizations:
1. Ignore some of the events during fast forward.
   For example, when we are going to fast forward to 10 minutes later,
   we do not need to perform mouse movement events during this period.
2. Use a fragment element as the 'virtual parent node'.
   So newly added DOM nodes will be appended to this fragment node,
   and finally being appended into the document as a batch operation.
These changes reduce a lot of time which was spent on reflow/repaint previously.
I've seen a 10 times performance improvement within these approaches.

And there are still some things we can do better but not in this patch.
1. We can build a virtual DOM tree to store the mutations of DOM.
   This will minimize the number of DOM operations.
2. Another thing that may help UX is to make the fast forward process async and cancellable.
   This may make the drag and drop interactions in the player's UI looks smooth.
2020-07-11 11:03:40 +08:00
Eoghan Murray
ef2c991012 Only execute events since most recent pageload when playing from an offset (#200)
On recordings with many full pageloads, dom state and mutations were being applied only to be discarded when a new pageload came in, resulting in very slow time to rebuild - and inability to interactively 'scrub' through these recordings
2020-07-11 10:21:46 +08:00
Eoghan Murray
6b0a0795ce Expose startTime and endTime in the getMetaData() call. I was using player.events[0].timestamp but player.events has gone away (since a78da77 I believe) (#235) 2020-07-10 13:37:56 +08:00
Eoghan Murray
43001ccbbd Ensure api method .play() can be called by external code without worrying about the internal state of the finite state machine (#236) 2020-07-10 13:36:57 +08:00
Jin
5d9035dcaf :Update guide.zh_CN.md (#238)
Co-authored-by: jinwentao <jinwentao@huya.com>
2020-07-04 22:30:32 +08:00
slimlime
3faace3801 📚 Quick typo check. Update replay.md (#237)
Precise typo check of inprecise -> imprecise
2020-07-01 22:47:59 +08:00
Jeff Loiselle
0988e45301 Update observer.md (#233) 2020-06-25 23:11:59 +08:00
Yanzhen Yu
be219d8eb9 add sponsor info 2020-06-21 16:14:02 +08:00
yz-yu
7a10aed098 Create FUNDING.yml 2020-06-17 16:25:42 +08:00
Yanzhen Yu
c6ee83ce68 Release 0.8.2 2020-06-15 23:21:06 +08:00
Yanzhen Yu
40492caf59 hotfix: fix es module entry path 2020-06-15 23:20:16 +08:00
Yanzhen Yu
c369cbad3e Release 0.8.1 2020-06-15 18:25:53 +08:00
Yanzhen Yu
c286c105dd update typings entry 2020-06-15 18:25:13 +08:00
Yanzhen Yu
5b587d2e55 Release 0.8.0 2020-06-15 18:23:39 +08:00
Yanzhen Yu
a3b1ab6d9e continue #199: redesign the bundled file structure
According to @eoghanmurray's suggestion, we can support three
main scenarios:
1. record only
2. replay only
3. all in one

Since we have implemented the packer feature, which has a big
influence in bundle size, we provide another three bundles:
1. record and pack
2. replay and unpack
3. all in one with pack and unpack
2020-06-15 18:14:37 +08:00
Yanzhen Yu
647e314179 Release 0.7.27 2020-06-15 17:11:21 +08:00
Yanzhen Yu
4cf196718c export utils as public API 2020-06-15 17:10:18 +08:00