diff --git a/src/replay/index.ts b/src/replay/index.ts index adbb2822..09649289 100644 --- a/src/replay/index.ts +++ b/src/replay/index.ts @@ -69,6 +69,7 @@ export class Replayer { showWarning: true, showDebug: false, blockClass: 'rr-block', + liveMode: false, }; this.config = Object.assign({}, defaultConfig, config); @@ -157,6 +158,11 @@ export class Replayer { this.emitter.emit(ReplayerEvents.Resume); } + public addEvent(event: eventWithTime) { + const castFn = this.getCastFn(event, true); + castFn(); + } + private setupDom() { this.wrapper = document.createElement('div'); this.wrapper.classList.add('replayer-wrapper'); @@ -424,8 +430,10 @@ export class Replayer { break; } case IncrementalSource.MouseMove: - // skip mouse move in sync mode - if (!isSync) { + if (isSync) { + const lastPosition = d.positions[d.positions.length - 1]; + this.moveAndHover(d, lastPosition.x, lastPosition.y, lastPosition.id); + } else { d.positions.forEach(p => { const action = { doAction: () => { diff --git a/src/replay/timer.ts b/src/replay/timer.ts index 6dd7c3b3..68718656 100644 --- a/src/replay/timer.ts +++ b/src/replay/timer.ts @@ -45,7 +45,7 @@ export default class Timer { break; } } - if (actions.length > 0) { + if (actions.length > 0 || self.config.liveMode) { self.raf = requestAnimationFrame(check); } } diff --git a/src/types.ts b/src/types.ts index 14c043fe..41a9e3a2 100644 --- a/src/types.ts +++ b/src/types.ts @@ -241,6 +241,7 @@ export type playerConfig = { showWarning: boolean; showDebug: boolean; blockClass: string; + liveMode: boolean; }; export type playerMetaData = { diff --git a/typings/replay/index.d.ts b/typings/replay/index.d.ts index cf4b7b31..92b08acd 100644 --- a/typings/replay/index.d.ts +++ b/typings/replay/index.d.ts @@ -22,6 +22,7 @@ export declare class Replayer { play(timeOffset?: number): void; pause(): void; resume(timeOffset?: number): void; + addEvent(event: eventWithTime): void; private setupDom; private handleResize; private getDelay; diff --git a/typings/types.d.ts b/typings/types.d.ts index aaa11c0f..57c53c19 100644 --- a/typings/types.d.ts +++ b/typings/types.d.ts @@ -192,6 +192,7 @@ export declare type playerConfig = { showWarning: boolean; showDebug: boolean; blockClass: string; + liveMode: boolean; }; export declare type playerMetaData = { totalTime: number;