@bendyline/squisq 2.11.6 → 2.11.8

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 (38) hide show
  1. package/dist/{Doc-BkxT7G80.d.ts → Doc-CynsGqL4.d.ts} +208 -1
  2. package/dist/{ImageEditDoc-C8ZB54Vv.d.ts → ImageEditDoc-BVZe_5y4.d.ts} +1 -1
  3. package/dist/{chunk-UUI35INI.js → chunk-5FBI3ZW4.js} +7 -42
  4. package/dist/{chunk-BUJ5RV2P.js → chunk-JJO6JFNZ.js} +3 -2
  5. package/dist/{chunk-GRGLZF4A.js → chunk-JM2QARY2.js} +42 -10
  6. package/dist/chunk-JSGIWW35.js +70 -0
  7. package/dist/{chunk-J2IPSQKP.js → chunk-KFZOCWPK.js} +256 -44
  8. package/dist/chunk-L7QZORLB.js +230 -0
  9. package/dist/chunk-NEWNNLWN.js +64 -0
  10. package/dist/{chunk-6ECMNUIP.js → chunk-OU5FYBOB.js} +170 -4
  11. package/dist/{chunk-WAGJK36Q.js → chunk-RMCUZDW5.js} +30 -9
  12. package/dist/{chunk-XJXBI3N5.js → chunk-XZVBR5BP.js} +1 -1
  13. package/dist/{chunk-GAZKTT4R.js → chunk-YNO6JV36.js} +96 -33
  14. package/dist/{chunk-764WHWKM.js → chunk-ZEONJCP3.js} +1 -1
  15. package/dist/doc/index.d.ts +5 -5
  16. package/dist/doc/index.js +22 -20
  17. package/dist/fence/index.d.ts +1 -1
  18. package/dist/generate/index.d.ts +1 -1
  19. package/dist/imageEdit/index.d.ts +47 -4
  20. package/dist/imageEdit/index.js +5 -1
  21. package/dist/index.d.ts +5 -5
  22. package/dist/index.js +48 -39
  23. package/dist/jsonForm/index.d.ts +1 -1
  24. package/dist/jsonForm/index.js +4 -2
  25. package/dist/markdown/index.js +3 -3
  26. package/dist/{materializePageSection-Dp2aHFbc.d.ts → materializePageSection-CAJoa8fh.d.ts} +1 -1
  27. package/dist/mediaEdit/index.d.ts +467 -0
  28. package/dist/mediaEdit/index.js +990 -0
  29. package/dist/narration/index.d.ts +20 -12
  30. package/dist/narration/index.js +6 -4
  31. package/dist/schemas/index.d.ts +4 -4
  32. package/dist/schemas/index.js +7 -3
  33. package/dist/{themeLibrary-BbSjnGmd.d.ts → themeLibrary-z7t3x5CU.d.ts} +1 -1
  34. package/dist/timing/index.d.ts +1 -1
  35. package/dist/transform/index.d.ts +36 -2
  36. package/dist/transform/index.js +6 -5
  37. package/package.json +6 -1
  38. package/dist/{chunk-CW24CH7I.js → chunk-HUXK7EOT.js} +3 -3
@@ -1,4 +1,4 @@
1
- import { O as Doc, f as AudioBookmark } from '../Doc-BkxT7G80.js';
1
+ import { O as Doc, f as AudioBookmark } from '../Doc-CynsGqL4.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -294,19 +294,12 @@ declare function wordIndexAtChar(script: NarrationScript, charOffset: number): n
294
294
  declare function wordIndexAtTime(words: WordTiming[], tSec: number): number;
295
295
 
296
296
  /**
297
- * Frame feature extraction: full-band RMS, speech-band energy, and
298
- * zero-crossing rate over hopped (possibly overlapping) frames.
297
+ * RBJ biquad filters (Audio-EQ-Cookbook closed forms), streaming.
299
298
  *
300
- * Band energy uses two cascaded RBJ biquads — a high-pass at
301
- * `bandLowHz` and a low-pass at `bandHighHz` (both Q = 1/√2,
302
- * Audio-EQ-Cookbook closed forms) — rather than an FFT or Goertzel
303
- * bins: a Butterworth-ish cascade gives a true maximally-flat band in
304
- * one O(N) pass, and the filter state persists across hops, which is
305
- * exactly right for streaming (no window-boundary energy jitter).
306
- * Goertzel measures single frequencies (DTMF-style) — wrong tool for
307
- * broadband speech energy.
299
+ * Shared by the narration feature extractor (speech-band energy) and the
300
+ * media-edit signal chain (high-pass, breath features, K-weighting). State
301
+ * is explicit so a filter can run block by block with no boundary artifacts.
308
302
  */
309
-
310
303
  interface BiquadCoeffs {
311
304
  b0: number;
312
305
  b1: number;
@@ -320,6 +313,21 @@ interface BiquadState {
320
313
  y1: number;
321
314
  y2: number;
322
315
  }
316
+
317
+ /**
318
+ * Frame feature extraction: full-band RMS, speech-band energy, and
319
+ * zero-crossing rate over hopped (possibly overlapping) frames.
320
+ *
321
+ * Band energy uses two cascaded RBJ biquads — a high-pass at
322
+ * `bandLowHz` and a low-pass at `bandHighHz` (both Q = 1/√2,
323
+ * Audio-EQ-Cookbook closed forms) — rather than an FFT or Goertzel
324
+ * bins: a Butterworth-ish cascade gives a true maximally-flat band in
325
+ * one O(N) pass, and the filter state persists across hops, which is
326
+ * exactly right for streaming (no window-boundary energy jitter).
327
+ * Goertzel measures single frequencies (DTMF-style) — wrong tool for
328
+ * broadband speech energy.
329
+ */
330
+
323
331
  interface BandpassState {
324
332
  coeffs: {
325
333
  hp: BiquadCoeffs;
@@ -27,7 +27,8 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "../chunk-UUI35INI.js";
30
+ } from "../chunk-5FBI3ZW4.js";
31
+ import "../chunk-NEWNNLWN.js";
31
32
  import {
32
33
  buildNarrationScript,
33
34
  buildNarrationTimingJson,
@@ -37,11 +38,12 @@ import {
37
38
  wordIndexAtChar,
38
39
  wordIndexAtTime,
39
40
  wordPosAtExpectedSyllables
40
- } from "../chunk-764WHWKM.js";
41
- import "../chunk-WAGJK36Q.js";
42
- import "../chunk-PUS54YU6.js";
41
+ } from "../chunk-ZEONJCP3.js";
42
+ import "../chunk-RMCUZDW5.js";
43
43
  import "../chunk-C3NAY5YP.js";
44
+ import "../chunk-PUS54YU6.js";
44
45
  import "../chunk-Y4D6TDZT.js";
46
+ import "../chunk-L7QZORLB.js";
45
47
  import "../chunk-TMOHAFYE.js";
46
48
  import "../chunk-X7BNDUNI.js";
47
49
  import "../chunk-4VOD55SX.js";
@@ -1,10 +1,10 @@
1
1
  export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
2
- import { O as Doc, bh as Theme, bk as ThemePageStyle, bj as ThemeColorScheme, I as DeepPartial, bn as ThemeSeedColors, bi as ThemeColorPalette, X as FontFamilyKind, W as FontFamily } from '../Doc-BkxT7G80.js';
3
- 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, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaScheduleOptions, ah as MermaidLayer, ai as PAGE_ACCENT_STRATEGIES, aj as PAGE_BACKGROUNDS, ak as PAGE_BACKGROUND_RHYTHMS, al as PAGE_DESIGN_FAMILIES, am as PAGE_DIVIDERS, an as PAGE_EMPHASES, ao as PAGE_EYEBROWS, ap as PAGE_HEADING_CASES, aq as PAGE_HEADING_SCALES, ar as PAGE_HEADING_UNDERLINES, as as PAGE_HERO_STYLES, at as PAGE_IMAGE_FRAMINGS, au as PAGE_NUMERAL_STYLES, av as PAGE_PATTERNS, aw as PAGE_QUOTE_MARKS, ax as PAGE_SECTION_KINDS, ay as PAGE_SECTION_SPACINGS, az as PAGE_SHADOWS, aA as PageAccentRotation, aB as PageBackground, aC as PageDesignFamily, aD as PageEmphasis, aE as PageHeadingTreatment, aF as PageSectionKind, aG as PageSectionOverride, aH as PageTokens, aI as PathLayer, aJ as PatternBackgroundConfig, aK as PersistentLayer, aL as PersistentLayerConfig, aM as PersistentLayerTemplate, aN as PersistentLayerTemplateConfig, aO as PersistentLayerTemplateType, aP as PhotoGridInput, aQ as PieChartInput, aR as PipStyle, aS as Position, aT as ProgressIndicatorConfig, aU as PromotedBodyAnnotation, aV as PullQuoteInput, aW as QuoteBlockInput, aX as RawLayersInput, aY as RenderStyle, aZ as RightFeatureInput, a_ as ScatterChartInput, a$ as ScheduledClip, b0 as SectionHeaderInput, b1 as ShapeFilter, b2 as ShapeLayer, b3 as ShapePattern, b4 as SolidBackgroundConfig, b5 as StartBlockConfig, b6 as StatHighlightInput, b7 as SurfaceScheme, b8 as THEME_SCHEMA_VERSION, b9 as TableLayer, ba as TableLayerStyle, bb as TemplateBlock, bc as TemplateContext, bd as TemplateFunction, be as TemplateRegistry, bf as TextLayer, bg as TextStyle, bl as ThemeRegistry, bm as ThemeSchemaVersion, bo as ThemeStyle, bp as ThemeTypography, bq as TimelineBlockInput, br as TimelineTemplateEvent, bs as TimelineTemplateLink, bt as TimelineTemplateTrack, bu as TitleBlockInput, bv as TitleCaptionConfig, bw as TranscriptBlockInput, bx as TreeBlockInput, by as TreeLayer, bz as TreeLayerItem, bA as TreeLayerStyle, bB as TreeTemplateItem, bC as TwoColumnInput, bD as VIEWPORT_PRESETS, bE as VideoLayer, bF as VideoPipPosition, bG as VideoPipShape, bH as VideoPipSize, bI as VideoPlacement, bJ as VideoPresentation, bK as VideoPullQuoteInput, bL as VideoWithCaptionInput, bM as ViewportConfig, bN as ViewportOrientation, bO as ViewportPreset, bP as VignetteConfig, bQ as applySurface, bR as calculateDuration, bS as calculateFontScale, bT as createTemplateContext, bU as createTheme, bV as createThemeRegistry, bW as getAspectRatioString, bX as getBlockAtTime, bY as getCaptionAtTime, bZ as getDocPlaybackDuration, b_ as getLayoutHints, b$ as getSafeTextBounds, c0 as getSegmentAtTime, c1 as getTwoColumnPositions, c2 as getViewport, c3 as getViewportOrientation, c4 as isCustomTemplateDefinition, c5 as isPersistentLayerTemplate, c6 as isTemplateBlock, c7 as layoutScaledFontSize, c8 as resolveMediaSchedule, c9 as scaledFontSize, ca as validateCustomTemplateDefinition } from '../Doc-BkxT7G80.js';
2
+ import { O as Doc, bk as Theme, bn as ThemePageStyle, bm as ThemeColorScheme, I as DeepPartial, bq as ThemeSeedColors, bl as ThemeColorPalette, X as FontFamilyKind, W as FontFamily } from '../Doc-CynsGqL4.js';
3
+ 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, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CustomTemplateDefinition, x as CustomTemplateLayer, y as CustomTemplateValidationError, z as CustomTemplateValidationResult, D as DARK_SURFACE, E as DEFAULT_DOC_FONT, F as DEFAULT_TITLE_FONT, G as DataTableInput, H as DateEventInput, J as DefinitionCardInput, K as DiagramBlockInput, L as DiagramEdgeAnchor, M as DiagramTemplateEdge, N as DiagramTemplateNode, P as DocBlock, Q as DocDiagnostic, R as DonutChartInput, S as DrawingBlockInput, T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, V as FactCardInput, Y as FullBleedQuoteInput, Z as GradientBackgroundConfig, _ as ImageBackgroundConfig, $ as ImageLayer, a0 as ImageTreatment, a1 as ImageWithCaptionInput, a2 as LIGHT_SURFACE, a3 as Layer, a4 as LayerRepeat, a5 as LayoutHints, a6 as LeftFeatureInput, a7 as LineChartInput, a8 as LinearGradient, a9 as ListBlockInput, aa as MapBlockInput, ab as MapLayer, ac as MapMarker, ad as MapTileStyle, ae as MarkerStyle, af as MediaClip, ag as MediaCrop, ah as MediaCut, ai as MediaEdits, aj as MediaScheduleOptions, ak as MermaidLayer, al as PAGE_ACCENT_STRATEGIES, am as PAGE_BACKGROUNDS, an as PAGE_BACKGROUND_RHYTHMS, ao as PAGE_DESIGN_FAMILIES, ap as PAGE_DIVIDERS, aq as PAGE_EMPHASES, ar as PAGE_EYEBROWS, as as PAGE_HEADING_CASES, at as PAGE_HEADING_SCALES, au as PAGE_HEADING_UNDERLINES, av as PAGE_HERO_STYLES, aw as PAGE_IMAGE_FRAMINGS, ax as PAGE_NUMERAL_STYLES, ay as PAGE_PATTERNS, az as PAGE_QUOTE_MARKS, aA as PAGE_SECTION_KINDS, aB as PAGE_SECTION_SPACINGS, aC as PAGE_SHADOWS, aD as PageAccentRotation, aE as PageBackground, aF as PageDesignFamily, aG as PageEmphasis, aH as PageHeadingTreatment, aI as PageSectionKind, aJ as PageSectionOverride, aK as PageTokens, aL as PathLayer, aM as PatternBackgroundConfig, aN as PersistentLayer, aO as PersistentLayerConfig, aP as PersistentLayerTemplate, aQ as PersistentLayerTemplateConfig, aR as PersistentLayerTemplateType, aS as PhotoGridInput, aT as PieChartInput, aU as PipStyle, aV as Position, aW as ProgressIndicatorConfig, aX as PromotedBodyAnnotation, aY as PullQuoteInput, aZ as QuoteBlockInput, a_ as RawLayersInput, a$ as RenderStyle, b0 as RightFeatureInput, b1 as ScatterChartInput, b2 as ScheduledClip, b3 as SectionHeaderInput, b4 as ShapeFilter, b5 as ShapeLayer, b6 as ShapePattern, b7 as SolidBackgroundConfig, b8 as StartBlockConfig, b9 as StatHighlightInput, ba as SurfaceScheme, bb as THEME_SCHEMA_VERSION, bc as TableLayer, bd as TableLayerStyle, be as TemplateBlock, bf as TemplateContext, bg as TemplateFunction, bh as TemplateRegistry, bi as TextLayer, bj as TextStyle, bo as ThemeRegistry, bp as ThemeSchemaVersion, br as ThemeStyle, bs as ThemeTypography, bt as TimelineBlockInput, bu as TimelineTemplateEvent, bv as TimelineTemplateLink, bw as TimelineTemplateTrack, bx as TitleBlockInput, by as TitleCaptionConfig, bz as TranscriptBlockInput, bA as TreeBlockInput, bB as TreeLayer, bC as TreeLayerItem, bD as TreeLayerStyle, bE as TreeTemplateItem, bF as TwoColumnInput, bG as VIEWPORT_PRESETS, bH as VideoLayer, bI as VideoPipPosition, bJ as VideoPipShape, bK as VideoPipSize, bL as VideoPlacement, bM as VideoPresentation, bN as VideoPullQuoteInput, bO as VideoWithCaptionInput, bP as ViewportConfig, bQ as ViewportOrientation, bR as ViewportPreset, bS as VignetteConfig, bT as applySurface, bU as calculateDuration, bV as calculateFontScale, bW as createTemplateContext, bX as createTheme, bY as createThemeRegistry, bZ as getAspectRatioString, b_ as getBlockAtTime, b$ as getCaptionAtTime, c0 as getDocPlaybackDuration, c1 as getLayoutHints, c2 as getSafeTextBounds, c3 as getSegmentAtTime, c4 as getTwoColumnPositions, c5 as getViewport, c6 as getViewportOrientation, c7 as isCustomTemplateDefinition, c8 as isPersistentLayerTemplate, c9 as isTemplateBlock, ca as layoutScaledFontSize, cb as resolveMediaSchedule, cc as scaledFontSize, cd as scheduleMediaClip, ce as validateCustomTemplateDefinition } from '../Doc-CynsGqL4.js';
4
4
  export { a as DEFAULT_TRANSITION_DURATION_SECONDS, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ad as resolveTransitionDuration } from '../types-Be6sBUBx.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-BbSjnGmd.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-z7t3x5CU.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-C8ZB54Vv.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BVZe_5y4.js';
8
8
 
9
9
  /**
10
10
  * Runtime validation for the canonical {@link Doc} JSON shape.
@@ -13,12 +13,13 @@ import {
13
13
  pipStyleVars,
14
14
  serializeTheme,
15
15
  validateDocSchema
16
- } from "../chunk-BUJ5RV2P.js";
16
+ } from "../chunk-JJO6JFNZ.js";
17
17
  import {
18
18
  defaultPageStyle,
19
19
  getDocPlaybackDuration,
20
- resolveMediaSchedule
21
- } from "../chunk-GAZKTT4R.js";
20
+ resolveMediaSchedule,
21
+ scheduleMediaClip
22
+ } from "../chunk-YNO6JV36.js";
22
23
  import {
23
24
  AVAILABLE_FONT_STACKS,
24
25
  DARK_SURFACE,
@@ -90,6 +91,8 @@ import {
90
91
  validateTheme,
91
92
  withAlpha
92
93
  } from "../chunk-Y4D6TDZT.js";
94
+ import "../chunk-JSGIWW35.js";
95
+ import "../chunk-L7QZORLB.js";
93
96
  import {
94
97
  DEFAULT_TRANSITION_DURATION_SECONDS,
95
98
  TRANSITION_DIRECTIONS,
@@ -190,6 +193,7 @@ export {
190
193
  resolveTheme,
191
194
  resolveTransitionDuration,
192
195
  scaledFontSize2 as scaledFontSize,
196
+ scheduleMediaClip,
193
197
  serializeTheme,
194
198
  validateCustomTemplateDefinition,
195
199
  validateDocSchema,
@@ -1,4 +1,4 @@
1
- import { bh as Theme, bl as ThemeRegistry } from './Doc-BkxT7G80.js';
1
+ import { bk as Theme, bo as ThemeRegistry } from './Doc-CynsGqL4.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,4 +1,4 @@
1
- import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-BkxT7G80.js';
1
+ import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-CynsGqL4.js';
2
2
  import '../types-Be6sBUBx.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { O as Doc, r as ColorScheme, k as Block, bb as TemplateBlock } from '../Doc-BkxT7G80.js';
2
- import { i as PageTransformHints } from '../materializePageSection-Dp2aHFbc.js';
1
+ import { O as Doc, r as ColorScheme, k as Block, be as TemplateBlock } from '../Doc-CynsGqL4.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-CAJoa8fh.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
4
  import '../types-Be6sBUBx.js';
5
5
 
@@ -151,6 +151,26 @@ declare function applyTransform(doc: Doc, style: TransformStyleInput, options?:
151
151
  * Converts a narrated text segment and its media into a timed Doc using the
152
152
  * canonical squisq transform pipeline. This is the reusable bridge for hosts
153
153
  * that generate one visual sequence per narration segment.
154
+ *
155
+ * Pacing: a narrated segment is a single source block, so the text transform
156
+ * alone promotes only one or two extractions — a 60s segment would become one
157
+ * 60s slide, which timed players (`expandDocBlocks`) then split into repeated
158
+ * copies of that same slide. `paceSegment()` restores a visual rhythm: it aims
159
+ * for `slidesPerMinute`, places up to `maxVideos` clips, and fills the rest
160
+ * with standalone image slides until no slide runs past `maxSlideDuration`
161
+ * (or the images run out). Image-poor segments get more text slides instead:
162
+ * their narration is split into sentence runs, one source block each, since
163
+ * the transform promotes at most one extraction per type from a block.
164
+ *
165
+ * The output timeline is sequential and unanchored: content blocks are ORDERED
166
+ * by where their extraction is spoken, but carry no `sourceStartTime`. When a
167
+ * segment mixes anchored and floating blocks, `expandDocBlocks()` hoists every
168
+ * anchored block ahead of the floating ones and stretches whatever precedes
169
+ * the first anchor (typically a host's section header), so a fully sequential
170
+ * segment is the only shape that survives re-timing by hosts and players.
171
+ *
172
+ * Block ids are prefixed with the segment id so segments composed into one
173
+ * Doc never collide (the transform itself numbers from `transform-0`).
154
174
  */
155
175
 
156
176
  interface NarratedSegmentVideo {
@@ -179,7 +199,21 @@ interface NarratedSegmentTransformOptions extends Pick<TransformOptions, 'themeI
179
199
  style?: TransformStyleInput;
180
200
  seed?: number;
181
201
  minConfidence?: number;
202
+ /**
203
+ * Visual pace target. Also caps the text transform's promotions when set.
204
+ * Pacing defaults to 5 when omitted.
205
+ */
182
206
  slidesPerMinute?: number;
207
+ /** Longest a slide should hold before another visual is added. Default 15s. */
208
+ maxSlideDuration?: number;
209
+ /**
210
+ * Shortest slide the pacer schedules; bounds the slide count so timed
211
+ * players don't merge slides back together (they fold anything under ~5s).
212
+ * Default 6s.
213
+ */
214
+ minSlideDuration?: number;
215
+ /** Most video clips placed in one segment. Default 2. */
216
+ maxVideos?: number;
183
217
  }
184
218
  interface NarratedSegmentResult extends TransformResult {
185
219
  seed: number;
@@ -9,16 +9,17 @@ import {
9
9
  getTransformStyleSummaries,
10
10
  resolveTransformStyle,
11
11
  transformNarratedSegment
12
- } from "../chunk-J2IPSQKP.js";
12
+ } from "../chunk-KFZOCWPK.js";
13
13
  import "../chunk-SVN7T6BK.js";
14
- import "../chunk-WAGJK36Q.js";
15
- import "../chunk-PUS54YU6.js";
14
+ import "../chunk-RMCUZDW5.js";
16
15
  import "../chunk-C3NAY5YP.js";
16
+ import "../chunk-PUS54YU6.js";
17
17
  import "../chunk-Y4D6TDZT.js";
18
- import "../chunk-CW24CH7I.js";
18
+ import "../chunk-L7QZORLB.js";
19
+ import "../chunk-HUXK7EOT.js";
19
20
  import "../chunk-TMOHAFYE.js";
20
- import "../chunk-7N4G32LG.js";
21
21
  import "../chunk-X7BNDUNI.js";
22
+ import "../chunk-7N4G32LG.js";
22
23
  import "../chunk-4VOD55SX.js";
23
24
  import "../chunk-GHOPHGOK.js";
24
25
  import "../chunk-XRW6P7IF.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.11.6",
3
+ "version": "2.11.8",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -102,6 +102,11 @@
102
102
  "import": "./dist/imageEdit/index.js",
103
103
  "default": "./dist/imageEdit/index.js"
104
104
  },
105
+ "./mediaEdit": {
106
+ "types": "./dist/mediaEdit/index.d.ts",
107
+ "import": "./dist/mediaEdit/index.js",
108
+ "default": "./dist/mediaEdit/index.js"
109
+ },
105
110
  "./icons": {
106
111
  "types": "./dist/icons/index.d.ts",
107
112
  "import": "./dist/icons/index.js",
@@ -7,13 +7,13 @@ import {
7
7
  splitKeyValueToken,
8
8
  tokenizeAttrTokens
9
9
  } from "./chunk-TMOHAFYE.js";
10
- import {
11
- resolveIcon
12
- } from "./chunk-7N4G32LG.js";
13
10
  import {
14
11
  parseFrontmatter,
15
12
  parseHtmlToNodes
16
13
  } from "./chunk-X7BNDUNI.js";
14
+ import {
15
+ resolveIcon
16
+ } from "./chunk-7N4G32LG.js";
17
17
 
18
18
  // src/markdown/convert.ts
19
19
  function convertPosition(pos) {