@bendyline/squisq 2.11.17 → 2.11.19

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 (37) hide show
  1. package/NOTICE.md +2 -2
  2. package/THIRD_PARTY_LICENSES.txt +2 -2
  3. package/dist/{Doc-CXx1WL8G.d.ts → Doc-B6TYHYGc.d.ts} +14 -0
  4. package/dist/{ImageEditDoc-BVLXI-Zd.d.ts → ImageEditDoc-CN_3Ysj5.d.ts} +1 -1
  5. package/dist/chunk-3XEABCT3.js +114 -0
  6. package/dist/{chunk-54RU7TBZ.js → chunk-BA5MMBI6.js} +19 -4
  7. package/dist/chunk-CZ7AUSLI.js +80 -0
  8. package/dist/{chunk-MY46W5O5.js → chunk-JVY3NH6H.js} +2 -4
  9. package/dist/{chunk-LJZHC6GN.js → chunk-K2Z7K65P.js} +1 -1
  10. package/dist/{chunk-KNC4ZBQC.js → chunk-QKNFR55R.js} +826 -295
  11. package/dist/{chunk-L7IIFWWW.js → chunk-QLN6ILHM.js} +275 -43
  12. package/dist/{chunk-PGWYC3S2.js → chunk-Y4OZ5DSG.js} +1 -1
  13. package/dist/doc/index.d.ts +5 -22
  14. package/dist/doc/index.js +7 -5
  15. package/dist/fence/index.d.ts +1 -1
  16. package/dist/generate/index.d.ts +1 -1
  17. package/dist/icons/index.d.ts +2 -2
  18. package/dist/icons/index.js +1 -1
  19. package/dist/icons/inlineIconMarker.d.ts +1 -1
  20. package/dist/imageEdit/index.d.ts +3 -3
  21. package/dist/index.d.ts +6 -6
  22. package/dist/index.js +61 -31
  23. package/dist/{inlineIconMarker-CiE8Hlvz.d.ts → inlineIconMarker-BGjv-W4j.d.ts} +2 -2
  24. package/dist/jsonForm/index.d.ts +1 -1
  25. package/dist/markdown/index.js +3 -3
  26. package/dist/{materializePageSection-BX1uOAlN.d.ts → materializePageSection-IYXU3tDN.d.ts} +1 -1
  27. package/dist/mediaEdit/index.d.ts +2 -2
  28. package/dist/narration/index.d.ts +1 -1
  29. package/dist/narration/index.js +7 -6
  30. package/dist/schemas/index.d.ts +4 -4
  31. package/dist/{themeLibrary-Bnq_x-db.d.ts → themeLibrary-_46saKYO.d.ts} +1 -1
  32. package/dist/timing/index.d.ts +1 -1
  33. package/dist/transform/index.d.ts +84 -4
  34. package/dist/transform/index.js +37 -7
  35. package/package.json +2 -2
  36. package/dist/chunk-7N4G32LG.js +0 -80
  37. package/dist/chunk-PNXBDMNS.js +0 -337
@@ -75,7 +75,8 @@ import {
75
75
  resolveBlockTransition
76
76
  } from "./chunk-4VOD55SX.js";
77
77
  import {
78
- estimateReadingTime
78
+ estimateReadingTime,
79
+ estimateSpokenWordCount
79
80
  } from "./chunk-GHOPHGOK.js";
80
81
  import {
81
82
  SeededRandom,
@@ -1501,18 +1502,16 @@ function asciiTimelineToTemplateData(timeline) {
1501
1502
  id: track.id,
1502
1503
  ...track.label ? { label: track.label } : {},
1503
1504
  ...track.endLabel ? { endLabel: track.endLabel } : {},
1504
- events: track.events.map(
1505
- (event) => ({
1506
- id: event.id,
1507
- label: event.label,
1508
- ...event.description ? { description: event.description } : {},
1509
- position: clamp01((event.column - globalStart) / span),
1510
- ...event.side ? { side: event.side } : {},
1511
- ...event.descriptionSide ? { descriptionSide: event.descriptionSide } : {},
1512
- ...event.callout === false ? { callout: false } : {},
1513
- ...event.marker ? { marker: event.marker } : {}
1514
- })
1515
- )
1505
+ events: track.events.map((event) => ({
1506
+ id: event.id,
1507
+ label: event.label,
1508
+ ...event.description ? { description: event.description } : {},
1509
+ position: clamp01((event.column - globalStart) / span),
1510
+ ...event.side ? { side: event.side } : {},
1511
+ ...event.descriptionSide ? { descriptionSide: event.descriptionSide } : {},
1512
+ ...event.callout === false ? { callout: false } : {},
1513
+ ...event.marker ? { marker: event.marker } : {}
1514
+ }))
1516
1515
  }));
1517
1516
  const links = timeline.links.map((link) => ({ ...link }));
1518
1517
  return { tracks, links };
@@ -6048,9 +6047,11 @@ function nodesFromTemplateData(input) {
6048
6047
  function diagramBlock(input, context) {
6049
6048
  const { theme, viewport, children = [] } = context;
6050
6049
  const colors = input.colorScheme ? resolveColorScheme(context, input.colorScheme) : void 0;
6050
+ const background = input.background === "surface" ? [createBackgroundLayer("diagram-bg", themedSurfaceGradient(context, 170))] : [];
6051
6051
  const resolved = children.length > 0 ? nodesFromChildren(context) : input.nodes && input.nodes.length > 0 ? nodesFromTemplateData(input) : { nodes: [], edges: [] };
6052
6052
  if (resolved.nodes.length === 0) {
6053
6053
  return [
6054
+ ...background,
6054
6055
  {
6055
6056
  type: "text",
6056
6057
  id: "diagram-empty",
@@ -6091,7 +6092,7 @@ function diagramBlock(input, context) {
6091
6092
  w: n.w * scale,
6092
6093
  h: n.h * scale
6093
6094
  });
6094
- const layers = [];
6095
+ const layers = [...background];
6095
6096
  if (input.title) {
6096
6097
  const titleLayer = canvasTitleLayer("diagram-title", input.title, frame, placement, context);
6097
6098
  if (titleLayer) layers.push(titleLayer);
@@ -10005,34 +10006,28 @@ function collectRichMediaItems(layers, block) {
10005
10006
  (video) => !existingEmbeds.has(video.url)
10006
10007
  );
10007
10008
  return [
10008
- ...images.map(
10009
- (image) => ({
10010
- kind: "image",
10011
- src: image.src,
10012
- alt: image.alt,
10013
- ...image.width && image.height ? { aspectRatio: image.width / image.height } : {}
10014
- })
10015
- ),
10016
- ...videos.map(
10017
- (video) => ({
10018
- kind: "video",
10019
- src: video.src,
10020
- ...video.posterSrc ? { posterSrc: video.posterSrc } : {},
10021
- alt: video.alt,
10022
- aspectRatio: 16 / 9,
10023
- ...video.startAt != null ? { startAt: video.startAt } : {},
10024
- ...video.clipStart != null ? { clipStart: video.clipStart } : {},
10025
- ...video.clipEnd != null ? { clipEnd: video.clipEnd } : {}
10026
- })
10027
- ),
10028
- ...hosted.map(
10029
- (video) => ({
10030
- kind: "videoEmbed",
10031
- url: video.url,
10032
- title: video.title,
10033
- aspectRatio: video.aspectRatio
10034
- })
10035
- ),
10009
+ ...images.map((image) => ({
10010
+ kind: "image",
10011
+ src: image.src,
10012
+ alt: image.alt,
10013
+ ...image.width && image.height ? { aspectRatio: image.width / image.height } : {}
10014
+ })),
10015
+ ...videos.map((video) => ({
10016
+ kind: "video",
10017
+ src: video.src,
10018
+ ...video.posterSrc ? { posterSrc: video.posterSrc } : {},
10019
+ alt: video.alt,
10020
+ aspectRatio: 16 / 9,
10021
+ ...video.startAt != null ? { startAt: video.startAt } : {},
10022
+ ...video.clipStart != null ? { clipStart: video.clipStart } : {},
10023
+ ...video.clipEnd != null ? { clipEnd: video.clipEnd } : {}
10024
+ })),
10025
+ ...hosted.map((video) => ({
10026
+ kind: "videoEmbed",
10027
+ url: video.url,
10028
+ title: video.title,
10029
+ aspectRatio: video.aspectRatio
10030
+ })),
10036
10031
  ...sources.map((source) => ({ kind: "mermaid", source, aspectRatio: 16 / 9 })),
10037
10032
  ...embeddedSpatialMedia(block)
10038
10033
  ];
@@ -11005,6 +11000,28 @@ function expandDocBlocks(blocks, options = {}) {
11005
11000
  const splitParts = /* @__PURE__ */ new Map();
11006
11001
  for (const [segmentIndex, segmentBlocks] of blocksBySegment) {
11007
11002
  const audioSegment = audioSegments[segmentIndex];
11003
+ if (segmentBlocks.every(({ block }) => block.timelineLocked === true)) {
11004
+ for (const { block, originalIndex } of segmentBlocks) {
11005
+ const expanded = materializeScheduledBlock(
11006
+ block,
11007
+ originalIndex,
11008
+ totalBlocks,
11009
+ theme,
11010
+ viewport,
11011
+ effectivePersistentLayers,
11012
+ expandedPersistentLayers,
11013
+ registry,
11014
+ failureMode,
11015
+ onDiagnostic,
11016
+ motion,
11017
+ opts.mediaAspectRatios
11018
+ );
11019
+ expanded.startTime = block.sourceStartTime ?? 0;
11020
+ expanded.duration = block.duration;
11021
+ expandedBlocks[originalIndex] = expanded;
11022
+ }
11023
+ continue;
11024
+ }
11008
11025
  if (!audioSegment) {
11009
11026
  let offsetTime = 0;
11010
11027
  for (const { block, originalIndex } of segmentBlocks) {
@@ -12485,6 +12502,215 @@ function buildStartBlock(markdownDoc, rootBlocks, fileName) {
12485
12502
  return config;
12486
12503
  }
12487
12504
 
12505
+ // src/narration/syllables.ts
12506
+ var BOUNDARY_PUNCT = /^[.,!?;:'"()[\]{}]+|[.,!?;:'"()[\]{}]+$/g;
12507
+ var SYLLABLES_PER_SPOKEN_WORD = 1.4;
12508
+ function estimateSyllables(token) {
12509
+ const stripped = token.replace(BOUNDARY_PUNCT, "");
12510
+ if (!stripped) return 1;
12511
+ if (/^[-+]?[\d.,]+$/.test(stripped)) {
12512
+ const num = parseFloat(stripped.replace(/,/g, ""));
12513
+ if (!Number.isNaN(num) && Number.isFinite(num)) {
12514
+ return Math.max(1, Math.round(estimateSpokenWordCount(stripped) * SYLLABLES_PER_SPOKEN_WORD));
12515
+ }
12516
+ }
12517
+ if (/^[A-Z]{2,5}$/.test(stripped) && !/[AEIOUY]/.test(stripped)) {
12518
+ return stripped.length;
12519
+ }
12520
+ const parts = stripped.toLowerCase().split(/[^a-z']+/).filter((p) => p.length > 0);
12521
+ if (parts.length === 0) return 1;
12522
+ let total = 0;
12523
+ for (const part of parts) {
12524
+ total += countAlphaSyllables(part.replace(/'/g, ""));
12525
+ }
12526
+ return Math.max(1, total);
12527
+ }
12528
+ function countAlphaSyllables(word) {
12529
+ if (!word) return 0;
12530
+ const groups = word.match(/[aeiouy]+/g);
12531
+ let count = groups ? groups.length : 0;
12532
+ if (count === 0) return 1;
12533
+ if (count > 1 && /[^aeiouy]e$/.test(word)) {
12534
+ count -= 1;
12535
+ }
12536
+ if (count > 1 && /[^aeiouy]ed$/.test(word) && !/[td]ed$/.test(word)) {
12537
+ count -= 1;
12538
+ }
12539
+ if (count > 1 && /[^aeiouy]es$/.test(word) && !/(?:[sxz]|[cs]h)es$/.test(word)) {
12540
+ count -= 1;
12541
+ }
12542
+ if (/[^aeiouy]le$/.test(word)) {
12543
+ count += 1;
12544
+ }
12545
+ return Math.max(1, count);
12546
+ }
12547
+
12548
+ // src/narration/script.ts
12549
+ function blockSpokenText(block, includeTitles) {
12550
+ const title = includeTitles && block.title ? block.title.trim() : "";
12551
+ const body = getBlockBodyText2(block);
12552
+ if (title && body) return `${title}
12553
+ ${body}`;
12554
+ return title || body;
12555
+ }
12556
+ function buildNarrationScript(doc, options) {
12557
+ const includeTitles = options?.includeTitles ?? true;
12558
+ const separator = options?.blockSeparator ?? "\n\n";
12559
+ const pieces = [];
12560
+ for (const block of flattenRenderableBlocks(doc.blocks)) {
12561
+ const text = blockSpokenText(block, includeTitles);
12562
+ if (!text) continue;
12563
+ pieces.push({
12564
+ blockId: block.id,
12565
+ heading: block.title || void 0,
12566
+ text
12567
+ });
12568
+ }
12569
+ let sourceText = "";
12570
+ const blocks = [];
12571
+ for (let i = 0; i < pieces.length; i++) {
12572
+ if (i > 0) sourceText += separator;
12573
+ const charStart = sourceText.length;
12574
+ sourceText += pieces[i].text;
12575
+ blocks.push({
12576
+ blockId: pieces[i].blockId,
12577
+ ...pieces[i].heading !== void 0 ? { heading: pieces[i].heading } : {},
12578
+ tokenStart: 0,
12579
+ tokenEnd: 0,
12580
+ charStart,
12581
+ charEnd: sourceText.length
12582
+ });
12583
+ }
12584
+ const tokens = [];
12585
+ const tokenRe = /\S+/g;
12586
+ let blockIndex = 0;
12587
+ let match;
12588
+ while ((match = tokenRe.exec(sourceText)) !== null) {
12589
+ const charOffset = match.index;
12590
+ const charEnd = charOffset + match[0].length;
12591
+ while (blockIndex < blocks.length - 1 && charOffset >= blocks[blockIndex].charEnd) {
12592
+ blockIndex++;
12593
+ }
12594
+ const spoken = hasSpokenContent(match[0]);
12595
+ tokens.push({
12596
+ text: match[0],
12597
+ charOffset,
12598
+ charEnd,
12599
+ blockId: blocks[blockIndex]?.blockId ?? "",
12600
+ blockIndex,
12601
+ syllables: spoken ? estimateSyllables(match[0]) : 0,
12602
+ spokenWordEquiv: spoken ? estimateSpokenWordCount(stripBoundaryPunct(match[0])) : 0,
12603
+ pauseAfter: 0,
12604
+ spoken
12605
+ });
12606
+ }
12607
+ for (const range of blocks) {
12608
+ range.tokenStart = tokens.length;
12609
+ range.tokenEnd = 0;
12610
+ }
12611
+ for (let i = 0; i < tokens.length; i++) {
12612
+ const range = blocks[tokens[i].blockIndex];
12613
+ if (range) {
12614
+ if (i < range.tokenStart) range.tokenStart = i;
12615
+ range.tokenEnd = i + 1;
12616
+ }
12617
+ }
12618
+ for (const range of blocks) {
12619
+ if (range.tokenStart > range.tokenEnd) {
12620
+ range.tokenStart = range.tokenEnd;
12621
+ }
12622
+ }
12623
+ for (let i = 0; i < tokens.length; i++) {
12624
+ const token = tokens[i];
12625
+ const next = tokens[i + 1];
12626
+ if (!next || next.blockIndex !== token.blockIndex) {
12627
+ token.pauseAfter = 3;
12628
+ } else if (sourceText.slice(token.charEnd, next.charOffset).includes("\n")) {
12629
+ token.pauseAfter = 2;
12630
+ } else if (endsWithClausePunctuation(token.text)) {
12631
+ token.pauseAfter = 1;
12632
+ }
12633
+ }
12634
+ const cumulativeSyllables = new Array(tokens.length + 1);
12635
+ cumulativeSyllables[0] = 0;
12636
+ for (let i = 0; i < tokens.length; i++) {
12637
+ cumulativeSyllables[i + 1] = cumulativeSyllables[i] + tokens[i].syllables;
12638
+ }
12639
+ return {
12640
+ sourceText,
12641
+ tokens,
12642
+ blocks,
12643
+ totalSyllables: cumulativeSyllables[tokens.length],
12644
+ cumulativeSyllables
12645
+ };
12646
+ }
12647
+ var TRAILING_CLOSERS = /["')\]}»”’]+$/;
12648
+ function hasSpokenContent(token) {
12649
+ return /[\p{L}\p{N}]/u.test(token);
12650
+ }
12651
+ function stripBoundaryPunct(token) {
12652
+ return token.replace(/^[.,!?;:'"()[\]{}]+|[.,!?;:'"()[\]{}]+$/g, "");
12653
+ }
12654
+ function endsWithClausePunctuation(token) {
12655
+ const bare = token.replace(TRAILING_CLOSERS, "");
12656
+ const last = bare.charAt(bare.length - 1);
12657
+ if (!last) return false;
12658
+ if (last === ",") {
12659
+ return true;
12660
+ }
12661
+ return last === "." || last === ";" || last === ":" || last === "!" || last === "?";
12662
+ }
12663
+ function clamp2(value, min, max) {
12664
+ return value < min ? min : value > max ? max : value;
12665
+ }
12666
+ function expectedSyllablesAt(script, wordPos) {
12667
+ const n = script.tokens.length;
12668
+ if (n === 0) return 0;
12669
+ const pos = clamp2(wordPos, 0, n);
12670
+ const idx = Math.floor(pos);
12671
+ if (idx >= n) return script.totalSyllables;
12672
+ return script.cumulativeSyllables[idx] + (pos - idx) * script.tokens[idx].syllables;
12673
+ }
12674
+ function wordPosAtExpectedSyllables(script, syllables) {
12675
+ const n = script.tokens.length;
12676
+ if (n === 0) return 0;
12677
+ const target = clamp2(syllables, 0, script.totalSyllables);
12678
+ let lo = 0;
12679
+ let hi = n;
12680
+ while (lo < hi) {
12681
+ const mid = lo + hi + 1 >> 1;
12682
+ if (script.cumulativeSyllables[mid] <= target) lo = mid;
12683
+ else hi = mid - 1;
12684
+ }
12685
+ if (lo >= n) return n;
12686
+ const within = target - script.cumulativeSyllables[lo];
12687
+ const sylls = script.tokens[lo].syllables;
12688
+ return lo + (sylls > 0 ? within / sylls : 0);
12689
+ }
12690
+ function wordIndexAtChar(script, charOffset) {
12691
+ const tokens = script.tokens;
12692
+ if (tokens.length === 0) return 0;
12693
+ let lo = 0;
12694
+ let hi = tokens.length - 1;
12695
+ while (lo < hi) {
12696
+ const mid = lo + hi >> 1;
12697
+ if (tokens[mid].charEnd <= charOffset) lo = mid + 1;
12698
+ else hi = mid;
12699
+ }
12700
+ return lo;
12701
+ }
12702
+ function wordIndexAtTime(words, tSec) {
12703
+ if (words.length === 0) return 0;
12704
+ let lo = 0;
12705
+ let hi = words.length - 1;
12706
+ while (lo < hi) {
12707
+ const mid = lo + hi + 1 >> 1;
12708
+ if (words[mid].tSec <= tSec) lo = mid;
12709
+ else hi = mid - 1;
12710
+ }
12711
+ return words[lo].tSec <= tSec ? lo : 0;
12712
+ }
12713
+
12488
12714
  export {
12489
12715
  expandPersistentLayers,
12490
12716
  getPersistentLayersFromTheme,
@@ -12622,5 +12848,11 @@ export {
12622
12848
  flattenRenderableBlocks,
12623
12849
  countBlocks,
12624
12850
  getBlockDepth,
12625
- getBlockBodyText2 as getBlockBodyText
12851
+ getBlockBodyText2 as getBlockBodyText,
12852
+ estimateSyllables,
12853
+ buildNarrationScript,
12854
+ expectedSyllablesAt,
12855
+ wordPosAtExpectedSyllables,
12856
+ wordIndexAtChar,
12857
+ wordIndexAtTime
12626
12858
  };
@@ -13,7 +13,7 @@ import {
13
13
  } from "./chunk-Q6ELOAOQ.js";
14
14
  import {
15
15
  resolveIcon
16
- } from "./chunk-7N4G32LG.js";
16
+ } from "./chunk-CZ7AUSLI.js";
17
17
 
18
18
  // src/markdown/convert.ts
19
19
  function convertPosition(pos) {
@@ -1,12 +1,12 @@
1
- import { bq as TemplateBlock, br as TemplateContext, a6 as Layer, y as CustomTemplateDefinition, bt as TemplateRegistry, bw as Theme, c0 as ViewportConfig, a_ as PersistentLayerConfig, at as MotionSpec, R as DocBlock, c1 as ViewportOrientation, aZ as PersistentLayer, bJ as TitleBlockInput, bf as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bl as StatHighlightInput, b9 as QuoteBlockInput, Y as FactCardInput, bR as TwoColumnInput, J as DateEventInput, a4 as ImageWithCaptionInput, a9 as LeftFeatureInput, bc as RightFeatureInput, ae as MapBlockInput, bk as StartBlockConfig, $ as FullBleedQuoteInput, ac as ListBlockInput, b2 as PhotoGridInput, L as DefinitionCardInput, t as ComparisonBarInput, b8 as PullQuoteInput, b$ as VideoWithCaptionInput, b_ as VideoPullQuoteInput, I as DataTableInput, M as DiagramBlockInput, bM as TreeBlockInput, bF as TimelineBlockInput, k as Block, U as DrawingBlockInput, ai as MarkerStyle, A as AccentImage, a3 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, au as MotionState, ar as MotionProfile, by as ThemeColorScheme, w as CountUpSpec, Q as Doc, bA as ThemeRegistry, aR as PageEmphasis, bz as ThemePageStyle, S as DocDiagnostic, P as DiagramTemplateNode, O as DiagramTemplateEdge, bI as TimelineTemplateTrack, bH as TimelineTemplateLink } from '../Doc-CXx1WL8G.js';
2
- export { V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, a8 as LayoutHints, bb as RenderStyle, bx as ThemeColorPalette, bD as ThemeStyle, bE as ThemeTypography, bS as VIEWPORT_PRESETS, c2 as ViewportPreset, c7 as createTemplateContext, ce as getLayoutHints, ch as getTwoColumnPositions, ci as getViewport, cj as getViewportOrientation, cn as isTemplateBlock, ct as scaledFontSize } from '../Doc-CXx1WL8G.js';
1
+ import { bq as TemplateBlock, br as TemplateContext, a6 as Layer, y as CustomTemplateDefinition, bt as TemplateRegistry, bw as Theme, c0 as ViewportConfig, a_ as PersistentLayerConfig, at as MotionSpec, R as DocBlock, c1 as ViewportOrientation, aZ as PersistentLayer, bJ as TitleBlockInput, bf as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bl as StatHighlightInput, b9 as QuoteBlockInput, Y as FactCardInput, bR as TwoColumnInput, J as DateEventInput, a4 as ImageWithCaptionInput, a9 as LeftFeatureInput, bc as RightFeatureInput, ae as MapBlockInput, bk as StartBlockConfig, $ as FullBleedQuoteInput, ac as ListBlockInput, b2 as PhotoGridInput, L as DefinitionCardInput, t as ComparisonBarInput, b8 as PullQuoteInput, b$ as VideoWithCaptionInput, b_ as VideoPullQuoteInput, I as DataTableInput, M as DiagramBlockInput, bM as TreeBlockInput, bF as TimelineBlockInput, k as Block, U as DrawingBlockInput, ai as MarkerStyle, A as AccentImage, a3 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, au as MotionState, ar as MotionProfile, by as ThemeColorScheme, w as CountUpSpec, Q as Doc, bA as ThemeRegistry, aR as PageEmphasis, bz as ThemePageStyle, S as DocDiagnostic, P as DiagramTemplateNode, O as DiagramTemplateEdge, bI as TimelineTemplateTrack, bH as TimelineTemplateLink } from '../Doc-B6TYHYGc.js';
2
+ export { V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, a8 as LayoutHints, bb as RenderStyle, bx as ThemeColorPalette, bD as ThemeStyle, bE as ThemeTypography, bS as VIEWPORT_PRESETS, c2 as ViewportPreset, c7 as createTemplateContext, ce as getLayoutHints, ch as getTwoColumnPositions, ci as getViewport, cj as getViewportOrientation, cn as isTemplateBlock, ct as scaledFontSize } from '../Doc-B6TYHYGc.js';
3
3
  import { L as MarkdownNode, a5 as TransitionType, a4 as TransitionDirection, M as MarkdownBlockNode, r as MarkdownHeading, n as MarkdownDocument, V as MarkdownTable, i as MarkdownCodeBlock, G as MarkdownList } from '../types-C6VvDDL2.js';
4
4
  import { C as CoercedBlockMeta } from '../annotationCoercion-BgL52343.js';
5
- import { c as PageSection } from '../materializePageSection-BX1uOAlN.js';
6
- export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from '../materializePageSection-BX1uOAlN.js';
5
+ import { c as PageSection } from '../materializePageSection-IYXU3tDN.js';
6
+ export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from '../materializePageSection-IYXU3tDN.js';
7
7
  import { C as ContentContainer } from '../ContentContainer-B2w9sUoL.js';
8
8
  import { V as ViewIssue } from '../viewState-lTZS-hP_.js';
9
- export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-Bnq_x-db.js';
9
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-_46saKYO.js';
10
10
 
11
11
  /** Runtime registry composition for built-in and document-scoped templates. */
12
12
 
@@ -2391,23 +2391,6 @@ interface DocToMarkdownOptions {
2391
2391
  */
2392
2392
  declare function docToMarkdown(doc: Doc, options?: DocToMarkdownOptions): MarkdownDocument;
2393
2393
 
2394
- /**
2395
- * buildPreviewDoc — Converts a markdown-derived Doc into a player-ready Doc
2396
- * with TemplateBlock slides and interleaved images.
2397
- *
2398
- * This is THE canonical slideshow projection: the editor's live preview, the
2399
- * HTML slideshow export, and the PPTX exporter all run a doc through here so
2400
- * the slide sequence cannot drift by consumer. It is the slide-mode sibling of
2401
- * `materializePageSections` (page mode) and lives in core for the same reason —
2402
- * exporters must be able to reach it without depending on a React package.
2403
- *
2404
- * Pipeline:
2405
- * 1. Flatten hierarchical blocks into a linear slide sequence
2406
- * 2. Convert each block into a TemplateBlock-compatible object
2407
- * 3. Interleave images as standalone imageWithCaption slides
2408
- * 4. Synthesize a dummy audio segment for timer-based playback
2409
- */
2410
-
2411
2394
  /**
2412
2395
  * Build a player-ready Doc from a markdown-derived Doc.
2413
2396
  *
package/dist/doc/index.js CHANGED
@@ -74,8 +74,9 @@ import {
74
74
  validateMarkdownSource,
75
75
  wordRevealDelay,
76
76
  writeDashboardLayoutsToFrontmatter
77
- } from "../chunk-54RU7TBZ.js";
78
- import "../chunk-PNXBDMNS.js";
77
+ } from "../chunk-BA5MMBI6.js";
78
+ import "../chunk-3XEABCT3.js";
79
+ import "../chunk-QKNFR55R.js";
79
80
  import {
80
81
  ASCII_CHAR_H,
81
82
  ASCII_CHAR_W,
@@ -209,7 +210,7 @@ import {
209
210
  wrapWithPersistentLayers,
210
211
  writeCustomTemplatesToFrontmatter,
211
212
  writeCustomThemesToFrontmatter
212
- } from "../chunk-L7IIFWWW.js";
213
+ } from "../chunk-QLN6ILHM.js";
213
214
  import {
214
215
  ASCII_DIAGRAM_FENCE_LANGS,
215
216
  ASCII_TIMELINE_FENCE_LANGS,
@@ -233,6 +234,7 @@ import {
233
234
  parseTree,
234
235
  parseWrappedFlowTimeline
235
236
  } from "../chunk-A5QJJZ5S.js";
237
+ import "../chunk-SVN7T6BK.js";
236
238
  import {
237
239
  PATH_SHAPE_KINDS,
238
240
  anchorPoint,
@@ -266,7 +268,7 @@ import {
266
268
  } from "../chunk-PFH3WV6J.js";
267
269
  import "../chunk-JSGIWW35.js";
268
270
  import "../chunk-L7QZORLB.js";
269
- import "../chunk-PGWYC3S2.js";
271
+ import "../chunk-Y4OZ5DSG.js";
270
272
  import {
271
273
  CONTAINER_TEMPLATES,
272
274
  TABLE_FED_TEMPLATES,
@@ -274,7 +276,7 @@ import {
274
276
  resolveTemplateName
275
277
  } from "../chunk-WSFXV5BT.js";
276
278
  import "../chunk-Q6ELOAOQ.js";
277
- import "../chunk-7N4G32LG.js";
279
+ import "../chunk-CZ7AUSLI.js";
278
280
  import "../chunk-4VOD55SX.js";
279
281
  import "../chunk-4OQFLZ6G.js";
280
282
  import "../chunk-GHOPHGOK.js";
@@ -1,4 +1,4 @@
1
- import { bw as Theme } from '../Doc-CXx1WL8G.js';
1
+ import { bw as Theme } from '../Doc-B6TYHYGc.js';
2
2
  import '../types-C6VvDDL2.js';
3
3
 
4
4
  /**
@@ -1,6 +1,6 @@
1
1
  import { E as ExtractedElement } from '../contentExtractor-BNfVJV2U.js';
2
2
  export { C as ComparisonData, D as DateData, a as DefinitionData, b as ExtractionOptions, c as ExtractionResult, d as ExtractionType, F as FactData, I as ImpactLineData, L as ListData, Q as QuoteData, S as StatData, e as extractContent, s as stripMarkdown } from '../contentExtractor-BNfVJV2U.js';
3
- import { r as ColorScheme, A as AccentImage, bq as TemplateBlock } from '../Doc-CXx1WL8G.js';
3
+ import { r as ColorScheme, A as AccentImage, bq as TemplateBlock } from '../Doc-B6TYHYGc.js';
4
4
  import '../types-C6VvDDL2.js';
5
5
 
6
6
  /**
@@ -1,5 +1,5 @@
1
- import { a as IconEntry } from '../inlineIconMarker-CiE8Hlvz.js';
2
- export { I as ICONS, b as IconFamily, c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from '../inlineIconMarker-CiE8Hlvz.js';
1
+ import { a as IconEntry } from '../inlineIconMarker-BGjv-W4j.js';
2
+ export { I as ICONS, b as IconFamily, c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from '../inlineIconMarker-BGjv-W4j.js';
3
3
 
4
4
  /**
5
5
  * Icon Resolver
@@ -12,7 +12,7 @@ import {
12
12
  looksLikeIconToken,
13
13
  resolveIcon,
14
14
  suggestIcons
15
- } from "../chunk-7N4G32LG.js";
15
+ } from "../chunk-CZ7AUSLI.js";
16
16
  export {
17
17
  ICONS,
18
18
  canonicalIconToken,
@@ -1 +1 @@
1
- export { c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from '../inlineIconMarker-CiE8Hlvz.js';
1
+ export { c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from '../inlineIconMarker-BGjv-W4j.js';
@@ -1,8 +1,8 @@
1
- import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-BVLXI-Zd.js';
2
- export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BVLXI-Zd.js';
1
+ import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-CN_3Ysj5.js';
2
+ export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-CN_3Ysj5.js';
3
3
  import { C as ContentContainer } from '../ContentContainer-B2w9sUoL.js';
4
4
  import { V as Version, C as CoalesceOptions, P as PrunePolicy } from '../types-8QjefM9J.js';
5
- import '../Doc-CXx1WL8G.js';
5
+ import '../Doc-B6TYHYGc.js';
6
6
  import '../types-C6VvDDL2.js';
7
7
 
8
8
  /**
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export { B as BoundingBox, C as Coordinates } from './Types-sh2VRxfo.js';
2
- 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 CountUpSpec, x as CreateTemplateContextOptions, y as CustomTemplateDefinition, z as CustomTemplateLayer, D as CustomTemplateValidationError, E as CustomTemplateValidationResult, F as DARK_SURFACE, G as DEFAULT_DOC_FONT, H as DEFAULT_TITLE_FONT, I as DataTableInput, J as DateEventInput, K as DeepPartial, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, Q as Doc, R as DocBlock, S as DocDiagnostic, T as DonutChartInput, U as DrawingBlockInput, V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, X as FRONTMATTER_MOTION_KEY, Y as FactCardInput, Z as FontFamily, _ as FontFamilyKind, $ as FullBleedQuoteInput, a0 as GradientBackgroundConfig, a1 as ImageBackgroundConfig, a2 as ImageLayer, a3 as ImageTreatment, a4 as ImageWithCaptionInput, a5 as LIGHT_SURFACE, a6 as Layer, a7 as LayerRepeat, a8 as LayoutHints, a9 as LeftFeatureInput, aa as LineChartInput, ab as LinearGradient, ac as ListBlockInput, ad as MOTION_PROFILES, ae as MapBlockInput, af as MapLayer, ag as MapMarker, ah as MapTileStyle, ai as MarkerStyle, aj as MediaClip, ak as MediaCrop, al as MediaCut, am as MediaEdits, an as MediaScheduleOptions, ao as MermaidLayer, ap as MotionEntrance, aq as MotionOrigin, ar as MotionProfile, as as MotionProfileName, at as MotionSpec, au as MotionState, av as PAGE_ACCENT_STRATEGIES, aw as PAGE_BACKGROUNDS, ax as PAGE_BACKGROUND_RHYTHMS, ay as PAGE_DESIGN_FAMILIES, az as PAGE_DIVIDERS, aA as PAGE_EMPHASES, aB as PAGE_EYEBROWS, aC as PAGE_HEADING_CASES, aD as PAGE_HEADING_SCALES, aE as PAGE_HEADING_UNDERLINES, aF as PAGE_HERO_STYLES, aG as PAGE_IMAGE_FRAMINGS, aH as PAGE_NUMERAL_STYLES, aI as PAGE_PATTERNS, aJ as PAGE_QUOTE_MARKS, aK as PAGE_SECTION_KINDS, aL as PAGE_SECTION_SPACINGS, aM as PAGE_SHADOWS, aN as PAGE_VARIANTS, aO as PageAccentRotation, aP as PageBackground, aQ as PageDesignFamily, aR as PageEmphasis, aS as PageHeadingTreatment, aT as PageSectionKind, aU as PageSectionOverride, aV as PageTokens, aW as PageVariant, aX as PathLayer, aY as PatternBackgroundConfig, aZ as PersistentLayer, a_ as PersistentLayerConfig, a$ as PersistentLayerTemplate, b0 as PersistentLayerTemplateConfig, b1 as PersistentLayerTemplateType, b2 as PhotoGridInput, b3 as PieChartInput, b4 as PipStyle, b5 as Position, b6 as ProgressIndicatorConfig, b7 as PromotedBodyAnnotation, b8 as PullQuoteInput, b9 as QuoteBlockInput, ba as RawLayersInput, bb as RenderStyle, bc as RightFeatureInput, bd as ScatterChartInput, be as ScheduledClip, bf as SectionHeaderInput, bg as ShapeFilter, bh as ShapeLayer, bi as ShapePattern, bj as SolidBackgroundConfig, bk as StartBlockConfig, bl as StatHighlightInput, bm as SurfaceScheme, bn as THEME_SCHEMA_VERSION, bo as TableLayer, bp as TableLayerStyle, bq as TemplateBlock, br as TemplateContext, bs as TemplateFunction, bt as TemplateRegistry, bu as TextLayer, bv as TextStyle, bw as Theme, bx as ThemeColorPalette, by as ThemeColorScheme, bz as ThemePageStyle, bA as ThemeRegistry, bB as ThemeSchemaVersion, bC as ThemeSeedColors, bD as ThemeStyle, bE as ThemeTypography, bF as TimelineBlockInput, bG as TimelineTemplateEvent, bH as TimelineTemplateLink, bI as TimelineTemplateTrack, bJ as TitleBlockInput, bK as TitleCaptionConfig, bL as TranscriptBlockInput, bM as TreeBlockInput, bN as TreeLayer, bO as TreeLayerItem, bP as TreeLayerStyle, bQ as TreeTemplateItem, bR as TwoColumnInput, bS as VIEWPORT_PRESETS, bT as VideoEmbedLayer, bU as VideoLayer, bV as VideoPipPosition, bW as VideoPipShape, bX as VideoPipSize, bY as VideoPlacement, bZ as VideoPresentation, b_ as VideoPullQuoteInput, b$ as VideoWithCaptionInput, c0 as ViewportConfig, c1 as ViewportOrientation, c2 as ViewportPreset, c3 as VignetteConfig, c4 as applySurface, c5 as calculateDuration, c6 as calculateFontScale, c7 as createTemplateContext, c8 as createTheme, c9 as createThemeRegistry, ca as getAspectRatioString, cb as getBlockAtTime, cc as getCaptionAtTime, cd as getDocPlaybackDuration, ce as getLayoutHints, cf as getSafeTextBounds, cg as getSegmentAtTime, ch as getTwoColumnPositions, ci as getViewport, cj as getViewportOrientation, ck as isCustomTemplateDefinition, cl as isMotionProfileName, cm as isPersistentLayerTemplate, cn as isTemplateBlock, co as layoutScaledFontSize, cp as readFrontmatterMotion, cq as resolveMediaSchedule, cr as resolveMotionForDoc, cs as resolveMotionProfile, ct as scaledFontSize, cu as scheduleMediaClip, cv as validateCustomTemplateDefinition } from './Doc-CXx1WL8G.js';
2
+ 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 CountUpSpec, x as CreateTemplateContextOptions, y as CustomTemplateDefinition, z as CustomTemplateLayer, D as CustomTemplateValidationError, E as CustomTemplateValidationResult, F as DARK_SURFACE, G as DEFAULT_DOC_FONT, H as DEFAULT_TITLE_FONT, I as DataTableInput, J as DateEventInput, K as DeepPartial, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, Q as Doc, R as DocBlock, S as DocDiagnostic, T as DonutChartInput, U as DrawingBlockInput, V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, X as FRONTMATTER_MOTION_KEY, Y as FactCardInput, Z as FontFamily, _ as FontFamilyKind, $ as FullBleedQuoteInput, a0 as GradientBackgroundConfig, a1 as ImageBackgroundConfig, a2 as ImageLayer, a3 as ImageTreatment, a4 as ImageWithCaptionInput, a5 as LIGHT_SURFACE, a6 as Layer, a7 as LayerRepeat, a8 as LayoutHints, a9 as LeftFeatureInput, aa as LineChartInput, ab as LinearGradient, ac as ListBlockInput, ad as MOTION_PROFILES, ae as MapBlockInput, af as MapLayer, ag as MapMarker, ah as MapTileStyle, ai as MarkerStyle, aj as MediaClip, ak as MediaCrop, al as MediaCut, am as MediaEdits, an as MediaScheduleOptions, ao as MermaidLayer, ap as MotionEntrance, aq as MotionOrigin, ar as MotionProfile, as as MotionProfileName, at as MotionSpec, au as MotionState, av as PAGE_ACCENT_STRATEGIES, aw as PAGE_BACKGROUNDS, ax as PAGE_BACKGROUND_RHYTHMS, ay as PAGE_DESIGN_FAMILIES, az as PAGE_DIVIDERS, aA as PAGE_EMPHASES, aB as PAGE_EYEBROWS, aC as PAGE_HEADING_CASES, aD as PAGE_HEADING_SCALES, aE as PAGE_HEADING_UNDERLINES, aF as PAGE_HERO_STYLES, aG as PAGE_IMAGE_FRAMINGS, aH as PAGE_NUMERAL_STYLES, aI as PAGE_PATTERNS, aJ as PAGE_QUOTE_MARKS, aK as PAGE_SECTION_KINDS, aL as PAGE_SECTION_SPACINGS, aM as PAGE_SHADOWS, aN as PAGE_VARIANTS, aO as PageAccentRotation, aP as PageBackground, aQ as PageDesignFamily, aR as PageEmphasis, aS as PageHeadingTreatment, aT as PageSectionKind, aU as PageSectionOverride, aV as PageTokens, aW as PageVariant, aX as PathLayer, aY as PatternBackgroundConfig, aZ as PersistentLayer, a_ as PersistentLayerConfig, a$ as PersistentLayerTemplate, b0 as PersistentLayerTemplateConfig, b1 as PersistentLayerTemplateType, b2 as PhotoGridInput, b3 as PieChartInput, b4 as PipStyle, b5 as Position, b6 as ProgressIndicatorConfig, b7 as PromotedBodyAnnotation, b8 as PullQuoteInput, b9 as QuoteBlockInput, ba as RawLayersInput, bb as RenderStyle, bc as RightFeatureInput, bd as ScatterChartInput, be as ScheduledClip, bf as SectionHeaderInput, bg as ShapeFilter, bh as ShapeLayer, bi as ShapePattern, bj as SolidBackgroundConfig, bk as StartBlockConfig, bl as StatHighlightInput, bm as SurfaceScheme, bn as THEME_SCHEMA_VERSION, bo as TableLayer, bp as TableLayerStyle, bq as TemplateBlock, br as TemplateContext, bs as TemplateFunction, bt as TemplateRegistry, bu as TextLayer, bv as TextStyle, bw as Theme, bx as ThemeColorPalette, by as ThemeColorScheme, bz as ThemePageStyle, bA as ThemeRegistry, bB as ThemeSchemaVersion, bC as ThemeSeedColors, bD as ThemeStyle, bE as ThemeTypography, bF as TimelineBlockInput, bG as TimelineTemplateEvent, bH as TimelineTemplateLink, bI as TimelineTemplateTrack, bJ as TitleBlockInput, bK as TitleCaptionConfig, bL as TranscriptBlockInput, bM as TreeBlockInput, bN as TreeLayer, bO as TreeLayerItem, bP as TreeLayerStyle, bQ as TreeTemplateItem, bR as TwoColumnInput, bS as VIEWPORT_PRESETS, bT as VideoEmbedLayer, bU as VideoLayer, bV as VideoPipPosition, bW as VideoPipShape, bX as VideoPipSize, bY as VideoPlacement, bZ as VideoPresentation, b_ as VideoPullQuoteInput, b$ as VideoWithCaptionInput, c0 as ViewportConfig, c1 as ViewportOrientation, c2 as ViewportPreset, c3 as VignetteConfig, c4 as applySurface, c5 as calculateDuration, c6 as calculateFontScale, c7 as createTemplateContext, c8 as createTheme, c9 as createThemeRegistry, ca as getAspectRatioString, cb as getBlockAtTime, cc as getCaptionAtTime, cd as getDocPlaybackDuration, ce as getLayoutHints, cf as getSafeTextBounds, cg as getSegmentAtTime, ch as getTwoColumnPositions, ci as getViewport, cj as getViewportOrientation, ck as isCustomTemplateDefinition, cl as isMotionProfileName, cm as isPersistentLayerTemplate, cn as isTemplateBlock, co as layoutScaledFontSize, cp as readFrontmatterMotion, cq as resolveMediaSchedule, cr as resolveMotionForDoc, cs as resolveMotionProfile, ct as scaledFontSize, cu as scheduleMediaClip, cv as validateCustomTemplateDefinition } from './Doc-B6TYHYGc.js';
3
3
  export { AVAILABLE_FONT_STACKS, CompileOptions, ContrastPreset, DocSchemaIssue, FONT_FALLBACKS, FontStack, MermaidThemeVariables, PipStyleVars, STARTER_THEME, ValidationError, ValidationResult, accentToColorScheme, assertDocSchema, assertTheme, buildGoogleFontsUrl, buildMermaidThemeVariables, compileTheme, contrastRatio, defaultPageStyle, deriveColorPalette, deriveScale, fontStack, getFontStack, guessFontFallback, hexHueDegrees, isHex, matchFontFamily, oklchDarken, oklchLighten, oklchSetChroma, parseTheme, pickContrastingText, pipStyleVars, relativeLuminance, resolveFontFamily, serializeTheme, validateDocSchema, validateTheme, withAlpha } from './schemas/index.js';
4
4
  export { D as DEFAULT_MARKDOWN_SAFETY_LIMITS, a as DEFAULT_TRANSITION_DURATION_SECONDS, H as HeadingAttributes, b as HeadingTemplateAnnotation, c as HtmlComment, d as HtmlElement, e as HtmlNode, f as HtmlText, M as MarkdownBlockNode, g as MarkdownBlockquote, h as MarkdownBreak, i as MarkdownCodeBlock, j as MarkdownContainerDirective, k as MarkdownDefinitionDescription, l as MarkdownDefinitionList, m as MarkdownDefinitionTerm, n as MarkdownDocument, o as MarkdownEmphasis, p as MarkdownFootnoteDefinition, q as MarkdownFootnoteReference, r as MarkdownHeading, s as MarkdownHtmlBlock, t as MarkdownImage, u as MarkdownImageReference, v as MarkdownInlineCode, w as MarkdownInlineHtml, x as MarkdownInlineIcon, y as MarkdownInlineMath, z as MarkdownInlineNode, A as MarkdownLeafDirective, B as MarkdownLimitError, C as MarkdownLink, E as MarkdownLinkDefinition, F as MarkdownLinkReference, G as MarkdownList, I as MarkdownListItem, J as MarkdownMathBlock, K as MarkdownMention, L as MarkdownNode, N as MarkdownParagraph, O as MarkdownPoint, P as MarkdownSafetyLimits, Q as MarkdownSourcePosition, R as MarkdownStrikethrough, S as MarkdownStrong, T as MarkdownSubscript, U as MarkdownSuperscript, V as MarkdownTable, W as MarkdownTableCell, X as MarkdownTableRow, Y as MarkdownText, Z as MarkdownTextDirective, _ as MarkdownThematicBreak, $ as ParseOptions, a0 as StringifyOptions, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a6 as assertMarkdownDocumentWithinLimits, a7 as assertMarkdownSourceWithinLimits, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ac as resolveMarkdownSafetyLimits, ad as resolveTransitionDuration } from './types-C6VvDDL2.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-Bnq_x-db.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-_46saKYO.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-BVLXI-Zd.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from './ImageEditDoc-CN_3Ysj5.js';
8
8
  export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, AccentLayout, AsciiDiagram, AsciiDiagramDetection, AsciiDiagramEdge, AsciiDiagramNode, AsciiTimeline, AsciiTimelineDetection, AsciiTimelineEvent, AsciiTimelineLink, AsciiTimelineMarker, AsciiTimelineSide, AsciiTimelineStats, AsciiTimelineStyle, AsciiTimelineTrack, AudioSegmentTiming, BASE_INPUT_DESCRIPTORS, BLOCK_MEDIA_LAYOUT_POLICIES, BUILTIN_DASHBOARD_LAYOUTS, BlockLayerMaterialization, BlockMediaLayoutPolicy, BuildPreviewDocOptions, BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, ClipBox, ConnectorAnchor, ConnectorPort, ConnectorRouting, ConnectorSnapPoint, CoverBlockInput, CoverSlidePlayback, CoverSlideSettings, CoverSlideTemplate, CoverSlideTemplateOption, DASHBOARD_AUTO_LAYOUT_ID, DASHBOARD_FRONTMATTER_KEYS, DASHBOARD_STYLES, DASHBOARD_STYLE_IDS, DASHBOARD_ZOOM_LEVELS, DATA_FILE_EXTENSIONS, DEFAULT_COVER_SLIDE_SETTINGS, DEFAULT_DASHBOARD_SETTINGS, DEFAULT_DASHBOARD_STYLE, DEFAULT_LAYOUT, DEFAULT_WORD_STAGGER, DIAGRAM_LABEL_HORIZONTAL_PADDING, DIAGRAM_LABEL_LINE_HEIGHT, DIAGRAM_LABEL_MIN_FONT_SIZE, DIAGRAM_LABEL_VERTICAL_PADDING, DashboardCell, DashboardCellChrome, DashboardCellDefinition, DashboardCellFrame, DashboardDiagnostic, DashboardLayoutDefinition, DashboardLayoutSummary, DashboardLayoutValidationError, DashboardLayoutValidationResult, DashboardMaterialization, DashboardRectPct, DashboardSettings, DashboardSettingsOverrides, DashboardStyleId, DashboardStyleSummary, DashboardTitle, DashboardTitleSlotDefinition, DashboardZoomCandidate, DashboardZoomLevel, DashboardZoomMode, DataFenceParseResult, DataSourceReadOptions, DataSourceReader, DataSourceStats, DataSourceTable, DeriveTemplateInputsOptions, DetectAsciiTimelineOptions, DiagramEdge, DiagramLabelFit, DiagramLayout, DiagramLayoutOptions, DiagramNodePosition, DrawingConnector, DrawingLayout, DrawingLayoutOptions, DrawingShape, DrawingShapeKind, EmbeddedVideo, ExpandDocBlocksOptions, ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, FirstImage, Flashcard, FlashcardChoice, FlashcardDeck, FlashcardDiagnostic, FlashcardDiagnosticCode, FlashcardFace, FlashcardKind, FlashcardSourceMode, GEOMETRY_BOUND_TEMPLATES, HostedVideo, InputCoercion, LayerMaterializationDiagnostic, LayerMaterializationFailureMode, LayerMaterializationSource, LayoutLayerDefaults, LayoutLayersResult, MAX_COVER_SLIDE_DURATION_SECONDS, MarkdownToDocOptions, MarkdownValidationResult, MaterializeBlockLayersOptions, MaterializeDashboardOptions, MaterializeFlashcardsOptions, NarrationResolution, NativeMediaLayout, NoMediaLayout, PAGE_BASE_CSS, PATH_SHAPE_KINDS, PageSectionContext, PageSectionDraft, ParsedStat, RenderAsciiDiagramOptions, RenderAsciiTimelineOptions, RenderTreeOptions, RepairResult, ResolveDataReferencesOptions, ResolvedDashboardCell, ResolvedDataReferences, ResolvedPageBlock, RichListItem, RuntimeTemplateRegistry, SHAPE_NAMES, SectionExtractor, SupplementalMediaLayoutVariant, SupplementalMediaShape, SupplementalMediaVariantMatrix, TABLE_FED_TEMPLATES, TEMPLATE_AUTHORING_METADATA, TEMPLATE_INPUT_DESCRIPTORS, TEMPLATE_METADATA, TREE_FENCE_LANGS, TemplateAuthoringMetadata, TemplateAuthoringRole, TemplateBodyPolicy, TemplateInputDescriptor, TemplateMediaOwnership, TemplateMetadata, TemplateParamFinding, Tree, TreeDetection, TreeItem, TreeNode, UnconsumedMediaBehavior, ValidateOptions, accentForViewport, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, canvasToAsciiCell, chooseDashboardLayout, clipEndpoints, clipPoint, coerceTemplateParams, comparisonBar, composeDashboardLayers, computeDiagramLayout, computeDrawingLayout, computeLayoutLayers, connectorPath, contentBlock, countBlocks, countUpSpecFor, coverBlock, createAccentLayers, cssFilterForTreatment, dashboardCanvasFill, dashboardCellAccent, dataSidecarPrefix, dataTable, dateEvent, definitionCard, deriveTemplateInputs, desiredCellZoom, detectAsciiDiagram, detectAsciiTimeline, detectTree, diagramBlock, docToMarkdown, documentTitleFromFileName, drawingBlock, expandCoverBlock, expandDocBlocks, expandPersistentLayers, extractBlockquoteText, extractBodyPlainText, extractEmbeddedVideos, extractFirstEmbeddedVideo, extractFirstImage, extractHostedVideos, extractImages, extractListItems, extractRichListItems, extractTableData, extractTableFromContents, factCard, fallbackBlockLayers, findFirstList, findFirstTable, fitBigTextSize, fitDiagramLabel, flattenBlocks, flattenRenderableBlocks, formatCountUp, formatCountValue, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getMotionProfile, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, motionDelay, motionEntrance, motionStateTransform, nearestSnapPoint, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseStatNumber, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveFlashcardMarker, resolveLayoutCells, resolvePageBlock, resolvePersistentLayers, resolveTemplateName, resolveThemeForDoc, rightFeature, scaleAnimationDuration, scoreTextSimilarity, sectionExtractors, sectionHeader, shapePath, shouldUseShadow, snapEndpoints, snapPoints, statHighlight, stripBlockBackdropLayer, stripsBlockBackdrop, templateRegistry, themeWantsAmbientMotion, themedEntrance, themedFontSize, themedImageTreatment, themedScrim, themedSurfaceGradient, timelineBlock, titleBlock, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter } from './doc/index.js';
9
- export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, c as PageSection, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from './materializePageSection-BX1uOAlN.js';
9
+ export { M as MaterializePageSectionOptions, a as MaterializePageSectionsOptions, P as PageMedia, b as PageRichText, c as PageSection, d as PageSectionDiagnostic, e as PageSectionItem, f as PageSectionMaterialization, g as PageSectionSource, h as PageSpatialKind, i as PageTransformHints, m as materializePageSection, j as materializePageSections, r as resolvePageStyle } from './materializePageSection-IYXU3tDN.js';
10
10
  export { calculateBearing, decodeGeohash, destinationPoint, encodeGeohash, geohashOverlapsBounds, geohashToHierarchicalPath, getGeohash4Neighbors, getGeohashPath, getGeohashPrefix, getNeighbors, haversineDistance, interpolateGreatCircle, sampleGreatCircle } from './spatial/index.js';
11
11
  export { LocalForageAdapter, LocalForageAdapterOptions, LocalStorageAdapter, MemoryStorageAdapter, ScopedContentContainer, StorageAdapter, createMediaProviderFromContainer, scopeContainer } from './storage/index.js';
12
12
  export { C as ContentContainer, a as ContentEntry, M as MemoryContentContainer, f as findDocumentPath } from './ContentContainer-B2w9sUoL.js';
@@ -16,12 +16,12 @@ export { BuildCaptionTrackOptions, CaptionSegmentSource, DEFAULT_WORDS_PER_SECON
16
16
  export { SeededRandom, hashString } from './random/index.js';
17
17
  export { C as ComparisonData, D as DateData, a as DefinitionData, E as ExtractedElement, b as ExtractionOptions, c as ExtractionResult, d as ExtractionType, F as FactData, I as ImpactLineData, L as ListData, Q as QuoteData, S as StatData, e as extractContent, s as stripMarkdown } from './contentExtractor-BNfVJV2U.js';
18
18
  export { AffinityAssignment, AffinityMatchResult, AffinityTarget, ClipSelectionOptions, ClipSource, KeywordExtractionOptions, MapOptions, SelectedClip, TranscriptSegmentSource, calculateKeywordAffinity, extractKeywords, mapElementToBlock, matchByKeywordAffinity, selectSafeZoneClips, selectTranscriptClips } from './generate/index.js';
19
- export { AnalyzedBlock, BlockImage, DEFAULT_TRANSFORM_STYLE_ID, NarratedSegmentInput, NarratedSegmentResult, NarratedSegmentTransformOptions, NarratedSegmentVideo, TransformImage, TransformOptions, TransformResult, TransformStyleConfig, TransformStyleId, TransformStyleInput, TransformStyleRegistry, TransformStyleSummary, allocateTiming, analyzeBlocks, applyTransform, createTransformStyleRegistry, extractDocImages, getTransformStyleIds, getTransformStyleSummaries, resolveTransformStyle, transformNarratedSegment } from './transform/index.js';
19
+ export { AnalyzedBlock, BlockImage, DEFAULT_TRANSFORM_STYLE_ID, DYNAMIC_PRESENTATION_STYLE, NarratedSegmentInput, NarratedSegmentResult, NarratedSegmentTransformOptions, NarratedSegmentVideo, PRESENTATION_HINTS_KEY, PRESENTATION_KEY, PRESENTATION_LAYOUTS, PRESENTATION_LIMITS, PresentationBeat, PresentationBlockHint, PresentationHints, PresentationLayout, PresentationPlan, TransformImage, TransformOptions, TransformResult, TransformStyleConfig, TransformStyleId, TransformStyleInput, TransformStyleRegistry, TransformStyleSummary, allocateTiming, analyzeBlocks, applySavedPresentation, applyTransform, compilePresentationPlan, createPresentationPlan, createTransformStyleRegistry, defaultPresentationHints, extractDocImages, getTransformStyleIds, getTransformStyleSummaries, parsePresentationHints, parsePresentationPlan, presentationSections, resolveTransformStyle, serializePresentationHints, serializePresentationPlan, transformNarratedSegment, usesDynamicPresentation } from './transform/index.js';
20
20
  export { C as CoalesceOptions, P as PrunePolicy, R as RevertFailureReason, a as RevertOptions, b as RevertResult, S as SaveVersionOptions, c as SaveVersionResult, V as Version } from './types-8QjefM9J.js';
21
21
  export { DATA_BACKUP_PREFIX, DocumentVersionManager, DocumentVersionManagerOptions, VERSIONS_PREFIX, VERSION_TIMESTAMP_PATTERN, buildDataBackupPath, buildVersionPath, coalesceVersions, formatVersionTimestamp, getDocBasename, listVersions, parseVersionPath, parseVersionTimestamp, pruneVersions, readVersion, revertToVersion, saveVersion } from './versions/index.js';
22
22
  export { BuildJsonFormTokensOptions, ControlKind, InferSchemaOptions, JsonFormValidationError, JsonFormValidator, SquisqAnnotatedSchema, SquisqHints, SquisqWhen, appendPointer, arrayItemKind, buildJsonFormTokens, chooseControl, escapePointerSegment, evaluateWhen, getByPointer, inferSchema, isSafeConditionRegex, pointerSegments, primaryType, resolveFlag, resolveJsonFormTheme, resolveRef, setByPointer, toPointer } from './jsonForm/index.js';
23
23
  export { AnimatedImageFormat, AnimatedImageInfo, IMAGE_EDIT_ASSETS_PREFIX, IMAGE_EDIT_DEFAULT_BASENAME, IMAGE_EDIT_STATE_FILENAME, IMAGE_EDIT_VERSIONS_PREFIX, ImageEditExportFormat, ImageEditExportOptions, ImageEditVersionManager, ImageEditVersionManagerOptions, RevertImageEditFailureReason, RevertImageEditOptions, RevertImageEditResult, SaveImageEditVersionOptions, SaveImageEditVersionResult, addLayer, buildImageEditVersionPath, buildSvgString, coalesceImageEditVersions, createEmptyImageEditDoc, exportImageEditDoc, inspectAnimatedImage, listImageEditVersions, mayBeAnimatedImage, parseImageEditVersionPath, pruneImageEditVersions, readImageEditDoc, readImageEditVersion, readImageEditVersionText, removeLayer, reorderLayer, revertToImageEditVersion, saveImageEditVersion, setCanvas, touch, updateLayer, writeImageEditDoc } from './imageEdit/index.js';
24
- export { I as ICONS, a as IconEntry, b as IconFamily, c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from './inlineIconMarker-CiE8Hlvz.js';
24
+ export { I as ICONS, a as IconEntry, b as IconFamily, c as IconTextRun, h as hasIconMarker, i as iconClass, d as iconMarker, s as splitIconMarkers, e as stripIconMarkers } from './inlineIconMarker-BGjv-W4j.js';
25
25
  export { IconSuggestion, canonicalIconToken, iconGlyph, looksLikeIconToken, resolveIcon, suggestIcons } from './icons/index.js';
26
26
  export { BlockContentProfile, RecommendationResult, profileBlockContents, recommendTemplatesForBlock } from './recommend/index.js';
27
27
  export { AdvanceCoverage, AlignConfig, AlignInput, BandpassState, BuildAdvanceTimingOptions, BuildNarrationTimingOptions, BuildScriptOptions, DEFAULT_ALIGN_CONFIG, DEFAULT_FEATURE_CONFIG, DEFAULT_NUCLEI_CONFIG, DEFAULT_PACING_CONFIG, DEFAULT_VAD_CONFIG, EMPTY_ADVANCE_LOG, FeatureConfig, FeatureState, FrameFeatures, NarrationAlignment, NarrationBlockRange, NarrationScript, NarrationSessionConfig, NarrationSessionState, NarrationTimingBlock, NarrationTimingGenerator, NarrationTimingJsonV3, NarrationTimingMethod, NarrationTrace, NucleiConfig, NucleiState, PacingConfig, PacingState, PacingTick, ScriptBlockRange, ScriptToken, SlideAdvance, SlideAdvanceLog, TraceSample, VadConfig, VadState, 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 } from './narration/index.js';