* We weren't recursing into media queries (or @supports etc.) to rewrite hover pseudoclasses
* The early return meant that the stylesWithHoverClass cache wasn't being populated if there were no hover selectors on the stylesheet
- not committing the test, but modifying the existing 'add a hover class to a previously processed css string' as follows shows the problem:
--- a/packages/rrweb-snapshot/test/rebuild.test.ts
+++ b/packages/rrweb-snapshot/test/rebuild.test.ts
@@ -151,6 +185,7 @@ describe('rebuild', function () {
path.resolve(__dirname, './css/benchmark.css'),
'utf8',
);
+ cssText = cssText.replace(/:hover/g, '');
const start = process.hrtime();
addHoverClass(cssText, cache);
* Replace `min-device-width` and similar with `min-width` as the former looks out at the browser viewport whereas we need it to look at the replayer iframe viewport
* Add some tests to show how the hover replacement works against selector lists. I believe these were failing in a previous version of rrweb as I had some local patches that no longer seem to be needed to handle these cases
* Update name of function to reflect that 'addHoverClass' does more than just :hover. I believe this function is only exported for the purposes of use in the tests
* Apply formatting changes
* Create rotten-spies-enjoy.md
* Apply formatting changes
* Add correct typing on `getSelectors`
* Refactor CSS interfaces to include optional rules
* Change `rules` to be non optional
---------
Co-authored-by: eoghanmurray <eoghanmurray@users.noreply.github.com>
Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
36 lines
604 B
TypeScript
36 lines
604 B
TypeScript
import snapshot, {
|
|
serializeNodeWithId,
|
|
transformAttribute,
|
|
ignoreAttribute,
|
|
visitSnapshot,
|
|
cleanupSnapshot,
|
|
needMaskingText,
|
|
classMatchesRegex,
|
|
IGNORED_NODE,
|
|
genId,
|
|
} from './snapshot';
|
|
import rebuild, {
|
|
buildNodeWithSN,
|
|
adaptCssForReplay,
|
|
createCache,
|
|
} from './rebuild';
|
|
export * from './types';
|
|
export * from './utils';
|
|
|
|
export {
|
|
snapshot,
|
|
serializeNodeWithId,
|
|
rebuild,
|
|
buildNodeWithSN,
|
|
adaptCssForReplay,
|
|
createCache,
|
|
transformAttribute,
|
|
ignoreAttribute,
|
|
visitSnapshot,
|
|
cleanupSnapshot,
|
|
needMaskingText,
|
|
classMatchesRegex,
|
|
IGNORED_NODE,
|
|
genId,
|
|
};
|