@remotion/web-renderer 4.0.402 → 4.0.404

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,9 @@
1
+ import { type LogLevel } from 'remotion';
2
+ export type BackgroundKeepalive = {
3
+ waitForTick: () => Promise<void>;
4
+ [Symbol.dispose]: () => void;
5
+ };
6
+ export declare function createBackgroundKeepalive({ fps, logLevel }: {
7
+ fps: number;
8
+ logLevel: LogLevel;
9
+ }): BackgroundKeepalive;
@@ -0,0 +1,3 @@
1
+ import type { CanRenderMediaOnWebOptions, CanRenderMediaOnWebResult } from './can-render-types';
2
+ export type { CanRenderIssue, CanRenderMediaOnWebOptions, CanRenderMediaOnWebResult, } from './can-render-types';
3
+ export declare const canRenderMediaOnWeb: (options: CanRenderMediaOnWebOptions) => Promise<CanRenderMediaOnWebResult>;
@@ -0,0 +1,27 @@
1
+ import type { WebRendererAudioCodec, WebRendererContainer, WebRendererQuality, WebRendererVideoCodec } from './mediabunny-mappings';
2
+ import type { WebRendererOutputTarget } from './output-target';
3
+ export type CanRenderIssueType = 'video-codec-unsupported' | 'audio-codec-unsupported' | 'webgl-unsupported' | 'webcodecs-unavailable' | 'container-codec-mismatch' | 'transparent-video-unsupported' | 'invalid-dimensions' | 'output-target-unsupported';
4
+ export type CanRenderIssue = {
5
+ type: CanRenderIssueType;
6
+ message: string;
7
+ severity: 'error' | 'warning';
8
+ };
9
+ export type CanRenderMediaOnWebResult = {
10
+ canRender: boolean;
11
+ issues: CanRenderIssue[];
12
+ resolvedVideoCodec: WebRendererVideoCodec;
13
+ resolvedAudioCodec: WebRendererAudioCodec | null;
14
+ resolvedOutputTarget: WebRendererOutputTarget;
15
+ };
16
+ export type CanRenderMediaOnWebOptions = {
17
+ container?: WebRendererContainer;
18
+ videoCodec?: WebRendererVideoCodec;
19
+ audioCodec?: WebRendererAudioCodec | null;
20
+ width: number;
21
+ height: number;
22
+ transparent?: boolean;
23
+ muted?: boolean;
24
+ videoBitrate?: number | WebRendererQuality;
25
+ audioBitrate?: number | WebRendererQuality;
26
+ outputTarget?: WebRendererOutputTarget | null;
27
+ };
@@ -0,0 +1,2 @@
1
+ import type { CanRenderIssue } from './can-render-types';
2
+ export declare const checkWebGLSupport: () => CanRenderIssue | null;
@@ -0,0 +1,9 @@
1
+ import { AudioSampleSource, type Quality } from 'mediabunny';
2
+ export declare const createAudioSampleSource: ({ muted, codec, bitrate, }: {
3
+ muted: boolean;
4
+ codec: "aac" | "alaw" | "flac" | "mp3" | "opus" | "pcm-f32" | "pcm-f32be" | "pcm-f64" | "pcm-f64be" | "pcm-s16" | "pcm-s16be" | "pcm-s24" | "pcm-s24be" | "pcm-s32" | "pcm-s32be" | "pcm-s8" | "pcm-u8" | "ulaw" | "vorbis" | null;
5
+ bitrate: number | Quality;
6
+ }) => {
7
+ audioSampleSource: AudioSampleSource;
8
+ [Symbol.dispose]: () => void;
9
+ } | null;
@@ -0,0 +1,9 @@
1
+ import type { Precompositing } from './calculate-transforms';
2
+ export type ElementAndBounds = {
3
+ element: Element;
4
+ bounds: DOMRect;
5
+ transform: DOMMatrix;
6
+ parentRect: DOMRect;
7
+ precompositing: Precompositing;
8
+ establishes3DRenderingContext: DOMMatrix | null;
9
+ };
@@ -1 +1 @@
1
- export declare function getPreTransformRect(targetRect: DOMRect, matrix: DOMMatrix): DOMRect;
1
+ export declare function getPreTransformRect(targetRect: DOMRect, matrix: DOMMatrix): DOMRect | null;
@@ -2,10 +2,10 @@ export declare const getPrecomposeRectFor3DTransform: ({ element, parentRect, ma
2
2
  element: HTMLElement | SVGElement;
3
3
  parentRect: DOMRect;
4
4
  matrix: DOMMatrix;
5
- }) => DOMRect;
6
- export declare const handle3dTransform: ({ matrix, precomposeRect, tempCanvas, rectAfterTransforms, internalState, }: {
5
+ }) => DOMRect | null;
6
+ export declare const handle3dTransform: ({ matrix, sourceRect, tempCanvas, rectAfterTransforms, internalState, }: {
7
7
  matrix: DOMMatrix;
8
- precomposeRect: DOMRect;
8
+ sourceRect: DOMRect;
9
9
  tempCanvas: OffscreenCanvas;
10
10
  rectAfterTransforms: DOMRect;
11
11
  internalState: {
@@ -0,0 +1,33 @@
1
+ import type { Precompositing } from './calculate-transforms';
2
+ import type { ElementAndBounds } from './elements-and-bounds';
3
+ export declare const precompose: ({ element, logLevel, parentRect, internalState, precompositing, totalMatrix, rect, isIn3dRenderingContext, }: {
4
+ element: HTMLElement | SVGElement;
5
+ logLevel: "error" | "info" | "trace" | "verbose" | "warn";
6
+ parentRect: DOMRect;
7
+ internalState: {
8
+ getDrawn3dPixels: () => number;
9
+ getPrecomposedTiles: () => number;
10
+ addPrecompose: ({ canvasWidth, canvasHeight, }: {
11
+ canvasWidth: number;
12
+ canvasHeight: number;
13
+ }) => void;
14
+ helperCanvasState: import("../internal-state").HelperCanvasState;
15
+ [Symbol.dispose]: () => void;
16
+ getWaitForReadyTime: () => number;
17
+ addWaitForReadyTime: (time: number) => void;
18
+ getAddSampleTime: () => number;
19
+ addAddSampleTime: (time: number) => void;
20
+ getCreateFrameTime: () => number;
21
+ addCreateFrameTime: (time: number) => void;
22
+ getAudioMixingTime: () => number;
23
+ addAudioMixingTime: (time: number) => void;
24
+ };
25
+ precompositing: Precompositing;
26
+ totalMatrix: DOMMatrix;
27
+ rect: DOMRect;
28
+ isIn3dRenderingContext: DOMMatrix | null;
29
+ }) => Promise<{
30
+ drawable: OffscreenCanvas;
31
+ rectAfterTransforms: DOMRect;
32
+ elementsToBeRenderedIndependently: ElementAndBounds[];
33
+ } | null>;
File without changes
@@ -0,0 +1,125 @@
1
+ /** Image format for encoded screenshot output. */
2
+ export type ImageFormat = 'png' | 'jpeg' | 'webp';
3
+ /** Options for rendering a screenshot to canvas. */
4
+ export interface RenderOptions {
5
+ /**
6
+ * Canvas background color. Set to `null` (or omit) for a transparent canvas.
7
+ * When provided, the string is passed directly to `fillStyle`.
8
+ */
9
+ backgroundColor?: string | null;
10
+ /**
11
+ * Optional existing canvas to render into.
12
+ * When omitted, a new canvas element is created.
13
+ */
14
+ canvas?: HTMLCanvasElement;
15
+ /**
16
+ * Rendering scale factor. Defaults to `window.devicePixelRatio` (or `1`).
17
+ */
18
+ scale?: number;
19
+ /**
20
+ * Crop origin X (CSS pixels) relative to the element's left edge.
21
+ * Defaults to the element's left edge.
22
+ */
23
+ x?: number;
24
+ /**
25
+ * Crop origin Y (CSS pixels) relative to the element's top edge.
26
+ * Defaults to the element's top edge.
27
+ */
28
+ y?: number;
29
+ /**
30
+ * Output width in CSS pixels. Defaults to the element's width.
31
+ */
32
+ width?: number;
33
+ /**
34
+ * Output height in CSS pixels. Defaults to the element's height.
35
+ */
36
+ height?: number;
37
+ /**
38
+ * Controls how `position: fixed` elements outside the captured subtree are
39
+ * handled.
40
+ *
41
+ * - `none` – ignore all fixed elements outside `element`.
42
+ * - `intersecting` – include fixed elements whose bounding rect intersects the capture rect.
43
+ * - `all` – include all fixed elements that overlap the viewport.
44
+ */
45
+ includeFixed?: 'none' | 'intersecting' | 'all';
46
+ /**
47
+ * CSS selector used to skip elements from rendering.
48
+ * Defaults to `[data-screenshot-ignore]`. Set to `null` or an empty string
49
+ * to disable selector-based skipping.
50
+ */
51
+ ignoreSelector?: string | null;
52
+ }
53
+ /** Options for encoding a canvas to an image format. */
54
+ export interface EncodeOptions {
55
+ /**
56
+ * Image format to encode. Defaults to `'png'`.
57
+ */
58
+ format?: ImageFormat;
59
+ /**
60
+ * Image quality for lossy formats (`jpeg`, `webp`). A number between `0` and `1`.
61
+ * Ignored for `png`. Defaults to `0.92`.
62
+ */
63
+ quality?: number;
64
+ }
65
+ /** Combined options for one-shot screenshot methods that render and encode. */
66
+ export type ScreenshotOptions = RenderOptions & EncodeOptions;
67
+ /**
68
+ * A promise-like object representing a screenshot capture. The underlying
69
+ * render happens once; subsequent calls to `.canvas()`, `.blob()`, or `.url()`
70
+ * reuse the same rendered canvas.
71
+ */
72
+ export interface ScreenshotTask extends Promise<HTMLCanvasElement> {
73
+ /** Returns the rendered canvas. */
74
+ canvas(): Promise<HTMLCanvasElement>;
75
+ /** Encodes the rendered canvas to a Blob. */
76
+ blob(options?: EncodeOptions): Promise<Blob>;
77
+ /**
78
+ * Encodes the rendered canvas to a Blob and creates an object URL.
79
+ * Remember to call `URL.revokeObjectURL(url)` when done to avoid memory leaks.
80
+ */
81
+ url(options?: EncodeOptions): Promise<string>;
82
+ }
83
+ /**
84
+ * Renders a DOM element into a canvas using modern browser features.
85
+ *
86
+ * Returns a `ScreenshotTask` that is both a Promise and provides methods
87
+ * to encode the rendered canvas. The underlying render happens once;
88
+ * subsequent calls to `.canvas()`, `.blob()`, or `.url()` reuse the same result.
89
+ *
90
+ * This implementation targets evergreen browsers only and assumes a real DOM +
91
+ * Canvas2D environment (not Node.js).
92
+ *
93
+ * @example
94
+ * // Capture handle pattern - render once, encode multiple ways
95
+ * const shot = screenshot(element, { scale: 2 })
96
+ * const canvas = await shot.canvas()
97
+ * const pngBlob = await shot.blob({ format: 'png' })
98
+ * const webpUrl = await shot.url({ format: 'webp', quality: 0.9 })
99
+ *
100
+ * @example
101
+ * // Direct await returns the canvas
102
+ * const canvas = await screenshot(element)
103
+ *
104
+ * @example
105
+ * // One-shot convenience methods
106
+ * const canvas = await screenshot.canvas(element, { scale: 2 })
107
+ * const blob = await screenshot.blob(element, { format: 'jpeg', quality: 0.85 })
108
+ * const url = await screenshot.url(element, { format: 'png' })
109
+ */
110
+ declare function screenshot(target: Element | string, options?: RenderOptions): ScreenshotTask;
111
+ declare namespace screenshot {
112
+ var canvas: (target: string | Element, options?: RenderOptions | undefined) => Promise<HTMLCanvasElement>;
113
+ }
114
+ declare namespace screenshot {
115
+ var blob: (target: string | Element, options?: ScreenshotOptions | undefined) => Promise<Blob>;
116
+ }
117
+ declare namespace screenshot {
118
+ var url: (target: string | Element, options?: ScreenshotOptions | undefined) => Promise<string>;
119
+ }
120
+ export { screenshot };
121
+ declare global {
122
+ interface CanvasRenderingContext2D {
123
+ _filterPolyfillValue?: string;
124
+ }
125
+ }
@@ -1,9 +1,9 @@
1
1
  import type { HelperCanvasState } from '../internal-state';
2
- export declare const transformIn3d: ({ matrix, sourceCanvas, untransformedRect, rectAfterTransforms, internalState, }: {
3
- untransformedRect: DOMRect;
2
+ export declare const transformIn3d: ({ matrix, sourceCanvas, sourceRect, destRect, internalState, }: {
3
+ sourceRect: DOMRect;
4
4
  matrix: DOMMatrix;
5
5
  sourceCanvas: OffscreenCanvas;
6
- rectAfterTransforms: DOMRect;
6
+ destRect: DOMRect;
7
7
  internalState: {
8
8
  getDrawn3dPixels: () => number;
9
9
  getPrecomposedTiles: () => number;
@@ -22,7 +22,4 @@ export declare const transformIn3d: ({ matrix, sourceCanvas, untransformedRect,
22
22
  getAudioMixingTime: () => number;
23
23
  addAudioMixingTime: (time: number) => void;
24
24
  };
25
- }) => {
26
- canvas: OffscreenCanvas;
27
- rect: DOMRect;
28
- };
25
+ }) => OffscreenCanvas;
@@ -0,0 +1,21 @@
1
+ export type Transform = {
2
+ matrices: DOMMatrix[];
3
+ element: Element;
4
+ transformOrigin: string;
5
+ boundingClientRect: DOMRect | null;
6
+ };
7
+ export declare const parseTransformOriginOrPerspectiveOrigin: (transformOrigin: string) => {
8
+ x: number;
9
+ y: number;
10
+ } | null;
11
+ export declare const getInternalOrigin: (origin: string, boundingClientRect: DOMRect) => {
12
+ x: number;
13
+ y: number;
14
+ };
15
+ export declare const getGlobalOrigin: ({ origin, boundingClientRect, }: {
16
+ origin: string;
17
+ boundingClientRect: DOMRect;
18
+ }) => {
19
+ x: number;
20
+ y: number;
21
+ };
@@ -0,0 +1,17 @@
1
+ export type Transform = {
2
+ matrices: DOMMatrix[];
3
+ element: Element;
4
+ transformOrigin: string;
5
+ boundingClientRect: DOMRect | null;
6
+ };
7
+ export declare const parseTransformOriginOrPerspectiveOrigin: (transformOrigin: string) => {
8
+ x: number;
9
+ y: number;
10
+ } | null;
11
+ export declare const getAbsoluteOrigin: ({ origin, boundingClientRect, }: {
12
+ origin: string;
13
+ boundingClientRect: DOMRect;
14
+ }) => {
15
+ x: number;
16
+ y: number;
17
+ };