@bendyline/squisq-editor-react 2.11.2 → 2.11.4

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RecorderModal
3
- } from "./chunk-7RRYZULY.js";
3
+ } from "./chunk-BJ3TXAIQ.js";
4
4
 
5
5
  // src/recorder/RecorderButton.tsx
6
6
  import { useCallback, useState } from "react";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  NarrationStage,
3
3
  useNarrationStage
4
- } from "./chunk-PMNNJYFD.js";
4
+ } from "./chunk-34FRFDQ6.js";
5
5
 
6
6
  // src/teleprompter/TeleprompterView.tsx
7
7
  import { jsx } from "react/jsx-runtime";
@@ -10,8 +10,8 @@ var RE_BOLD_UNDER = /(?<![\p{L}\p{N}_])__(?![\s_])(.+?)(?<![\s_])__(?![\p{L}\p{N
10
10
  var RE_ITALIC_STAR = /\*(?![\s*])(.+?)(?<![\s*])\*/g;
11
11
  var RE_ITALIC_UNDER = /(?<![\p{L}\p{N}_])_(?![\s_])(.+?)(?<![\s_])_(?![\p{L}\p{N}_])/gu;
12
12
  var RE_STRIKETHROUGH = /~~(.+?)~~/g;
13
- var RE_LEGACY_BOLD_STAR = /\*\*(?![\s*])(.+?)(?<![\s*])([ \t]+)\*\*(?=$|[^\s*])/g;
14
- var RE_LEGACY_ITALIC_STAR = /(?<!\*)\*(?![\s*])(.+?)(?<![\s*])([ \t]+)\*(?=$|[^\s*])/g;
13
+ var RE_LEGACY_BOLD_STAR = /\*\*(?![\s*])((?:(?!\*\*).)+?)(?<![\s*])([ \t]+)\*\*(?=$|[^\s*])/g;
14
+ var RE_LEGACY_ITALIC_STAR = /(?<!\*)\*(?![\s*])([^*]+?)(?<![\s*])([ \t]+)\*(?=$|[^\s*])/g;
15
15
  var ESCAPABLE_MD_CHARS = ["*", "_", "~", "\\"];
16
16
  var RE_MD_ESCAPE = /\\([*_~\\])/g;
17
17
  var RE_INLINE_CODE = /`(.+?)`/g;
@@ -445,7 +445,7 @@ function tiptapToMarkdown(html) {
445
445
  while ((cellExec = cellRegex.exec(rowHtml)) !== null) {
446
446
  const tag = cellExec[1];
447
447
  const attrs = cellExec[2];
448
- const content = htmlToTableCell(cellExec[3].replace(/<\/?p>/g, ""));
448
+ const content = htmlToTableCell(cellExec[3]);
449
449
  const alignExec = attrs.match(/text-align:\s*(left|center|right)/);
450
450
  cells.push({
451
451
  content,
@@ -1075,7 +1075,8 @@ function htmlToInline(html) {
1075
1075
  return restoreLeadingSpaces(unescapeHtml(result));
1076
1076
  }
1077
1077
  function htmlToTableCell(html) {
1078
- return htmlToInline(html).replace(/ {2}\n/g, "<br>");
1078
+ const withParagraphBreaks = html.replace(/<\/p>\s*<p(?:\s[^>]*)?>/gi, "<br>").replace(/^\s*<p(?:\s[^>]*)?>/i, "").replace(/<\/p>\s*$/i, "");
1079
+ return htmlToInline(withParagraphBreaks).replace(/ {2}\n/g, "<br>");
1079
1080
  }
1080
1081
  function preserveLeadingSpaces(html) {
1081
1082
  return html.replace(/^ +/, (spaces) => "&nbsp;".repeat(spaces.length));
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  markdownToTiptap,
3
3
  tiptapToMarkdown
4
- } from "./chunk-A2W4GYPG.js";
4
+ } from "./chunk-ES6CPRCW.js";
5
5
 
6
6
  // src/jsonEditor/JsonEditorContext.tsx
7
7
  import { createContext, useContext, useEffect, useMemo } from "react";
package/dist/index.d.ts CHANGED
@@ -26,9 +26,9 @@ import { FenceRendererMap } from '@bendyline/squisq/fence';
26
26
  import { TableViewState } from '@bendyline/squisq/table';
27
27
  import { EditJournal } from '@bendyline/squisq-grid-react';
28
28
  export { JsonEditor, JsonEditorProps } from './json-editor/index.js';
29
- export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, r as RecorderNarrationOptions, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, x as RecorderSlidesOptions, S as ScreenStreamHandle, y as ScreenStreamOptions, z as SlideTimingSaveResult, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from './recorder-GrEh4xE8.js';
30
- import { R as RecorderState } from './useNarrationStage-B6r9Zlq-.js';
31
- export { C as CanvasSink, a as CaptureKind, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, c as FloatingWindowHandle, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, g as NarrationStageHandle, h as NarrationTake, P as PrompterTransport, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, m as ResolvedFormat, T as TeleprompterController, n as TeleprompterPrefs, o as TeleprompterRecordingDeps, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, q as UseNarrationStageOptions, r as buildFilename, s as createFloatingWindowManager, t as detectFloatTiers, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, z as useFloatingWindow, A as useMediaRecorder, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from './useNarrationStage-B6r9Zlq-.js';
29
+ export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, r as RecorderNarrationOptions, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, x as RecorderSlidesOptions, S as ScreenStreamHandle, y as ScreenStreamOptions, z as SlideTimingSaveResult, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from './recorder-B6MtQH5u.js';
30
+ import { R as RecorderState } from './useNarrationStage-D3Sgcf0L.js';
31
+ export { C as CanvasSink, a as CaptureKind, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, c as FloatingWindowHandle, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, g as NarrationStageHandle, h as NarrationTake, P as PrompterTransport, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, m as ResolvedFormat, T as TeleprompterController, n as TeleprompterPrefs, o as TeleprompterRecordingDeps, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, q as UseNarrationStageOptions, r as buildFilename, s as createFloatingWindowManager, t as detectFloatTiers, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, z as useFloatingWindow, A as useMediaRecorder, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from './useNarrationStage-D3Sgcf0L.js';
32
32
  export { EYE_LINE_FRACTION, NarrationSavePlan, NarrationSaveResult, NarrationStage, NarrationStageProps, PCM_WORKLET_NAME, PCM_WORKLET_SOURCE, TELEPROMPTER_CSS, TeleprompterControls, TeleprompterControlsProps, TeleprompterSurface, TeleprompterSurfaceProps, TeleprompterView, TeleprompterViewProps, TokenLineMap, buildNarrationSavePlan, cameraVideoLine, ensureTeleprompterStyles, executeNarrationSave, insertNarrationPreamble, measureTokenLines, narrationAnnotationLine, prompterVarsFromTheme, registerPcmWorklet, stepScroll, targetOffsetFor } from './teleprompter/index.js';
33
33
  export { H as HarperProofingConfig, P as ProofingCapability, a as ProofingDocumentRef, b as ProofingIgnoreStore, c as ProofingLanguage, d as ProofingLintOptions, e as ProofingProvider, f as ProofingProviderFactory } from './types-B_aHRuSc.js';
34
34
  export { createHarperProofingProvider } from './proofing/index.js';
package/dist/index.js CHANGED
@@ -229,15 +229,15 @@ import {
229
229
  useTreeViewData,
230
230
  viewStateFromBinding,
231
231
  writeHeadingViewState
232
- } from "./chunk-QIQNP2GI.js";
232
+ } from "./chunk-CDISORBP.js";
233
233
  import "./chunk-V4NBQF5C.js";
234
234
  import {
235
235
  JsonEditor
236
- } from "./chunk-SK3MQSHQ.js";
236
+ } from "./chunk-UYKOTWJM.js";
237
237
  import {
238
238
  markdownToTiptap,
239
239
  tiptapToMarkdown
240
- } from "./chunk-A2W4GYPG.js";
240
+ } from "./chunk-ES6CPRCW.js";
241
241
  import {
242
242
  ImageEditor,
243
243
  ImageViewer,
@@ -247,7 +247,7 @@ import {
247
247
  } from "./chunk-V44VP242.js";
248
248
  import {
249
249
  RecorderButton
250
- } from "./chunk-VH45VMPL.js";
250
+ } from "./chunk-DN6XFOY2.js";
251
251
  import {
252
252
  DEFAULT_RECORDER_DEVICE_SETTINGS,
253
253
  RecorderDeviceQuickPicks,
@@ -278,11 +278,11 @@ import {
278
278
  unshownSlidesWarning,
279
279
  useMediaDevices,
280
280
  useMediaRecorder
281
- } from "./chunk-7RRYZULY.js";
281
+ } from "./chunk-BJ3TXAIQ.js";
282
282
  import "./chunk-GS7QWYFT.js";
283
283
  import {
284
284
  TeleprompterView
285
- } from "./chunk-UNOKKSAC.js";
285
+ } from "./chunk-ENDRPV6T.js";
286
286
  import {
287
287
  DEFAULT_TELEPROMPTER_PREFS,
288
288
  EYE_LINE_FRACTION,
@@ -322,7 +322,7 @@ import {
322
322
  useStreamPreview,
323
323
  useTeleprompter,
324
324
  vadConfigForSensitivity
325
- } from "./chunk-PMNNJYFD.js";
325
+ } from "./chunk-34FRFDQ6.js";
326
326
 
327
327
  // src/FolderView.tsx
328
328
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  JsonEditor
3
- } from "../chunk-SK3MQSHQ.js";
4
- import "../chunk-A2W4GYPG.js";
3
+ } from "../chunk-UYKOTWJM.js";
4
+ import "../chunk-ES6CPRCW.js";
5
5
  export {
6
6
  JsonEditor
7
7
  };
@@ -1,5 +1,5 @@
1
- export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, S as ScreenStreamHandle, y as ScreenStreamOptions, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from '../recorder-GrEh4xE8.js';
2
- export { a as CaptureKind, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, R as RecorderState, m as ResolvedFormat, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, r as buildFilename, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, A as useMediaRecorder } from '../useNarrationStage-B6r9Zlq-.js';
1
+ export { C as CameraStreamOptions, D as DEFAULT_RECORDER_DEVICE_SETTINGS, M as MediaDeviceInventory, R as RecordedBookmark, a as RecordedMediaKind, b as RecorderAudioDeviceSettings, c as RecorderButton, d as RecorderButtonProps, e as RecorderCameraDeviceSettings, f as RecorderCameraSaveResult, g as RecorderColorScheme, h as RecorderConstraintMode, i as RecorderDeviceOption, j as RecorderDeviceQuickPicks, k as RecorderDeviceQuickPicksProps, l as RecorderDeviceSettings, m as RecorderDeviceSettingsPanel, n as RecorderDeviceSettingsPanelProps, o as RecorderEncodingSettings, p as RecorderModal, q as RecorderModalProps, s as RecorderPanel, t as RecorderPanelProps, u as RecorderSaveResult, v as RecorderScreenAudioSettings, w as RecorderScreenDeviceSettings, S as ScreenStreamHandle, y as ScreenStreamOptions, T as TimingJson, A as buildRecorderAudioConstraints, B as buildRecorderCameraConstraints, E as buildRecorderScreenAudioConstraints, F as buildRecorderScreenConstraints, G as buildTimingJson, H as encodeTimingJson, I as hasRecorderDeviceChoice, J as recordedMediaKind, K as recorderBitsPerSecond, L as recorderDeviceGroups, N as recorderDeviceOptions, O as requestCameraStream, P as requestMicStream, Q as requestScreenStream, U as timingPathFor, V as useMediaDevices, W as useStreamPreview } from '../recorder-B6MtQH5u.js';
2
+ export { a as CaptureKind, i as RecorderAudioBitrateMode, j as RecorderCameraLane, k as RecorderExtendedMediaOptions, l as RecorderSource, R as RecorderState, m as ResolvedFormat, U as UseMediaRecorderOptions, p as UseMediaRecorderResult, r as buildFilename, u as getCaptureKind, v as resolveFormat, w as supportsDisplayMedia, x as supportsMediaRecorder, y as supportsUserMedia, A as useMediaRecorder } from '../useNarrationStage-D3Sgcf0L.js';
3
3
  import 'react/jsx-runtime';
4
4
  import '@bendyline/squisq/schemas';
5
5
  import '@bendyline/squisq/storage';
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  RecorderButton
3
- } from "../chunk-VH45VMPL.js";
3
+ } from "../chunk-DN6XFOY2.js";
4
4
  import {
5
5
  DEFAULT_RECORDER_DEVICE_SETTINGS,
6
6
  RecorderDeviceQuickPicks,
@@ -20,7 +20,7 @@ import {
20
20
  requestScreenStream,
21
21
  useMediaDevices,
22
22
  useMediaRecorder
23
- } from "../chunk-7RRYZULY.js";
23
+ } from "../chunk-BJ3TXAIQ.js";
24
24
  import "../chunk-GS7QWYFT.js";
25
25
  import {
26
26
  buildFilename,
@@ -34,7 +34,7 @@ import {
34
34
  supportsUserMedia,
35
35
  timingPathFor,
36
36
  useStreamPreview
37
- } from "../chunk-PMNNJYFD.js";
37
+ } from "../chunk-34FRFDQ6.js";
38
38
  export {
39
39
  DEFAULT_RECORDER_DEVICE_SETTINGS,
40
40
  RecorderButton,
@@ -1,7 +1,7 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Doc, Theme, ViewportConfig, MediaProvider } from '@bendyline/squisq/schemas';
3
3
  import { ContentContainer } from '@bendyline/squisq/storage';
4
- import { l as RecorderSource, o as TeleprompterRecordingDeps } from './useNarrationStage-B6r9Zlq-.js';
4
+ import { l as RecorderSource, o as TeleprompterRecordingDeps } from './useNarrationStage-D3Sgcf0L.js';
5
5
  import { CSSProperties, RefObject } from 'react';
6
6
 
7
7
  type RecordedMediaKind = 'audio' | 'video';
@@ -61,6 +61,8 @@ interface RecorderSlidesOptions {
61
61
  captureTimings?: boolean;
62
62
  }
63
63
  interface RecorderModalProps {
64
+ /** Combined recording byte threshold. Defaults to 90 MiB; final chunks are retained. */
65
+ maxRecordingBytes?: number;
64
66
  /** Required — recordings are written here. */
65
67
  mediaProvider: MediaProvider;
66
68
  /**
@@ -155,7 +157,7 @@ interface SlideTimingSaveResult {
155
157
  /** Take length the block ranges were normalized against. */
156
158
  durationSec: number;
157
159
  }
158
- declare function RecorderModal({ mediaProvider, container, initialMode, colorScheme, onClose, onSave, narration, slides, title, }: RecorderModalProps): react_jsx_runtime.JSX.Element;
160
+ declare function RecorderModal({ mediaProvider, container, initialMode, colorScheme, onClose, onSave, narration, slides, title, maxRecordingBytes, }: RecorderModalProps): react_jsx_runtime.JSX.Element;
159
161
 
160
162
  interface RecorderButtonProps {
161
163
  /** Where to write the resulting recording. Required. */
@@ -7,14 +7,14 @@ import {
7
7
  WysiwygEditor,
8
8
  useEditorContext,
9
9
  useEditorContextMenuItems
10
- } from "../chunk-QIQNP2GI.js";
10
+ } from "../chunk-CDISORBP.js";
11
11
  import "../chunk-V4NBQF5C.js";
12
- import "../chunk-A2W4GYPG.js";
12
+ import "../chunk-ES6CPRCW.js";
13
13
  import "../chunk-V44VP242.js";
14
- import "../chunk-7RRYZULY.js";
14
+ import "../chunk-BJ3TXAIQ.js";
15
15
  import "../chunk-GS7QWYFT.js";
16
- import "../chunk-UNOKKSAC.js";
17
- import "../chunk-PMNNJYFD.js";
16
+ import "../chunk-ENDRPV6T.js";
17
+ import "../chunk-34FRFDQ6.js";
18
18
  export {
19
19
  EditorContextMenuProvider,
20
20
  EditorProvider,
@@ -16649,7 +16649,7 @@
16649
16649
  border-radius: 8px;
16650
16650
  background: var(--squisq-grid-bg, #ffffff);
16651
16651
  color: var(--squisq-grid-text, #1f2937);
16652
- font-size: 0.82rem;
16652
+ font-size: var(--squisq-grid-font-size, 0.82rem);
16653
16653
  overflow: hidden;
16654
16654
  }
16655
16655
  .squisq-grid-scroller {
@@ -16681,6 +16681,7 @@
16681
16681
  border: none;
16682
16682
  background: none;
16683
16683
  font: inherit;
16684
+ font-family: var(--squisq-grid-header-font-family, inherit);
16684
16685
  font-weight: 600;
16685
16686
  color: var(--squisq-grid-header-text, #374151);
16686
16687
  padding: 4px 8px 2px;
@@ -16943,7 +16944,7 @@
16943
16944
  padding: 4px 10px;
16944
16945
  border-top: 1px solid var(--squisq-grid-border, #d1d5db);
16945
16946
  background: var(--squisq-grid-header-bg, #f9fafb);
16946
- font-size: 0.74rem;
16947
+ font-size: var(--squisq-grid-footer-font-size, 0.74rem);
16947
16948
  color: var(--squisq-grid-text-muted, #6b7280);
16948
16949
  }
16949
16950
  .squisq-grid-status {
@@ -1,8 +1,8 @@
1
1
  import * as react_jsx_runtime from 'react/jsx-runtime';
2
2
  import { Doc, Theme, MediaProvider } from '@bendyline/squisq/schemas';
3
3
  import { ContentContainer } from '@bendyline/squisq/storage';
4
- import { o as TeleprompterRecordingDeps, g as NarrationStageHandle, T as TeleprompterController, c as FloatingWindowHandle } from '../useNarrationStage-B6r9Zlq-.js';
5
- export { C as CanvasSink, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, h as NarrationTake, P as PrompterTransport, J as TELEPROMPTER_PREF_LIMITS, n as TeleprompterPrefs, q as UseNarrationStageOptions, s as createFloatingWindowManager, t as detectFloatTiers, K as normalizeTeleprompterPrefs, z as useFloatingWindow, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from '../useNarrationStage-B6r9Zlq-.js';
4
+ import { o as TeleprompterRecordingDeps, g as NarrationStageHandle, T as TeleprompterController, c as FloatingWindowHandle } from '../useNarrationStage-D3Sgcf0L.js';
5
+ export { C as CanvasSink, D as DEFAULT_TELEPROMPTER_PREFS, F as FloatOpenOptions, b as FloatTier, d as FloatingWindowManager, M as MicAnalysisHandle, e as MicAnalysisStatus, N as NarrationRecorderController, f as NarrationRecorderState, h as NarrationTake, P as PrompterTransport, J as TELEPROMPTER_PREF_LIMITS, n as TeleprompterPrefs, q as UseNarrationStageOptions, s as createFloatingWindowManager, t as detectFloatTiers, K as normalizeTeleprompterPrefs, z as useFloatingWindow, B as useMicAnalysis, E as useNarrationRecorder, G as useNarrationStage, H as useTeleprompter, I as vadConfigForSensitivity } from '../useNarrationStage-D3Sgcf0L.js';
6
6
  import { NarrationTimingJsonV3, NarrationScript, NarrationAlignment } from '@bendyline/squisq/narration';
7
7
  import { ReactNode } from 'react';
8
8
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  TeleprompterView
3
- } from "../chunk-UNOKKSAC.js";
3
+ } from "../chunk-ENDRPV6T.js";
4
4
  import {
5
5
  DEFAULT_TELEPROMPTER_PREFS,
6
6
  EYE_LINE_FRACTION,
@@ -31,7 +31,7 @@ import {
31
31
  useNarrationStage,
32
32
  useTeleprompter,
33
33
  vadConfigForSensitivity
34
- } from "../chunk-PMNNJYFD.js";
34
+ } from "../chunk-34FRFDQ6.js";
35
35
  export {
36
36
  DEFAULT_TELEPROMPTER_PREFS,
37
37
  EYE_LINE_FRACTION,
@@ -110,6 +110,12 @@ interface RecorderCameraLane {
110
110
  extension: string | null;
111
111
  }
112
112
  interface UseMediaRecorderOptions {
113
+ /**
114
+ * Combined byte threshold for automatically stopping every capture lane.
115
+ * Defaults to 90 MiB. Browser chunk delivery can be delayed, so the final
116
+ * blobs may exceed this threshold; all bytes are retained for recovery.
117
+ */
118
+ maxRecordingBytes?: number;
113
119
  /** Which capture pipeline to use (default: `'mic'`). */
114
120
  source?: RecorderSource;
115
121
  /**
@@ -171,6 +177,12 @@ interface UseMediaRecorderOptions {
171
177
  includeMicrophone?: boolean;
172
178
  }
173
179
  interface UseMediaRecorderResult {
180
+ /** Bytes received across all capture lanes, including the final flush. */
181
+ recordedBytes: number;
182
+ /** Effective byte threshold for this recorder. */
183
+ maxRecordingBytes: number;
184
+ /** Whether the recorder automatically stopped after reaching its byte threshold. */
185
+ limitReached: boolean;
174
186
  /** Current recorder state. */
175
187
  state: RecorderState;
176
188
  /** `MediaStream` acquired by `request()`; live during preview/recording and
@@ -492,6 +504,8 @@ interface UseNarrationRecorderOptions {
492
504
  audioRecorderOptions?: NarrationMediaRecorderOptions;
493
505
  /** MediaRecorder hints for the camera companion file. */
494
506
  cameraRecorderOptions?: NarrationMediaRecorderOptions;
507
+ /** Combined audio/camera soft stop threshold; defaults to 90 MiB. Final chunks are retained. */
508
+ maxRecordingBytes?: number;
495
509
  /** Fired when capture actually starts (View starts the prompter). */
496
510
  onRecordingStart?: () => void;
497
511
  onRecordingStop?: () => void;
@@ -499,6 +513,9 @@ interface UseNarrationRecorderOptions {
499
513
  interface NarrationRecorderController {
500
514
  state: NarrationRecorderState;
501
515
  error: Error | null;
516
+ recordedBytes: number;
517
+ maxRecordingBytes: number;
518
+ limitReached: boolean;
502
519
  withCamera: boolean;
503
520
  setWithCamera: (on: boolean) => void;
504
521
  /** Live camera stream for the self-view while recording. */
@@ -546,6 +563,8 @@ interface UseNarrationStageOptions {
546
563
  micConstraints?: MediaTrackConstraints;
547
564
  /** Constraints for the optional narration camera lane. */
548
565
  cameraConstraints?: MediaTrackConstraints;
566
+ /** Combined narration audio/camera soft stop threshold, in bytes. */
567
+ maxRecordingBytes?: number;
549
568
  /** MediaRecorder hints for the narration audio file. */
550
569
  audioRecorderOptions?: NarrationMediaRecorderOptions;
551
570
  /** MediaRecorder hints for the optional narration camera file. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq-editor-react",
3
- "version": "2.11.2",
3
+ "version": "2.11.4",
4
4
  "description": "React editor shell with raw/WYSIWYG/preview modes for Squisq documents",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -94,12 +94,12 @@
94
94
  }
95
95
  },
96
96
  "dependencies": {
97
- "@bendyline/squisq": "2.11.2",
97
+ "@bendyline/squisq": "2.11.4",
98
98
  "@bendyline/squisq-calc": "2.11.0",
99
- "@bendyline/squisq-formats": "2.6.2",
100
- "@bendyline/squisq-grid-react": "2.11.3",
101
- "@bendyline/squisq-react": "2.11.2",
102
- "@bendyline/squisq-video-react": "2.4.6",
99
+ "@bendyline/squisq-formats": "2.6.4",
100
+ "@bendyline/squisq-grid-react": "2.11.5",
101
+ "@bendyline/squisq-react": "2.11.4",
102
+ "@bendyline/squisq-video-react": "2.4.8",
103
103
  "@fortawesome/fontawesome-free": "7.2.0",
104
104
  "@tiptap/core": "2.27.2",
105
105
  "@tiptap/extension-heading": "2.27.2",