diff --git a/packages/rrweb/src/record/index.ts b/packages/rrweb/src/record/index.ts index e8d071c762..7cacc7e40e 100644 --- a/packages/rrweb/src/record/index.ts +++ b/packages/rrweb/src/record/index.ts @@ -209,6 +209,7 @@ function record( }); const canvasManager = new CanvasManager({ + recordCanvas, mutationCb: wrappedCanvasMutationEmit, win: window, blockClass, diff --git a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts index 28baaa8505..b7fac7c67b 100644 --- a/packages/rrweb/src/record/observers/canvas/canvas-manager.ts +++ b/packages/rrweb/src/record/observers/canvas/canvas-manager.ts @@ -52,6 +52,7 @@ export class CanvasManager { } constructor(options: { + recordCanvas: boolean | number; mutationCb: canvasMutationCallback; win: IWindow; blockClass: blockClass; @@ -60,7 +61,8 @@ export class CanvasManager { this.mutationCb = options.mutationCb; this.mirror = options.mirror; - this.initCanvasMutationObserver(options.win, options.blockClass); + if (options.recordCanvas === true) + this.initCanvasMutationObserver(options.win, options.blockClass); } private processMutation: canvasManagerMutationCallback = function ( diff --git a/packages/rrweb/typings/record/observers/canvas/canvas-manager.d.ts b/packages/rrweb/typings/record/observers/canvas/canvas-manager.d.ts index 6004d787ca..58d97b3ed3 100644 --- a/packages/rrweb/typings/record/observers/canvas/canvas-manager.d.ts +++ b/packages/rrweb/typings/record/observers/canvas/canvas-manager.d.ts @@ -1,31 +1,37 @@ -import { blockClass, canvasMutationCallback, IWindow, Mirror } from '../../../types'; +import { + blockClass, + canvasMutationCallback, + IWindow, + Mirror, +} from '../../../types'; export declare type RafStamps = { - latestId: number; - invokeId: number | null; + latestId: number; + invokeId: number | null; }; export declare class CanvasManager { - private pendingCanvasMutations; - private rafStamps; - private mirror; - private mutationCb; - private resetObservers; - private frozen; - private locked; - reset(): void; - freeze(): void; - unfreeze(): void; - lock(): void; - unlock(): void; - constructor(options: { - mutationCb: canvasMutationCallback; - win: IWindow; - blockClass: blockClass; - mirror: Mirror; - }); - private processMutation; - private initCanvasMutationObserver; - private startPendingCanvasMutationFlusher; - private startRAFTimestamping; - flushPendingCanvasMutations(): void; - flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number): void; + private pendingCanvasMutations; + private rafStamps; + private mirror; + private mutationCb; + private resetObservers; + private frozen; + private locked; + reset(): void; + freeze(): void; + unfreeze(): void; + lock(): void; + unlock(): void; + constructor(options: { + recordCanvas: boolean | number; + mutationCb: canvasMutationCallback; + win: IWindow; + blockClass: blockClass; + mirror: Mirror; + }); + private processMutation; + private initCanvasMutationObserver; + private startPendingCanvasMutationFlusher; + private startRAFTimestamping; + flushPendingCanvasMutations(): void; + flushPendingCanvasMutationFor(canvas: HTMLCanvasElement, id: number): void; }