@bendyline/squisq-video-react 2.4.23 → 2.4.25

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.
@@ -333,10 +333,21 @@ async function encodeAacTrack(audioBuffer, sink, bitrate) {
333
333
  const sampleRate = audioBuffer.sampleRate;
334
334
  const channels = audioBuffer.numberOfChannels;
335
335
  let encodeError = null;
336
+ let inFlight = 0;
337
+ let wake;
336
338
  const encoder = new AudioEncoder({
337
- output: (chunk, meta) => sink.addAudioChunk(chunk, meta ?? void 0),
339
+ output: (chunk, meta) => {
340
+ inFlight = Math.max(0, inFlight - 1);
341
+ try {
342
+ sink.addAudioChunk(chunk, meta ?? void 0);
343
+ } catch (error) {
344
+ encodeError = error instanceof Error ? error : new Error(String(error));
345
+ }
346
+ wake?.();
347
+ },
338
348
  error: (err) => {
339
349
  encodeError = err instanceof Error ? err : new Error(String(err));
350
+ wake?.();
340
351
  }
341
352
  });
342
353
  encoder.configure({ codec: "mp4a.40.2", sampleRate, numberOfChannels: channels, bitrate });
@@ -352,8 +363,11 @@ async function encodeAacTrack(audioBuffer, sink, bitrate) {
352
363
  try {
353
364
  for (let offset = 0; offset < total; offset += AAC_FRAME_SAMPLES) {
354
365
  if (encodeError) throw encodeError;
355
- if (encoder.encodeQueueSize >= queueLimit) {
356
- await encoder.flush();
366
+ while (inFlight >= queueLimit) {
367
+ await new Promise((resolve) => {
368
+ wake = resolve;
369
+ });
370
+ wake = void 0;
357
371
  if (encodeError) throw encodeError;
358
372
  }
359
373
  const count = Math.min(AAC_FRAME_SAMPLES, total - offset);
@@ -371,6 +385,7 @@ async function encodeAacTrack(audioBuffer, sink, bitrate) {
371
385
  data: planar
372
386
  });
373
387
  try {
388
+ inFlight++;
374
389
  encoder.encode(audioData);
375
390
  } finally {
376
391
  audioData.close();
@@ -92,7 +92,7 @@ function createWavStreamWriter(sampleRate, channels, options = {}) {
92
92
  // src/audioFile/audioFileEncoder.ts
93
93
  var lossyModule = null;
94
94
  function loadLossyModule() {
95
- lossyModule ?? (lossyModule = import("./lossyEncoder-EIXBAOLG.js"));
95
+ lossyModule ?? (lossyModule = import("./lossyEncoder-55PXLHLE.js"));
96
96
  return lossyModule;
97
97
  }
98
98
  function validateOptions(options) {
@@ -18,7 +18,7 @@ import {
18
18
  WavOutputFormat,
19
19
  WebMOutputFormat,
20
20
  canEncodeAudio
21
- } from "./chunk-C7NEHV5X.js";
21
+ } from "./chunk-R4P6O5U6.js";
22
22
 
23
23
  // src/mediaEdit/mediaEditEngine.ts
24
24
  import {
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { Doc, MediaProvider } from '@bendyline/squisq/schemas';
3
3
  import { e as MediaEditRenderManager } from '../mediaEditRenderManager-W_o6RRhT.js';
4
4
  import { b as VideoExportConfig, f as VideoOutputFormat } from '../useVideoExport-DsNDpjmO.js';
@@ -66,7 +66,7 @@ interface VideoExportPalette {
66
66
  success: string;
67
67
  danger: string;
68
68
  }
69
- declare function VideoExportModal({ doc, playerScript, mediaProvider, images, audio, mediaEditRenders, defaultConfig, colorScheme, uiPalette, saveOutput, saveActionLabel, onClose, }: VideoExportModalProps): react_jsx_runtime.JSX.Element;
69
+ declare function VideoExportModal({ doc, playerScript, mediaProvider, images, audio, mediaEditRenders, defaultConfig, colorScheme, uiPalette, saveOutput, saveActionLabel, onClose, }: VideoExportModalProps): react.JSX.Element;
70
70
 
71
71
  interface VideoExportButtonProps {
72
72
  /** The document to export */
@@ -104,6 +104,6 @@ interface VideoExportButtonProps {
104
104
  /** Whether the button is disabled */
105
105
  disabled?: boolean;
106
106
  }
107
- declare function VideoExportButton({ doc, playerScript, mediaProvider, images, audio, defaultConfig, colorScheme, uiPalette, saveOutput, saveActionLabel, label, style, disabled, }: VideoExportButtonProps): react_jsx_runtime.JSX.Element;
107
+ declare function VideoExportButton({ doc, playerScript, mediaProvider, images, audio, defaultConfig, colorScheme, uiPalette, saveOutput, saveActionLabel, label, style, disabled, }: VideoExportButtonProps): react.JSX.Element;
108
108
 
109
109
  export { VideoExportButton, type VideoExportButtonProps, VideoExportModal, type VideoExportModalProps, type VideoExportPalette };
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  VideoExportButton,
3
3
  VideoExportModal
4
- } from "../chunk-TUZLVOSP.js";
4
+ } from "../chunk-NTLNXUMA.js";
5
5
  import {
6
6
  CoverImageExportModal,
7
7
  coverImageFilename,
8
8
  validateCoverImageDimensions
9
- } from "../chunk-JDIMPME5.js";
9
+ } from "../chunk-JVGUGMEZ.js";
10
10
  import "../chunk-3NJDHK62.js";
11
- import "../chunk-47ODXCBA.js";
12
- import "../chunk-A52VG7RA.js";
13
- import "../chunk-C7NEHV5X.js";
14
- import "../chunk-ISYJJJXN.js";
11
+ import "../chunk-IOLZNTKA.js";
12
+ import "../chunk-CWLDLWSE.js";
13
+ import "../chunk-R4P6O5U6.js";
14
+ import "../chunk-RIXBIX3H.js";
15
15
  import "../chunk-5MFQMJ5Z.js";
16
16
  export {
17
17
  CoverImageExportModal,
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { Doc, MediaProvider, Theme } from '@bendyline/squisq/schemas';
3
3
  import { CoverSlideTemplate } from '@bendyline/squisq/doc';
4
4
  import { I as ImageExportFormat } from '../imageExportShared-B6nqWtE-.js';
@@ -19,6 +19,6 @@ interface CoverImageExportModalProps {
19
19
  }
20
20
  declare function validateCoverImageDimensions(width: number, height: number): string | null;
21
21
  declare function coverImageFilename(requestedName: string | undefined, format: CoverImageExportFormat): string;
22
- declare function CoverImageExportModal({ doc, mediaProvider, theme, coverSlideTemplate, defaultWidth, defaultHeight, defaultFileName, colorScheme, saveOutput, onClose, }: CoverImageExportModalProps): react_jsx_runtime.JSX.Element;
22
+ declare function CoverImageExportModal({ doc, mediaProvider, theme, coverSlideTemplate, defaultWidth, defaultHeight, defaultFileName, colorScheme, saveOutput, onClose, }: CoverImageExportModalProps): react.JSX.Element;
23
23
 
24
24
  export { type CoverImageExportFormat, CoverImageExportModal, type CoverImageExportModalProps, coverImageFilename, validateCoverImageDimensions };
@@ -2,10 +2,10 @@ import {
2
2
  CoverImageExportModal,
3
3
  coverImageFilename,
4
4
  validateCoverImageDimensions
5
- } from "../chunk-JDIMPME5.js";
5
+ } from "../chunk-JVGUGMEZ.js";
6
6
  import "../chunk-3NJDHK62.js";
7
- import "../chunk-A52VG7RA.js";
8
- import "../chunk-C7NEHV5X.js";
7
+ import "../chunk-CWLDLWSE.js";
8
+ import "../chunk-R4P6O5U6.js";
9
9
  export {
10
10
  CoverImageExportModal,
11
11
  coverImageFilename,
@@ -1,4 +1,4 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
1
+ import * as react from 'react';
2
2
  import { Doc, MediaProvider, Theme } from '@bendyline/squisq/schemas';
3
3
  import { DashboardStyleId } from '@bendyline/squisq/doc';
4
4
  import { DashboardResolutionId } from '@bendyline/squisq-video';
@@ -24,6 +24,6 @@ interface DashboardImageExportModalProps {
24
24
  saveOutput?: (blob: Blob, filename: string) => boolean | void | Promise<boolean | void>;
25
25
  onClose: () => void;
26
26
  }
27
- declare function DashboardImageExportModal({ doc, mediaProvider, theme, defaultResolution, defaultLayout, defaultShowTitle, defaultStyle, defaultFileName, colorScheme, saveOutput, onClose, }: DashboardImageExportModalProps): react_jsx_runtime.JSX.Element;
27
+ declare function DashboardImageExportModal({ doc, mediaProvider, theme, defaultResolution, defaultLayout, defaultShowTitle, defaultStyle, defaultFileName, colorScheme, saveOutput, onClose, }: DashboardImageExportModalProps): react.JSX.Element;
28
28
 
29
29
  export { type DashboardImageExportFormat, DashboardImageExportModal, type DashboardImageExportModalProps };
@@ -7,8 +7,8 @@ import {
7
7
  } from "../chunk-3NJDHK62.js";
8
8
  import {
9
9
  useFrameCapture
10
- } from "../chunk-A52VG7RA.js";
11
- import "../chunk-C7NEHV5X.js";
10
+ } from "../chunk-CWLDLWSE.js";
11
+ import "../chunk-R4P6O5U6.js";
12
12
 
13
13
  // src/DashboardImageExportModal.tsx
14
14
  import { useCallback, useId, useMemo, useRef, useState } from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  createAudioFileEncoder,
3
3
  supportedAudioFileFormats
4
- } from "../chunk-FMQI6WK2.js";
4
+ } from "../chunk-UVDJINCK.js";
5
5
  import "../chunk-2W6JQSIY.js";
6
6
  import {
7
7
  createEncoder,
@@ -10,7 +10,7 @@ import {
10
10
  supportsWebCodecs,
11
11
  supportsWebCodecsAac,
12
12
  supportsWebCodecsH264
13
- } from "../chunk-ISYJJJXN.js";
13
+ } from "../chunk-RIXBIX3H.js";
14
14
  import "../chunk-5MFQMJ5Z.js";
15
15
  export {
16
16
  createAudioFileEncoder,
@@ -3,12 +3,12 @@ import {
3
3
  resolveVideoCoverFramePlan,
4
4
  resolveVideoExportCover,
5
5
  useVideoExport
6
- } from "../chunk-47ODXCBA.js";
6
+ } from "../chunk-IOLZNTKA.js";
7
7
  import {
8
8
  useFrameCapture
9
- } from "../chunk-A52VG7RA.js";
10
- import "../chunk-C7NEHV5X.js";
11
- import "../chunk-ISYJJJXN.js";
9
+ } from "../chunk-CWLDLWSE.js";
10
+ import "../chunk-R4P6O5U6.js";
11
+ import "../chunk-RIXBIX3H.js";
12
12
  import "../chunk-5MFQMJ5Z.js";
13
13
  export {
14
14
  DEFAULT_VIDEO_COVER_PRE_ROLL_SECONDS,
package/dist/index.d.ts CHANGED
@@ -7,7 +7,7 @@ export { AudioTimelineClip, FfmpegWasmLoadConfig } from '@bendyline/squisq-video
7
7
  export { AudioFileEncoder, AudioFileEncoderOptions, AudioFileFormat, RenderDocumentAudioOptions, createAudioFileEncoder, renderAudioTimeline, renderDocumentAudio, supportedAudioFileFormats, supportsWebCodecsAac } from './encoder/index.js';
8
8
  export { M as MediaEditJobOptions, a as MediaEditPausesRequest, b as MediaEditPausesResult, c as MediaEditPreviewRequest, d as MediaEditPreviewResult, e as MediaEditRenderManager, f as MediaEditRenderManagerOptions, g as MediaEditRenderRequest, h as MediaEditRenderResult, i as MediaEditRenderState, j as MediaEditRenderStatus, k as MediaEditRenderer, l as MediaEditRendererOptions, m as createMediaEditRenderManager, n as createMediaEditRenderer } from './mediaEditRenderManager-W_o6RRhT.js';
9
9
  export { MediaEditRendersView, useMediaEditRenders, useMediaEditStatus, useProcessedAudio } from './media-edit/index.js';
10
- import 'react/jsx-runtime';
10
+ import 'react';
11
11
  import '@bendyline/squisq/schemas';
12
12
  import '@bendyline/squisq/doc';
13
13
  import './imageExportShared-B6nqWtE-.js';
package/dist/index.js CHANGED
@@ -1,27 +1,27 @@
1
1
  import {
2
2
  VideoExportButton,
3
3
  VideoExportModal
4
- } from "./chunk-TUZLVOSP.js";
4
+ } from "./chunk-NTLNXUMA.js";
5
5
  import {
6
6
  CoverImageExportModal,
7
7
  coverImageFilename,
8
8
  validateCoverImageDimensions
9
- } from "./chunk-JDIMPME5.js";
9
+ } from "./chunk-JVGUGMEZ.js";
10
10
  import "./chunk-3NJDHK62.js";
11
11
  import {
12
12
  DEFAULT_VIDEO_COVER_PRE_ROLL_SECONDS,
13
13
  resolveVideoCoverFramePlan,
14
14
  resolveVideoExportCover,
15
15
  useVideoExport
16
- } from "./chunk-47ODXCBA.js";
16
+ } from "./chunk-IOLZNTKA.js";
17
17
  import {
18
18
  useFrameCapture
19
- } from "./chunk-A52VG7RA.js";
20
- import "./chunk-C7NEHV5X.js";
19
+ } from "./chunk-CWLDLWSE.js";
20
+ import "./chunk-R4P6O5U6.js";
21
21
  import {
22
22
  createAudioFileEncoder,
23
23
  supportedAudioFileFormats
24
- } from "./chunk-FMQI6WK2.js";
24
+ } from "./chunk-UVDJINCK.js";
25
25
  import "./chunk-2W6JQSIY.js";
26
26
  import {
27
27
  createEncoder,
@@ -30,14 +30,14 @@ import {
30
30
  supportsWebCodecs,
31
31
  supportsWebCodecsAac,
32
32
  supportsWebCodecsH264
33
- } from "./chunk-ISYJJJXN.js";
33
+ } from "./chunk-RIXBIX3H.js";
34
34
  import {
35
35
  createMediaEditRenderManager,
36
36
  createMediaEditRenderer,
37
37
  useMediaEditRenders,
38
38
  useMediaEditStatus,
39
39
  useProcessedAudio
40
- } from "./chunk-OLFWEKY5.js";
40
+ } from "./chunk-7RONIAPM.js";
41
41
  import "./chunk-TL2IMDIZ.js";
42
42
  import "./chunk-5MFQMJ5Z.js";
43
43
  export {
@@ -6,7 +6,7 @@ import {
6
6
  Output,
7
7
  WebMOutputFormat,
8
8
  canEncodeAudio
9
- } from "./chunk-C7NEHV5X.js";
9
+ } from "./chunk-R4P6O5U6.js";
10
10
  import {
11
11
  assertOpen,
12
12
  blockFrames,
@@ -4,7 +4,7 @@ import {
4
4
  useMediaEditRenders,
5
5
  useMediaEditStatus,
6
6
  useProcessedAudio
7
- } from "../chunk-OLFWEKY5.js";
7
+ } from "../chunk-7RONIAPM.js";
8
8
  import "../chunk-TL2IMDIZ.js";
9
9
  export {
10
10
  createMediaEditRenderManager,
@@ -3,8 +3,8 @@ import {
3
3
  analyzeMediaEditPauses,
4
4
  previewMediaEditAudio,
5
5
  renderMediaEditAudio
6
- } from "./chunk-BNNLPKT2.js";
7
- import "./chunk-C7NEHV5X.js";
6
+ } from "./chunk-Y5ZQ6M43.js";
7
+ import "./chunk-R4P6O5U6.js";
8
8
  export {
9
9
  analyzeMediaEditAudio,
10
10
  analyzeMediaEditPauses,
@@ -3,8 +3,8 @@ import {
3
3
  analyzeMediaEditPauses,
4
4
  previewMediaEditAudio,
5
5
  renderMediaEditAudio
6
- } from "../chunk-BNNLPKT2.js";
7
- import "../chunk-C7NEHV5X.js";
6
+ } from "../chunk-Y5ZQ6M43.js";
7
+ import "../chunk-R4P6O5U6.js";
8
8
  import {
9
9
  createRnnoiseDenoiserFactory
10
10
  } from "../chunk-TL2IMDIZ.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-video-react",
3
- "version": "2.4.23",
3
+ "version": "2.4.25",
4
4
  "description": "React components for browser-based MP4 and animated-GIF export of Squisq documents",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -77,19 +77,19 @@
77
77
  "react-dom": "^18.0.0 || ^19.0.0"
78
78
  },
79
79
  "dependencies": {
80
- "@bendyline/squisq": "2.11.17",
81
- "@bendyline/squisq-video": "2.3.21",
82
- "@bendyline/squisq-react": "2.11.19",
83
- "@ffmpeg/core": "0.12.9",
80
+ "@bendyline/squisq": "2.11.19",
81
+ "@bendyline/squisq-video": "2.3.23",
82
+ "@bendyline/squisq-react": "2.11.21",
83
+ "@ffmpeg/core": "0.12.10",
84
84
  "@ffmpeg/ffmpeg": "0.12.15",
85
85
  "@ffmpeg/util": "0.12.2",
86
86
  "@shiguredo/rnnoise-wasm": "2025.1.5",
87
87
  "html2canvas": "1.4.1"
88
88
  },
89
89
  "devDependencies": {
90
- "@types/react": "18.3.28",
90
+ "@types/react": "18.3.31",
91
91
  "@types/react-dom": "18.3.7",
92
- "mediabunny": "1.57.0",
92
+ "mediabunny": "1.61.0",
93
93
  "mp4-muxer": "5.2.2",
94
94
  "react": "18.3.1",
95
95
  "react-dom": "18.3.1",