@bendyline/squisq 2.13.8 → 2.13.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  parseNarrationTimingJson
3
- } from "./chunk-FTN6SGW5.js";
3
+ } from "./chunk-HKHOFTGM.js";
4
4
  import {
5
5
  applySavedPresentation
6
- } from "./chunk-CS3MAZZX.js";
6
+ } from "./chunk-KRMAEYNM.js";
7
7
  import {
8
8
  SHAPE_NAMES,
9
9
  buildChartData,
@@ -31,7 +31,7 @@ import {
31
31
  templateRegistry,
32
32
  writeCustomTemplatesToFrontmatter,
33
33
  writeCustomThemesToFrontmatter
34
- } from "./chunk-5C6ZO5FV.js";
34
+ } from "./chunk-LWNT6M4N.js";
35
35
  import {
36
36
  ASCII_TREE_VOCAB,
37
37
  ASCII_VOCAB,
@@ -54,7 +54,7 @@ import {
54
54
  toCells,
55
55
  toGrid,
56
56
  traceBoxes
57
- } from "./chunk-HGXZMB7K.js";
57
+ } from "./chunk-DIY3NBIS.js";
58
58
  import {
59
59
  iconMarker
60
60
  } from "./chunk-7ZAAICW4.js";
@@ -967,13 +967,23 @@ function getTemplateDefaults(templateName, headingText, block) {
967
967
  return {};
968
968
  }
969
969
  }
970
- function blockToSlide(block, index, knownTemplates, documentTitle) {
971
- const headingText = block.sourceHeading ? extractPlainText(block.sourceHeading) : block.title || documentTitle || "";
970
+ function slideTemplate(block, knownTemplates) {
972
971
  const implicitSectionHeader = block.template === "sectionHeader" && block.autoTemplate !== true && !!block.sourceHeading && !block.sourceHeading.templateAnnotation?.template;
973
972
  const requestedTemplate = implicitSectionHeader ? "content" : block.template ?? "content";
974
- const isCustomTemplate = knownTemplates?.has(requestedTemplate) ?? false;
975
- const recognized = hasTemplate(requestedTemplate) || isCustomTemplate;
976
- const template = recognized ? requestedTemplate : "sectionHeader";
973
+ const recognized = hasTemplate(requestedTemplate) || !!knownTemplates?.has(requestedTemplate);
974
+ return recognized ? requestedTemplate : "sectionHeader";
975
+ }
976
+ function previewBlockTemplate(block, doc) {
977
+ const template = slideTemplate(
978
+ block,
979
+ doc?.customTemplates && new Set(doc.customTemplates.map((custom) => custom.name))
980
+ );
981
+ return template === "sectionHeader" && !block.summaryMode && extractBlockImages(block.contents).length > 0 ? "imageWithCaption" : template;
982
+ }
983
+ function blockToSlide(block, index, knownTemplates, documentTitle) {
984
+ const headingText = block.sourceHeading ? extractPlainText(block.sourceHeading) : block.title || documentTitle || "";
985
+ const template = slideTemplate(block, knownTemplates);
986
+ const isCustomTemplate = knownTemplates?.has(template) ?? false;
977
987
  const defaults = getTemplateDefaults(template, headingText, block);
978
988
  const templateOverrides = omitStringBlockMeta(block.templateOverrides);
979
989
  const coercedTemplateOverrides = templateOverrides ? coerceTemplateParams(template, templateOverrides).input : void 0;
@@ -4495,6 +4505,11 @@ async function applyNarrationTiming(doc, container) {
4495
4505
  const time = timeMap ? timeMap.snapSourceToPlayed(event.time) : event.time;
4496
4506
  return time >= 0 && time <= playedDuration ? [{ ...event, time: clip.startAt + time }] : [];
4497
4507
  }),
4508
+ // A slide shown inside a trimmed span appears where playback resumes.
4509
+ slides: timing.slides?.flatMap((mark) => {
4510
+ const time = timeMap ? timeMap.snapSourceToPlayed(mark.time) : mark.time;
4511
+ return time >= 0 && time <= playedDuration ? [{ charOffset: mark.charOffset, time: clip.startAt + time }] : [];
4512
+ }),
4498
4513
  bookmarks: timing.bookmarks.flatMap((bookmark) => {
4499
4514
  const time = timeMap ? timeMap.sourceToPlayed(bookmark.time) : bookmark.time;
4500
4515
  return time !== null && time >= 0 && time <= playedDuration ? [{ ...bookmark, time: clip.startAt + time }] : [];
@@ -5282,12 +5297,13 @@ function renderAsciiDiagram(diagram2, options = {}) {
5282
5297
  const vocab = (options.style ?? diagram2.style) === "ascii" ? ASCII_VOCAB : UNICODE_VOCAB;
5283
5298
  if (diagram2.nodes.length === 0) return "";
5284
5299
  const placed = layoutNodes(diagram2.nodes, diagram2.edges);
5300
+ const routes = planRoutesWithRoom(diagram2.edges, placed);
5285
5301
  const canvas = new Canvas();
5286
5302
  const drawOrder = [...placed.values()].sort(
5287
5303
  (a, b) => a.depth - b.depth || a.rect.r0 - b.rect.r0 || a.rect.c0 - b.rect.c0
5288
5304
  );
5289
5305
  for (const p of drawOrder) drawBox(canvas, p, vocab);
5290
- drawEdges(canvas, diagram2.edges, placed, vocab);
5306
+ drawEdges(canvas, routes, placed, vocab);
5291
5307
  return canvas.emit();
5292
5308
  }
5293
5309
  function computeSideDegrees(nodes, edges) {
@@ -5527,7 +5543,40 @@ function drawBox(canvas, p, vocab) {
5527
5543
  });
5528
5544
  }
5529
5545
  }
5530
- function drawEdges(canvas, edges, placed, vocab) {
5546
+ var OPPOSITE_SIDE = {
5547
+ top: "bottom",
5548
+ bottom: "top",
5549
+ left: "right",
5550
+ right: "left"
5551
+ };
5552
+ function planRoutesWithRoom(edges, placed) {
5553
+ const maxInserts = 4 * edges.length + 8;
5554
+ for (let inserted = 0; ; inserted++) {
5555
+ const { routes, room } = planRoutes(edges, placed);
5556
+ if (!room || inserted >= maxInserts) return routes;
5557
+ insertLine(placed, room);
5558
+ }
5559
+ }
5560
+ function insertLine(placed, { axis, after }) {
5561
+ const bump = (v) => v > after ? v + 1 : v;
5562
+ for (const p of placed.values()) {
5563
+ const r = p.rect;
5564
+ p.rect = axis === "row" ? { ...r, r0: bump(r.r0), r1: bump(r.r1) } : { ...r, c0: bump(r.c0), c1: bump(r.c1) };
5565
+ }
5566
+ }
5567
+ function roomBeside(side, rect) {
5568
+ switch (side) {
5569
+ case "bottom":
5570
+ return { axis: "row", after: rect.r1 };
5571
+ case "top":
5572
+ return { axis: "row", after: rect.r0 - 1 };
5573
+ case "right":
5574
+ return { axis: "col", after: rect.c1 };
5575
+ case "left":
5576
+ return { axis: "col", after: rect.c0 - 1 };
5577
+ }
5578
+ }
5579
+ function planRoutes(edges, placed) {
5531
5580
  const sorted = [...edges].sort(
5532
5581
  (a, b) => a.source.localeCompare(b.source) || a.target.localeCompare(b.target) || (a.label ?? "").localeCompare(b.label ?? "")
5533
5582
  );
@@ -5561,6 +5610,20 @@ function drawEdges(canvas, edges, placed, vocab) {
5561
5610
  });
5562
5611
  }
5563
5612
  const attachment = assignAttachments(plans, placed);
5613
+ const straight = resolveStraightRuns(plans, placed, attachment);
5614
+ const jogs = assignJogStaggers(plans, placed, attachment, straight);
5615
+ let room = jogs.room;
5616
+ plans.forEach((plan, i) => {
5617
+ if (room || routeAxis(plan) === null) return;
5618
+ const s = placed.get(plan.sourceId).rect;
5619
+ const t = placed.get(plan.targetId).rect;
5620
+ const lane = jogLane(plan, s, t);
5621
+ const needed = straight[i] ? plan.biDir ? 2 : 1 : 2;
5622
+ if (freeLines(lane) < needed) room = roomBeside(plan.exitSide, s);
5623
+ });
5624
+ return { routes: { plans, attachment, straight, staggers: jogs.staggers }, room };
5625
+ }
5626
+ function drawEdges(canvas, { plans, attachment, straight, staggers }, placed, vocab) {
5564
5627
  const sideLabelRequests = [];
5565
5628
  plans.forEach(
5566
5629
  (plan, i) => routeEdge(
@@ -5569,6 +5632,7 @@ function drawEdges(canvas, edges, placed, vocab) {
5569
5632
  i,
5570
5633
  placed,
5571
5634
  attachment,
5635
+ { straight: straight[i], stagger: staggers[i] },
5572
5636
  vocab,
5573
5637
  (candidates, label) => sideLabelRequests.push({ candidates, label })
5574
5638
  )
@@ -5645,12 +5709,14 @@ function assignAttachments(plans, placed) {
5645
5709
  for (const [sideKey, list2] of [...bySide.entries()].sort((a, b) => a[0].localeCompare(b[0]))) {
5646
5710
  const [nodeId, side] = sideKey.split("|");
5647
5711
  const node = placed.get(nodeId);
5712
+ const horizontal = side === "top" || side === "bottom";
5648
5713
  list2.sort((a, b) => {
5649
5714
  const ra = placed.get(a.otherId).rect;
5650
5715
  const rb = placed.get(b.otherId).rect;
5651
- return ra.r0 - rb.r0 || ra.c0 - rb.c0 || a.otherId.localeCompare(b.otherId);
5716
+ const along = horizontal ? ra.c0 + ra.c1 - (rb.c0 + rb.c1) : ra.r0 + ra.r1 - (rb.r0 + rb.r1);
5717
+ const across = horizontal ? ra.r0 - rb.r0 : ra.c0 - rb.c0;
5718
+ return along || across || a.otherId.localeCompare(b.otherId);
5652
5719
  });
5653
- const horizontal = side === "top" || side === "bottom";
5654
5720
  const from = horizontal ? node.rect.c0 + 1 : node.rect.r0 + 1;
5655
5721
  const to = horizontal ? node.rect.c1 - 1 : node.rect.r1 - 1;
5656
5722
  const inner = Math.max(1, to - from + 1);
@@ -5685,15 +5751,128 @@ function assignAttachments(plans, placed) {
5685
5751
  }
5686
5752
  return result;
5687
5753
  }
5688
- function routeEdge(canvas, plan, planIdx, placed, attachment, vocab, deferSideLabel) {
5754
+ function routeAxis(plan) {
5755
+ if (plan.enterSide !== OPPOSITE_SIDE[plan.exitSide]) return null;
5756
+ return plan.exitSide === "bottom" || plan.exitSide === "top" ? "vertical" : "horizontal";
5757
+ }
5758
+ function jogLane(plan, s, t) {
5759
+ const [exitLine, enterLine] = plan.exitSide === "bottom" ? [s.r1, t.r0] : plan.exitSide === "top" ? [s.r0, t.r1] : plan.exitSide === "right" ? [s.c1, t.c0] : [s.c0, t.c1];
5760
+ const dir = plan.exitSide === "bottom" || plan.exitSide === "right" ? 1 : -1;
5761
+ return {
5762
+ dir,
5763
+ mid: Math.floor((exitLine + enterLine) / 2),
5764
+ firstFree: exitLine + dir,
5765
+ lastFree: enterLine - dir
5766
+ };
5767
+ }
5768
+ function freeLines(lane) {
5769
+ return (lane.lastFree - lane.firstFree) * lane.dir + 1;
5770
+ }
5771
+ function straightRunFits(s, t, exitPos, vertical) {
5772
+ return vertical ? exitPos >= t.c0 + 1 && exitPos <= t.c1 - 1 && exitPos >= s.c0 + 1 && exitPos <= s.c1 - 1 : exitPos >= t.r0 + 1 && exitPos <= t.r1 - 1 && exitPos >= s.r0 + 1 && exitPos <= s.r1 - 1;
5773
+ }
5774
+ function resolveStraightRuns(plans, placed, attachment) {
5775
+ const rectOf = (id) => placed.get(id).rect;
5776
+ const slot = (i, end) => attachment.get(`${i}:${end}`);
5777
+ const axes = plans.map(routeAxis);
5778
+ const straight = plans.map(
5779
+ (plan, i) => axes[i] !== null && straightRunFits(
5780
+ rectOf(plan.sourceId),
5781
+ rectOf(plan.targetId),
5782
+ slot(i, "exit").pos,
5783
+ axes[i] === "vertical"
5784
+ )
5785
+ );
5786
+ const cellOn = (j, side) => {
5787
+ const plan = plans[j];
5788
+ if (axes[j] === null) return null;
5789
+ if (`${plan.sourceId}|${plan.exitSide}` === side) return slot(j, "exit").pos;
5790
+ if (`${plan.targetId}|${plan.enterSide}` !== side) return null;
5791
+ const t = rectOf(plan.targetId);
5792
+ const lane = jogLane(plan, rectOf(plan.sourceId), t);
5793
+ if (!straight[j] && freeLines(lane) >= 2) return slot(j, "enter").pos;
5794
+ return axes[j] === "vertical" ? clamp2(slot(j, "exit").pos, t.c0 + 1, t.c1 - 1) : clamp2(slot(j, "exit").pos, t.r0 + 1, t.r1 - 1);
5795
+ };
5796
+ const clashes = (side, cell, self) => plans.some((_, j) => {
5797
+ const other = j === self ? null : cellOn(j, side);
5798
+ return other !== null && Math.abs(other - cell) <= 1;
5799
+ });
5800
+ for (let changed = true; changed; ) {
5801
+ changed = false;
5802
+ plans.forEach((plan, i) => {
5803
+ if (!straight[i]) return;
5804
+ const targetSide = `${plan.targetId}|${plan.enterSide}`;
5805
+ if (!clashes(targetSide, slot(i, "exit").pos, i)) return;
5806
+ const s = rectOf(plan.sourceId);
5807
+ const t = rectOf(plan.targetId);
5808
+ const port = slot(i, "enter").pos;
5809
+ const realign = straightRunFits(s, t, port, axes[i] === "vertical") && !clashes(`${plan.sourceId}|${plan.exitSide}`, port, i) && !clashes(targetSide, port, i);
5810
+ if (realign) slot(i, "exit").pos = port;
5811
+ else straight[i] = false;
5812
+ changed = true;
5813
+ });
5814
+ }
5815
+ return straight;
5816
+ }
5817
+ function assignJogStaggers(plans, placed, attachment, straight) {
5818
+ const staircases = /* @__PURE__ */ new Map();
5819
+ const staggers = plans.map((plan, i) => {
5820
+ const exit = attachment.get(`${i}:exit`);
5821
+ const enter = attachment.get(`${i}:enter`);
5822
+ const basis = enter.count > exit.count ? enter : exit;
5823
+ const s = placed.get(plan.sourceId).rect;
5824
+ const t = placed.get(plan.targetId).rect;
5825
+ const lane = jogLane(plan, s, t);
5826
+ if (routeAxis(plan) !== null && !straight[i] && freeLines(lane) >= 2) {
5827
+ const fanIn = basis === enter;
5828
+ const heading = Math.sign(enter.pos - exit.pos);
5829
+ const key = fanIn ? `${plan.targetId}|${plan.enterSide}|${heading}` : `${plan.sourceId}|${plan.exitSide}|${heading}`;
5830
+ const jog = {
5831
+ planIdx: i,
5832
+ outerness: fanIn ? -enter.pos * heading : exit.pos * heading,
5833
+ toward: fanIn ? lane.dir : lane.dir === 1 ? -1 : 1,
5834
+ lane,
5835
+ fanIn,
5836
+ room: fanIn ? roomBeside(plan.enterSide, t) : roomBeside(plan.exitSide, s)
5837
+ };
5838
+ staircases.set(key, [...staircases.get(key) ?? [], jog]);
5839
+ }
5840
+ return basis.index - Math.floor((basis.count - 1) / 2);
5841
+ });
5842
+ let room = null;
5843
+ for (const jogs of staircases.values()) {
5844
+ if (jogs.length < 2) continue;
5845
+ jogs.sort((a, b) => b.outerness - a.outerness || a.planIdx - b.planIdx);
5846
+ const half = Math.floor((jogs.length - 1) / 2);
5847
+ const lines = jogs.map((jog, rank) => jog.lane.mid + jog.toward * (half - rank));
5848
+ const shift = jogs[0].fanIn ? staircaseShift(jogs, lines, { spareArrowLine: true, spareExitLine: true }) : staircaseShift(jogs, lines, { spareArrowLine: true }) ?? staircaseShift(jogs, lines, {});
5849
+ if (shift === null) {
5850
+ room ?? (room = jogs[0].room);
5851
+ continue;
5852
+ }
5853
+ jogs.forEach((jog, k) => {
5854
+ staggers[jog.planIdx] = lines[k] + shift - jog.lane.mid;
5855
+ });
5856
+ }
5857
+ return { staggers, room };
5858
+ }
5859
+ function staircaseShift(jogs, lines, spare) {
5860
+ let lo = -Infinity;
5861
+ let hi = Infinity;
5862
+ jogs.forEach(({ lane }, k) => {
5863
+ const first = spare.spareExitLine ? lane.firstFree + lane.dir : lane.firstFree;
5864
+ const last = spare.spareArrowLine ? lane.lastFree - lane.dir : lane.lastFree;
5865
+ lo = Math.max(lo, Math.min(first, last) - lines[k]);
5866
+ hi = Math.min(hi, Math.max(first, last) - lines[k]);
5867
+ if ((last - first) * lane.dir < 0) hi = -Infinity;
5868
+ });
5869
+ return lo <= hi ? clamp2(0, lo, hi) : null;
5870
+ }
5871
+ function routeEdge(canvas, plan, planIdx, placed, attachment, shape, vocab, deferSideLabel) {
5689
5872
  const s = placed.get(plan.sourceId).rect;
5690
5873
  const t = placed.get(plan.targetId).rect;
5691
- const exitSlot = attachment.get(`${planIdx}:exit`);
5692
- const enterSlot = attachment.get(`${planIdx}:enter`);
5693
- const exitPos = exitSlot.pos;
5694
- const enterPos = enterSlot.pos;
5695
- const basis = enterSlot.count > exitSlot.count ? enterSlot : exitSlot;
5696
- const stagger = basis.index - Math.floor((basis.count - 1) / 2);
5874
+ const exitPos = attachment.get(`${planIdx}:exit`).pos;
5875
+ const enterPos = attachment.get(`${planIdx}:enter`).pos;
5697
5876
  const junction = (r, c, side) => {
5698
5877
  const ch = side === "top" ? vocab.stemUp : side === "bottom" ? vocab.stemDown : side === "left" ? vocab.stemLeft : vocab.stemRight;
5699
5878
  canvas.set(r, c, ch, "junction");
@@ -5705,7 +5884,8 @@ function routeEdge(canvas, plan, planIdx, placed, attachment, vocab, deferSideLa
5705
5884
  label: normalizeEdgeLabel(plan.edge.label),
5706
5885
  vocab,
5707
5886
  junction,
5708
- stagger,
5887
+ straight: shape.straight,
5888
+ stagger: shape.stagger,
5709
5889
  deferSideLabel
5710
5890
  };
5711
5891
  if (plan.exitSide === "bottom" && plan.enterSide === "top") {
@@ -5743,8 +5923,7 @@ function drawVertical(args, s, t, exitCol, enterCol, dir) {
5743
5923
  const hi = Math.max(rA, rB);
5744
5924
  for (let r = lo; r <= hi; r++) canvas.drawEdgeCell(r, col, vocab.v, "line-v", vocab);
5745
5925
  };
5746
- const straightOk = exitCol >= t.c0 + 1 && exitCol <= t.c1 - 1 && exitCol >= s.c0 + 1 && exitCol <= s.c1 - 1;
5747
- if (straightOk || gap < 2) {
5926
+ if (args.straight || gap < 2) {
5748
5927
  const sCol = clamp2(exitCol, s.c0 + 1, s.c1 - 1);
5749
5928
  const tCol = clamp2(exitCol, t.c0 + 1, t.c1 - 1);
5750
5929
  junction(exitRow, sCol, dir === 1 ? "bottom" : "top");
@@ -5877,8 +6056,7 @@ function drawHorizontal(args, s, t, exitRow, enterRow, dir) {
5877
6056
  canvas.drawEdgeCell(row, lo + i, ch, ch === vocab.h ? "line-h" : "label", vocab);
5878
6057
  });
5879
6058
  };
5880
- const straightOk = exitRow >= t.r0 + 1 && exitRow <= t.r1 - 1 && exitRow >= s.r0 + 1 && exitRow <= s.r1 - 1;
5881
- if (straightOk || gap < 2) {
6059
+ if (args.straight || gap < 2) {
5882
6060
  const sRow = clamp2(exitRow, s.r0 + 1, s.r1 - 1);
5883
6061
  const tRow = clamp2(exitRow, t.r0 + 1, t.r1 - 1);
5884
6062
  junction(sRow, exitCol, dir === 1 ? "right" : "left");
@@ -6639,6 +6817,7 @@ export {
6639
6817
  MAX_COVER_SLIDE_DURATION_SECONDS,
6640
6818
  resolveCoverSlideSettings,
6641
6819
  docToMarkdown,
6820
+ previewBlockTemplate,
6642
6821
  documentTitleFromFileName,
6643
6822
  buildPreviewDoc,
6644
6823
  resolveThemeForDoc,
@@ -1,12 +1,12 @@
1
- import { a7 as Layer, k as Block, R as Doc, bt as TemplateBlock, bu as TemplateContext, z as CustomTemplateDefinition, bw as TemplateRegistry, bC as Theme, c7 as ViewportConfig, b0 as PersistentLayerConfig, av as MotionSpec, S as DocBlock, c8 as ViewportOrientation, a$ as PersistentLayer, bP as TitleBlockInput, bh as SectionHeaderInput, j as BigTextInput, v as ContentBlockInput, bn as StatHighlightInput, bb as QuoteBlockInput, Z as FactCardInput, bY as TwoColumnInput, K as DateEventInput, a5 as ImageWithCaptionInput, aa as LeftFeatureInput, be as RightFeatureInput, n as BottomFeatureInput, ao as MediaOnlyInput, bR as TopFeatureInput, af as MapBlockInput, bm as StartBlockConfig, a0 as FullBleedQuoteInput, ad as ListBlockInput, b4 as PhotoGridInput, M as DefinitionCardInput, u as ComparisonBarInput, ba as PullQuoteInput, c6 as VideoWithCaptionInput, c5 as VideoPullQuoteInput, J as DataTableInput, N as DiagramBlockInput, bT as TreeBlockInput, bL as TimelineBlockInput, V as DrawingBlockInput, aj as MarkerStyle, A as AccentImage, a4 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, aw as MotionState, at as MotionProfile, bE as ThemeColorScheme, x as CountUpSpec, bG as ThemeRegistry, aT as PageEmphasis, bF as ThemePageStyle, T as DocDiagnostic, b9 as PromotedBodyAnnotation, Q as DiagramTemplateNode, P as DiagramTemplateEdge, bO as TimelineTemplateTrack, bN as TimelineTemplateLink } from '../Doc-BCrrYAuK.js';
2
- export { W as FRONTMATTER_CUSTOM_TEMPLATES_KEY, X as FRONTMATTER_CUSTOM_THEMES_KEY, a9 as LayoutHints, bd as RenderStyle, bD as ThemeColorPalette, bJ as ThemeStyle, bK as ThemeTypography, bZ as VIEWPORT_PRESETS, c9 as ViewportPreset, ce as createTemplateContext, cl as getLayoutHints, co as getTwoColumnPositions, cp as getViewport, cq as getViewportOrientation, cu as isTemplateBlock, cA as scaledFontSize } from '../Doc-BCrrYAuK.js';
1
+ import { a7 as Layer, k as Block, R as Doc, bu as TemplateBlock, bv as TemplateContext, z as CustomTemplateDefinition, bx as TemplateRegistry, bD as Theme, c8 as ViewportConfig, b0 as PersistentLayerConfig, av as MotionSpec, S as DocBlock, c9 as ViewportOrientation, a$ as PersistentLayer, bQ as TitleBlockInput, bi as SectionHeaderInput, j as BigTextInput, v as ContentBlockInput, bo as StatHighlightInput, bc as QuoteBlockInput, Z as FactCardInput, bZ as TwoColumnInput, K as DateEventInput, a5 as ImageWithCaptionInput, aa as LeftFeatureInput, bf as RightFeatureInput, n as BottomFeatureInput, ao as MediaOnlyInput, bS as TopFeatureInput, af as MapBlockInput, bn as StartBlockConfig, a0 as FullBleedQuoteInput, ad as ListBlockInput, b4 as PhotoGridInput, M as DefinitionCardInput, u as ComparisonBarInput, bb as PullQuoteInput, c7 as VideoWithCaptionInput, c6 as VideoPullQuoteInput, J as DataTableInput, N as DiagramBlockInput, bU as TreeBlockInput, bM as TimelineBlockInput, V as DrawingBlockInput, aj as MarkerStyle, A as AccentImage, a4 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, aw as MotionState, at as MotionProfile, bF as ThemeColorScheme, x as CountUpSpec, bH as ThemeRegistry, aT as PageEmphasis, bG as ThemePageStyle, T as DocDiagnostic, ba as PromotedBodyAnnotation, Q as DiagramTemplateNode, P as DiagramTemplateEdge, bP as TimelineTemplateTrack, bO as TimelineTemplateLink } from '../Doc-DqYt_b2b.js';
2
+ export { W as FRONTMATTER_CUSTOM_TEMPLATES_KEY, X as FRONTMATTER_CUSTOM_THEMES_KEY, a9 as LayoutHints, be as RenderStyle, bE as ThemeColorPalette, bK as ThemeStyle, bL as ThemeTypography, b_ as VIEWPORT_PRESETS, ca as ViewportPreset, cf as createTemplateContext, cm as getLayoutHints, cp as getTwoColumnPositions, cq as getViewport, cr as getViewportOrientation, cv as isTemplateBlock, cB as scaledFontSize } from '../Doc-DqYt_b2b.js';
3
3
  import { g as BuildStep, M as MarkdownBlockNode, S as MarkdownListItem, f as BuildSpec, e as BuildCursor, h as BuildTiming, V as MarkdownNode, ae as TransitionType, ad as TransitionDirection, z as MarkdownHeading, v as MarkdownDocument, a2 as MarkdownTable, q as MarkdownCodeBlock, R as MarkdownList } from '../types-Zk8qYuaT.js';
4
4
  import { C as CoercedBlockMeta } from '../annotationCoercion-hTvELpIN.js';
5
- import { c as PageSection } from '../materializePageSection-FT1B5NOo.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-FT1B5NOo.js';
5
+ import { c as PageSection } from '../materializePageSection-S2hxZ_lO.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-S2hxZ_lO.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-BWvtBQ42.js';
9
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-CFJbeItn.js';
10
10
 
11
11
  /** Pure build planning and evaluation, shared by interactive slides and frame export. */
12
12
 
@@ -927,15 +927,7 @@ declare function bigText(input: BigTextInput, context: TemplateContext): Layer[]
927
927
  * more visual template after validation and preview.
928
928
  */
929
929
 
930
- interface ContentBlockOptions {
931
- /**
932
- * Leave picture-only paragraphs out of the body — for media-led templates,
933
- * which show those pictures in their media band. `content` itself keeps
934
- * their alt text, the loss-averse default.
935
- */
936
- omitPictures?: boolean;
937
- }
938
- declare function contentBlock(input: ContentBlockInput, context: TemplateContext, options?: ContentBlockOptions): Layer[];
930
+ declare function contentBlock(input: ContentBlockInput, context: TemplateContext): Layer[];
939
931
 
940
932
  /**
941
933
  * Stat Highlight Template
@@ -2562,6 +2554,13 @@ interface DocToMarkdownOptions {
2562
2554
  */
2563
2555
  declare function docToMarkdown(doc: Doc, options?: DocToMarkdownOptions): MarkdownDocument;
2564
2556
 
2557
+ /**
2558
+ * The template a block's slide renders with in previews, slideshows, video,
2559
+ * and a dynamic deck's authored sections. This is not always `block.template`,
2560
+ * because a heading with no annotation shows its body as content and a picture
2561
+ * replaces a bare section header.
2562
+ */
2563
+ declare function previewBlockTemplate(block: Block, doc?: Pick<Doc, 'customTemplates'>): string;
2565
2564
  /**
2566
2565
  * Build a player-ready Doc from a markdown-derived Doc.
2567
2566
  *
@@ -4620,4 +4619,4 @@ declare function treeFromMarkdownList(list: MarkdownList): Tree;
4620
4619
  /** Find the first top-level markdown list in a block's body, if any. */
4621
4620
  declare function findFirstList(contents: MarkdownBlockNode[] | undefined): MarkdownList | undefined;
4622
4621
 
4623
- export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, type AccentLayout, type ArrangeAsciiDiagramOptions, type AsciiDiagram, type AsciiDiagramDetection, type AsciiDiagramEdge, type AsciiDiagramNode, type AsciiTimeline, type AsciiTimelineDetection, type AsciiTimelineEvent, type AsciiTimelineLink, type AsciiTimelineMarker, type AsciiTimelineSide, type AsciiTimelineStats, type AsciiTimelineStyle, type AsciiTimelineTrack, type AudioSegmentTiming, BASE_INPUT_DESCRIPTORS, BLOCK_MEDIA_LAYOUT_POLICIES, BUILTIN_DASHBOARD_LAYOUTS, type BlockLayerMaterialization, type BlockMediaLayoutPolicy, type BuildPreviewDocOptions, type BuildTimeline, type BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, type ChartData, type ChartTableData, type ClipBox, type ConnectorAnchor, type ConnectorPort, type ConnectorRouting, type ConnectorSnapPoint, type ContentBuildPlan, type CoverBlockInput, type CoverSlidePlayback, type CoverSlideSettings, type CoverSlideTemplate, type 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, type DashboardCell, type DashboardCellChrome, type DashboardCellDefinition, type DashboardCellFrame, type DashboardDiagnostic, type DashboardLayoutDefinition, type DashboardLayoutSummary, type DashboardLayoutValidationError, type DashboardLayoutValidationResult, type DashboardMaterialization, type DashboardRectPct, type DashboardSettings, type DashboardSettingsOverrides, type DashboardStyleId, type DashboardStyleSummary, type DashboardTitle, type DashboardTitleSlotDefinition, type DashboardZoomCandidate, type DashboardZoomLevel, type DashboardZoomMode, type DataFenceParseResult, type DataSourceReadOptions, type DataSourceReader, type DataSourceStats, type DataSourceTable, type DeriveTemplateInputsOptions, type DetectAsciiTimelineOptions, type DiagramEdge, type DiagramLabelFit, type DiagramLayout, type DiagramLayoutOptions, type DiagramNodePosition, DocBlock, type DrawingConnector, type DrawingLayout, type DrawingLayoutOptions, type DrawingShape, type DrawingShapeKind, type EmbeddedVideo, type ExpandDocBlocksOptions, type ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, type FirstImage, type Flashcard, type FlashcardChoice, type FlashcardDeck, type FlashcardDiagnostic, type FlashcardDiagnosticCode, type FlashcardFace, type FlashcardKind, type FlashcardSourceMode, type FrostedBigTextLayout, GEOMETRY_BOUND_TEMPLATES, type HostedVideo, type InputCoercion, type LayerMaterializationDiagnostic, type LayerMaterializationFailureMode, type LayerMaterializationSource, type LayoutLayerDefaults, type LayoutLayersResult, MAX_COVER_SLIDE_DURATION_SECONDS, type MarkdownToDocOptions, type MarkdownValidationResult, type MaterializeBlockLayersOptions, type MaterializeDashboardOptions, type MaterializeFlashcardsOptions, type NarrationResolution, type NativeMediaLayout, type NoMediaLayout, PAGE_BASE_CSS, PATH_SHAPE_KINDS, PageSection, type PageSectionContext, type PageSectionDraft, type ParsedAnnotation, type ParsedStat, PersistentLayerConfig, type PromotableDetection, type RenderAsciiDiagramOptions, type RenderAsciiTimelineOptions, type RenderTreeOptions, type RepairResult, type ResolveDataReferencesOptions, type ResolvedDashboardCell, type ResolvedDataReferences, type ResolvedPageBlock, type RichListItem, type RuntimeTemplateRegistry, SHAPE_NAMES, type SectionExtractor, type SupplementalMediaLayoutVariant, type SupplementalMediaShape, type SupplementalMediaVariantMatrix, TABLE_FED_TEMPLATES, TEMPLATE_AUTHORING_METADATA, TEMPLATE_INPUT_DESCRIPTORS, TEMPLATE_METADATA, TREE_FENCE_LANGS, type TemplateAuthoringMetadata, type TemplateAuthoringRole, TemplateBlock, type TemplateBodyPolicy, TemplateContext, type TemplateInputDescriptor, type TemplateMediaOwnership, type TemplateMetadata, type TemplateParamFinding, Theme, ThemeColorScheme, type Tree, type TreeDetection, type TreeItem, type TreeNode, type UnconsumedMediaBehavior, type ValidateOptions, ViewportConfig, ViewportOrientation, accentForViewport, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, arrangeAsciiDiagram, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, blockBuildSteps, bottomFeature, buildChartData, buildCursorAtTime, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, buildSourceText, buildTargetState, 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, detectPromotableBodyAnnotation, 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, frostedBigTextLayout, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getMotionProfile, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isMediaAnnotationName, isPictureFence, isPictureParagraph, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, mediaOnly, motionDelay, motionEntrance, motionStateTransform, nearestSnapPoint, normalizeChartTable, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseStandaloneAnnotation, parseStatNumber, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, planContentBuilds, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveBuildTimeline, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveDocBuildTiming, 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, topFeature, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };
4622
+ export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, type AccentLayout, type ArrangeAsciiDiagramOptions, type AsciiDiagram, type AsciiDiagramDetection, type AsciiDiagramEdge, type AsciiDiagramNode, type AsciiTimeline, type AsciiTimelineDetection, type AsciiTimelineEvent, type AsciiTimelineLink, type AsciiTimelineMarker, type AsciiTimelineSide, type AsciiTimelineStats, type AsciiTimelineStyle, type AsciiTimelineTrack, type AudioSegmentTiming, BASE_INPUT_DESCRIPTORS, BLOCK_MEDIA_LAYOUT_POLICIES, BUILTIN_DASHBOARD_LAYOUTS, type BlockLayerMaterialization, type BlockMediaLayoutPolicy, type BuildPreviewDocOptions, type BuildTimeline, type BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, type ChartData, type ChartTableData, type ClipBox, type ConnectorAnchor, type ConnectorPort, type ConnectorRouting, type ConnectorSnapPoint, type ContentBuildPlan, type CoverBlockInput, type CoverSlidePlayback, type CoverSlideSettings, type CoverSlideTemplate, type 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, type DashboardCell, type DashboardCellChrome, type DashboardCellDefinition, type DashboardCellFrame, type DashboardDiagnostic, type DashboardLayoutDefinition, type DashboardLayoutSummary, type DashboardLayoutValidationError, type DashboardLayoutValidationResult, type DashboardMaterialization, type DashboardRectPct, type DashboardSettings, type DashboardSettingsOverrides, type DashboardStyleId, type DashboardStyleSummary, type DashboardTitle, type DashboardTitleSlotDefinition, type DashboardZoomCandidate, type DashboardZoomLevel, type DashboardZoomMode, type DataFenceParseResult, type DataSourceReadOptions, type DataSourceReader, type DataSourceStats, type DataSourceTable, type DeriveTemplateInputsOptions, type DetectAsciiTimelineOptions, type DiagramEdge, type DiagramLabelFit, type DiagramLayout, type DiagramLayoutOptions, type DiagramNodePosition, DocBlock, type DrawingConnector, type DrawingLayout, type DrawingLayoutOptions, type DrawingShape, type DrawingShapeKind, type EmbeddedVideo, type ExpandDocBlocksOptions, type ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, type FirstImage, type Flashcard, type FlashcardChoice, type FlashcardDeck, type FlashcardDiagnostic, type FlashcardDiagnosticCode, type FlashcardFace, type FlashcardKind, type FlashcardSourceMode, type FrostedBigTextLayout, GEOMETRY_BOUND_TEMPLATES, type HostedVideo, type InputCoercion, type LayerMaterializationDiagnostic, type LayerMaterializationFailureMode, type LayerMaterializationSource, type LayoutLayerDefaults, type LayoutLayersResult, MAX_COVER_SLIDE_DURATION_SECONDS, type MarkdownToDocOptions, type MarkdownValidationResult, type MaterializeBlockLayersOptions, type MaterializeDashboardOptions, type MaterializeFlashcardsOptions, type NarrationResolution, type NativeMediaLayout, type NoMediaLayout, PAGE_BASE_CSS, PATH_SHAPE_KINDS, PageSection, type PageSectionContext, type PageSectionDraft, type ParsedAnnotation, type ParsedStat, PersistentLayerConfig, type PromotableDetection, type RenderAsciiDiagramOptions, type RenderAsciiTimelineOptions, type RenderTreeOptions, type RepairResult, type ResolveDataReferencesOptions, type ResolvedDashboardCell, type ResolvedDataReferences, type ResolvedPageBlock, type RichListItem, type RuntimeTemplateRegistry, SHAPE_NAMES, type SectionExtractor, type SupplementalMediaLayoutVariant, type SupplementalMediaShape, type SupplementalMediaVariantMatrix, TABLE_FED_TEMPLATES, TEMPLATE_AUTHORING_METADATA, TEMPLATE_INPUT_DESCRIPTORS, TEMPLATE_METADATA, TREE_FENCE_LANGS, type TemplateAuthoringMetadata, type TemplateAuthoringRole, TemplateBlock, type TemplateBodyPolicy, TemplateContext, type TemplateInputDescriptor, type TemplateMediaOwnership, type TemplateMetadata, type TemplateParamFinding, Theme, ThemeColorScheme, type Tree, type TreeDetection, type TreeItem, type TreeNode, type UnconsumedMediaBehavior, type ValidateOptions, ViewportConfig, ViewportOrientation, accentForViewport, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, arrangeAsciiDiagram, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, blockBuildSteps, bottomFeature, buildChartData, buildCursorAtTime, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, buildSourceText, buildTargetState, 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, detectPromotableBodyAnnotation, 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, frostedBigTextLayout, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getMotionProfile, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isMediaAnnotationName, isPictureFence, isPictureParagraph, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, mediaOnly, motionDelay, motionEntrance, motionStateTransform, nearestSnapPoint, normalizeChartTable, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseStandaloneAnnotation, parseStatNumber, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, planContentBuilds, previewBlockTemplate, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveBuildTimeline, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveDocBuildTiming, 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, topFeature, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };
package/dist/doc/index.js CHANGED
@@ -47,6 +47,7 @@ import {
47
47
  motionStateTransform,
48
48
  normalizeDashboardZoom,
49
49
  pageStyleDataAttributes,
50
+ previewBlockTemplate,
50
51
  readDashboardLayoutsFromFrontmatter,
51
52
  renderAsciiDiagram,
52
53
  renderAsciiTimeline,
@@ -75,9 +76,9 @@ import {
75
76
  validateMarkdownSource,
76
77
  wordRevealDelay,
77
78
  writeDashboardLayoutsToFrontmatter
78
- } from "../chunk-PJHMZ26J.js";
79
- import "../chunk-FTN6SGW5.js";
80
- import "../chunk-CS3MAZZX.js";
79
+ } from "../chunk-WK6LEZ3U.js";
80
+ import "../chunk-HKHOFTGM.js";
81
+ import "../chunk-KRMAEYNM.js";
81
82
  import {
82
83
  BASE_INPUT_DESCRIPTORS,
83
84
  BLOCK_MEDIA_LAYOUT_POLICIES,
@@ -198,7 +199,7 @@ import {
198
199
  wrapWithPersistentLayers,
199
200
  writeCustomTemplatesToFrontmatter,
200
201
  writeCustomThemesToFrontmatter
201
- } from "../chunk-5C6ZO5FV.js";
202
+ } from "../chunk-LWNT6M4N.js";
202
203
  import {
203
204
  ASCII_CHAR_H,
204
205
  ASCII_CHAR_W,
@@ -253,7 +254,7 @@ import {
253
254
  treeFromMarkdownList,
254
255
  treeFromTemplateData,
255
256
  treeToTemplateData
256
- } from "../chunk-HGXZMB7K.js";
257
+ } from "../chunk-DIY3NBIS.js";
257
258
  import "../chunk-SVN7T6BK.js";
258
259
  import {
259
260
  PATH_SHAPE_KINDS,
@@ -510,6 +511,7 @@ export {
510
511
  parseYamlSubset,
511
512
  photoGrid,
512
513
  planContentBuilds,
514
+ previewBlockTemplate,
513
515
  pullQuote,
514
516
  quoteBlock,
515
517
  readCustomTemplatesFromFrontmatter,
@@ -1,4 +1,4 @@
1
- import { bC as Theme } from '../Doc-BCrrYAuK.js';
1
+ import { bD as Theme } from '../Doc-DqYt_b2b.js';
2
2
  import '../types-Zk8qYuaT.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 { s as ColorScheme, A as AccentImage, bt as TemplateBlock } from '../Doc-BCrrYAuK.js';
3
+ import { s as ColorScheme, A as AccentImage, bu as TemplateBlock } from '../Doc-DqYt_b2b.js';
4
4
  import '../types-Zk8qYuaT.js';
5
5
 
6
6
  /**
@@ -1,8 +1,8 @@
1
- import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-CSuevovH.js';
2
- export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-CSuevovH.js';
1
+ import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-CXXiXVJ-.js';
2
+ export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-CXXiXVJ-.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-BCrrYAuK.js';
5
+ import '../Doc-DqYt_b2b.js';
6
6
  import '../types-Zk8qYuaT.js';
7
7
 
8
8
  /**