@remotion/light-leaks 4.0.467 → 4.0.468

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.
@@ -231,13 +231,16 @@ Internals.addSequenceStackTraces(LightLeak);
231
231
  // src/light-leak-internals.ts
232
232
  import { Internals as Internals2 } from "remotion";
233
233
  var { createEffect, createWebGL2ContextError } = Internals2;
234
+ var DEFAULT_SEED = 0;
235
+ var DEFAULT_HUE_SHIFT = 0;
236
+ var DEFAULT_PROGRESS = 0.5;
234
237
  var lightLeakEffectSchema = {
235
- seed: { type: "number", default: 0, description: "Seed" },
238
+ seed: { type: "number", default: DEFAULT_SEED, description: "Seed" },
236
239
  hueShift: {
237
240
  type: "number",
238
241
  min: 0,
239
242
  max: 360,
240
- default: 0,
243
+ default: DEFAULT_HUE_SHIFT,
241
244
  description: "Hue Shift"
242
245
  },
243
246
  progress: {
@@ -245,15 +248,50 @@ var lightLeakEffectSchema = {
245
248
  min: 0,
246
249
  max: 1,
247
250
  step: 0.01,
248
- default: 0,
251
+ default: DEFAULT_PROGRESS,
249
252
  description: "Progress"
250
253
  }
251
254
  };
252
255
  var resolve = (p) => ({
253
- seed: p.seed ?? 0,
254
- hueShift: p.hueShift ?? 0,
255
- progress: p.progress ?? 0
256
+ seed: p.seed ?? DEFAULT_SEED,
257
+ hueShift: p.hueShift ?? DEFAULT_HUE_SHIFT,
258
+ progress: p.progress ?? DEFAULT_PROGRESS
256
259
  });
260
+ var assertEffectParamsObject = (params, effectLabel) => {
261
+ if (params === null || typeof params !== "object") {
262
+ throw new TypeError(`${effectLabel} effect requires a parameters object, but got ${JSON.stringify(params)}`);
263
+ }
264
+ };
265
+ var assertOptionalFiniteNumber = (value, name) => {
266
+ if (value === undefined) {
267
+ return;
268
+ }
269
+ if (typeof value !== "number" || !Number.isFinite(value)) {
270
+ throw new TypeError(`"${name}" must be a finite number, but got ${JSON.stringify(value)}`);
271
+ }
272
+ };
273
+ var validateUnitInterval = (value, name) => {
274
+ if (value < 0) {
275
+ throw new TypeError(`"${name}" must be >= 0, but got ${JSON.stringify(value)}`);
276
+ }
277
+ if (value > 1) {
278
+ throw new TypeError(`"${name}" must be <= 1, but got ${JSON.stringify(value)}`);
279
+ }
280
+ };
281
+ var validateLightLeakParams = (params) => {
282
+ assertEffectParamsObject(params, "lightLeak()");
283
+ assertOptionalFiniteNumber(params.seed, "seed");
284
+ assertOptionalFiniteNumber(params.hueShift, "hueShift");
285
+ assertOptionalFiniteNumber(params.progress, "progress");
286
+ const { hueShift, progress } = resolve(params);
287
+ if (hueShift < 0) {
288
+ throw new TypeError(`"hueShift" must be >= 0, but got ${hueShift}`);
289
+ }
290
+ if (hueShift > 360) {
291
+ throw new TypeError(`"hueShift" must be <= 360, but got ${hueShift}`);
292
+ }
293
+ validateUnitInterval(progress, "progress");
294
+ };
257
295
  var LIGHT_LEAK_VS = `#version 300 es
258
296
  in vec2 aPos;
259
297
  in vec2 aUv;
@@ -374,8 +412,8 @@ var linkProgram = (gl, vs, fs) => {
374
412
  };
375
413
  var lightLeak = createEffect({
376
414
  type: "remotion/light-leak",
377
- label: "Light leak",
378
- documentationLink: "https://www.remotion.dev/docs/light-leaks/light-leak",
415
+ label: "lightLeak()",
416
+ documentationLink: "https://www.remotion.dev/docs/light-leaks/light-leak-effect",
379
417
  backend: "webgl2",
380
418
  calculateKey: (params) => {
381
419
  const r = resolve(params);
@@ -457,18 +495,8 @@ var lightLeak = createEffect({
457
495
  },
458
496
  apply: ({ source, width, height, params, state, flipSourceY }) => {
459
497
  const r = resolve(params);
460
- if (typeof r.seed !== "number" || !Number.isFinite(r.seed)) {
461
- throw new TypeError(`"seed" must be a finite number, but got ${JSON.stringify(r.seed)}`);
462
- }
463
- if (typeof r.hueShift !== "number" || !Number.isFinite(r.hueShift)) {
464
- throw new TypeError(`"hueShift" must be a finite number, but got ${JSON.stringify(r.hueShift)}`);
465
- }
466
- if (r.hueShift < 0 || r.hueShift > 360) {
467
- throw new RangeError(`"hueShift" must be between 0 and 360, but got ${r.hueShift}`);
468
- }
469
- const normalized = Math.min(1, Math.max(0, r.progress));
470
- const evolveProgress = Math.min(1, normalized * 2);
471
- const retractProgress = Math.max(0, normalized * 2 - 1);
498
+ const evolveProgress = Math.min(1, r.progress * 2);
499
+ const retractProgress = Math.max(0, r.progress * 2 - 1);
472
500
  const {
473
501
  gl,
474
502
  program,
@@ -519,13 +547,14 @@ var lightLeak = createEffect({
519
547
  gl.deleteTexture(texture);
520
548
  },
521
549
  schema: lightLeakEffectSchema,
522
- validateParams: () => {}
550
+ validateParams: validateLightLeakParams
523
551
  });
524
552
  var LightLeakInternals = {
525
553
  lightLeak
526
554
  };
527
555
  export {
528
556
  lightLeakEffectSchema,
557
+ lightLeak,
529
558
  LightLeakInternals,
530
559
  LightLeak
531
560
  };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { LightLeak } from './LightLeak';
2
2
  export type { LightLeakProps } from './LightLeak';
3
- export { LightLeakInternals, lightLeakEffectSchema, } from './light-leak-internals';
3
+ export { LightLeakInternals, lightLeak, lightLeakEffectSchema, } from './light-leak-internals';
4
4
  export type { LightLeakEffectParams } from './light-leak-internals';
@@ -16,16 +16,19 @@ export declare const lightLeakEffectSchema: {
16
16
  readonly min: 0;
17
17
  readonly max: 1;
18
18
  readonly step: 0.01;
19
- readonly default: 0;
19
+ readonly default: 0.5;
20
20
  readonly description: "Progress";
21
21
  };
22
22
  };
23
23
  export type LightLeakEffectParams = {
24
24
  readonly seed?: number;
25
25
  readonly hueShift?: number;
26
- /** Evolve/retract phase from 0 (start) to 1 (end). */
26
+ /** Evolve/retract phase from 0 (start) to 1 (end). Defaults to 0.5. */
27
27
  readonly progress?: number;
28
28
  };
29
+ export declare const lightLeak: (params?: (LightLeakEffectParams & {
30
+ readonly disabled?: boolean | undefined;
31
+ }) | undefined) => import("remotion").EffectDescriptor<unknown>;
29
32
  /**
30
33
  * Experimental internals for the light leak canvas effect pipeline.
31
34
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remotion/light-leaks",
3
- "version": "4.0.467",
3
+ "version": "4.0.468",
4
4
  "description": "Light leak effects for Remotion",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -10,6 +10,7 @@
10
10
  },
11
11
  "type": "module",
12
12
  "scripts": {
13
+ "test": "bun test src/test",
13
14
  "formatting": "oxfmt src --check",
14
15
  "format": "oxfmt src",
15
16
  "lint": "eslint src",
@@ -23,7 +24,7 @@
23
24
  "url": "https://github.com/remotion-dev/remotion/issues"
24
25
  },
25
26
  "dependencies": {
26
- "remotion": "4.0.467",
27
+ "remotion": "4.0.468",
27
28
  "zod": "4.3.6"
28
29
  },
29
30
  "peerDependencies": {
@@ -41,7 +42,7 @@
41
42
  "devDependencies": {
42
43
  "react": "19.2.3",
43
44
  "react-dom": "19.2.3",
44
- "@remotion/eslint-config-internal": "4.0.467",
45
+ "@remotion/eslint-config-internal": "4.0.468",
45
46
  "eslint": "9.19.0",
46
47
  "@typescript/native-preview": "7.0.0-dev.20260217.1"
47
48
  },