@bendyline/squisq 2.12.5 → 2.13.0

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.
@@ -2708,10 +2708,58 @@ interface TextLayer extends BaseLayer {
2708
2708
  html?: string;
2709
2709
  /** Semantic steps targeted by generated data-squisq-build-step fragments. */
2710
2710
  buildSteps?: BuildStep[];
2711
+ /**
2712
+ * Optional paragraph structure, for consumers that write native
2713
+ * paragraphs (PPTX text boxes): which paragraphs are list items, at what
2714
+ * depth, with their text free of the marker. When present, `text` is its
2715
+ * plain projection — each paragraph prefixed with its indent and marker
2716
+ * (` • item`, `2. item`), joined with `\n` — and must be kept in sync.
2717
+ * Consumers that draw `text` as-is ignore it.
2718
+ */
2719
+ paragraphs?: TextParagraph[];
2720
+ /**
2721
+ * Marks this layer as one piece of a text flow split across layers for
2722
+ * layout — a list drawn as a marker column beside a body column, so the
2723
+ * SVG renderer gets a hanging indent. See {@link TextFlow}.
2724
+ */
2725
+ flow?: TextFlow;
2711
2726
  /** Text styling */
2712
2727
  style: TextStyle;
2713
2728
  };
2714
2729
  }
2730
+ /** One paragraph of a text layer's structured projection (`TextLayer.content.paragraphs`). */
2731
+ interface TextParagraph {
2732
+ /**
2733
+ * The paragraph's text, with any list marker and indent removed. May hold
2734
+ * `\n` line breaks (they stay inside the paragraph); `''` is a blank line.
2735
+ */
2736
+ text: string;
2737
+ /** Present when the paragraph is a list item. */
2738
+ list?: TextParagraphList;
2739
+ /** Extra space above the paragraph, in canvas px. */
2740
+ spaceBefore?: number;
2741
+ }
2742
+ /** List-item facts for a {@link TextParagraph}. */
2743
+ interface TextParagraphList {
2744
+ ordered: boolean;
2745
+ /** Nesting depth; 0 is the top level. */
2746
+ level: number;
2747
+ /** The item's number, for an ordered item. */
2748
+ number?: number;
2749
+ }
2750
+ /**
2751
+ * Ties together text layers that render one flow of text. A consumer that
2752
+ * lays text out natively (PPTX) draws the flow as ONE text box over the
2753
+ * combined area of its layers, from the `paragraphs` of the non-marker
2754
+ * layers in layer order, and drops the `marker` layers, whose job its own
2755
+ * list bullets take over. Every other consumer renders each layer as usual.
2756
+ */
2757
+ interface TextFlow {
2758
+ /** Layers with the same id are one flow; unique within a block. */
2759
+ id: string;
2760
+ /** A layout-only list marker, replaced by native bullets. */
2761
+ role?: 'marker';
2762
+ }
2715
2763
  /**
2716
2764
  * A two-stop linear gradient fill, shared by shape/path fills and text
2717
2765
  * backgrounds. When present it overrides the solid `fill` color.
@@ -3346,4 +3394,4 @@ declare function getBlockAtTime(blocks: Block[], time: number): Block | null;
3346
3394
  */
3347
3395
  declare function getCaptionAtTime(captions: CaptionTrack | undefined, time: number): CaptionPhrase | null;
3348
3396
 
3349
- export { type FullBleedQuoteInput as $, type AccentImage as A, type BarChartInput as B, type CaptionPhrase as C, type CustomTemplateValidationError as D, type CustomTemplateValidationResult as E, DARK_SURFACE as F, DEFAULT_DOC_FONT as G, DEFAULT_TITLE_FONT as H, type DataTableInput as I, type DateEventInput as J, type DeepPartial as K, type DefinitionCardInput as L, type DiagramBlockInput as M, type DiagramEdgeAnchor as N, type DiagramTemplateEdge as O, type DiagramTemplateNode as P, type Doc as Q, type DocBlock as R, type DocDiagnostic as S, type DonutChartInput as T, type DrawingBlockInput as U, FRONTMATTER_CUSTOM_TEMPLATES_KEY as V, FRONTMATTER_CUSTOM_THEMES_KEY as W, FRONTMATTER_MOTION_KEY as X, type FactCardInput as Y, type FontFamily as Z, type FontFamilyKind as _, type AccentPosition as a, type PersistentLayerTemplate as a$, type GradientBackgroundConfig as a0, type ImageBackgroundConfig as a1, type ImageLayer as a2, type ImageTreatment as a3, type ImageWithCaptionInput as a4, LIGHT_SURFACE as a5, type Layer as a6, type LayerRepeat as a7, type LayoutHints as a8, type LeftFeatureInput as a9, PAGE_EMPHASES as aA, PAGE_EYEBROWS as aB, PAGE_HEADING_CASES as aC, PAGE_HEADING_SCALES as aD, PAGE_HEADING_UNDERLINES as aE, PAGE_HERO_STYLES as aF, PAGE_IMAGE_FRAMINGS as aG, PAGE_NUMERAL_STYLES as aH, PAGE_PATTERNS as aI, PAGE_QUOTE_MARKS as aJ, PAGE_SECTION_KINDS as aK, PAGE_SECTION_SPACINGS as aL, PAGE_SHADOWS as aM, PAGE_VARIANTS as aN, type PageAccentRotation as aO, type PageBackground as aP, type PageDesignFamily as aQ, type PageEmphasis as aR, type PageHeadingTreatment as aS, type PageSectionKind as aT, type PageSectionOverride as aU, type PageTokens as aV, type PageVariant as aW, type PathLayer as aX, type PatternBackgroundConfig as aY, type PersistentLayer as aZ, type PersistentLayerConfig as a_, type LineChartInput as aa, type LinearGradient as ab, type ListBlockInput as ac, MOTION_PROFILES as ad, type MapBlockInput as ae, type MapLayer as af, type MapMarker as ag, type MapTileStyle as ah, type MarkerStyle as ai, type MediaClip as aj, type MediaCrop as ak, type MediaCut as al, type MediaEdits as am, type MediaScheduleOptions as an, type MermaidLayer as ao, type MotionEntrance as ap, type MotionOrigin as aq, type MotionProfile as ar, type MotionProfileName as as, type MotionSpec as at, type MotionState as au, PAGE_ACCENT_STRATEGIES as av, PAGE_BACKGROUNDS as aw, PAGE_BACKGROUND_RHYTHMS as ax, PAGE_DESIGN_FAMILIES as ay, PAGE_DIVIDERS as az, type AmbientGradientConfig as b, type VideoPullQuoteInput as b$, type PersistentLayerTemplateConfig as b0, type PersistentLayerTemplateType as b1, type PhotoGridInput as b2, type PieChartInput as b3, type PipStyle as b4, type Position as b5, type ProgressIndicatorConfig as b6, type PromotedBodyAnnotation as b7, type PullQuoteInput as b8, type QuoteBlockInput as b9, type ThemePageStyle as bA, type ThemeRegistry as bB, type ThemeSchemaVersion as bC, type ThemeSeedColors as bD, type ThemeStyle as bE, type ThemeTypography as bF, type TimelineBlockInput as bG, type TimelineTemplateEvent as bH, type TimelineTemplateLink as bI, type TimelineTemplateTrack as bJ, type TitleBlockInput as bK, type TitleCaptionConfig as bL, type TranscriptBlockInput as bM, type TreeBlockInput as bN, type TreeLayer as bO, type TreeLayerItem as bP, type TreeLayerStyle as bQ, type TreeTemplateItem as bR, type TwoColumnInput as bS, VIEWPORT_PRESETS as bT, type VideoEmbedLayer as bU, type VideoLayer as bV, type VideoPipPosition as bW, type VideoPipShape as bX, type VideoPipSize as bY, type VideoPlacement as bZ, type VideoPresentation as b_, type RawLayersInput as ba, type RenderStyle as bb, type RightFeatureInput as bc, type ScatterChartInput as bd, type ScheduledClip as be, type SectionHeaderInput as bf, type ShapeFilter as bg, type ShapeLayer as bh, type ShapePattern as bi, type SolidBackgroundConfig as bj, type StartBlockConfig as bk, type StatHighlightInput as bl, type SurfaceScheme as bm, type SvgLayer as bn, THEME_SCHEMA_VERSION as bo, type TableLayer as bp, type TableLayerStyle as bq, type TemplateBlock as br, type TemplateContext as bs, type TemplateFunction as bt, type TemplateRegistry as bu, type TextLayer as bv, type TextStyle as bw, type Theme as bx, type ThemeColorPalette as by, type ThemeColorScheme as bz, type Animation as c, type VideoWithCaptionInput as c0, type ViewportConfig as c1, type ViewportOrientation as c2, type ViewportPreset as c3, type VignetteConfig as c4, applySurface as c5, calculateDuration as c6, calculateFontScale as c7, createTemplateContext as c8, createTheme as c9, MEDIA_FX_ORDER as cA, MEDIA_FX_SPECS as cB, type MediaEditParamKey as cC, type MediaEditParamValues as cD, type MediaFxOp as cE, formatMediaNumber as cF, hasRenderableFx as cG, mediaEditHtmlAttribute as cH, mediaEditValuesFromAttributes as cI, mediaEditValuesFromParams as cJ, mediaRenderKey as cK, normalizeMediaCrop as cL, normalizeMediaCuts as cM, parseMediaCrop as cN, parseMediaCuts as cO, parseMediaEdits as cP, parseMediaFx as cQ, serializeMediaCrop as cR, serializeMediaCuts as cS, serializeMediaEdits as cT, serializeMediaFx as cU, createThemeRegistry as ca, getAspectRatioString as cb, getBlockAtTime as cc, getCaptionAtTime as cd, getDocPlaybackDuration as ce, getLayoutHints as cf, getSafeTextBounds as cg, getSegmentAtTime as ch, getTwoColumnPositions as ci, getViewport as cj, getViewportOrientation as ck, isCustomTemplateDefinition as cl, isMotionProfileName as cm, isPersistentLayerTemplate as cn, isTemplateBlock as co, scaledFontSize$1 as cp, readFrontmatterMotion as cq, resolveMediaSchedule as cr, resolveMotionForDoc as cs, resolveMotionProfile as ct, scaledFontSize as cu, scheduleMediaClip as cv, validateCustomTemplateDefinition as cw, type MediaFxOpId as cx, type MediaFxChain as cy, MEDIA_EDIT_PARAMS as cz, type AnimationType as d, type AreaChartInput as e, type AudioBookmark as f, type AudioSegment as g, type AudioTimingData as h, type AudioTrack as i, type BigTextInput as j, type Block as k, type BlockConnection as l, type BorderStyle as m, type CaptionTrack as n, type CaptionWord as o, type ChartBaseFields as p, type ChartTemplateInput as q, type ColorScheme as r, type ColumnChartInput as s, type ComparisonBarInput as t, type ContentBlockInput as u, type CornerBrandingConfig as v, type CountUpSpec as w, type CreateTemplateContextOptions as x, type CustomTemplateDefinition as y, type CustomTemplateLayer as z };
3397
+ export { type FullBleedQuoteInput as $, type AccentImage as A, type BarChartInput as B, type CaptionPhrase as C, type CustomTemplateValidationError as D, type CustomTemplateValidationResult as E, DARK_SURFACE as F, DEFAULT_DOC_FONT as G, DEFAULT_TITLE_FONT as H, type DataTableInput as I, type DateEventInput as J, type DeepPartial as K, type DefinitionCardInput as L, type DiagramBlockInput as M, type DiagramEdgeAnchor as N, type DiagramTemplateEdge as O, type DiagramTemplateNode as P, type Doc as Q, type DocBlock as R, type DocDiagnostic as S, type DonutChartInput as T, type DrawingBlockInput as U, FRONTMATTER_CUSTOM_TEMPLATES_KEY as V, FRONTMATTER_CUSTOM_THEMES_KEY as W, FRONTMATTER_MOTION_KEY as X, type FactCardInput as Y, type FontFamily as Z, type FontFamilyKind as _, type AccentPosition as a, type PersistentLayerTemplate as a$, type GradientBackgroundConfig as a0, type ImageBackgroundConfig as a1, type ImageLayer as a2, type ImageTreatment as a3, type ImageWithCaptionInput as a4, LIGHT_SURFACE as a5, type Layer as a6, type LayerRepeat as a7, type LayoutHints as a8, type LeftFeatureInput as a9, PAGE_EMPHASES as aA, PAGE_EYEBROWS as aB, PAGE_HEADING_CASES as aC, PAGE_HEADING_SCALES as aD, PAGE_HEADING_UNDERLINES as aE, PAGE_HERO_STYLES as aF, PAGE_IMAGE_FRAMINGS as aG, PAGE_NUMERAL_STYLES as aH, PAGE_PATTERNS as aI, PAGE_QUOTE_MARKS as aJ, PAGE_SECTION_KINDS as aK, PAGE_SECTION_SPACINGS as aL, PAGE_SHADOWS as aM, PAGE_VARIANTS as aN, type PageAccentRotation as aO, type PageBackground as aP, type PageDesignFamily as aQ, type PageEmphasis as aR, type PageHeadingTreatment as aS, type PageSectionKind as aT, type PageSectionOverride as aU, type PageTokens as aV, type PageVariant as aW, type PathLayer as aX, type PatternBackgroundConfig as aY, type PersistentLayer as aZ, type PersistentLayerConfig as a_, type LineChartInput as aa, type LinearGradient as ab, type ListBlockInput as ac, MOTION_PROFILES as ad, type MapBlockInput as ae, type MapLayer as af, type MapMarker as ag, type MapTileStyle as ah, type MarkerStyle as ai, type MediaClip as aj, type MediaCrop as ak, type MediaCut as al, type MediaEdits as am, type MediaScheduleOptions as an, type MermaidLayer as ao, type MotionEntrance as ap, type MotionOrigin as aq, type MotionProfile as ar, type MotionProfileName as as, type MotionSpec as at, type MotionState as au, PAGE_ACCENT_STRATEGIES as av, PAGE_BACKGROUNDS as aw, PAGE_BACKGROUND_RHYTHMS as ax, PAGE_DESIGN_FAMILIES as ay, PAGE_DIVIDERS as az, type AmbientGradientConfig as b, type VideoPipSize as b$, type PersistentLayerTemplateConfig as b0, type PersistentLayerTemplateType as b1, type PhotoGridInput as b2, type PieChartInput as b3, type PipStyle as b4, type Position as b5, type ProgressIndicatorConfig as b6, type PromotedBodyAnnotation as b7, type PullQuoteInput as b8, type QuoteBlockInput as b9, type Theme as bA, type ThemeColorPalette as bB, type ThemeColorScheme as bC, type ThemePageStyle as bD, type ThemeRegistry as bE, type ThemeSchemaVersion as bF, type ThemeSeedColors as bG, type ThemeStyle as bH, type ThemeTypography as bI, type TimelineBlockInput as bJ, type TimelineTemplateEvent as bK, type TimelineTemplateLink as bL, type TimelineTemplateTrack as bM, type TitleBlockInput as bN, type TitleCaptionConfig as bO, type TranscriptBlockInput as bP, type TreeBlockInput as bQ, type TreeLayer as bR, type TreeLayerItem as bS, type TreeLayerStyle as bT, type TreeTemplateItem as bU, type TwoColumnInput as bV, VIEWPORT_PRESETS as bW, type VideoEmbedLayer as bX, type VideoLayer as bY, type VideoPipPosition as bZ, type VideoPipShape as b_, type RawLayersInput as ba, type RenderStyle as bb, type RightFeatureInput as bc, type ScatterChartInput as bd, type ScheduledClip as be, type SectionHeaderInput as bf, type ShapeFilter as bg, type ShapeLayer as bh, type ShapePattern as bi, type SolidBackgroundConfig as bj, type StartBlockConfig as bk, type StatHighlightInput as bl, type SurfaceScheme as bm, type SvgLayer as bn, THEME_SCHEMA_VERSION as bo, type TableLayer as bp, type TableLayerStyle as bq, type TemplateBlock as br, type TemplateContext as bs, type TemplateFunction as bt, type TemplateRegistry as bu, type TextFlow as bv, type TextLayer as bw, type TextParagraph as bx, type TextParagraphList as by, type TextStyle as bz, type Animation as c, type VideoPlacement as c0, type VideoPresentation as c1, type VideoPullQuoteInput as c2, type VideoWithCaptionInput as c3, type ViewportConfig as c4, type ViewportOrientation as c5, type ViewportPreset as c6, type VignetteConfig as c7, applySurface as c8, calculateDuration as c9, type MediaFxOpId as cA, type MediaFxChain as cB, MEDIA_EDIT_PARAMS as cC, MEDIA_FX_ORDER as cD, MEDIA_FX_SPECS as cE, type MediaEditParamKey as cF, type MediaEditParamValues as cG, type MediaFxOp as cH, formatMediaNumber as cI, hasRenderableFx as cJ, mediaEditHtmlAttribute as cK, mediaEditValuesFromAttributes as cL, mediaEditValuesFromParams as cM, mediaRenderKey as cN, normalizeMediaCrop as cO, normalizeMediaCuts as cP, parseMediaCrop as cQ, parseMediaCuts as cR, parseMediaEdits as cS, parseMediaFx as cT, serializeMediaCrop as cU, serializeMediaCuts as cV, serializeMediaEdits as cW, serializeMediaFx as cX, calculateFontScale as ca, createTemplateContext as cb, createTheme as cc, createThemeRegistry as cd, getAspectRatioString as ce, getBlockAtTime as cf, getCaptionAtTime as cg, getDocPlaybackDuration as ch, getLayoutHints as ci, getSafeTextBounds as cj, getSegmentAtTime as ck, getTwoColumnPositions as cl, getViewport as cm, getViewportOrientation as cn, isCustomTemplateDefinition as co, isMotionProfileName as cp, isPersistentLayerTemplate as cq, isTemplateBlock as cr, scaledFontSize$1 as cs, readFrontmatterMotion as ct, resolveMediaSchedule as cu, resolveMotionForDoc as cv, resolveMotionProfile as cw, scaledFontSize as cx, scheduleMediaClip as cy, validateCustomTemplateDefinition as cz, type AnimationType as d, type AreaChartInput as e, type AudioBookmark as f, type AudioSegment as g, type AudioTimingData as h, type AudioTrack as i, type BigTextInput as j, type Block as k, type BlockConnection as l, type BorderStyle as m, type CaptionTrack as n, type CaptionWord as o, type ChartBaseFields as p, type ChartTemplateInput as q, type ColorScheme as r, type ColumnChartInput as s, type ComparisonBarInput as t, type ContentBlockInput as u, type CornerBrandingConfig as v, type CountUpSpec as w, type CreateTemplateContextOptions as x, type CustomTemplateDefinition as y, type CustomTemplateLayer as z };
@@ -1,4 +1,4 @@
1
- import { a2 as ImageLayer, bv as TextLayer, bh as ShapeLayer, aX as PathLayer } from './Doc-CwmJZayl.js';
1
+ import { a2 as ImageLayer, bw as TextLayer, bh as ShapeLayer, aX as PathLayer } from './Doc-czvrR7Oy.js';
2
2
 
3
3
  /**
4
4
  * ImageEditDoc — JSON document describing a layered, editable image.
@@ -4,7 +4,7 @@ import {
4
4
  flattenRenderableBlocks,
5
5
  getPinnedBlockMeta,
6
6
  markdownToDoc
7
- } from "./chunk-I3ENXLAN.js";
7
+ } from "./chunk-FVFTJ64H.js";
8
8
  import {
9
9
  deriveTemplateInputs,
10
10
  extractImages,
@@ -12,7 +12,7 @@ import {
12
12
  isAsciiTimelineFence,
13
13
  isPictureFence,
14
14
  isTreeFence
15
- } from "./chunk-GGZCJ2MS.js";
15
+ } from "./chunk-JDYWKGG7.js";
16
16
  import {
17
17
  extractContent,
18
18
  mapElementToBlock,
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-FTN6SGW5.js";
4
4
  import {
5
5
  applySavedPresentation
6
- } from "./chunk-UN6S5OID.js";
6
+ } from "./chunk-2DXLKKTS.js";
7
7
  import {
8
8
  SHAPE_NAMES,
9
9
  buildChartData,
@@ -32,7 +32,7 @@ import {
32
32
  templateRegistry,
33
33
  writeCustomTemplatesToFrontmatter,
34
34
  writeCustomThemesToFrontmatter
35
- } from "./chunk-I3ENXLAN.js";
35
+ } from "./chunk-FVFTJ64H.js";
36
36
  import {
37
37
  ASCII_TREE_VOCAB,
38
38
  ASCII_VOCAB,
@@ -50,10 +50,11 @@ import {
50
50
  isLineChar,
51
51
  isPictureFence,
52
52
  isVert,
53
+ parseAsciiDiagram,
53
54
  toCells,
54
55
  toGrid,
55
56
  traceBoxes
56
- } from "./chunk-GGZCJ2MS.js";
57
+ } from "./chunk-JDYWKGG7.js";
57
58
  import {
58
59
  iconMarker
59
60
  } from "./chunk-7ZAAICW4.js";
@@ -5304,6 +5305,26 @@ function computeSideDegrees(nodes, edges) {
5304
5305
  }
5305
5306
  return deg;
5306
5307
  }
5308
+ function leafBoxSize(node, deg) {
5309
+ const labelLines = normalizeLabelLines(node.label);
5310
+ const innerW = labelLines.reduce((w, l) => Math.max(w, cellWidth(l)), 0);
5311
+ const horizDeg = Math.max(deg.top, deg.bottom);
5312
+ const vertDeg = Math.max(deg.left, deg.right);
5313
+ return {
5314
+ wCols: Math.max(node.wCols, innerW + 4, 3, horizDeg > 0 ? 2 * horizDeg + 1 : 0),
5315
+ hRows: Math.max(node.hRows, labelLines.length + 2, 3, vertDeg > 0 ? 2 * vertDeg + 1 : 0)
5316
+ };
5317
+ }
5318
+ function containerBoxMargins(label) {
5319
+ const labelLines = normalizeLabelLines(label);
5320
+ const titleLen = cellWidth(labelLines[0] ?? "");
5321
+ const innerLinesW = labelLines.slice(1).reduce((w, l) => Math.max(w, cellWidth(l)), 0);
5322
+ return {
5323
+ top: 2 + Math.max(0, labelLines.length - 1),
5324
+ side: 2,
5325
+ minWidth: Math.max(titleLen > 0 ? titleLen + 6 : 3, innerLinesW > 0 ? innerLinesW + 4 : 3)
5326
+ };
5327
+ }
5307
5328
  function layoutNodes(nodes, edges) {
5308
5329
  const byId = /* @__PURE__ */ new Map();
5309
5330
  for (const node of nodes) byId.set(node.id, node);
@@ -5357,17 +5378,8 @@ function layoutNodes(nodes, edges) {
5357
5378
  const labelLines = normalizeLabelLines(node.label);
5358
5379
  const children = childIds.get(id) ?? [];
5359
5380
  if (children.length === 0) {
5360
- const innerW = labelLines.reduce((w, l) => Math.max(w, cellWidth(l)), 0);
5361
5381
  const deg = sideDeg.get(id) ?? { top: 0, bottom: 0, left: 0, right: 0 };
5362
- const horizDeg = Math.max(deg.top, deg.bottom);
5363
- const vertDeg = Math.max(deg.left, deg.right);
5364
- const wCols = Math.max(node.wCols, innerW + 4, 3, horizDeg > 0 ? 2 * horizDeg + 1 : 0);
5365
- const hRows = Math.max(
5366
- node.hRows,
5367
- labelLines.length + 2,
5368
- 3,
5369
- vertDeg > 0 ? 2 * vertDeg + 1 : 0
5370
- );
5382
+ const { wCols, hRows } = leafBoxSize(node, deg);
5371
5383
  const rect2 = {
5372
5384
  r0: node.row,
5373
5385
  c0: node.col,
@@ -5379,17 +5391,14 @@ function layoutNodes(nodes, edges) {
5379
5391
  }
5380
5392
  const childRects = placeSiblings(children, (childId) => layoutSubtree(childId, depth + 1));
5381
5393
  const bbox = unionRects(childRects);
5382
- const extraRows = Math.max(0, labelLines.length - 1);
5383
- const titleLen = cellWidth(labelLines[0] ?? "");
5394
+ const margins = containerBoxMargins(node.label);
5384
5395
  const rect = {
5385
- r0: bbox.r0 - 2 - extraRows,
5386
- c0: bbox.c0 - 2,
5387
- r1: bbox.r1 + 2,
5388
- c1: bbox.c1 + 2
5396
+ r0: bbox.r0 - margins.top,
5397
+ c0: bbox.c0 - margins.side,
5398
+ r1: bbox.r1 + margins.side,
5399
+ c1: bbox.c1 + margins.side
5389
5400
  };
5390
- const innerLinesW = labelLines.slice(1).reduce((w, l) => Math.max(w, cellWidth(l)), 0);
5391
- const minW = Math.max(titleLen > 0 ? titleLen + 6 : 3, innerLinesW > 0 ? innerLinesW + 4 : 3);
5392
- if (rect.c1 - rect.c0 + 1 < minW) rect.c1 = rect.c0 + minW - 1;
5401
+ if (rect.c1 - rect.c0 + 1 < margins.minWidth) rect.c1 = rect.c0 + margins.minWidth - 1;
5393
5402
  if (rect.c1 - rect.c0 + 1 < node.wCols) rect.c1 = rect.c0 + node.wCols - 1;
5394
5403
  placed.set(id, { node, rect, labelLines, isContainer: true, depth });
5395
5404
  return rect;
@@ -6237,6 +6246,100 @@ function detectGridStyle(grid) {
6237
6246
  return ascii > unicode ? "ascii" : "unicode";
6238
6247
  }
6239
6248
 
6249
+ // src/doc/asciiDiagram/arrange.ts
6250
+ import { layoutGraph } from "@bendyline/squisq-graph";
6251
+ var CELL_ASPECT = 2;
6252
+ var TARGET_ASPECT = 1.6;
6253
+ function arrangeAsciiDiagram(diagram2, options = {}) {
6254
+ if (diagram2.nodes.length === 0) return diagram2;
6255
+ const first = options.direction ?? "down";
6256
+ const meaning = diagramMeaning(diagram2);
6257
+ const asRendered = diagramMeaning(parseAsciiDiagram(renderAsciiDiagram(diagram2)));
6258
+ for (const direction of [first, first === "down" ? "right" : "down"]) {
6259
+ const arranged = arrangeOnce(diagram2, direction);
6260
+ const back = diagramMeaning(parseAsciiDiagram(renderAsciiDiagram(arranged)));
6261
+ if (back === meaning || back === asRendered) return arranged;
6262
+ }
6263
+ return diagram2;
6264
+ }
6265
+ function diagramMeaning(d) {
6266
+ const labelOf = new Map(d.nodes.map((n) => [n.id, n.label]));
6267
+ const nodes = d.nodes.map((n) => JSON.stringify([n.label, n.containerId ? labelOf.get(n.containerId) : null])).sort();
6268
+ const edges = d.edges.map((e) => {
6269
+ const ends = [labelOf.get(e.source) ?? "", labelOf.get(e.target) ?? ""];
6270
+ if (!e.directed) ends.sort();
6271
+ return JSON.stringify([...ends, e.label ?? null, e.directed]);
6272
+ }).sort();
6273
+ return JSON.stringify([nodes, edges]);
6274
+ }
6275
+ function arrangeOnce(diagram2, direction) {
6276
+ const ids = new Set(diagram2.nodes.map((n) => n.id));
6277
+ const parentOf = (n) => n.containerId && n.containerId !== n.id && ids.has(n.containerId) ? n.containerId : void 0;
6278
+ const containers = new Set(diagram2.nodes.map(parentOf).filter((p) => !!p));
6279
+ const longestLabel = diagram2.edges.reduce((m, e) => Math.max(m, (e.label ?? "").length), 0);
6280
+ const titleRows = diagram2.nodes.filter((n) => containers.has(n.id)).reduce((m, n) => Math.max(m, containerBoxMargins(n.label).top), 2);
6281
+ const right = direction === "right";
6282
+ const settings = {
6283
+ direction,
6284
+ integerCoordinates: true,
6285
+ nodeSpacing: right ? 2 : 4,
6286
+ layerSpacing: right ? Math.max(8, longestLabel + 6) : 3,
6287
+ edgeSpacing: 2,
6288
+ componentSpacing: right ? 4 : 2,
6289
+ containerPadding: { top: titleRows, right: 2, bottom: 2, left: 2 },
6290
+ aspectRatio: TARGET_ASPECT * CELL_ASPECT
6291
+ };
6292
+ const degrees = new Map(
6293
+ diagram2.nodes.map((n) => [n.id, { top: 0, bottom: 0, left: 0, right: 0 }])
6294
+ );
6295
+ for (const e of diagram2.edges) {
6296
+ if (e.source === e.target || !ids.has(e.source) || !ids.has(e.target)) continue;
6297
+ degrees.get(e.source)[right ? "right" : "bottom"]++;
6298
+ degrees.get(e.target)[right ? "left" : "top"]++;
6299
+ }
6300
+ let arranged = diagram2.nodes;
6301
+ for (let pass = 0; pass < 3; pass++) {
6302
+ const graph = {
6303
+ nodes: diagram2.nodes.map((n) => {
6304
+ const parent = parentOf(n);
6305
+ if (containers.has(n.id)) {
6306
+ return { id: n.id, width: containerBoxMargins(n.label).minWidth, height: 3, parent };
6307
+ }
6308
+ const size = leafBoxSize(n, degrees.get(n.id));
6309
+ return { id: n.id, width: size.wCols, height: size.hRows, parent };
6310
+ }),
6311
+ edges: diagram2.edges.map((e, i) => ({ id: String(i), source: e.source, target: e.target }))
6312
+ };
6313
+ const result = layoutGraph(graph, settings);
6314
+ arranged = diagram2.nodes.map((n, i) => {
6315
+ const placed = result.nodes[i];
6316
+ return containers.has(n.id) ? { ...n, col: placed.x, row: placed.y, wCols: graph.nodes[i].width, hRows: 3 } : { ...n, col: placed.x, row: placed.y, wCols: placed.width, hRows: placed.height };
6317
+ });
6318
+ let grew = false;
6319
+ const actual = computeSideDegrees(arranged, diagram2.edges);
6320
+ for (const n of arranged) {
6321
+ if (containers.has(n.id)) continue;
6322
+ const need = leafBoxSize(n, actual.get(n.id));
6323
+ if (need.wCols > n.wCols || need.hRows > n.hRows) {
6324
+ const d = degrees.get(n.id);
6325
+ const a = actual.get(n.id);
6326
+ degrees.set(n.id, {
6327
+ top: Math.max(d.top, a.top),
6328
+ bottom: Math.max(d.bottom, a.bottom),
6329
+ left: Math.max(d.left, a.left),
6330
+ right: Math.max(d.right, a.right)
6331
+ });
6332
+ grew = true;
6333
+ }
6334
+ }
6335
+ if (!grew) break;
6336
+ }
6337
+ return {
6338
+ ...diagram2,
6339
+ nodes: [...arranged].sort((a, b) => a.row - b.row || a.col - b.col)
6340
+ };
6341
+ }
6342
+
6240
6343
  // src/doc/asciiTimeline/render.ts
6241
6344
  var UNICODE_VOCAB2 = {
6242
6345
  rail: "\u2500",
@@ -6589,6 +6692,7 @@ export {
6589
6692
  renderAsciiDiagram,
6590
6693
  isRepairableDiagram,
6591
6694
  repairAsciiDiagram,
6695
+ arrangeAsciiDiagram,
6592
6696
  renderAsciiTimeline,
6593
6697
  renderTree
6594
6698
  };
@@ -27,7 +27,7 @@ import {
27
27
  profileBlockContents,
28
28
  renderMarkdownBlocksHtml,
29
29
  treeToTemplateData
30
- } from "./chunk-GGZCJ2MS.js";
30
+ } from "./chunk-JDYWKGG7.js";
31
31
  import {
32
32
  anchorPoint,
33
33
  base64ToUtf8,
@@ -3155,6 +3155,7 @@ function fullBleedQuote(input, context) {
3155
3155
  }
3156
3156
 
3157
3157
  // src/doc/templates/listBlock.ts
3158
+ var LIST_ITEMS_FLOW = "list-items";
3158
3159
  var LIST_ITEM_LINE_HEIGHT = 1.2;
3159
3160
  var LIST_ITEM_BASE_FONT_PX = 34;
3160
3161
  var LIST_ITEM_GAP_PX = 18;
@@ -3346,6 +3347,7 @@ function listBlock(input, context) {
3346
3347
  content: {
3347
3348
  // Bullets stay bullets; only ordered (or legacy, unflagged) lists count.
3348
3349
  text: ordered ? `${i + 1}.` : "\u2022",
3350
+ flow: { id: LIST_ITEMS_FLOW, role: "marker" },
3349
3351
  style: {
3350
3352
  fontSize: itemFontSize,
3351
3353
  fontFamily: getThemeFont(context, "body"),
@@ -3368,6 +3370,13 @@ function listBlock(input, context) {
3368
3370
  content: {
3369
3371
  text: itemText,
3370
3372
  ...itemHtml ? { html: itemHtml } : {},
3373
+ paragraphs: [
3374
+ {
3375
+ text: itemText,
3376
+ list: { ordered, level: 0, ...ordered ? { number: i + 1 } : {} }
3377
+ }
3378
+ ],
3379
+ flow: { id: LIST_ITEMS_FLOW },
3371
3380
  style: {
3372
3381
  fontSize: itemFontSize,
3373
3382
  fontFamily: getThemeFont(context, "body"),
@@ -11937,25 +11946,43 @@ function bodyNodes(context) {
11937
11946
  (node) => !isMaterializedMediaNode(node)
11938
11947
  );
11939
11948
  }
11940
- function plainListText(list, depth = 0) {
11941
- const indent = " ".repeat(depth);
11949
+ function listParagraphs(list, level = 0) {
11950
+ const ordered = Boolean(list.ordered);
11942
11951
  return list.children.flatMap((item, index) => {
11943
11952
  const ownText = item.children.filter((node) => node.type !== "list").map((node) => extractPlainText(node).trim()).filter(Boolean).join(" ");
11944
- const marker = list.ordered ? `${(list.start ?? 1) + index}.` : "\u2022";
11945
- const lines = ownText ? [`${indent}${marker} ${ownText}`] : [];
11953
+ const paragraphs = ownText ? [
11954
+ {
11955
+ text: ownText,
11956
+ list: { ordered, level, ...ordered ? { number: (list.start ?? 1) + index } : {} }
11957
+ }
11958
+ ] : [];
11946
11959
  for (const child of item.children) {
11947
- if (child.type === "list") lines.push(plainListText(child, depth + 1));
11960
+ if (child.type === "list") paragraphs.push(...listParagraphs(child, level + 1));
11948
11961
  }
11949
- return lines;
11950
- }).join("\n");
11962
+ return paragraphs;
11963
+ });
11951
11964
  }
11952
- function completeBodyText(nodes) {
11953
- return nodes.map((node, index) => {
11954
- const text = node.type === "list" ? plainListText(node) : extractPlainText(node);
11955
- if (index === 0) return text;
11956
- const separator = "\n".repeat(markdownBlockSeparatorLines(nodes[index - 1], node));
11957
- return `${separator}${text}`;
11958
- }).join("").trim();
11965
+ function plainParagraphText({ text, list }) {
11966
+ if (!list) return text;
11967
+ const marker = list.ordered ? `${list.number ?? 1}.` : "\u2022";
11968
+ return `${" ".repeat(list.level)}${marker} ${text}`;
11969
+ }
11970
+ function completeBodyParagraphs(nodes) {
11971
+ const paragraphs = nodes.flatMap((node, index) => {
11972
+ const own = node.type === "list" ? listParagraphs(node) : [{ text: extractPlainText(node) }];
11973
+ if (index === 0) return own;
11974
+ const blankLines = markdownBlockSeparatorLines(nodes[index - 1], node) - 1;
11975
+ return [...Array.from({ length: blankLines }, () => ({ text: "" })), ...own];
11976
+ });
11977
+ while (paragraphs.length && !plainParagraphText(paragraphs[0]).trim()) paragraphs.shift();
11978
+ while (paragraphs.length && !plainParagraphText(paragraphs[paragraphs.length - 1]).trim()) {
11979
+ paragraphs.pop();
11980
+ }
11981
+ const first = paragraphs[0];
11982
+ if (first && !first.list) paragraphs[0] = { ...first, text: first.text.trimStart() };
11983
+ const last = paragraphs[paragraphs.length - 1];
11984
+ if (last) paragraphs[paragraphs.length - 1] = { ...last, text: last.text.trimEnd() };
11985
+ return paragraphs;
11959
11986
  }
11960
11987
  function bodyFontSize(body, context) {
11961
11988
  const base = body.length > 1800 ? 18 : body.length > 1100 ? 21 : body.length > 650 ? 24 : 28;
@@ -11965,7 +11992,8 @@ function contentBlock(input, context) {
11965
11992
  const { theme } = context;
11966
11993
  const title = input.title ?? context.block?.title ?? "";
11967
11994
  const markdown = bodyNodes(context);
11968
- const body = completeBodyText(markdown);
11995
+ const paragraphs = completeBodyParagraphs(markdown);
11996
+ const body = paragraphs.map(plainParagraphText).join("\n");
11969
11997
  const builds = planContentBuilds(markdown, input.build ?? context.block?.build);
11970
11998
  const bodyHtml = renderMarkdownBlocksHtml(markdown, builds);
11971
11999
  const layers = [createBackgroundLayer("bg", theme.colors.background)];
@@ -11996,6 +12024,8 @@ function contentBlock(input, context) {
11996
12024
  text: body,
11997
12025
  ...builds.steps.length ? { buildSteps: builds.steps } : {},
11998
12026
  ...bodyHtml ? { html: bodyHtml } : {},
12027
+ // Only a body with list items has structure `text` cannot carry.
12028
+ ...paragraphs.some((paragraph) => paragraph.list) ? { paragraphs } : {},
11999
12029
  style: {
12000
12030
  fontSize: bodyFontSize(body, context),
12001
12031
  fontFamily: getThemeFont(context, "body"),
@@ -1212,12 +1212,16 @@ function isLattice(diagram) {
1212
1212
  }
1213
1213
 
1214
1214
  // src/doc/templates/diagramLayout.ts
1215
+ import { layoutGraph } from "@bendyline/squisq-graph";
1215
1216
  var DEFAULT_OPTS = {
1216
1217
  gapX: 260,
1217
1218
  gapY: 140,
1218
1219
  gridPad: 80,
1219
1220
  gridOriginX: 80,
1220
- gridOriginY: 80
1221
+ gridOriginY: 80,
1222
+ nodeWidth: 180,
1223
+ nodeHeight: 64,
1224
+ direction: "right"
1221
1225
  };
1222
1226
  function computeDiagramLayout(children, options = {}) {
1223
1227
  const opts = { ...DEFAULT_OPTS, ...options };
@@ -1236,7 +1240,6 @@ function computeDiagramLayout(children, options = {}) {
1236
1240
  }
1237
1241
  }
1238
1242
  if (unpositionedIdx.length > 0) {
1239
- const cols = Math.max(1, Math.ceil(Math.sqrt(unpositionedIdx.length)));
1240
1243
  let baseX = opts.gridOriginX;
1241
1244
  let baseY = opts.gridOriginY;
1242
1245
  const pinned = entries.filter((e) => e.pinned);
@@ -1246,11 +1249,15 @@ function computeDiagramLayout(children, options = {}) {
1246
1249
  baseX = minX;
1247
1250
  baseY = maxY + opts.gridPad + opts.gapY;
1248
1251
  }
1252
+ const placed = layeredPlacement(children, unpositionedIdx, opts);
1253
+ const cols = Math.max(1, Math.ceil(Math.sqrt(unpositionedIdx.length)));
1249
1254
  unpositionedIdx.forEach((entryIdx, k) => {
1250
- const col = k % cols;
1251
- const row = Math.floor(k / cols);
1252
- entries[entryIdx].x = baseX + col * opts.gapX;
1253
- entries[entryIdx].y = baseY + row * opts.gapY;
1255
+ const at = placed?.get(entryIdx) ?? {
1256
+ x: k % cols * opts.gapX,
1257
+ y: Math.floor(k / cols) * opts.gapY
1258
+ };
1259
+ entries[entryIdx].x = baseX + at.x;
1260
+ entries[entryIdx].y = baseY + at.y;
1254
1261
  });
1255
1262
  }
1256
1263
  const nodes = entries.map((e) => ({
@@ -1284,6 +1291,44 @@ function computeDiagramLayout(children, options = {}) {
1284
1291
  }
1285
1292
  return { nodes, edges, warnings };
1286
1293
  }
1294
+ function layeredPlacement(children, unpositionedIdx, opts) {
1295
+ const free = new Set(unpositionedIdx.map((i) => children[i].id));
1296
+ const edges = [];
1297
+ for (const i of unpositionedIdx) {
1298
+ for (const conn of children[i].connectsTo ?? []) {
1299
+ if (free.has(conn.target) && conn.target !== children[i].id) {
1300
+ edges.push({ id: String(edges.length), source: children[i].id, target: conn.target });
1301
+ }
1302
+ }
1303
+ }
1304
+ if (edges.length === 0) return null;
1305
+ const across = opts.direction === "right";
1306
+ const result = layoutGraph(
1307
+ {
1308
+ nodes: unpositionedIdx.map((i) => ({
1309
+ id: children[i].id,
1310
+ width: opts.nodeWidth,
1311
+ height: opts.nodeHeight
1312
+ })),
1313
+ edges
1314
+ },
1315
+ {
1316
+ direction: opts.direction,
1317
+ layerSpacing: Math.max(0, across ? opts.gapX - opts.nodeWidth : opts.gapY - opts.nodeHeight),
1318
+ nodeSpacing: Math.max(0, across ? opts.gapY - opts.nodeHeight : opts.gapX - opts.nodeWidth),
1319
+ componentSpacing: Math.max(0, opts.gapX - opts.nodeWidth),
1320
+ // The template draws its own connectors between card sides; only the
1321
+ // positions are used, so no room is reserved for routing tracks.
1322
+ edgeSpacing: 1
1323
+ }
1324
+ );
1325
+ const out = /* @__PURE__ */ new Map();
1326
+ unpositionedIdx.forEach((entryIdx, k) => {
1327
+ const n = result.nodes[k];
1328
+ out.set(entryIdx, { x: Math.round(n.x), y: Math.round(n.y) });
1329
+ });
1330
+ return out;
1331
+ }
1287
1332
  function makeEdgeId(source, conn) {
1288
1333
  return conn.type ? `${source}->${conn.target}:${conn.type}` : `${source}->${conn.target}`;
1289
1334
  }
@@ -8,7 +8,7 @@ import {
8
8
  expectedSyllablesAt,
9
9
  flattenRenderableBlocks,
10
10
  wordPosAtExpectedSyllables
11
- } from "./chunk-I3ENXLAN.js";
11
+ } from "./chunk-FVFTJ64H.js";
12
12
 
13
13
  // src/narration/types.ts
14
14
  var DEFAULT_FEATURE_CONFIG = Object.freeze({
@@ -1,12 +1,12 @@
1
- import { a6 as Layer, k as Block, Q as Doc, br as TemplateBlock, bs as TemplateContext, y as CustomTemplateDefinition, bu as TemplateRegistry, bx as Theme, c1 as ViewportConfig, a_ as PersistentLayerConfig, at as MotionSpec, R as DocBlock, c2 as ViewportOrientation, aZ as PersistentLayer, bK as TitleBlockInput, bf as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bl as StatHighlightInput, b9 as QuoteBlockInput, Y as FactCardInput, bS 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, c0 as VideoWithCaptionInput, b$ as VideoPullQuoteInput, I as DataTableInput, M as DiagramBlockInput, bN as TreeBlockInput, bG as TimelineBlockInput, 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, bz as ThemeColorScheme, w as CountUpSpec, bB as ThemeRegistry, aR as PageEmphasis, bA as ThemePageStyle, S as DocDiagnostic, P as DiagramTemplateNode, O as DiagramTemplateEdge, bJ as TimelineTemplateTrack, bI as TimelineTemplateLink } from '../Doc-CwmJZayl.js';
2
- export { V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, a8 as LayoutHints, bb as RenderStyle, by as ThemeColorPalette, bE as ThemeStyle, bF as ThemeTypography, bT as VIEWPORT_PRESETS, c3 as ViewportPreset, c8 as createTemplateContext, cf as getLayoutHints, ci as getTwoColumnPositions, cj as getViewport, ck as getViewportOrientation, co as isTemplateBlock, cu as scaledFontSize } from '../Doc-CwmJZayl.js';
1
+ import { a6 as Layer, k as Block, Q as Doc, br as TemplateBlock, bs as TemplateContext, y as CustomTemplateDefinition, bu as TemplateRegistry, bA as Theme, c4 as ViewportConfig, a_ as PersistentLayerConfig, at as MotionSpec, R as DocBlock, c5 as ViewportOrientation, aZ as PersistentLayer, bN as TitleBlockInput, bf as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bl as StatHighlightInput, b9 as QuoteBlockInput, Y as FactCardInput, bV 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, c3 as VideoWithCaptionInput, c2 as VideoPullQuoteInput, I as DataTableInput, M as DiagramBlockInput, bQ as TreeBlockInput, bJ as TimelineBlockInput, 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, bC as ThemeColorScheme, w as CountUpSpec, bE as ThemeRegistry, aR as PageEmphasis, bD as ThemePageStyle, S as DocDiagnostic, P as DiagramTemplateNode, O as DiagramTemplateEdge, bM as TimelineTemplateTrack, bL as TimelineTemplateLink } from '../Doc-czvrR7Oy.js';
2
+ export { V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, a8 as LayoutHints, bb as RenderStyle, bB as ThemeColorPalette, bH as ThemeStyle, bI as ThemeTypography, bW as VIEWPORT_PRESETS, c6 as ViewportPreset, cb as createTemplateContext, ci as getLayoutHints, cl as getTwoColumnPositions, cm as getViewport, cn as getViewportOrientation, cr as isTemplateBlock, cx as scaledFontSize } from '../Doc-czvrR7Oy.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-B5LehyBR.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-B5LehyBR.js';
5
+ import { c as PageSection } from '../materializePageSection-mTAAHNlA.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-mTAAHNlA.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-jYL3QKTn.js';
9
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-Bsn4YNuq.js';
10
10
 
11
11
  /** Pure build planning and evaluation, shared by interactive slides and frame export. */
12
12
 
@@ -1347,9 +1347,11 @@ declare function timelineBlock(input: TimelineBlockInput, context: TemplateConte
1347
1347
  *
1348
1348
  * Layout rules:
1349
1349
  * 1. Children with both `x` and `y` set keep their authored coordinates.
1350
- * 2. Children missing either coordinate are auto-placed in a square-ish
1351
- * grid in declaration order, offset below the bounding box of the
1352
- * explicitly-positioned children.
1350
+ * 2. Children missing either coordinate are auto-placed below the bounding
1351
+ * box of the explicitly-positioned children: by a layered layout
1352
+ * (squisq-graph) when connections run between them, so the flow reads
1353
+ * one way and crosses little, otherwise in a square-ish grid in
1354
+ * declaration order.
1353
1355
  * 3. Edges come from each child's `connectsTo`. Targets that don't match
1354
1356
  * any sibling id are dropped (and counted in `warnings`).
1355
1357
  */
@@ -1394,6 +1396,11 @@ interface DiagramLayoutOptions {
1394
1396
  gridOriginX?: number;
1395
1397
  /** Origin y for the grid when no explicit nodes anchor it. Default: 80. */
1396
1398
  gridOriginY?: number;
1399
+ /** Node size the layered layout spaces for. Default: 180 × 64, the diagram card. */
1400
+ nodeWidth?: number;
1401
+ nodeHeight?: number;
1402
+ /** Which way connected auto-placed nodes flow. Default: `right`. */
1403
+ direction?: 'right' | 'down';
1397
1404
  }
1398
1405
  /**
1399
1406
  * Compute node positions and edges for a diagram from a parent block's
@@ -3990,6 +3997,31 @@ declare function isRepairableDiagram(text: string): boolean;
3990
3997
  */
3991
3998
  declare function repairAsciiDiagram(text: string): RepairResult | null;
3992
3999
 
4000
+ /**
4001
+ * Auto-arrange for ASCII diagrams: every box gets a new grid position from
4002
+ * squisq-graph's layered layout, so connections flow one way and cross as
4003
+ * little as possible. Labels, containment and the edge set are untouched;
4004
+ * only `col`/`row` (and box sizes grown to what the renderer would draw
4005
+ * anyway) change.
4006
+ *
4007
+ * Box sizes match `renderAsciiDiagram`'s own rules (`leafBoxSize`,
4008
+ * `containerBoxMargins`), and the renderer derives container rects from
4009
+ * their children, so the arranged diagram renders without the collision
4010
+ * pass having to move anything.
4011
+ *
4012
+ * The renderer joins two boxes side to side only when their rows overlap,
4013
+ * so top-to-bottom is the flow it always draws faithfully. Every
4014
+ * arrangement is rendered and re-parsed before it is returned; one that
4015
+ * would lose an edge or a label falls back to the other direction, and
4016
+ * failing both, the diagram comes back unchanged.
4017
+ */
4018
+
4019
+ interface ArrangeAsciiDiagramOptions {
4020
+ /** Which way connections flow: top to bottom (default) or left to right. */
4021
+ direction?: 'down' | 'right';
4022
+ }
4023
+ declare function arrangeAsciiDiagram(diagram: AsciiDiagram, options?: ArrangeAsciiDiagramOptions): AsciiDiagram;
4024
+
3993
4025
  /**
3994
4026
  * Mapping between the grid-native ASCII diagram model and the diagram
3995
4027
  * canvas / template model (canvas units, the same space as `Block.x`/`y`).
@@ -4310,4 +4342,4 @@ declare function treeFromMarkdownList(list: MarkdownList): Tree;
4310
4342
  /** Find the first top-level markdown list in a block's body, if any. */
4311
4343
  declare function findFirstList(contents: MarkdownBlockNode[] | undefined): MarkdownList | undefined;
4312
4344
 
4313
- export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, type AccentLayout, 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 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, 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 ParsedStat, PersistentLayerConfig, 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, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, blockBuildSteps, 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, 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, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isPictureFence, 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, 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, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };
4345
+ 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 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, 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 ParsedStat, PersistentLayerConfig, 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, 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, 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, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isPictureFence, 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, 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, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };
package/dist/doc/index.js CHANGED
@@ -16,6 +16,7 @@ import {
16
16
  MAX_COVER_SLIDE_DURATION_SECONDS,
17
17
  PAGE_BASE_CSS,
18
18
  applyNarrationTiming,
19
+ arrangeAsciiDiagram,
19
20
  buildDashboardCellChrome,
20
21
  buildPageCss,
21
22
  buildPageCssVars,
@@ -74,9 +75,9 @@ import {
74
75
  validateMarkdownSource,
75
76
  wordRevealDelay,
76
77
  writeDashboardLayoutsToFrontmatter
77
- } from "../chunk-RHLRHRWY.js";
78
+ } from "../chunk-ECPR5JKY.js";
78
79
  import "../chunk-FTN6SGW5.js";
79
- import "../chunk-UN6S5OID.js";
80
+ import "../chunk-2DXLKKTS.js";
80
81
  import {
81
82
  BASE_INPUT_DESCRIPTORS,
82
83
  BLOCK_MEDIA_LAYOUT_POLICIES,
@@ -190,7 +191,7 @@ import {
190
191
  wrapWithPersistentLayers,
191
192
  writeCustomTemplatesToFrontmatter,
192
193
  writeCustomThemesToFrontmatter
193
- } from "../chunk-I3ENXLAN.js";
194
+ } from "../chunk-FVFTJ64H.js";
194
195
  import {
195
196
  ASCII_CHAR_H,
196
197
  ASCII_CHAR_W,
@@ -242,7 +243,7 @@ import {
242
243
  treeFromMarkdownList,
243
244
  treeFromTemplateData,
244
245
  treeToTemplateData
245
- } from "../chunk-GGZCJ2MS.js";
246
+ } from "../chunk-JDYWKGG7.js";
246
247
  import "../chunk-SVN7T6BK.js";
247
248
  import {
248
249
  PATH_SHAPE_KINDS,
@@ -336,6 +337,7 @@ export {
336
337
  anchorPoint,
337
338
  applyNarrationTiming,
338
339
  applyRenderStyleToLayers,
340
+ arrangeAsciiDiagram,
339
341
  asciiCellToCanvas,
340
342
  asciiDiagramFromBlocks,
341
343
  asciiDiagramFromTemplateData,
@@ -1,4 +1,4 @@
1
- import { bx as Theme } from '../Doc-CwmJZayl.js';
1
+ import { bA as Theme } from '../Doc-czvrR7Oy.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 { r as ColorScheme, A as AccentImage, br as TemplateBlock } from '../Doc-CwmJZayl.js';
3
+ import { r as ColorScheme, A as AccentImage, br as TemplateBlock } from '../Doc-czvrR7Oy.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-CtRgL0wh.js';
2
- export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-CtRgL0wh.js';
1
+ import { a as ImageEditDoc, b as ImageEditLayer } from '../ImageEditDoc-BDkpwCMN.js';
2
+ export { E as EditorLayerMeta, I as ImageEditCanvas, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BDkpwCMN.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-CwmJZayl.js';
5
+ import '../Doc-czvrR7Oy.js';
6
6
  import '../types-Zk8qYuaT.js';
7
7
 
8
8
  /**
package/dist/index.d.ts CHANGED
@@ -1,12 +1,12 @@
1
1
  export { B as BUILD_EFFECTS, a as BUILD_MODES, b as BUILD_PARAM_KEYS, c as BUILD_PREVIOUS, d as BuildAdvance, e as BuildCursor, f as BuildSpec, g as BuildStep, h as BuildTiming, D as DEFAULT_MARKDOWN_SAFETY_LIMITS, i as DEFAULT_TRANSITION_DURATION_SECONDS, H as HeadingAttributes, j as HeadingTemplateAnnotation, k as HtmlComment, l as HtmlElement, m as HtmlNode, n as HtmlText, M as MarkdownBlockNode, o as MarkdownBlockquote, p as MarkdownBreak, q as MarkdownCodeBlock, r as MarkdownContainerDirective, s as MarkdownDefinitionDescription, t as MarkdownDefinitionList, u as MarkdownDefinitionTerm, v as MarkdownDocument, w as MarkdownEmphasis, x as MarkdownFootnoteDefinition, y as MarkdownFootnoteReference, z as MarkdownHeading, A as MarkdownHtmlBlock, C as MarkdownImage, E as MarkdownImageReference, F as MarkdownInlineCode, G as MarkdownInlineHtml, I as MarkdownInlineIcon, J as MarkdownInlineMath, K as MarkdownInlineNode, L as MarkdownLeafDirective, N as MarkdownLimitError, O as MarkdownLink, P as MarkdownLinkDefinition, Q as MarkdownLinkReference, R as MarkdownList, S as MarkdownListItem, T as MarkdownMathBlock, U as MarkdownMention, V as MarkdownNode, W as MarkdownParagraph, X as MarkdownPoint, Y as MarkdownSafetyLimits, Z as MarkdownSourcePosition, _ as MarkdownStrikethrough, $ as MarkdownStrong, a0 as MarkdownSubscript, a1 as MarkdownSuperscript, a2 as MarkdownTable, a3 as MarkdownTableCell, a4 as MarkdownTableRow, a5 as MarkdownText, a6 as MarkdownTextDirective, a7 as MarkdownThematicBreak, a8 as ParseOptions, a9 as StringifyOptions, aa as TRANSITION_DIRECTIONS, ab as TRANSITION_TYPES, ac as Transition, ad as TransitionDirection, ae as TransitionType, af as assertMarkdownDocumentWithinLimits, ag as assertMarkdownSourceWithinLimits, ah as buildSpecParams, ai as isTransitionType, aj as normalizeTransitionDirection, ak as normalizeTransitionType, al as parseBuildSpec, am as recordBuildAdvance, an as resolveBlockTransition, ao as resolveMarkdownSafetyLimits, ap as resolveTransitionDuration } from './types-Zk8qYuaT.js';
2
2
  export { B as BoundingBox, C as Coordinates } from './Types-sh2VRxfo.js';
3
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as 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 SvgLayer, bo as THEME_SCHEMA_VERSION, bp as TableLayer, bq as TableLayerStyle, br as TemplateBlock, bs as TemplateContext, bt as TemplateFunction, bu as TemplateRegistry, bv as TextLayer, bw as TextStyle, bx as Theme, by as ThemeColorPalette, bz as ThemeColorScheme, bA as ThemePageStyle, bB as ThemeRegistry, bC as ThemeSchemaVersion, bD as ThemeSeedColors, bE as ThemeStyle, bF as ThemeTypography, bG as TimelineBlockInput, bH as TimelineTemplateEvent, bI as TimelineTemplateLink, bJ as TimelineTemplateTrack, bK as TitleBlockInput, bL as TitleCaptionConfig, bM as TranscriptBlockInput, bN as TreeBlockInput, bO as TreeLayer, bP as TreeLayerItem, bQ as TreeLayerStyle, bR as TreeTemplateItem, bS as TwoColumnInput, bT as VIEWPORT_PRESETS, bU as VideoEmbedLayer, bV as VideoLayer, bW as VideoPipPosition, bX as VideoPipShape, bY as VideoPipSize, bZ as VideoPlacement, b_ as VideoPresentation, b$ as VideoPullQuoteInput, c0 as VideoWithCaptionInput, c1 as ViewportConfig, c2 as ViewportOrientation, c3 as ViewportPreset, c4 as VignetteConfig, c5 as applySurface, c6 as calculateDuration, c7 as calculateFontScale, c8 as createTemplateContext, c9 as createTheme, ca as createThemeRegistry, cb as getAspectRatioString, cc as getBlockAtTime, cd as getCaptionAtTime, ce as getDocPlaybackDuration, cf as getLayoutHints, cg as getSafeTextBounds, ch as getSegmentAtTime, ci as getTwoColumnPositions, cj as getViewport, ck as getViewportOrientation, cl as isCustomTemplateDefinition, cm as isMotionProfileName, cn as isPersistentLayerTemplate, co as isTemplateBlock, cp as layoutScaledFontSize, cq as readFrontmatterMotion, cr as resolveMediaSchedule, cs as resolveMotionForDoc, ct as resolveMotionProfile, cu as scaledFontSize, cv as scheduleMediaClip, cw as validateCustomTemplateDefinition } from './Doc-CwmJZayl.js';
3
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as 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 SvgLayer, bo as THEME_SCHEMA_VERSION, bp as TableLayer, bq as TableLayerStyle, br as TemplateBlock, bs as TemplateContext, bt as TemplateFunction, bu as TemplateRegistry, bv as TextFlow, bw as TextLayer, bx as TextParagraph, by as TextParagraphList, bz as TextStyle, bA as Theme, bB as ThemeColorPalette, bC as ThemeColorScheme, bD as ThemePageStyle, bE as ThemeRegistry, bF as ThemeSchemaVersion, bG as ThemeSeedColors, bH as ThemeStyle, bI as ThemeTypography, bJ as TimelineBlockInput, bK as TimelineTemplateEvent, bL as TimelineTemplateLink, bM as TimelineTemplateTrack, bN as TitleBlockInput, bO as TitleCaptionConfig, bP as TranscriptBlockInput, bQ as TreeBlockInput, bR as TreeLayer, bS as TreeLayerItem, bT as TreeLayerStyle, bU as TreeTemplateItem, bV as TwoColumnInput, bW as VIEWPORT_PRESETS, bX as VideoEmbedLayer, bY as VideoLayer, bZ as VideoPipPosition, b_ as VideoPipShape, b$ as VideoPipSize, c0 as VideoPlacement, c1 as VideoPresentation, c2 as VideoPullQuoteInput, c3 as VideoWithCaptionInput, c4 as ViewportConfig, c5 as ViewportOrientation, c6 as ViewportPreset, c7 as VignetteConfig, c8 as applySurface, c9 as calculateDuration, ca as calculateFontScale, cb as createTemplateContext, cc as createTheme, cd as createThemeRegistry, ce as getAspectRatioString, cf as getBlockAtTime, cg as getCaptionAtTime, ch as getDocPlaybackDuration, ci as getLayoutHints, cj as getSafeTextBounds, ck as getSegmentAtTime, cl as getTwoColumnPositions, cm as getViewport, cn as getViewportOrientation, co as isCustomTemplateDefinition, cp as isMotionProfileName, cq as isPersistentLayerTemplate, cr as isTemplateBlock, cs as layoutScaledFontSize, ct as readFrontmatterMotion, cu as resolveMediaSchedule, cv as resolveMotionForDoc, cw as resolveMotionProfile, cx as scaledFontSize, cy as scheduleMediaClip, cz as validateCustomTemplateDefinition } from './Doc-czvrR7Oy.js';
4
4
  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';
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-jYL3QKTn.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-Bsn4YNuq.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-CtRgL0wh.js';
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, BuildTimeline, BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, ClipBox, ConnectorAnchor, ConnectorPort, ConnectorRouting, ConnectorSnapPoint, ContentBuildPlan, 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, blockBuildSteps, 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, 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, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isPictureFence, 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, 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, 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-B5LehyBR.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from './ImageEditDoc-BDkpwCMN.js';
8
+ export { ASCII_CHAR_H, ASCII_CHAR_W, ASCII_DIAGRAM_FENCE_LANGS, ASCII_TIMELINE_FENCE_LANGS, AccentLayout, ArrangeAsciiDiagramOptions, 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, BuildTimeline, BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, ClipBox, ConnectorAnchor, ConnectorPort, ConnectorRouting, ConnectorSnapPoint, ContentBuildPlan, 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, arrangeAsciiDiagram, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, blockBuildSteps, 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, 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, hasBlockBuilds, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isMaterializedMediaNode, isPictureFence, 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, 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, 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-mTAAHNlA.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';
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "./chunk-XFE6WYDK.js";
30
+ } from "./chunk-Y3HL26X3.js";
31
31
  import {
32
32
  fenceRendererLangs
33
33
  } from "./chunk-PGI7HSWE.js";
@@ -171,6 +171,7 @@ import {
171
171
  MAX_COVER_SLIDE_DURATION_SECONDS,
172
172
  PAGE_BASE_CSS,
173
173
  applyNarrationTiming,
174
+ arrangeAsciiDiagram,
174
175
  buildDashboardCellChrome,
175
176
  buildPageCss,
176
177
  buildPageCssVars,
@@ -229,7 +230,7 @@ import {
229
230
  validateMarkdownSource,
230
231
  wordRevealDelay,
231
232
  writeDashboardLayoutsToFrontmatter
232
- } from "./chunk-RHLRHRWY.js";
233
+ } from "./chunk-ECPR5JKY.js";
233
234
  import {
234
235
  buildNarrationTimingJson,
235
236
  parseNarrationTimingJson,
@@ -261,7 +262,7 @@ import {
261
262
  serializePresentationPlan,
262
263
  transformNarratedSegment,
263
264
  usesDynamicPresentation
264
- } from "./chunk-UN6S5OID.js";
265
+ } from "./chunk-2DXLKKTS.js";
265
266
  import {
266
267
  BASE_INPUT_DESCRIPTORS,
267
268
  BLOCK_MEDIA_LAYOUT_POLICIES,
@@ -381,7 +382,7 @@ import {
381
382
  wrapWithPersistentLayers,
382
383
  writeCustomTemplatesToFrontmatter,
383
384
  writeCustomThemesToFrontmatter
384
- } from "./chunk-I3ENXLAN.js";
385
+ } from "./chunk-FVFTJ64H.js";
385
386
  import {
386
387
  ASCII_CHAR_H,
387
388
  ASCII_CHAR_W,
@@ -435,7 +436,7 @@ import {
435
436
  treeFromMarkdownList,
436
437
  treeFromTemplateData,
437
438
  treeToTemplateData
438
- } from "./chunk-GGZCJ2MS.js";
439
+ } from "./chunk-JDYWKGG7.js";
439
440
  import {
440
441
  extractContent,
441
442
  mapElementToBlock,
@@ -833,6 +834,7 @@ export {
833
834
  applySavedPresentation,
834
835
  applySurface,
835
836
  applyTransform,
837
+ arrangeAsciiDiagram,
836
838
  arrayItemKind,
837
839
  asciiCellToCanvas,
838
840
  asciiDiagramFromBlocks,
@@ -1,4 +1,4 @@
1
- import { bx as Theme, bm as SurfaceScheme } from '../Doc-CwmJZayl.js';
1
+ import { bA as Theme, bm as SurfaceScheme } from '../Doc-czvrR7Oy.js';
2
2
  import '../types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { k as Block, aT as PageSectionKind, aR as PageEmphasis, bz as ThemeColorScheme, aP as PageBackground, bx as Theme, c1 as ViewportConfig, y as CustomTemplateDefinition, aW as PageVariant, bk as StartBlockConfig, Q as Doc, bA as ThemePageStyle } from './Doc-CwmJZayl.js';
1
+ import { k as Block, aT as PageSectionKind, aR as PageEmphasis, bC as ThemeColorScheme, aP as PageBackground, bA as Theme, c4 as ViewportConfig, y as CustomTemplateDefinition, aW as PageVariant, bk as StartBlockConfig, Q as Doc, bD as ThemePageStyle } from './Doc-czvrR7Oy.js';
2
2
  import { M as MarkdownBlockNode } from './types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { al as MediaCut, Q as Doc, aj as MediaClip, cx as MediaFxOpId, cy as MediaFxChain } from '../Doc-CwmJZayl.js';
2
- export { cz as MEDIA_EDIT_PARAMS, cA as MEDIA_FX_ORDER, cB as MEDIA_FX_SPECS, ak as MediaCrop, cC as MediaEditParamKey, cD as MediaEditParamValues, am as MediaEdits, cE as MediaFxOp, cF as formatMediaNumber, cG as hasRenderableFx, cH as mediaEditHtmlAttribute, cI as mediaEditValuesFromAttributes, cJ as mediaEditValuesFromParams, cK as mediaRenderKey, cL as normalizeMediaCrop, cM as normalizeMediaCuts, cN as parseMediaCrop, cO as parseMediaCuts, cP as parseMediaEdits, cQ as parseMediaFx, cR as serializeMediaCrop, cS as serializeMediaCuts, cT as serializeMediaEdits, cU as serializeMediaFx } from '../Doc-CwmJZayl.js';
1
+ import { al as MediaCut, Q as Doc, aj as MediaClip, cA as MediaFxOpId, cB as MediaFxChain } from '../Doc-czvrR7Oy.js';
2
+ export { cC as MEDIA_EDIT_PARAMS, cD as MEDIA_FX_ORDER, cE as MEDIA_FX_SPECS, ak as MediaCrop, cF as MediaEditParamKey, cG as MediaEditParamValues, am as MediaEdits, cH as MediaFxOp, cI as formatMediaNumber, cJ as hasRenderableFx, cK as mediaEditHtmlAttribute, cL as mediaEditValuesFromAttributes, cM as mediaEditValuesFromParams, cN as mediaRenderKey, cO as normalizeMediaCrop, cP as normalizeMediaCuts, cQ as parseMediaCrop, cR as parseMediaCuts, cS as parseMediaEdits, cT as parseMediaFx, cU as serializeMediaCrop, cV as serializeMediaCuts, cW as serializeMediaEdits, cX as serializeMediaFx } from '../Doc-czvrR7Oy.js';
3
3
  import '../types-Zk8qYuaT.js';
4
4
 
5
5
  /**
@@ -1,4 +1,4 @@
1
- import { Q as Doc, f as AudioBookmark } from '../Doc-CwmJZayl.js';
1
+ import { Q as Doc, f as AudioBookmark } from '../Doc-czvrR7Oy.js';
2
2
  import { d as BuildAdvance } from '../types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "../chunk-XFE6WYDK.js";
30
+ } from "../chunk-Y3HL26X3.js";
31
31
  import "../chunk-NEWNNLWN.js";
32
32
  import {
33
33
  buildNarrationTimingJson,
@@ -41,8 +41,8 @@ import {
41
41
  wordIndexAtChar,
42
42
  wordIndexAtTime,
43
43
  wordPosAtExpectedSyllables
44
- } from "../chunk-I3ENXLAN.js";
45
- import "../chunk-GGZCJ2MS.js";
44
+ } from "../chunk-FVFTJ64H.js";
45
+ import "../chunk-JDYWKGG7.js";
46
46
  import "../chunk-FUBMT6SJ.js";
47
47
  import "../chunk-HYJ63N6V.js";
48
48
  import "../chunk-L7QZORLB.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  profileBlockContents,
3
3
  recommendTemplatesForBlock
4
- } from "../chunk-GGZCJ2MS.js";
4
+ } from "../chunk-JDYWKGG7.js";
5
5
  import "../chunk-MWSGNEH6.js";
6
6
  import "../chunk-P53Z4RYC.js";
7
7
  export {
@@ -1,10 +1,10 @@
1
1
  export { B as BUILD_EFFECTS, a as BUILD_MODES, b as BUILD_PARAM_KEYS, c as BUILD_PREVIOUS, d as BuildAdvance, e as BuildCursor, f as BuildSpec, g as BuildStep, h as BuildTiming, i as DEFAULT_TRANSITION_DURATION_SECONDS, aa as TRANSITION_DIRECTIONS, ab as TRANSITION_TYPES, ac as Transition, ad as TransitionDirection, ae as TransitionType, ah as buildSpecParams, ai as isTransitionType, aj as normalizeTransitionDirection, ak as normalizeTransitionType, al as parseBuildSpec, am as recordBuildAdvance, an as resolveBlockTransition, ap as resolveTransitionDuration } from '../types-Zk8qYuaT.js';
2
2
  export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
3
- import { Q as Doc, bx as Theme, bA as ThemePageStyle, bz as ThemeColorScheme, K as DeepPartial, bD as ThemeSeedColors, by as ThemeColorPalette, _ as FontFamilyKind, Z as FontFamily } from '../Doc-CwmJZayl.js';
4
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, 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, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, 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, $ 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 SvgLayer, bo as THEME_SCHEMA_VERSION, bp as TableLayer, bq as TableLayerStyle, br as TemplateBlock, bs as TemplateContext, bt as TemplateFunction, bu as TemplateRegistry, bv as TextLayer, bw as TextStyle, bB as ThemeRegistry, bC as ThemeSchemaVersion, bE as ThemeStyle, bF as ThemeTypography, bG as TimelineBlockInput, bH as TimelineTemplateEvent, bI as TimelineTemplateLink, bJ as TimelineTemplateTrack, bK as TitleBlockInput, bL as TitleCaptionConfig, bM as TranscriptBlockInput, bN as TreeBlockInput, bO as TreeLayer, bP as TreeLayerItem, bQ as TreeLayerStyle, bR as TreeTemplateItem, bS as TwoColumnInput, bT as VIEWPORT_PRESETS, bU as VideoEmbedLayer, bV as VideoLayer, bW as VideoPipPosition, bX as VideoPipShape, bY as VideoPipSize, bZ as VideoPlacement, b_ as VideoPresentation, b$ as VideoPullQuoteInput, c0 as VideoWithCaptionInput, c1 as ViewportConfig, c2 as ViewportOrientation, c3 as ViewportPreset, c4 as VignetteConfig, c5 as applySurface, c6 as calculateDuration, c7 as calculateFontScale, c8 as createTemplateContext, c9 as createTheme, ca as createThemeRegistry, cb as getAspectRatioString, cc as getBlockAtTime, cd as getCaptionAtTime, ce as getDocPlaybackDuration, cf as getLayoutHints, cg as getSafeTextBounds, ch as getSegmentAtTime, ci as getTwoColumnPositions, cj as getViewport, ck as getViewportOrientation, cl as isCustomTemplateDefinition, cm as isMotionProfileName, cn as isPersistentLayerTemplate, co as isTemplateBlock, cp as layoutScaledFontSize, cq as readFrontmatterMotion, cr as resolveMediaSchedule, cs as resolveMotionForDoc, ct as resolveMotionProfile, cu as scaledFontSize, cv as scheduleMediaClip, cw as validateCustomTemplateDefinition } from '../Doc-CwmJZayl.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-jYL3QKTn.js';
3
+ import { Q as Doc, bA as Theme, bD as ThemePageStyle, bC as ThemeColorScheme, K as DeepPartial, bG as ThemeSeedColors, bB as ThemeColorPalette, _ as FontFamilyKind, Z as FontFamily } from '../Doc-czvrR7Oy.js';
4
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, 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, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, 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, $ 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 SvgLayer, bo as THEME_SCHEMA_VERSION, bp as TableLayer, bq as TableLayerStyle, br as TemplateBlock, bs as TemplateContext, bt as TemplateFunction, bu as TemplateRegistry, bv as TextFlow, bw as TextLayer, bx as TextParagraph, by as TextParagraphList, bz as TextStyle, bE as ThemeRegistry, bF as ThemeSchemaVersion, bH as ThemeStyle, bI as ThemeTypography, bJ as TimelineBlockInput, bK as TimelineTemplateEvent, bL as TimelineTemplateLink, bM as TimelineTemplateTrack, bN as TitleBlockInput, bO as TitleCaptionConfig, bP as TranscriptBlockInput, bQ as TreeBlockInput, bR as TreeLayer, bS as TreeLayerItem, bT as TreeLayerStyle, bU as TreeTemplateItem, bV as TwoColumnInput, bW as VIEWPORT_PRESETS, bX as VideoEmbedLayer, bY as VideoLayer, bZ as VideoPipPosition, b_ as VideoPipShape, b$ as VideoPipSize, c0 as VideoPlacement, c1 as VideoPresentation, c2 as VideoPullQuoteInput, c3 as VideoWithCaptionInput, c4 as ViewportConfig, c5 as ViewportOrientation, c6 as ViewportPreset, c7 as VignetteConfig, c8 as applySurface, c9 as calculateDuration, ca as calculateFontScale, cb as createTemplateContext, cc as createTheme, cd as createThemeRegistry, ce as getAspectRatioString, cf as getBlockAtTime, cg as getCaptionAtTime, ch as getDocPlaybackDuration, ci as getLayoutHints, cj as getSafeTextBounds, ck as getSegmentAtTime, cl as getTwoColumnPositions, cm as getViewport, cn as getViewportOrientation, co as isCustomTemplateDefinition, cp as isMotionProfileName, cq as isPersistentLayerTemplate, cr as isTemplateBlock, cs as layoutScaledFontSize, ct as readFrontmatterMotion, cu as resolveMediaSchedule, cv as resolveMotionForDoc, cw as resolveMotionProfile, cx as scaledFontSize, cy as scheduleMediaClip, cz as validateCustomTemplateDefinition } from '../Doc-czvrR7Oy.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-Bsn4YNuq.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-CtRgL0wh.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BDkpwCMN.js';
8
8
 
9
9
  /**
10
10
  * Runtime validation for the canonical {@link Doc} JSON shape.
@@ -1,4 +1,4 @@
1
- import { bx as Theme, bB as ThemeRegistry } from './Doc-CwmJZayl.js';
1
+ import { bA as Theme, bE as ThemeRegistry } from './Doc-czvrR7Oy.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,4 +1,4 @@
1
- import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-CwmJZayl.js';
1
+ import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-czvrR7Oy.js';
2
2
  import '../types-Zk8qYuaT.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- import { Q as Doc, r as ColorScheme, k as Block, br as TemplateBlock } from '../Doc-CwmJZayl.js';
2
- import { i as PageTransformHints } from '../materializePageSection-B5LehyBR.js';
1
+ import { Q as Doc, r as ColorScheme, k as Block, br as TemplateBlock } from '../Doc-czvrR7Oy.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-mTAAHNlA.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
4
  import { f as BuildSpec } from '../types-Zk8qYuaT.js';
5
5
 
@@ -24,9 +24,9 @@ import {
24
24
  serializePresentationPlan,
25
25
  transformNarratedSegment,
26
26
  usesDynamicPresentation
27
- } from "../chunk-UN6S5OID.js";
28
- import "../chunk-I3ENXLAN.js";
29
- import "../chunk-GGZCJ2MS.js";
27
+ } from "../chunk-2DXLKKTS.js";
28
+ import "../chunk-FVFTJ64H.js";
29
+ import "../chunk-JDYWKGG7.js";
30
30
  import "../chunk-SVN7T6BK.js";
31
31
  import "../chunk-FUBMT6SJ.js";
32
32
  import "../chunk-HYJ63N6V.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.12.5",
3
+ "version": "2.13.0",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -154,6 +154,7 @@
154
154
  "typecheck": "tsc --noEmit"
155
155
  },
156
156
  "dependencies": {
157
+ "@bendyline/squisq-graph": "2.13.0",
157
158
  "genson-js": "0.0.8",
158
159
  "hast-util-from-html": "2.0.3",
159
160
  "localforage": "1.10.0",