@bendyline/squisq-react 2.11.0 → 2.11.2

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,521 +1,9 @@
1
- import * as react_jsx_runtime from 'react/jsx-runtime';
2
- import { Block, VideoPresentation as VideoPresentation$1, VideoPipSize, VideoPipShape, VideoPipPosition, Doc, Theme, SurfaceScheme, Transition, CaptionTrack, ViewportConfig as ViewportConfig$1, CustomTemplateDefinition, ScheduledClip } from '@bendyline/squisq/schemas';
3
- import { ViewportConfig, DashboardStyleId, CoverSlideTemplate, CoverSlidePlayback, FlashcardFace, FlashcardSourceMode } from '@bendyline/squisq/doc';
4
- import { FenceRendererMap } from '@bendyline/squisq/fence';
5
- import { a as AudioController } from '../AudioController-DwMsPe38.js';
6
- import { C as CodeBlockCopyHandler } from '../MarkdownRenderer-CC9dOc6b.js';
7
- export { a as CodeBlockCopyContext } from '../MarkdownRenderer-CC9dOc6b.js';
8
- import { CSSProperties } from 'react';
1
+ export { B as BlockMarker, c as BlockRenderer, C as CaptionMode, d as CaptionOverlay, f as CaptionStyle, g as ControlsLayout, D as DisplayMode, h as DocControlsBottom, i as DocControlsOverlay, j as DocControlsSidebar, k as DocControlsSlideshow, l as DocPlayer, m as DocPlayerProps, n as DocPlayerWithSidebar, o as DocProgressBar, F as FlashcardFaceView, p as FlashcardFaceViewProps, q as FlashcardView, r as FlashcardViewProps, I as InlineAudioPlayer, s as InlineAudioPlayerProps, t as InlineVideoPlayer, u as InlineVideoPlayerProps, M as MediaClipLayer, v as MediaClipLayerProps, b as PipPosition, a as PipShape, P as PipSize, w as PlaybackActions, x as PlaybackState, R as RenderAudioSegmentInfo, y as RenderBlockInfo, z as RenderCaptionInfo, A as RenderChapterInfo, E as SlideNavActions, G as SocialCaptionOverlay, S as SquisqRenderAPI, V as VideoPresentation, H as formatTime } from '../player-DSMhm8SL.js';
2
+ export { a as CodeBlockCopyContext, C as CodeBlockCopyHandler } from '../MarkdownRenderer-CC9dOc6b.js';
3
+ import 'react/jsx-runtime';
4
+ import '@bendyline/squisq/schemas';
5
+ import '@bendyline/squisq/doc';
6
+ import '@bendyline/squisq/fence';
7
+ import '../AudioController-DwMsPe38.js';
8
+ import 'react';
9
9
  import '@bendyline/squisq/markdown';
10
-
11
- /**
12
- * Doc Player Control Types
13
- *
14
- * Shared type definitions for doc player controls across different
15
- * layout modes (overlay, sidebar, bottom). These interfaces allow
16
- * control components to be decoupled from the core DocPlayer.
17
- *
18
- * Related Files:
19
- * - DocPlayer.tsx — Core player component
20
- * - DocProgressBar.tsx — Extracted progress bar
21
- * - DocControlsOverlay.tsx — Overlay controls (default)
22
- * - DocControlsSidebar.tsx — Vertical sidebar controls
23
- * - DocControlsBottom.tsx — Horizontal bottom strip controls
24
- */
25
-
26
- /** Layout mode for doc player controls */
27
- type ControlsLayout = 'overlay' | 'sidebar' | 'bottom';
28
- /**
29
- * Placement of scheduled video relative to the rendered slide.
30
- *
31
- * `'background'` preserves the legacy full-bleed treatment behind the
32
- * content. The other variants render above the content for presenter video.
33
- */
34
- type VideoPresentation = VideoPresentation$1;
35
- /** Size of a picture-in-picture presenter video. */
36
- type PipSize = VideoPipSize;
37
- /** Shape of a picture-in-picture presenter video. */
38
- type PipShape = VideoPipShape;
39
- /** Corner occupied by a picture-in-picture presenter video. */
40
- type PipPosition = VideoPipPosition;
41
- /**
42
- * Display mode for DocPlayer.
43
- *
44
- * - `'video'` — Traditional video-style playback with play/pause, scrub bar,
45
- * and time-based auto-advance. Default mode.
46
- * - `'slideshow'` — PowerPoint-style presentation with prev/next navigation.
47
- * Blocks are treated as static slides that only change on user click.
48
- * No auto-advance, no scrub bar.
49
- * - `'linear'` — Long-scrolling document view. Renders the full markdown as
50
- * readable HTML with template-annotated sections shown as inline SVG cards.
51
- * No audio, no timeline, no controls — just a scrollable page.
52
- * - `'page'` — Plain semantic HTML preview matching what the
53
- * `markdownDocToPlainHtml` export produces. No SquisqPlayer, no SVG
54
- * cards — just `<h1>`/`<p>`/`<ul>` etc. inside a sandboxed iframe.
55
- * Use when you want a WYSIWYG view of the simple HTML export.
56
- * - `'narrate'` — Teleprompter/performance surface. DocPlayer does not
57
- * implement this mode; it is owned by the editor package
58
- * (`@bendyline/squisq-editor-react`), which renders its own
59
- * voice-paced teleprompter view for it.
60
- * - `'dashboard'` — One static canvas that arranges every block into a
61
- * layout's cells (grids, hero mosaics). No timeline, no navigation;
62
- * overflow blocks beyond the layout's capacity are not rendered.
63
- * - `'flashcards'` — A progressively revealed study deck derived from the
64
- * document's nested block hierarchy, including multiple-choice quizzes.
65
- */
66
- type DisplayMode = 'video' | 'slideshow' | 'linear' | 'page' | 'narrate' | 'dashboard' | 'flashcards';
67
- /**
68
- * Caption display style.
69
- *
70
- * - `'standard'` — Traditional broadcast-style captions: small white text
71
- * on a semi-transparent black badge at the top of the player.
72
- * - `'social'` — Social media-style (Instagram/TikTok): large centered words
73
- * showing 3-5 words at a time with the active word highlighted in the
74
- * theme's primary color. Font and colors pulled from the active theme.
75
- */
76
- type CaptionStyle = 'standard' | 'social';
77
- /**
78
- * Caption display mode — combines enable/disable with style selection.
79
- * The CC button cycles through: off → standard → social → off.
80
- */
81
- type CaptionMode = 'off' | 'standard' | 'social';
82
- /** Slide navigation actions for slideshow display mode */
83
- interface SlideNavActions {
84
- /** Navigate to the next slide */
85
- nextSlide: () => void;
86
- /** Navigate to the previous slide */
87
- prevSlide: () => void;
88
- /** Navigate to a specific slide by index (0-based) */
89
- goToSlide: (index: number) => void;
90
- }
91
- /** Playback state exposed to external control components */
92
- interface PlaybackState {
93
- isPlaying: boolean;
94
- currentTime: number;
95
- totalDuration: number;
96
- /** Whether the managed cover is the visual currently shown. */
97
- isCoverVisible?: boolean;
98
- currentBlockIndex: number;
99
- totalBlocks: number;
100
- docProgress: number;
101
- hasCaptions: boolean;
102
- captionsEnabled: boolean;
103
- /** Current caption display mode (off, standard, social). */
104
- captionMode: CaptionMode;
105
- isFullscreen?: boolean;
106
- /** Current audio segment index (0-based) */
107
- currentSegmentIndex: number;
108
- /** Current audio segment name (e.g., 'intro', 'history') */
109
- currentSegmentName: string | null;
110
- /** Current block data (for extracting image info, etc.) */
111
- currentBlock: Block | null;
112
- /** Optional display label for non-block slides, e.g. the managed cover. */
113
- currentSlideLabel?: string;
114
- /** Optional human-facing slide number, separate from internal nav index. */
115
- currentSlideNumber?: number;
116
- /** Optional human-facing slide total, separate from internal nav total. */
117
- totalSlideNumber?: number;
118
- }
119
- /** Playback actions exposed to external control components */
120
- interface PlaybackActions {
121
- toggle: () => void;
122
- restart: () => void;
123
- seekTo: (time: number) => void;
124
- setCaptionsEnabled: (enabled: boolean) => void;
125
- /** Cycle caption mode: off → standard → social → off */
126
- cycleCaptionMode: () => void;
127
- toggleFullscreen?: () => void;
128
- }
129
- /** Block marker data for the progress bar */
130
- interface BlockMarker {
131
- block: Block;
132
- index: number;
133
- position: number;
134
- title: string;
135
- /** True if this block is the first in a new audio segment (section boundary) */
136
- isSectionStart: boolean;
137
- }
138
- /** Block metadata returned by SquisqRenderAPI.getBlocks() */
139
- interface RenderBlockInfo {
140
- id: string;
141
- template: string;
142
- startTime: number;
143
- duration: number;
144
- }
145
- /** Audio segment info returned by SquisqRenderAPI.getAudioSegments() */
146
- interface RenderAudioSegmentInfo {
147
- src: string;
148
- name: string;
149
- duration: number;
150
- startTime: number;
151
- }
152
- /** Caption phrase info returned by SquisqRenderAPI.getCaptions() */
153
- interface RenderCaptionInfo {
154
- text: string;
155
- startTime: number;
156
- endTime: number;
157
- }
158
- /** Chapter marker returned by SquisqRenderAPI.getChapters() */
159
- interface RenderChapterInfo {
160
- title: string;
161
- startTime: number;
162
- duration: number;
163
- }
164
- /**
165
- * Instance-scoped API created in render mode and debug mode.
166
- * React hosts receive it via `DocPlayer.onRenderAPIReady`; standalone hosts
167
- * receive it from their mount handle.
168
- *
169
- * @example
170
- * ```ts
171
- * const handle = SquisqPlayer.getHandle(rootElement);
172
- * const api = await handle?.renderAPI;
173
- * await api?.seekTo(5.0);
174
- * ```
175
- */
176
- interface SquisqRenderAPI {
177
- /** Seek and resolve only after the requested visual state is capture-ready. */
178
- seekTo: (time: number) => Promise<void>;
179
- /** Timeline time most recently committed to the player DOM. */
180
- getRenderedTime: () => number;
181
- getDuration: () => number;
182
- getBlocks: () => RenderBlockInfo[];
183
- getAudioSegments: () => RenderAudioSegmentInfo[];
184
- getCaptions: () => RenderCaptionInfo[];
185
- getChapters: () => RenderChapterInfo[];
186
- showCover: () => Promise<void>;
187
- hideCover: () => Promise<void>;
188
- hasCoverBlock: () => boolean;
189
- }
190
- /** Format time in seconds to MM:SS string */
191
- declare function formatTime(seconds: number): string;
192
-
193
- interface DocPlayerProps {
194
- /** The Doc to play. Wins over `markdown` when both are provided. */
195
- doc?: Doc;
196
- /** Markdown source to convert when `doc` is absent. */
197
- markdown?: string;
198
- /** Base path for resolving media URLs (default: `'.'`). */
199
- basePath?: string;
200
- /** Render mode for deterministic video capture. */
201
- renderMode?: boolean;
202
- /** Render slide transitions and per-layer animations (default: true). */
203
- animationsEnabled?: boolean;
204
- /** Receives the instance-scoped render API, and `null` on cleanup. */
205
- onRenderAPIReady?: (api: SquisqRenderAPI | null) => void;
206
- autoPlay?: boolean;
207
- /** Restart Video-mode playback automatically when the timeline ends. */
208
- loop?: boolean;
209
- onEnded?: () => void;
210
- onTimeUpdate?: (time: number) => void;
211
- /** Optional host-owned audio controller. */
212
- audioController?: AudioController;
213
- /** Explicit synthetic clock for timed documents that intentionally have no audio asset. */
214
- audioMode?: 'media' | 'synthetic';
215
- showControls?: boolean;
216
- showScrubber?: boolean;
217
- muted?: boolean;
218
- captionsEnabled?: boolean;
219
- onCaptionsToggle?: (enabled: boolean) => void;
220
- onPlaybackStateChange?: (state: PlaybackState) => void;
221
- onControlsReady?: (controls: PlaybackActions & {
222
- play: () => void;
223
- pause: () => void;
224
- }) => void;
225
- isFullscreen?: boolean;
226
- onFullscreenToggle?: () => void;
227
- onBlockMarkers?: (markers: BlockMarker[]) => void;
228
- forceViewport?: ViewportConfig;
229
- theme?: Theme;
230
- surface?: SurfaceScheme | 'auto';
231
- /** Video, slideshow, page, dashboard, or flashcards rendition. */
232
- displayMode?: DisplayMode;
233
- /** Dashboard mode: layout id or `'auto'`. Overrides doc frontmatter. */
234
- dashboardLayout?: string;
235
- /** Dashboard mode: title-band override. Overrides doc frontmatter. */
236
- dashboardShowTitle?: boolean;
237
- /** Dashboard mode: cell style variant. Overrides doc frontmatter. */
238
- dashboardStyle?: DashboardStyleId;
239
- /** Dashboard mode: host-supplied title fallback (typically the file name). */
240
- dashboardDocumentTitle?: string;
241
- showCoverSlide?: boolean;
242
- /** Visual template used to materialize the managed cover. */
243
- coverSlideTemplate?: CoverSlideTemplate;
244
- /** Seconds the cover remains visible after Video playback starts. */
245
- coverSlideDuration?: number;
246
- /** Whether video export advances or delays the story while the cover is visible. */
247
- coverSlidePlayback?: CoverSlidePlayback;
248
- coverVisible?: boolean;
249
- captionStyle?: CaptionStyle;
250
- /**
251
- * Placement of scheduled video relative to the slide content.
252
- * Defaults to `'background'` for backward compatibility.
253
- */
254
- videoPresentation?: VideoPresentation;
255
- /** Size of presenter video in picture-in-picture mode (default `'small'`). */
256
- pipSize?: PipSize;
257
- /** Shape of presenter video in picture-in-picture mode (default `'square'`). */
258
- pipShape?: PipShape;
259
- /** Corner used by presenter video in picture-in-picture mode. */
260
- pipPosition?: PipPosition;
261
- enableSwipe?: boolean;
262
- globalKeyboardShortcuts?: boolean;
263
- /** Show a Copy button on fenced code blocks in linear mode (default: false). */
264
- showCodeCopyButton?: boolean;
265
- /** Optional host clipboard adapter; otherwise the browser Clipboard API is used. */
266
- onCopyCode?: CodeBlockCopyHandler;
267
- /**
268
- * Host fence-renderer registry (`@bendyline/squisq/fence`), applied in
269
- * linear mode's markdown sections. Video/slideshow modes render blocks
270
- * as SVG layers and do not consult it.
271
- */
272
- fenceRenderers?: FenceRendererMap;
273
- }
274
-
275
- /**
276
- * Front-door component: resolves the `doc` / `markdown` props into a Doc
277
- * and renders a themed empty state when neither is provided. The playback
278
- * machinery lives in `DocPlayerContent` so its hook order never changes
279
- * when a doc appears or disappears.
280
- */
281
- declare function DocPlayer(props: DocPlayerProps): react_jsx_runtime.JSX.Element;
282
-
283
- /** Viewport configuration type */
284
- interface ViewportDimensions {
285
- width: number;
286
- height: number;
287
- }
288
- interface BlockRendererProps {
289
- /** The block to render */
290
- block: Block;
291
- /** Current time relative to block start (seconds) */
292
- blockTime: number;
293
- /** Base path for resolving media URLs */
294
- basePath: string;
295
- /** Whether this block is entering (for transition) */
296
- isEntering?: boolean;
297
- /** Whether this block is exiting (for transition) */
298
- isExiting?: boolean;
299
- /** Transition to apply. Defaults to block.transition. */
300
- transition?: Transition;
301
- /** Viewport dimensions (defaults to 1920x1080 landscape) */
302
- viewport?: ViewportDimensions;
303
- /** Whether the doc is currently playing (controls video playback) */
304
- isPlaying?: boolean;
305
- /** Silence audio carried by video layers. */
306
- muted?: boolean;
307
- /**
308
- * Whether to render block transitions and layer animations (default: true).
309
- * Disabling this only removes authored/render-style motion; timed video
310
- * layers continue to advance normally.
311
- */
312
- animationsEnabled?: boolean;
313
- /** Resolved theme inherited by rich-media renderers such as Mermaid. */
314
- theme?: Theme;
315
- }
316
- declare function BlockRenderer({ block, blockTime, basePath, isEntering, isExiting, transition, viewport, isPlaying, muted, animationsEnabled, theme, }: BlockRendererProps): react_jsx_runtime.JSX.Element;
317
-
318
- interface CaptionOverlayProps {
319
- /** Caption track with timestamped phrases */
320
- captions: CaptionTrack | undefined;
321
- /** Current playback time in seconds */
322
- currentTime: number;
323
- /** Whether captions are enabled */
324
- enabled?: boolean;
325
- /** Font size in pixels for standard style (default: 16) */
326
- fontSize?: number;
327
- /** Caption display style (default: 'standard') */
328
- captionStyle?: CaptionStyle;
329
- /** Theme for social-style caption colors and fonts */
330
- theme?: Theme;
331
- /** Viewport config for social-style font scaling */
332
- viewport?: ViewportConfig$1;
333
- }
334
- declare function CaptionOverlay({ captions, currentTime, enabled, fontSize, captionStyle, theme, viewport, }: CaptionOverlayProps): react_jsx_runtime.JSX.Element;
335
-
336
- interface SocialCaptionOverlayProps {
337
- captions: CaptionTrack | undefined;
338
- currentTime: number;
339
- enabled?: boolean;
340
- theme?: Theme;
341
- viewport?: ViewportConfig$1;
342
- }
343
- declare function SocialCaptionOverlay({ captions, currentTime, enabled, theme, viewport, }: SocialCaptionOverlayProps): react_jsx_runtime.JSX.Element | null;
344
-
345
- interface DocControlsOverlayProps {
346
- state: PlaybackState;
347
- actions: PlaybackActions;
348
- blockMarkers: BlockMarker[];
349
- expandedBlocks: Block[];
350
- getBlockTitle?: (block: Block) => string;
351
- }
352
- declare function DocControlsOverlay({ state, actions, blockMarkers, expandedBlocks, getBlockTitle, }: DocControlsOverlayProps): react_jsx_runtime.JSX.Element;
353
-
354
- interface DocControlsBottomProps {
355
- state: PlaybackState;
356
- actions: PlaybackActions;
357
- blockMarkers: BlockMarker[];
358
- expandedBlocks: Block[];
359
- getBlockTitle?: (block: Block) => string;
360
- }
361
- declare function DocControlsBottom({ state, actions, blockMarkers, expandedBlocks, getBlockTitle, }: DocControlsBottomProps): react_jsx_runtime.JSX.Element;
362
-
363
- interface DocControlsSidebarProps {
364
- state: PlaybackState;
365
- actions: PlaybackActions;
366
- }
367
- declare function DocControlsSidebar({ state, actions }: DocControlsSidebarProps): react_jsx_runtime.JSX.Element;
368
-
369
- interface SlideshowPickerItem {
370
- /** Stable identifier for the slide/block. */
371
- id: string;
372
- /** Human-facing slide number, or a special label such as "Cover". */
373
- label: string;
374
- /** Short description shown in the slide picker. */
375
- summary: string;
376
- }
377
- interface DocControlsSlideshowProps {
378
- state: PlaybackState;
379
- slideNav: SlideNavActions;
380
- /** Slides available for direct navigation from the counter popover. */
381
- slides?: readonly SlideshowPickerItem[];
382
- /** Controlled open state for hosts that expose their own picker shortcut. */
383
- pickerOpen?: boolean;
384
- /** Called whenever the slide picker should open or close. */
385
- onPickerOpenChange?: (open: boolean) => void;
386
- }
387
- declare function DocControlsSlideshow({ state, slideNav, slides, pickerOpen, onPickerOpenChange, }: DocControlsSlideshowProps): react_jsx_runtime.JSX.Element;
388
-
389
- interface DocPlayerWithSidebarProps {
390
- /** The Doc to play */
391
- doc: Doc;
392
- /** Base path for resolving media URLs (default: `'.'`) */
393
- basePath?: string;
394
- autoPlay?: boolean;
395
- /** Restart playback automatically when the video timeline ends. */
396
- loop?: boolean;
397
- onEnded?: () => void;
398
- onTimeUpdate?: (time: number) => void;
399
- /** Optional audio controller (if not provided, uses default HTML5 audio) */
400
- audioController?: AudioController;
401
- /** Whether to render slide transitions and per-layer animations (default: true). */
402
- animationsEnabled?: boolean;
403
- muted?: boolean;
404
- captionsEnabled?: boolean;
405
- isFullscreen?: boolean;
406
- onFullscreenToggle?: () => void;
407
- /** Force a specific viewport preset, bypassing window-based orientation detection. */
408
- forceViewport?: ViewportConfig$1;
409
- /** Called when playing state changes */
410
- onPlayingChange?: (isPlaying: boolean) => void;
411
- /**
412
- * Theme for rendering. Forwarded to the inner DocPlayer so the sidebar
413
- * (portrait) layout matches the default (landscape) layout — without it the
414
- * inner player falls back to DEFAULT_THEME, whose dark text is unreadable
415
- * over a hero cover image.
416
- */
417
- theme?: Theme;
418
- }
419
- declare function DocPlayerWithSidebar({ doc, basePath, autoPlay, loop, onEnded, onTimeUpdate, audioController, animationsEnabled, muted, captionsEnabled, isFullscreen, onFullscreenToggle, forceViewport, onPlayingChange, theme, }: DocPlayerWithSidebarProps): react_jsx_runtime.JSX.Element;
420
-
421
- interface DocProgressBarProps {
422
- state: PlaybackState;
423
- actions: PlaybackActions;
424
- blockMarkers: BlockMarker[];
425
- /** All expanded blocks for hover lookup */
426
- expandedBlocks: Block[];
427
- /** Optional: get block title for hover tooltip */
428
- getBlockTitle?: (block: Block) => string;
429
- }
430
- declare function DocProgressBar({ state, actions, blockMarkers, expandedBlocks, getBlockTitle, }: DocProgressBarProps): react_jsx_runtime.JSX.Element;
431
-
432
- interface FlashcardViewProps {
433
- doc: Doc;
434
- theme?: Theme;
435
- basePath?: string;
436
- source?: FlashcardSourceMode;
437
- /** Start the deck in shuffled order (default false). */
438
- shuffle?: boolean;
439
- /** Capture shortcuts without requiring focus (default false). */
440
- globalKeyboardShortcuts?: boolean;
441
- showCodeCopyButton?: boolean;
442
- onCopyCode?: CodeBlockCopyHandler;
443
- fenceRenderers?: FenceRendererMap;
444
- /** Viewport used to materialize diagrams and other spatial content. */
445
- viewport?: ViewportConfig$1;
446
- className?: string;
447
- }
448
- interface FlashcardFaceViewProps {
449
- face: FlashcardFace;
450
- theme: Theme;
451
- basePath: string;
452
- showCodeCopyButton: boolean;
453
- onCopyCode?: CodeBlockCopyHandler;
454
- fenceRenderers?: FenceRendererMap;
455
- viewport?: ViewportConfig$1;
456
- customTemplates?: readonly CustomTemplateDefinition[];
457
- }
458
- /** Rich, theme-aware renderer for one materialized flashcard face. */
459
- declare function FlashcardFaceView(props: FlashcardFaceViewProps): react_jsx_runtime.JSX.Element;
460
- declare function FlashcardView({ doc, theme, basePath, source, shuffle: initialShuffle, globalKeyboardShortcuts, showCodeCopyButton, onCopyCode, fenceRenderers, viewport, className, }: FlashcardViewProps): react_jsx_runtime.JSX.Element;
461
-
462
- interface InlineVideoPlayerProps {
463
- /** Source path — resolved through MediaContext when relative. */
464
- src: string;
465
- /** Base path used when no MediaProvider is in context. */
466
- basePath?: string;
467
- /** Optional explicit width (pixels or CSS length). */
468
- width?: number | string;
469
- /** Optional explicit height (pixels or CSS length). */
470
- height?: number | string;
471
- /** Optional poster image src — also resolved through MediaContext. */
472
- poster?: string;
473
- /** Whether to show native controls. Defaults to true. */
474
- controls?: boolean;
475
- /** `preload` attribute passthrough. Defaults to `'metadata'`. */
476
- preload?: 'none' | 'metadata' | 'auto';
477
- /** Extra className on the wrapper. */
478
- className?: string;
479
- }
480
- declare function InlineVideoPlayer({ src, basePath, width, height, poster, controls, preload, className, }: InlineVideoPlayerProps): react_jsx_runtime.JSX.Element | null;
481
-
482
- interface InlineAudioPlayerProps {
483
- /** Source path — resolved through MediaContext when relative. */
484
- src: string;
485
- /** Base path used when no MediaProvider is in context. */
486
- basePath?: string;
487
- /** Whether to show native controls. Defaults to true. */
488
- controls?: boolean;
489
- /** `preload` attribute passthrough. Defaults to `'metadata'`. */
490
- preload?: 'none' | 'metadata' | 'auto';
491
- /** Extra className on the wrapper. */
492
- className?: string;
493
- }
494
- declare function InlineAudioPlayer({ src, basePath, controls, preload, className, }: InlineAudioPlayerProps): react_jsx_runtime.JSX.Element | null;
495
-
496
- interface MediaClipLayerProps {
497
- schedule: ScheduledClip[];
498
- currentTime: number;
499
- isPlaying: boolean;
500
- basePath: string;
501
- renderMode?: boolean;
502
- /** Silence every scheduled clip during live playback. */
503
- muted?: boolean;
504
- /** Placement of video clips relative to the rendered document. */
505
- presentation?: VideoPresentation;
506
- /** Size of picture-in-picture video (small or large). */
507
- pipSize?: PipSize;
508
- /** Shape of picture-in-picture video (square or 16:9 wide). */
509
- pipShape?: PipShape;
510
- /** Corner occupied by picture-in-picture video. */
511
- pipPosition?: PipPosition;
512
- /** Orientation of the rendered player viewport. */
513
- pipOrientation?: 'landscape' | 'portrait';
514
- /** Resolved theme frame applied directly to PIP video during raster capture. */
515
- pipFrameStyle?: Pick<CSSProperties, 'border' | 'borderRadius' | 'boxShadow'>;
516
- /** Honor each scheduled video's authored placement override. Default true. */
517
- honorClipPresentation?: boolean;
518
- }
519
- declare function MediaClipLayer({ schedule, currentTime, isPlaying, basePath, renderMode, muted, presentation, pipSize, pipShape, pipPosition, pipOrientation, pipFrameStyle, honorClipPresentation, }: MediaClipLayerProps): react_jsx_runtime.JSX.Element | null;
520
-
521
- export { type BlockMarker, BlockRenderer, type CaptionMode, CaptionOverlay, type CaptionStyle, CodeBlockCopyHandler, type ControlsLayout, type DisplayMode, DocControlsBottom, DocControlsOverlay, DocControlsSidebar, DocControlsSlideshow, DocPlayer, type DocPlayerProps, DocPlayerWithSidebar, DocProgressBar, FlashcardFaceView, type FlashcardFaceViewProps, FlashcardView, type FlashcardViewProps, InlineAudioPlayer, type InlineAudioPlayerProps, InlineVideoPlayer, type InlineVideoPlayerProps, MediaClipLayer, type MediaClipLayerProps, type PipPosition, type PipShape, type PipSize, type PlaybackActions, type PlaybackState, type RenderAudioSegmentInfo, type RenderBlockInfo, type RenderCaptionInfo, type RenderChapterInfo, type SlideNavActions, SocialCaptionOverlay, type SquisqRenderAPI, type VideoPresentation, formatTime };
@@ -12,11 +12,11 @@ import {
12
12
  MediaClipLayer,
13
13
  SocialCaptionOverlay,
14
14
  formatTime
15
- } from "../chunk-VKXOZTYP.js";
15
+ } from "../chunk-HK7TY64K.js";
16
16
  import {
17
17
  BlockRenderer
18
- } from "../chunk-R44JIBV3.js";
19
- import "../chunk-G6FVNYNW.js";
18
+ } from "../chunk-ZC7LI5UF.js";
19
+ import "../chunk-4MP7CH3C.js";
20
20
  import "../chunk-MVJQL2W2.js";
21
21
  import "../chunk-TT6ENR6T.js";
22
22
  import {