@bendyline/squisq 2.13.5 → 2.13.7

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.
Files changed (31) hide show
  1. package/dist/{Doc-BQUVDooL.d.ts → Doc-BCrrYAuK.d.ts} +1 -1
  2. package/dist/{ImageEditDoc-glA5UUau.d.ts → ImageEditDoc-CSuevovH.d.ts} +1 -1
  3. package/dist/{chunk-F5WTRHWL.js → chunk-CJYN3MTX.js} +151 -11
  4. package/dist/{chunk-FSZ6HB7S.js → chunk-DOKSRBW2.js} +331 -1
  5. package/dist/{chunk-KVEOD57Z.js → chunk-L3KSFLTP.js} +0 -29
  6. package/dist/{chunk-K75GTKSN.js → chunk-MWJSEKM3.js} +5 -5
  7. package/dist/{chunk-CZHWFQ7C.js → chunk-NGQ5TJVX.js} +2 -1
  8. package/dist/{chunk-FJNTG3VZ.js → chunk-S76W65BB.js} +2 -2
  9. package/dist/{chunk-ZF4NWRZU.js → chunk-TTJZXUQA.js} +35 -10
  10. package/dist/{chunk-CPD3MFX7.js → chunk-XDOSE5M3.js} +1 -1
  11. package/dist/doc/index.d.ts +5 -5
  12. package/dist/doc/index.js +6 -6
  13. package/dist/fence/index.d.ts +1 -1
  14. package/dist/generate/index.d.ts +1 -1
  15. package/dist/imageEdit/index.d.ts +3 -3
  16. package/dist/index.d.ts +6 -6
  17. package/dist/index.js +14 -8
  18. package/dist/jsonForm/index.d.ts +1 -1
  19. package/dist/markdown/index.d.ts +7 -3
  20. package/dist/markdown/index.js +3 -3
  21. package/dist/{materializePageSection-_ftXlwvB.d.ts → materializePageSection-FT1B5NOo.d.ts} +1 -1
  22. package/dist/mediaEdit/index.d.ts +2 -2
  23. package/dist/narration/index.d.ts +60 -3
  24. package/dist/narration/index.js +8 -4
  25. package/dist/recommend/index.js +2 -2
  26. package/dist/schemas/index.d.ts +4 -4
  27. package/dist/{themeLibrary-D6GK29l3.d.ts → themeLibrary-BWvtBQ42.d.ts} +1 -1
  28. package/dist/timing/index.d.ts +1 -1
  29. package/dist/transform/index.d.ts +25 -4
  30. package/dist/transform/index.js +7 -5
  31. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { R as Doc, f as AudioBookmark } from '../Doc-BQUVDooL.js';
1
+ import { R as Doc, f as AudioBookmark } from '../Doc-BCrrYAuK.js';
2
2
  import { d as BuildAdvance } from '../types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -568,6 +568,60 @@ interface AlignInput {
568
568
  }
569
569
  declare function alignNarration(input: AlignInput, config?: Partial<AlignConfig>): NarrationAlignment;
570
570
 
571
+ /**
572
+ * Transcript alignment: word/block timestamps for a recorded take from a
573
+ * speech recognizer's timed transcript.
574
+ *
575
+ * `alignNarration` infers timing from the take's acoustics against the
576
+ * script's expected syllables, so it needs a reader who follows the script
577
+ * closely. This matches the WORDS a recognizer heard to the script's words
578
+ * instead, so it tolerates paraphrase, ad-libs, skipped passages and long
579
+ * silent demos.
580
+ *
581
+ * Pipeline: both sides become normalized word units → word trigrams that
582
+ * occur exactly once on each side anchor a monotone chain (longest increasing
583
+ * subsequence) → the short stretches between anchors are aligned with a small
584
+ * global DP that also accepts near-miss spellings → script words left without
585
+ * a match are placed on the unmatched words heard between their matched
586
+ * neighbors, so a passage the speaker skipped collapses onto the next thing
587
+ * they said, and a long pause or an off-script aside stays with the slide
588
+ * already showing. Block
589
+ * ranges come from the same contiguous-range builder the acoustic aligner
590
+ * uses, with the silences between heard words as its breath gaps.
591
+ *
592
+ * Pure and deterministic, like the rest of the narration engine.
593
+ */
594
+
595
+ /** One recognized word, in seconds on the take's timeline. */
596
+ interface TranscriptWord {
597
+ text: string;
598
+ startSec: number;
599
+ endSec: number;
600
+ }
601
+ /** One recognized phrase. Without `words`, its time is shared out by syllables. */
602
+ interface TranscriptSegment {
603
+ text: string;
604
+ startSec: number;
605
+ endSec: number;
606
+ words?: readonly TranscriptWord[];
607
+ }
608
+ interface TranscriptAlignInput {
609
+ script: NarrationScript;
610
+ /** Recognized segments on the take's timeline (seconds from its start). */
611
+ segments: readonly TranscriptSegment[];
612
+ /** Take length in seconds (decoded-PCM length). */
613
+ durationSec: number;
614
+ }
615
+ interface TranscriptAlignment extends NarrationAlignment {
616
+ /** Spoken script words whose time came from a matched recognized word. */
617
+ matchedWords: number;
618
+ /** Spoken script words in total. */
619
+ spokenWords: number;
620
+ }
621
+ /** Lowercased letter/digit runs; apostrophes join ("you're" → "youre"). */
622
+ declare function transcriptWordKeys(text: string): string[];
623
+ declare function alignTranscript(input: TranscriptAlignInput, config?: Partial<AlignConfig>): TranscriptAlignment;
624
+
571
625
  /** Narration time range of one doc block at record time. */
572
626
  interface NarrationTimingBlock {
573
627
  /** Doc block id at record time (primary match key; ids can drift on heading edits). */
@@ -614,8 +668,11 @@ interface NarrationTimingJsonV3 {
614
668
  * - `'tts'` — a host synthesized the narration (text-to-speech). Block and
615
669
  * sentence boundaries are exact because each was synthesized separately;
616
670
  * word times are interpolated.
671
+ * - `'transcript-align'` — a speech recognizer transcribed the take and its
672
+ * timed words were matched to the script's words. Paraphrase and skipped
673
+ * passages are tolerated; unmatched words are interpolated.
617
674
  */
618
- type NarrationTimingMethod = 'dsp-align' | 'presenter-advance' | 'tts';
675
+ type NarrationTimingMethod = 'dsp-align' | 'presenter-advance' | 'tts' | 'transcript-align';
619
676
  /** Provenance recorded in a sidecar's `generator` field. */
620
677
  interface NarrationTimingGenerator {
621
678
  /** Producer id, e.g. `'squisq-teleprompter'` or a host's TTS engine name. */
@@ -747,4 +804,4 @@ interface AdvanceCoverage {
747
804
  /** Summarize an advance log against a doc. Pure; drives the review-panel warning. */
748
805
  declare function advanceCoverage(doc: Doc, advances: SlideAdvanceLog): AdvanceCoverage;
749
806
 
750
- export { type AdvanceCoverage, type AlignConfig, type AlignInput, type BandpassState, type BuildAdvanceTimingOptions, type BuildNarrationTimingOptions, type BuildScriptOptions, DEFAULT_ALIGN_CONFIG, DEFAULT_FEATURE_CONFIG, DEFAULT_NUCLEI_CONFIG, DEFAULT_PACING_CONFIG, DEFAULT_VAD_CONFIG, EMPTY_ADVANCE_LOG, type FeatureConfig, type FeatureState, type FrameFeatures, type NarrationAlignment, type NarrationBlockRange, type NarrationScript, type NarrationSessionConfig, type NarrationSessionState, type NarrationTimingBlock, type NarrationTimingGenerator, type NarrationTimingJsonV3, type NarrationTimingMethod, type NarrationTrace, type NucleiConfig, type NucleiState, type PacingConfig, type PacingState, type PacingTick, type ScriptBlockRange, type ScriptToken, type SlideAdvance, type SlideAdvanceLog, type TraceSample, type VadConfig, type VadState, type WordTiming, advanceCoverage, alignNarration, bandpassRun, buildAdvanceTimingJson, buildNarrationScript, buildNarrationTimingJson, createBandpass, createFeatureState, createNarrationSession, createNucleiState, createPacingState, createVadState, detectSyllableOnsets, downsampleTrace, estimateSyllables, expectedSyllablesAt, extractFrameFeatures, featureStep, narrationSessionStep, nucleiStep, pacingStep, parseNarrationTimingJson, reanchorPacing, reanchorSession, recordSlideShown, resolveNarrationTimingGenerator, traceWordPosAt, vadStep, wordIndexAtChar, wordIndexAtTime, wordPosAtExpectedSyllables };
807
+ export { type AdvanceCoverage, type AlignConfig, type AlignInput, type BandpassState, type BuildAdvanceTimingOptions, type BuildNarrationTimingOptions, type BuildScriptOptions, DEFAULT_ALIGN_CONFIG, DEFAULT_FEATURE_CONFIG, DEFAULT_NUCLEI_CONFIG, DEFAULT_PACING_CONFIG, DEFAULT_VAD_CONFIG, EMPTY_ADVANCE_LOG, type FeatureConfig, type FeatureState, type FrameFeatures, type NarrationAlignment, type NarrationBlockRange, type NarrationScript, type NarrationSessionConfig, type NarrationSessionState, type NarrationTimingBlock, type NarrationTimingGenerator, type NarrationTimingJsonV3, type NarrationTimingMethod, type NarrationTrace, type NucleiConfig, type NucleiState, type PacingConfig, type PacingState, type PacingTick, type ScriptBlockRange, type ScriptToken, type SlideAdvance, type SlideAdvanceLog, type TraceSample, type TranscriptAlignInput, type TranscriptAlignment, type TranscriptSegment, type TranscriptWord, type VadConfig, type VadState, type WordTiming, advanceCoverage, alignNarration, alignTranscript, bandpassRun, buildAdvanceTimingJson, buildNarrationScript, buildNarrationTimingJson, createBandpass, createFeatureState, createNarrationSession, createNucleiState, createPacingState, createVadState, detectSyllableOnsets, downsampleTrace, estimateSyllables, expectedSyllablesAt, extractFrameFeatures, featureStep, narrationSessionStep, nucleiStep, pacingStep, parseNarrationTimingJson, reanchorPacing, reanchorSession, recordSlideShown, resolveNarrationTimingGenerator, traceWordPosAt, transcriptWordKeys, vadStep, wordIndexAtChar, wordIndexAtTime, wordPosAtExpectedSyllables };
@@ -7,6 +7,7 @@ import {
7
7
  EMPTY_ADVANCE_LOG,
8
8
  advanceCoverage,
9
9
  alignNarration,
10
+ alignTranscript,
10
11
  bandpassRun,
11
12
  buildAdvanceTimingJson,
12
13
  createBandpass,
@@ -26,8 +27,9 @@ import {
26
27
  reanchorSession,
27
28
  recordSlideShown,
28
29
  traceWordPosAt,
30
+ transcriptWordKeys,
29
31
  vadStep
30
- } from "../chunk-FSZ6HB7S.js";
32
+ } from "../chunk-DOKSRBW2.js";
31
33
  import "../chunk-NEWNNLWN.js";
32
34
  import {
33
35
  buildNarrationTimingJson,
@@ -41,13 +43,13 @@ import {
41
43
  wordIndexAtChar,
42
44
  wordIndexAtTime,
43
45
  wordPosAtExpectedSyllables
44
- } from "../chunk-ZF4NWRZU.js";
45
- import "../chunk-CZHWFQ7C.js";
46
+ } from "../chunk-TTJZXUQA.js";
47
+ import "../chunk-NGQ5TJVX.js";
46
48
  import "../chunk-FUBMT6SJ.js";
47
49
  import "../chunk-WNEH3BZP.js";
48
50
  import "../chunk-L7QZORLB.js";
49
51
  import "../chunk-DOOUVVOM.js";
50
- import "../chunk-KVEOD57Z.js";
52
+ import "../chunk-L3KSFLTP.js";
51
53
  import "../chunk-P53Z4RYC.js";
52
54
  import "../chunk-GHOPHGOK.js";
53
55
  import "../chunk-XRW6P7IF.js";
@@ -60,6 +62,7 @@ export {
60
62
  EMPTY_ADVANCE_LOG,
61
63
  advanceCoverage,
62
64
  alignNarration,
65
+ alignTranscript,
63
66
  bandpassRun,
64
67
  buildAdvanceTimingJson,
65
68
  buildNarrationScript,
@@ -85,6 +88,7 @@ export {
85
88
  recordSlideShown,
86
89
  resolveNarrationTimingGenerator,
87
90
  traceWordPosAt,
91
+ transcriptWordKeys,
88
92
  vadStep,
89
93
  wordIndexAtChar,
90
94
  wordIndexAtTime,
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  profileBlockContents,
3
3
  recommendTemplatesForBlock
4
- } from "../chunk-CZHWFQ7C.js";
4
+ } from "../chunk-NGQ5TJVX.js";
5
5
  import "../chunk-L7QZORLB.js";
6
- import "../chunk-KVEOD57Z.js";
6
+ import "../chunk-L3KSFLTP.js";
7
7
  import "../chunk-P53Z4RYC.js";
8
8
  export {
9
9
  profileBlockContents,
@@ -1,10 +1,10 @@
1
1
  export { B as BUILD_EFFECTS, a as BUILD_MODES, b as BUILD_PARAM_KEYS, c as BUILD_PREVIOUS, d as BuildAdvance, e as BuildCursor, f as BuildSpec, g as BuildStep, h as BuildTiming, i as DEFAULT_TRANSITION_DURATION_SECONDS, aa as TRANSITION_DIRECTIONS, ab as TRANSITION_TYPES, ac as Transition, ad as TransitionDirection, ae as TransitionType, ah as buildSpecParams, ai as isTransitionType, aj as normalizeTransitionDirection, ak as normalizeTransitionType, al as parseBuildSpec, am as recordBuildAdvance, an as resolveBlockTransition, ap as resolveTransitionDuration } from '../types-Zk8qYuaT.js';
2
2
  export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
3
- import { R as Doc, bC as Theme, bF as ThemePageStyle, bE as ThemeColorScheme, L as DeepPartial, bI as ThemeSeedColors, bD as ThemeColorPalette, $ as FontFamilyKind, _ as FontFamily } from '../Doc-BQUVDooL.js';
4
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, n as BottomFeatureInput, C as CaptionPhrase, o as CaptionTrack, p as CaptionWord, q as ChartBaseFields, r as ChartTemplateInput, s as ColorScheme, t as ColumnChartInput, u as ComparisonBarInput, v as ContentBlockInput, w as CornerBrandingConfig, x as CountUpSpec, y as CreateTemplateContextOptions, z as CustomTemplateDefinition, D as CustomTemplateLayer, E as CustomTemplateValidationError, F as CustomTemplateValidationResult, G as DARK_SURFACE, H as DEFAULT_DOC_FONT, I as DEFAULT_TITLE_FONT, J as DataTableInput, K as DateEventInput, M as DefinitionCardInput, N as DiagramBlockInput, O as DiagramEdgeAnchor, P as DiagramTemplateEdge, Q as DiagramTemplateNode, S as DocBlock, T as DocDiagnostic, U as DonutChartInput, V as DrawingBlockInput, W as FRONTMATTER_CUSTOM_TEMPLATES_KEY, X as FRONTMATTER_CUSTOM_THEMES_KEY, Y as FRONTMATTER_MOTION_KEY, Z as FactCardInput, a0 as FullBleedQuoteInput, a1 as GradientBackgroundConfig, a2 as ImageBackgroundConfig, a3 as ImageLayer, a4 as ImageTreatment, a5 as ImageWithCaptionInput, a6 as LIGHT_SURFACE, a7 as Layer, a8 as LayerRepeat, a9 as LayoutHints, aa as LeftFeatureInput, ab as LineChartInput, ac as LinearGradient, ad as ListBlockInput, ae as MOTION_PROFILES, af as MapBlockInput, ag as MapLayer, ah as MapMarker, ai as MapTileStyle, aj as MarkerStyle, ak as MediaClip, al as MediaCrop, am as MediaCut, an as MediaEdits, ao as MediaOnlyInput, ap as MediaScheduleOptions, aq as MermaidLayer, ar as MotionEntrance, as as MotionOrigin, at as MotionProfile, au as MotionProfileName, av as MotionSpec, aw as MotionState, ax as PAGE_ACCENT_STRATEGIES, ay as PAGE_BACKGROUNDS, az as PAGE_BACKGROUND_RHYTHMS, aA as PAGE_DESIGN_FAMILIES, aB as PAGE_DIVIDERS, aC as PAGE_EMPHASES, aD as PAGE_EYEBROWS, aE as PAGE_HEADING_CASES, aF as PAGE_HEADING_SCALES, aG as PAGE_HEADING_UNDERLINES, aH as PAGE_HERO_STYLES, aI as PAGE_IMAGE_FRAMINGS, aJ as PAGE_NUMERAL_STYLES, aK as PAGE_PATTERNS, aL as PAGE_QUOTE_MARKS, aM as PAGE_SECTION_KINDS, aN as PAGE_SECTION_SPACINGS, aO as PAGE_SHADOWS, aP as PAGE_VARIANTS, aQ as PageAccentRotation, aR as PageBackground, aS as PageDesignFamily, aT as PageEmphasis, aU as PageHeadingTreatment, aV as PageSectionKind, aW as PageSectionOverride, aX as PageTokens, aY as PageVariant, aZ as PathLayer, a_ as PatternBackgroundConfig, a$ as PersistentLayer, b0 as PersistentLayerConfig, b1 as PersistentLayerTemplate, b2 as PersistentLayerTemplateConfig, b3 as PersistentLayerTemplateType, b4 as PhotoGridInput, b5 as PieChartInput, b6 as PipStyle, b7 as Position, b8 as ProgressIndicatorConfig, b9 as PromotedBodyAnnotation, ba as PullQuoteInput, bb as QuoteBlockInput, bc as RawLayersInput, bd as RenderStyle, be as RightFeatureInput, bf as ScatterChartInput, bg as ScheduledClip, bh as SectionHeaderInput, bi as ShapeFilter, bj as ShapeLayer, bk as ShapePattern, bl as SolidBackgroundConfig, bm as StartBlockConfig, bn as StatHighlightInput, bo as SurfaceScheme, bp as SvgLayer, bq as THEME_SCHEMA_VERSION, br as TableLayer, bs as TableLayerStyle, bt as TemplateBlock, bu as TemplateContext, bv as TemplateFunction, bw as TemplateRegistry, bx as TextFlow, by as TextLayer, bz as TextParagraph, bA as TextParagraphList, bB as TextStyle, bG as ThemeRegistry, bH as ThemeSchemaVersion, bJ as ThemeStyle, bK as ThemeTypography, bL as TimelineBlockInput, bM as TimelineTemplateEvent, bN as TimelineTemplateLink, bO as TimelineTemplateTrack, bP as TitleBlockInput, bQ as TitleCaptionConfig, bR as TopFeatureInput, bS as TranscriptBlockInput, bT as TreeBlockInput, bU as TreeLayer, bV as TreeLayerItem, bW as TreeLayerStyle, bX as TreeTemplateItem, bY as TwoColumnInput, bZ as VIEWPORT_PRESETS, b_ as VideoEmbedLayer, b$ as VideoLayer, c0 as VideoPipPosition, c1 as VideoPipShape, c2 as VideoPipSize, c3 as VideoPlacement, c4 as VideoPresentation, c5 as VideoPullQuoteInput, c6 as VideoWithCaptionInput, c7 as ViewportConfig, c8 as ViewportOrientation, c9 as ViewportPreset, ca as VignetteConfig, cb as applySurface, cc as calculateDuration, cd as calculateFontScale, ce as createTemplateContext, cf as createTheme, cg as createThemeRegistry, ch as getAspectRatioString, ci as getBlockAtTime, cj as getCaptionAtTime, ck as getDocPlaybackDuration, cl as getLayoutHints, cm as getSafeTextBounds, cn as getSegmentAtTime, co as getTwoColumnPositions, cp as getViewport, cq as getViewportOrientation, cr as isCustomTemplateDefinition, cs as isMotionProfileName, ct as isPersistentLayerTemplate, cu as isTemplateBlock, cv as layoutScaledFontSize, cw as readFrontmatterMotion, cx as resolveMediaSchedule, cy as resolveMotionForDoc, cz as resolveMotionProfile, cA as scaledFontSize, cB as scheduleMediaClip, cC as validateCustomTemplateDefinition } from '../Doc-BQUVDooL.js';
5
- export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-D6GK29l3.js';
3
+ import { R as Doc, bC as Theme, bF as ThemePageStyle, bE as ThemeColorScheme, L as DeepPartial, bI as ThemeSeedColors, bD as ThemeColorPalette, $ as FontFamilyKind, _ as FontFamily } from '../Doc-BCrrYAuK.js';
4
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, n as BottomFeatureInput, C as CaptionPhrase, o as CaptionTrack, p as CaptionWord, q as ChartBaseFields, r as ChartTemplateInput, s as ColorScheme, t as ColumnChartInput, u as ComparisonBarInput, v as ContentBlockInput, w as CornerBrandingConfig, x as CountUpSpec, y as CreateTemplateContextOptions, z as CustomTemplateDefinition, D as CustomTemplateLayer, E as CustomTemplateValidationError, F as CustomTemplateValidationResult, G as DARK_SURFACE, H as DEFAULT_DOC_FONT, I as DEFAULT_TITLE_FONT, J as DataTableInput, K as DateEventInput, M as DefinitionCardInput, N as DiagramBlockInput, O as DiagramEdgeAnchor, P as DiagramTemplateEdge, Q as DiagramTemplateNode, S as DocBlock, T as DocDiagnostic, U as DonutChartInput, V as DrawingBlockInput, W as FRONTMATTER_CUSTOM_TEMPLATES_KEY, X as FRONTMATTER_CUSTOM_THEMES_KEY, Y as FRONTMATTER_MOTION_KEY, Z as FactCardInput, a0 as FullBleedQuoteInput, a1 as GradientBackgroundConfig, a2 as ImageBackgroundConfig, a3 as ImageLayer, a4 as ImageTreatment, a5 as ImageWithCaptionInput, a6 as LIGHT_SURFACE, a7 as Layer, a8 as LayerRepeat, a9 as LayoutHints, aa as LeftFeatureInput, ab as LineChartInput, ac as LinearGradient, ad as ListBlockInput, ae as MOTION_PROFILES, af as MapBlockInput, ag as MapLayer, ah as MapMarker, ai as MapTileStyle, aj as MarkerStyle, ak as MediaClip, al as MediaCrop, am as MediaCut, an as MediaEdits, ao as MediaOnlyInput, ap as MediaScheduleOptions, aq as MermaidLayer, ar as MotionEntrance, as as MotionOrigin, at as MotionProfile, au as MotionProfileName, av as MotionSpec, aw as MotionState, ax as PAGE_ACCENT_STRATEGIES, ay as PAGE_BACKGROUNDS, az as PAGE_BACKGROUND_RHYTHMS, aA as PAGE_DESIGN_FAMILIES, aB as PAGE_DIVIDERS, aC as PAGE_EMPHASES, aD as PAGE_EYEBROWS, aE as PAGE_HEADING_CASES, aF as PAGE_HEADING_SCALES, aG as PAGE_HEADING_UNDERLINES, aH as PAGE_HERO_STYLES, aI as PAGE_IMAGE_FRAMINGS, aJ as PAGE_NUMERAL_STYLES, aK as PAGE_PATTERNS, aL as PAGE_QUOTE_MARKS, aM as PAGE_SECTION_KINDS, aN as PAGE_SECTION_SPACINGS, aO as PAGE_SHADOWS, aP as PAGE_VARIANTS, aQ as PageAccentRotation, aR as PageBackground, aS as PageDesignFamily, aT as PageEmphasis, aU as PageHeadingTreatment, aV as PageSectionKind, aW as PageSectionOverride, aX as PageTokens, aY as PageVariant, aZ as PathLayer, a_ as PatternBackgroundConfig, a$ as PersistentLayer, b0 as PersistentLayerConfig, b1 as PersistentLayerTemplate, b2 as PersistentLayerTemplateConfig, b3 as PersistentLayerTemplateType, b4 as PhotoGridInput, b5 as PieChartInput, b6 as PipStyle, b7 as Position, b8 as ProgressIndicatorConfig, b9 as PromotedBodyAnnotation, ba as PullQuoteInput, bb as QuoteBlockInput, bc as RawLayersInput, bd as RenderStyle, be as RightFeatureInput, bf as ScatterChartInput, bg as ScheduledClip, bh as SectionHeaderInput, bi as ShapeFilter, bj as ShapeLayer, bk as ShapePattern, bl as SolidBackgroundConfig, bm as StartBlockConfig, bn as StatHighlightInput, bo as SurfaceScheme, bp as SvgLayer, bq as THEME_SCHEMA_VERSION, br as TableLayer, bs as TableLayerStyle, bt as TemplateBlock, bu as TemplateContext, bv as TemplateFunction, bw as TemplateRegistry, bx as TextFlow, by as TextLayer, bz as TextParagraph, bA as TextParagraphList, bB as TextStyle, bG as ThemeRegistry, bH as ThemeSchemaVersion, bJ as ThemeStyle, bK as ThemeTypography, bL as TimelineBlockInput, bM as TimelineTemplateEvent, bN as TimelineTemplateLink, bO as TimelineTemplateTrack, bP as TitleBlockInput, bQ as TitleCaptionConfig, bR as TopFeatureInput, bS as TranscriptBlockInput, bT as TreeBlockInput, bU as TreeLayer, bV as TreeLayerItem, bW as TreeLayerStyle, bX as TreeTemplateItem, bY as TwoColumnInput, bZ as VIEWPORT_PRESETS, b_ as VideoEmbedLayer, b$ as VideoLayer, c0 as VideoPipPosition, c1 as VideoPipShape, c2 as VideoPipSize, c3 as VideoPlacement, c4 as VideoPresentation, c5 as VideoPullQuoteInput, c6 as VideoWithCaptionInput, c7 as ViewportConfig, c8 as ViewportOrientation, c9 as ViewportPreset, ca as VignetteConfig, cb as applySurface, cc as calculateDuration, cd as calculateFontScale, ce as createTemplateContext, cf as createTheme, cg as createThemeRegistry, ch as getAspectRatioString, ci as getBlockAtTime, cj as getCaptionAtTime, ck as getDocPlaybackDuration, cl as getLayoutHints, cm as getSafeTextBounds, cn as getSegmentAtTime, co as getTwoColumnPositions, cp as getViewport, cq as getViewportOrientation, cr as isCustomTemplateDefinition, cs as isMotionProfileName, ct as isPersistentLayerTemplate, cu as isTemplateBlock, cv as layoutScaledFontSize, cw as readFrontmatterMotion, cx as resolveMediaSchedule, cy as resolveMotionForDoc, cz as resolveMotionProfile, cA as scaledFontSize, cB as scheduleMediaClip, cC as validateCustomTemplateDefinition } from '../Doc-BCrrYAuK.js';
5
+ export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-BWvtBQ42.js';
6
6
  export { M as MediaEntry, a as MediaProvider } from '../MediaProvider-wpSe21B3.js';
7
- export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-glA5UUau.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-CSuevovH.js';
8
8
 
9
9
  /**
10
10
  * Runtime validation for the canonical {@link Doc} JSON shape.
@@ -1,4 +1,4 @@
1
- import { bC as Theme, bG as ThemeRegistry } from './Doc-BQUVDooL.js';
1
+ import { bC as Theme, bG as ThemeRegistry } from './Doc-BCrrYAuK.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,4 +1,4 @@
1
- import { g as AudioSegment, h as AudioTimingData, o as CaptionTrack } from '../Doc-BQUVDooL.js';
1
+ import { g as AudioSegment, h as AudioTimingData, o as CaptionTrack } from '../Doc-BCrrYAuK.js';
2
2
  import '../types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -1,7 +1,7 @@
1
- import { R as Doc, s as ColorScheme, k as Block, bt as TemplateBlock } from '../Doc-BQUVDooL.js';
2
- import { i as PageTransformHints } from '../materializePageSection-_ftXlwvB.js';
1
+ import { R as Doc, s as ColorScheme, k as Block, bt as TemplateBlock } from '../Doc-BCrrYAuK.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-FT1B5NOo.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
- import { f as BuildSpec } from '../types-Zk8qYuaT.js';
4
+ import { f as BuildSpec, M as MarkdownBlockNode } from '../types-Zk8qYuaT.js';
5
5
 
6
6
  /** Identifier for a built-in or caller-registered transform style. */
7
7
  type TransformStyleId = string;
@@ -336,6 +336,8 @@ interface PresentationBeat {
336
336
  headline: string;
337
337
  points: string[];
338
338
  imageSrc?: string;
339
+ /** The section's videos and diagrams shown beside this slide's text (`presentationMedia`). */
340
+ media?: string[];
339
341
  }
340
342
  interface PresentationPlan {
341
343
  version: 1;
@@ -347,6 +349,7 @@ declare const PRESENTATION_LIMITS: {
347
349
  readonly sourceCharacters: 40000;
348
350
  readonly beats: 80;
349
351
  readonly serializedCharacters: 160000;
352
+ readonly mediaPerBeat: 4;
350
353
  };
351
354
  declare function parsePresentationPlan(input: unknown): PresentationPlan | null;
352
355
  declare function serializePresentationPlan(plan: PresentationPlan): string;
@@ -400,4 +403,22 @@ declare function createPresentationPlan(doc: Doc, hints?: PresentationHints): Pr
400
403
  declare function compilePresentationPlan(doc: Doc, plan: PresentationPlan): Doc;
401
404
  declare function applySavedPresentation(doc: Doc): Doc;
402
405
 
403
- export { type AnalyzedBlock, type BlockImage, DEFAULT_TRANSFORM_STYLE_ID, DYNAMIC_PRESENTATION_STYLE, type NarratedSegmentInput, type NarratedSegmentResult, type NarratedSegmentTransformOptions, type NarratedSegmentVideo, PRESENTATION_HINTS_KEY, PRESENTATION_KEY, PRESENTATION_LAYOUTS, PRESENTATION_LIMITS, type PresentationBeat, type PresentationBlockHint, type PresentationHints, type PresentationLayout, type PresentationPlan, type TransformImage, type TransformOptions, type TransformResult, type TransformStyleConfig, type TransformStyleId, type TransformStyleInput, type TransformStyleRegistry, type TransformStyleSummary, allocateTiming, analyzeBlocks, applySavedPresentation, applyTransform, compilePresentationPlan, createPresentationPlan, createTransformStyleRegistry, defaultPresentationHints, extractDocImages, getTransformStyleIds, getTransformStyleSummaries, parsePresentationHints, parsePresentationPlan, presentationSections, resolveTransformStyle, serializePresentationHints, serializePresentationPlan, transformNarratedSegment, usesDynamicPresentation };
406
+ /** The videos and diagrams a narrated section embeds, which dynamic slides show
407
+ * beside its summaries. Images keep their own full-bleed slides; these are the
408
+ * visuals rich-media layout places next to slide text (`appendRichContentLayers`).
409
+ */
410
+
411
+ interface PresentationMediaItem {
412
+ /** `<section block id>#<index>`, stable while the section's visuals are unchanged. */
413
+ ref: string;
414
+ kind: 'video' | 'diagram';
415
+ /** The body node exactly as authored; slides render it through rich-media layout. */
416
+ node: MarkdownBlockNode;
417
+ /** A diagram, or an HTML video that can resume mid-clip on a following slide. */
418
+ continuous: boolean;
419
+ }
420
+ /** Each section's visuals in source order, claimed like images: a nested
421
+ * block's visuals belong to the nearest narrated section at or before it. */
422
+ declare function collectPresentationMedia(doc: Doc, sectionIds: string[]): Map<string, PresentationMediaItem[]>;
423
+
424
+ export { type AnalyzedBlock, type BlockImage, DEFAULT_TRANSFORM_STYLE_ID, DYNAMIC_PRESENTATION_STYLE, type NarratedSegmentInput, type NarratedSegmentResult, type NarratedSegmentTransformOptions, type NarratedSegmentVideo, PRESENTATION_HINTS_KEY, PRESENTATION_KEY, PRESENTATION_LAYOUTS, PRESENTATION_LIMITS, type PresentationBeat, type PresentationBlockHint, type PresentationHints, type PresentationLayout, type PresentationMediaItem, type PresentationPlan, type TransformImage, type TransformOptions, type TransformResult, type TransformStyleConfig, type TransformStyleId, type TransformStyleInput, type TransformStyleRegistry, type TransformStyleSummary, allocateTiming, analyzeBlocks, applySavedPresentation, applyTransform, collectPresentationMedia, compilePresentationPlan, createPresentationPlan, createTransformStyleRegistry, defaultPresentationHints, extractDocImages, getTransformStyleIds, getTransformStyleSummaries, parsePresentationHints, parsePresentationPlan, presentationSections, resolveTransformStyle, serializePresentationHints, serializePresentationPlan, transformNarratedSegment, usesDynamicPresentation };
@@ -9,6 +9,7 @@ import {
9
9
  analyzeBlocks,
10
10
  applySavedPresentation,
11
11
  applyTransform,
12
+ collectPresentationMedia,
12
13
  compilePresentationPlan,
13
14
  createPresentationPlan,
14
15
  createTransformStyleRegistry,
@@ -24,16 +25,16 @@ import {
24
25
  serializePresentationPlan,
25
26
  transformNarratedSegment,
26
27
  usesDynamicPresentation
27
- } from "../chunk-F5WTRHWL.js";
28
- import "../chunk-ZF4NWRZU.js";
29
- import "../chunk-CZHWFQ7C.js";
28
+ } from "../chunk-CJYN3MTX.js";
29
+ import "../chunk-TTJZXUQA.js";
30
+ import "../chunk-NGQ5TJVX.js";
30
31
  import "../chunk-SVN7T6BK.js";
31
32
  import "../chunk-FUBMT6SJ.js";
32
33
  import "../chunk-WNEH3BZP.js";
33
34
  import "../chunk-L7QZORLB.js";
34
- import "../chunk-CPD3MFX7.js";
35
+ import "../chunk-XDOSE5M3.js";
35
36
  import "../chunk-DOOUVVOM.js";
36
- import "../chunk-KVEOD57Z.js";
37
+ import "../chunk-L3KSFLTP.js";
37
38
  import "../chunk-CZ7AUSLI.js";
38
39
  import "../chunk-P53Z4RYC.js";
39
40
  import "../chunk-GHOPHGOK.js";
@@ -49,6 +50,7 @@ export {
49
50
  analyzeBlocks,
50
51
  applySavedPresentation,
51
52
  applyTransform,
53
+ collectPresentationMedia,
52
54
  compilePresentationPlan,
53
55
  createPresentationPlan,
54
56
  createTransformStyleRegistry,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.13.5",
3
+ "version": "2.13.7",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -154,7 +154,7 @@
154
154
  "typecheck": "tsc --noEmit"
155
155
  },
156
156
  "dependencies": {
157
- "@bendyline/squisq-graph": "2.13.0",
157
+ "@bendyline/squisq-graph": "2.13.1",
158
158
  "genson-js": "0.0.8",
159
159
  "hast-util-from-html": "2.0.3",
160
160
  "localforage": "1.10.0",