* Reduce verbosity/redundancy of output of new pointerType attribute by confining it only to clicks (and to a MouseDown/MouseUp from a PointerTypes.Pen, as these don't yet have a dedicated PendDown/PenUp)
* Update how the changeset will read for the next release based on the trimming in this PR
* Prefer triple equals
* The assignment to the outer `pointerType` variable in an anonymous function was somehow missed by the `typings` check
* Apply formatting changes
* Update packages/rrweb/src/record/observer.ts
* Update packages/rrweb/src/record/observer.ts
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* fix: change default value of input type from null to text
* Apply formatting changes
* add changeset
* add a comment related to the type of input element
* Reset the finished flag in goto
If the player finishes a replaying a video the `finished` boolean is set to true. This allows the video to be restarted at the beginning if the controller is toggled again. If a user clicks on the progress bar the `finished` boolean is reset so if the `toggle` API is called it starts at the right place. If a user programatically calls `goto` which is the underlying API that handling the progress click calls the next invocation of `toggle` will start the video at the beginning instead of the proper location.
* Create controller-finish-flag.md
* Update controller-finish-flag.md
* fix: Fix input.type check
Actually I noticed that `el.type` returns `text` when type is not explicitly set, so this is slightly incorrect.
* fix linting
* Apply formatting changes
* first commit
* rrvideo v0.1.0
First version of rrvideo.
1. Use as a Node.JS lib.
2. Use as a CLI.
Features are implemented via puppeteer, ffmpeg and rrweb-player.
* add readme
* update publish script
* add node env in cli file and change package.json bin to same like README (#4)
Co-authored-by: Xu Yinjie <xuyinjie@xiaobangtouzi.com>
* release 0.2.0
* fix#6 avoid assign undefined to config
* Fix: Solve the inconsistency between rrvideo and the real recorded page rendering when rendering the page with a headless browser (https://github.com/rrweb-io/rrvideo/pull/26)
Author: xujiujiu <906784584@qq.com>
---------
Co-authored-by: xujiujiu <906784584@qq.com>
* refactor rrvideo
1. refactor code
2. change monorepo config
3. remove separate TS dependencies
* add changeset
* fix: eslint errors
---------
Co-authored-by: Yanzhen Yu <yanzhen@smartx.com>
Co-authored-by: xyj <593500664@qq.com>
Co-authored-by: Xu Yinjie <xuyinjie@xiaobangtouzi.com>
Co-authored-by: xujiujiu <906784584@qq.com>
- We have to switch to 'onpointerdown' & 'onpointerup' in order to actually capture `e.pointerType`
- this replaces 4 event listeners (MouseDown/MouseUp/TouchStart/TouchEnd) with 2 pointer ones which should fire in all 4 scenarios. We still output the old types according to the MouseInteractions enum
- there is no Pointer equivalent of Click, so we leave that is, but use the last Pointer event to attach a pointerType to (only) the click event, where it is most useful
- we can fallback to the old method for any browsers not supporting `window.PointerEvent`, in which case \`pointerType\` will be absent from all events
* Fix: processed-node-manager is created even in the environment that doesn't need a recorder
* apply Justin's suggestion
End the RAF loop when the recorder stops
* feat: Ensure password inputs are masked when switching type
Apply formatting changes
use data- attribute
ref: Ensure type is always lowercased
add changeset
* extract into util
* Apply formatting changes
* Extend the suppression of warnings to take account that a prior removal may not have been against the immediate parent of a subsequent removal, but rather some anscestor
* Create proud-experts-jam.md
* Apply formatting changes
* improve: mutation.ts, loop use Set replace Array
* improve: add a try-catch to utils.ts to make it robust
* Create yellow-mails-cheat.md
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* feat: Ignore `autoplay` attribute on video/auto elements
This element leads to weird issues when replaying, so it's better to strip this out.
* add changeset
* fix check
fix typo
* Apply formatting changes
---------
Co-authored-by: mydea <mydea@users.noreply.github.com>
* Set userTriggered to false on Input attribute modifications
- the fact we are intercepting them via hook rather than an event suggests to me that they could well be programmatic
* Create young-timers-grow.md
* fix: Explicitly handle removed attributes
The attribute `value` can be null when a mutation observer triggers due to a removed attribute. This is currently not reflected by types and code.
* Apply formatting changes
* fix
* add changeset
* fix the statement which is getting changed by microbundle
* Create chatty-cherries-train.md
* fix formatting.
* fix position of comment
---------
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* Firefox fix: Allow the <head> and <body> to be added in two stages so that (presumably) stylesheet rules are ready to be applied when the body appears
The css which triggered the bug was simply
{
margin-left: 220px;
transition: margin-left .448s;
}
* Add a test case which can only be appreciated if you record against this file://, save the events to a html file, and then open the file in Firefox (without this PR applied)
* Apply formatting changes
* Ensure we don't apply this branch when using rrdom, where it is not necessary
* Apply formatting changes
* Rewrite insertion in order to be compatible with rrdom
Also easier to understand
* Delete transition.html
* Create grumpy-ways-own.md
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* fix: Exclude `modulepreload` as well
We were only excluding `<link rel="preload" as="script" />` but we should include `rel="modulepreload"` as well
* Apply formatting changes
* Bump up all package versions together whenever any one version changes.
Keeps everything in sync to make it easy to see if you have the correct dependencies.
https://github.com/changesets/changesets/blob/main/docs/fixed-packages.md
* Empty changeset as this changes nothing for the packages them selves
* Bring @rrweb/web-extension version inline with other packages
* separate the extension version from package.json's to avoid errors
---------
Co-authored-by: Yun Feng <yun.feng0817@gmail.com>
* add more check to rrdom to make diff algorithm more robust
* fix: selector match in iframe is case-insensitive
add try catch to some fragile points
* test: increase timeout value for Jest
* improve code style
* fix: failed to execute insertBefore on Node in the diff function
this happens when ids of doctype or html element are changed in the virtual dom
also improve the code quality
* refactor diff function to make the code cleaner
* fix: virtual nodes are passed to plugin's onBuild function
* refactor the diff function and adjust the order of diff work.
* call afterAppend hook in a consistent traversal order
* improve the performance of the "contains" function
reduce the complexity from O(n) to O(logn)
a specific benchmark is needed to add further
* add a real events for benchmark
* refactor: change the data structure of childNodes from array to linked list
* remove legacy code in rrweb package
* update unit tests
* update change log
* feat: add rrweb web-extension package
* refactor: make the extension suitable for manifest v3
* update tsconfig.json
* use version_name rather than recorder_version in manifest.json
* update manifest.json
* enable to keep recording after changing tabs
* enable to record between tabs and urls
* fix CI error
* try to fix CI error
* feat: add pause and resume buttons
* feat: add a link to new session after recording
* improve session list
* refactor: migrate session storage from chrome local storage to indexedDB
* feat: add pagination to session list
* fix: multiple recorders are started after pausing and resuming process
* fix: can't stop recording on firefox browser
* update type import of 'eventWithTime'
* fix CI error
* doc: add readme
* Apply suggestions from Justin's code review
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* refactor: make use of webNavigation API to implement recording consistent during page navigation
* fix firefox compatibility issue and add title to pages
* add mouseleave listener to enhance the recording liability
* fix firefox compatibility issue and improve the experience of recording resume after closing tabs
* update tsconfig
* upgrade vite-plugin-web-extension config to fix some bugs on facebook web page
* update import links
* refactor: cross tab recording mechanism
apply Justin's suggestion
* refactor: slipt util/index.ts into multiple files
* implement cross-origin iframe recording
* fix: regression of issue: ShadowHost can't be a string (issue 941)
* refactor shadow dom recording to make tests cover key code
* Apply formatting changes
* increase the node memory limitation to avoid CI failure
* Create lovely-pears-cross.md
* Apply formatting changes
* Update packages/web-extension/package.json
* Update .changeset/lovely-pears-cross.md
* update change logs
* delete duplicated property
---------
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
* fix: duplicated elements in shadow doms
clean observers before taking new full snapshots
* add checker for replayer to make it stable when data has duplicated nodes
* apply review suggestions
* add change log
* Apply formatting changes
* update prettier to fit the master branch
---------
Co-authored-by: Mark-Fenng <Mark-Fenng@users.noreply.github.com>