@bendyline/squisq 2.10.0 → 2.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/dist/{Doc-DTyeaFuW.d.ts → Doc-CRPQCkHn.d.ts} +34 -2
  2. package/dist/{ImageEditDoc-dFEclQ9l.d.ts → ImageEditDoc-MbvJM1HE.d.ts} +1 -1
  3. package/dist/{chunk-IO5XO6XH.js → chunk-64I44JAP.js} +1 -1
  4. package/dist/{chunk-CUYHFOFL.js → chunk-6ATZOUCQ.js} +223 -14
  5. package/dist/{chunk-DRFJU4MK.js → chunk-B26DU2RH.js} +353 -3
  6. package/dist/{chunk-T3B4WJBR.js → chunk-B3AK7SLZ.js} +87 -5
  7. package/dist/{chunk-7YEZFHLS.js → chunk-O7HLQ22N.js} +11 -0
  8. package/dist/{chunk-XSW4QTMB.js → chunk-QQ4I5HWV.js} +228 -6
  9. package/dist/{chunk-NBKAXPSX.js → chunk-TMOHAFYE.js} +1 -0
  10. package/dist/{chunk-MIKKUKOD.js → chunk-UBFT2CDQ.js} +30 -15
  11. package/dist/{chunk-FCG3BIZN.js → chunk-UNVHAK3A.js} +5 -1
  12. package/dist/{chunk-NFHMHYUV.js → chunk-UXKFSYTQ.js} +1 -1
  13. package/dist/doc/index.d.ts +123 -6
  14. package/dist/doc/index.js +13 -5
  15. package/dist/fence/index.d.ts +1 -1
  16. package/dist/generate/index.d.ts +1 -1
  17. package/dist/imageEdit/index.d.ts +3 -3
  18. package/dist/index.d.ts +8 -7
  19. package/dist/index.js +22 -10
  20. package/dist/jsonForm/index.d.ts +1 -1
  21. package/dist/markdown/index.js +3 -3
  22. package/dist/{materializePageSection-BRNIINlU.d.ts → materializePageSection-BeUPHeCl.d.ts} +1 -1
  23. package/dist/narration/index.d.ts +1 -1
  24. package/dist/narration/index.js +4 -4
  25. package/dist/proof/index.d.ts +22 -3
  26. package/dist/proof/index.js +1 -1
  27. package/dist/recommend/index.js +1 -1
  28. package/dist/schemas/index.d.ts +4 -4
  29. package/dist/storage/index.js +1 -1
  30. package/dist/table/index.d.ts +123 -0
  31. package/dist/table/index.js +298 -0
  32. package/dist/{themeLibrary-xaxN5UYu.d.ts → themeLibrary-BG3jr6mT.d.ts} +1 -1
  33. package/dist/transform/index.d.ts +2 -2
  34. package/dist/versions/index.d.ts +15 -1
  35. package/dist/versions/index.js +5 -1
  36. package/dist/viewState-lTZS-hP_.d.ts +91 -0
  37. package/package.json +6 -1
@@ -30,7 +30,7 @@ import {
30
30
  templateRegistry,
31
31
  writeCustomTemplatesToFrontmatter,
32
32
  writeCustomThemesToFrontmatter
33
- } from "./chunk-DRFJU4MK.js";
33
+ } from "./chunk-B26DU2RH.js";
34
34
  import {
35
35
  iconMarker
36
36
  } from "./chunk-7ZAAICW4.js";
@@ -45,11 +45,12 @@ import {
45
45
  detectAsciiDiagram,
46
46
  isHoriz,
47
47
  isJunction,
48
+ isLineChar,
48
49
  isVert,
49
50
  toCells,
50
51
  toGrid,
51
52
  traceBoxes
52
- } from "./chunk-CUYHFOFL.js";
53
+ } from "./chunk-6ATZOUCQ.js";
53
54
  import {
54
55
  defaultPageStyle,
55
56
  resolveMediaSchedule
@@ -75,15 +76,16 @@ import {
75
76
  } from "./chunk-BAOV476U.js";
76
77
  import {
77
78
  parseMarkdown
78
- } from "./chunk-MIKKUKOD.js";
79
+ } from "./chunk-UBFT2CDQ.js";
79
80
  import {
80
81
  KNOWN_BLOCK_META_KEYS,
82
+ TABLE_FED_TEMPLATES,
81
83
  TEMPLATE_ALIASES,
82
84
  coerceAnnotationValues,
83
85
  isContainerTemplate,
84
86
  resolveTemplateName,
85
87
  serializeAnnotation
86
- } from "./chunk-NBKAXPSX.js";
88
+ } from "./chunk-TMOHAFYE.js";
87
89
  import {
88
90
  extractPlainText,
89
91
  getChildren,
@@ -1148,6 +1150,19 @@ var content = (input) => {
1148
1150
  slots: { title: c.title, body: bodyRichText(input) }
1149
1151
  };
1150
1152
  };
1153
+ var transcript = (input) => {
1154
+ const t = input;
1155
+ const attribution = t.counterpartName ? `${t.speaker} \u2192 ${t.counterpartName}` : t.speaker;
1156
+ return {
1157
+ kind: "quote-band",
1158
+ variant: "plain",
1159
+ slots: {
1160
+ title: t.variant === "tool" ? t.toolName : void 0,
1161
+ body: { text: t.text ?? "" },
1162
+ attribution
1163
+ }
1164
+ };
1165
+ };
1151
1166
  var statHighlight = (input) => {
1152
1167
  const s = input;
1153
1168
  return {
@@ -1426,6 +1441,7 @@ var sectionExtractors = {
1426
1441
  title,
1427
1442
  sectionHeader,
1428
1443
  bigText,
1444
+ transcript,
1429
1445
  content,
1430
1446
  statHighlight,
1431
1447
  quote,
@@ -4267,6 +4283,177 @@ function assignSegmentIndices(blocks, blockToSegment, inheritedSegment) {
4267
4283
  });
4268
4284
  }
4269
4285
 
4286
+ // src/doc/dataReferences.ts
4287
+ var DATA_FILE_EXTENSIONS = ["csv", "tsv", "xlsx", "parquet"];
4288
+ var WORKBOOK_EXTENSIONS = /* @__PURE__ */ new Set(["xlsx"]);
4289
+ function extensionOf(path) {
4290
+ const base = path.split("/").pop() ?? path;
4291
+ const dot = base.lastIndexOf(".");
4292
+ return dot > 0 ? base.slice(dot + 1).toLowerCase() : "";
4293
+ }
4294
+ function isDataFilePath(path) {
4295
+ if (!path || /^(?:[a-z][a-z0-9+.-]*:|\/\/|\/)/i.test(path)) return false;
4296
+ return DATA_FILE_EXTENSIONS.includes(extensionOf(path));
4297
+ }
4298
+ function dataSidecarPrefix(docBasename) {
4299
+ return `${docBasename}_files/data/`;
4300
+ }
4301
+ var DEFAULT_MAX_PREVIEW_ROWS = 50;
4302
+ function hasAuthoredData(block) {
4303
+ const provided = (key) => !!(block.templateData && key in block.templateData) || !!(block.templateOverrides && key in block.templateOverrides);
4304
+ return provided("headers") || provided("rows");
4305
+ }
4306
+ function isEligible(block) {
4307
+ return !!block.templateOverrides?.src && TABLE_FED_TEMPLATES.has(resolveTemplateName(block.template ?? ""));
4308
+ }
4309
+ async function resolveDataReferences(doc, container, options) {
4310
+ const diagnostics = [];
4311
+ const maxPreviewRows = options.maxPreviewRows ?? DEFAULT_MAX_PREVIEW_ROWS;
4312
+ const readerByExt = /* @__PURE__ */ new Map();
4313
+ for (const reader of options.readers) {
4314
+ for (const ext of reader.extensions) readerByExt.set(ext.toLowerCase(), reader);
4315
+ }
4316
+ const fileCache = /* @__PURE__ */ new Map();
4317
+ const readCached = (path) => {
4318
+ let pending = fileCache.get(path);
4319
+ if (!pending) {
4320
+ pending = container.readFile(path).catch(() => null);
4321
+ fileCache.set(path, pending);
4322
+ }
4323
+ return pending;
4324
+ };
4325
+ const resolveBlock = async (block) => {
4326
+ const overrides = block.templateOverrides;
4327
+ const src = overrides.src;
4328
+ const ext = extensionOf(src);
4329
+ if (!isDataFilePath(src)) {
4330
+ diagnostics.push({
4331
+ severity: "warning",
4332
+ code: "data-src-no-reader",
4333
+ message: `Block "${block.id}": src "${src}" is not a relative data-file path (.${DATA_FILE_EXTENSIONS.join("/.")}).`,
4334
+ blockId: block.id
4335
+ });
4336
+ return null;
4337
+ }
4338
+ const reader = readerByExt.get(ext);
4339
+ if (!reader) {
4340
+ diagnostics.push({
4341
+ severity: "warning",
4342
+ code: "data-src-no-reader",
4343
+ message: `Block "${block.id}": no data reader registered for ".${ext}" (src "${src}").`,
4344
+ blockId: block.id
4345
+ });
4346
+ return null;
4347
+ }
4348
+ if ((overrides.sheet || overrides.anchor) && !WORKBOOK_EXTENSIONS.has(ext)) {
4349
+ diagnostics.push({
4350
+ severity: "info",
4351
+ code: "data-src-param-ignored",
4352
+ message: `Block "${block.id}": sheet/anchor only address workbook sources; ignored for ".${ext}".`,
4353
+ blockId: block.id
4354
+ });
4355
+ }
4356
+ const bytes = await readCached(src);
4357
+ if (!bytes) {
4358
+ diagnostics.push({
4359
+ severity: "warning",
4360
+ code: "data-src-missing",
4361
+ message: `Block "${block.id}": data file "${src}" was not found in the document container.`,
4362
+ blockId: block.id
4363
+ });
4364
+ return null;
4365
+ }
4366
+ const parsedPreviewRows = Number.parseInt(overrides.previewRows ?? "", 10);
4367
+ const maxRows = Number.isFinite(parsedPreviewRows) && parsedPreviewRows > 0 ? parsedPreviewRows : maxPreviewRows;
4368
+ const readOpts = {
4369
+ ...overrides.sheet ? { sheet: overrides.sheet } : {},
4370
+ ...overrides.anchor ? { anchor: overrides.anchor } : {},
4371
+ ...overrides.headerRow !== void 0 ? { headerRow: overrides.headerRow !== "false" } : {},
4372
+ ...overrides.sort ? { sort: overrides.sort } : {},
4373
+ ...overrides.filter ? { filter: overrides.filter } : {},
4374
+ maxRows
4375
+ };
4376
+ let table;
4377
+ try {
4378
+ const cacheKey = [
4379
+ src,
4380
+ readOpts.sheet ?? "",
4381
+ readOpts.anchor ?? "",
4382
+ String(readOpts.headerRow ?? ""),
4383
+ readOpts.sort ?? "",
4384
+ readOpts.filter ?? "",
4385
+ String(maxRows)
4386
+ ].join("\0");
4387
+ let pending = options.tableCache?.get(cacheKey);
4388
+ if (!pending) {
4389
+ pending = reader.read(bytes, readOpts);
4390
+ options.tableCache?.set(cacheKey, pending);
4391
+ }
4392
+ table = await pending;
4393
+ } catch (err) {
4394
+ const reason = err instanceof Error ? err.message : String(err);
4395
+ const sheetMiss = /sheet|worksheet/i.test(reason) && WORKBOOK_EXTENSIONS.has(ext);
4396
+ diagnostics.push({
4397
+ severity: sheetMiss ? "warning" : "error",
4398
+ code: sheetMiss ? "data-src-sheet-missing" : "data-src-parse",
4399
+ message: `Block "${block.id}": could not read "${src}": ${reason}`,
4400
+ blockId: block.id
4401
+ });
4402
+ return null;
4403
+ }
4404
+ for (const issue of table.viewIssues ?? []) {
4405
+ diagnostics.push({
4406
+ severity: "info",
4407
+ code: issue.code,
4408
+ message: `Block "${block.id}": ${issue.message}`,
4409
+ blockId: block.id
4410
+ });
4411
+ }
4412
+ const srcStats = {
4413
+ totalRows: table.totalRows,
4414
+ totalCols: table.totalCols,
4415
+ previewRows: table.rows.length,
4416
+ truncated: table.rows.length < table.totalRows,
4417
+ ...table.unfilteredTotalRows !== void 0 ? { unfilteredTotalRows: table.unfilteredTotalRows } : {}
4418
+ };
4419
+ return {
4420
+ ...block,
4421
+ templateData: {
4422
+ headers: table.headers,
4423
+ rows: table.rows,
4424
+ ...table.align ? { align: table.align } : {},
4425
+ srcStats,
4426
+ ...block.templateData
4427
+ }
4428
+ };
4429
+ };
4430
+ let changed = false;
4431
+ const resolveBlocks = async (blocks2) => {
4432
+ const next = await Promise.all(
4433
+ blocks2.map(async (block) => {
4434
+ let replacement = null;
4435
+ if (isEligible(block) && !hasAuthoredData(block)) {
4436
+ replacement = await resolveBlock(block);
4437
+ }
4438
+ let children = block.children;
4439
+ if (block.children && block.children.length > 0) {
4440
+ children = await resolveBlocks(block.children);
4441
+ }
4442
+ if (!replacement && children === block.children) return block;
4443
+ changed = true;
4444
+ const base = replacement ?? block;
4445
+ return children === block.children ? base : { ...base, children };
4446
+ })
4447
+ );
4448
+ return next.some((b, i) => b !== blocks2[i]) ? next : blocks2;
4449
+ };
4450
+ const blocks = await resolveBlocks(doc.blocks);
4451
+ return {
4452
+ doc: changed ? { ...doc, blocks } : doc,
4453
+ diagnostics
4454
+ };
4455
+ }
4456
+
4270
4457
  // src/doc/validate.ts
4271
4458
  function validateMarkdownSource(source, options) {
4272
4459
  return validateMarkdownDoc(parseMarkdown(source), options);
@@ -4929,6 +5116,19 @@ function pickSides(s, t) {
4929
5116
  gaps.sort((a, b) => a.gap - b.gap);
4930
5117
  return { exit: gaps[0].side, enter: gaps[0].side };
4931
5118
  }
5119
+ function blockedAttachmentColumns(p) {
5120
+ const blocked = /* @__PURE__ */ new Set();
5121
+ const innerW = p.rect.c1 - p.rect.c0 - 1;
5122
+ const lines = p.isContainer ? p.labelLines.slice(1) : p.labelLines;
5123
+ for (const line of lines) {
5124
+ const cells = toCells(line);
5125
+ const pad = Math.max(0, Math.floor((innerW - cells.length) / 2));
5126
+ cells.forEach((ch, j) => {
5127
+ if (isLineChar(ch)) blocked.add(p.rect.c0 + 1 + pad + j);
5128
+ });
5129
+ }
5130
+ return blocked;
5131
+ }
4932
5132
  function assignAttachments(plans, placed) {
4933
5133
  const bySide = /* @__PURE__ */ new Map();
4934
5134
  plans.forEach((plan, i) => {
@@ -4957,13 +5157,31 @@ function assignAttachments(plans, placed) {
4957
5157
  const to = horizontal ? node.rect.c1 - 1 : node.rect.r1 - 1;
4958
5158
  const inner = Math.max(1, to - from + 1);
4959
5159
  const k = list2.length;
5160
+ const blocked = horizontal ? blockedAttachmentColumns(node) : /* @__PURE__ */ new Set();
5161
+ const taken = [];
5162
+ const place = (want) => {
5163
+ const free = (pos) => pos >= from && pos <= to && !blocked.has(pos) && taken.every((t) => Math.abs(t - pos) >= 2);
5164
+ for (let d = 0; d <= inner; d++) {
5165
+ for (const pos of d === 0 ? [want] : [want - d, want + d]) {
5166
+ if (!free(pos)) continue;
5167
+ taken.push(pos);
5168
+ return pos;
5169
+ }
5170
+ }
5171
+ taken.push(want);
5172
+ return want;
5173
+ };
4960
5174
  if (k === 1) {
4961
- result.set(list2[0].key, { pos: from + Math.floor((inner - 1) / 2), index: 0, count: 1 });
5175
+ result.set(list2[0].key, {
5176
+ pos: place(from + Math.floor((inner - 1) / 2)),
5177
+ index: 0,
5178
+ count: 1
5179
+ });
4962
5180
  } else {
4963
5181
  const span = 2 * k - 1;
4964
5182
  const start = from + Math.max(0, Math.floor((inner - span) / 2));
4965
5183
  list2.forEach((req, i) => {
4966
- result.set(req.key, { pos: Math.min(to, start + 2 * i), index: i, count: k });
5184
+ result.set(req.key, { pos: place(Math.min(to, start + 2 * i)), index: i, count: k });
4967
5185
  });
4968
5186
  }
4969
5187
  }
@@ -5874,6 +6092,10 @@ export {
5874
6092
  applyNarrationTiming,
5875
6093
  scoreTextSimilarity,
5876
6094
  resolveAudioMapping,
6095
+ DATA_FILE_EXTENSIONS,
6096
+ isDataFilePath,
6097
+ dataSidecarPrefix,
6098
+ resolveDataReferences,
5877
6099
  validateMarkdownSource,
5878
6100
  validateMarkdownDoc,
5879
6101
  renderAsciiDiagram,
@@ -35,6 +35,7 @@ var TEMPLATE_TOKEN_NAMES = /* @__PURE__ */ new Set([
35
35
  "title",
36
36
  "sectionHeader",
37
37
  "bigText",
38
+ "transcript",
38
39
  "content",
39
40
  "statHighlight",
40
41
  "quote",
@@ -6,7 +6,7 @@ import {
6
6
  quoteAttrValue,
7
7
  splitKeyValueToken,
8
8
  tokenizeAttrTokens
9
- } from "./chunk-NBKAXPSX.js";
9
+ } from "./chunk-TMOHAFYE.js";
10
10
  import {
11
11
  resolveIcon
12
12
  } from "./chunk-7N4G32LG.js";
@@ -259,7 +259,8 @@ function convertInlineChildren(children, parseHtml, applyIconSplit = true) {
259
259
  if (node) result.push(node);
260
260
  }
261
261
  const mentioned = coalesceMentions(result);
262
- const split = applyIconSplit ? splitInlineIcons(mentioned) : mentioned;
262
+ const repaired = recombineDirectiveTokens(mentioned);
263
+ const split = applyIconSplit ? splitInlineIcons(repaired) : repaired;
263
264
  return foldPairedInlineHtml(split);
264
265
  }
265
266
  var PAIRED_INLINE_HTML = /* @__PURE__ */ new Map([
@@ -341,24 +342,38 @@ function recombineDirectiveTokens(nodes) {
341
342
  const out = [];
342
343
  for (let i = 0; i < nodes.length; i++) {
343
344
  const cur = nodes[i];
344
- const next = nodes[i + 1];
345
- const after = nodes[i + 2];
346
- if (cur?.type === "text" && next?.type === "textDirective" && after?.type === "text" && /\{\[[a-zA-Z0-9_-]+$/.test(cur.value) && /^\]\}/.test(after.value)) {
347
- const directive = next;
348
- const directiveName = directive.name ?? "";
349
- const merged = {
350
- type: "text",
351
- value: cur.value + ":" + directiveName + after.value,
352
- ...cur.position ? { position: cur.position } : {}
353
- };
354
- out.push(merged);
355
- i += 2;
356
- continue;
345
+ if (cur?.type === "text") {
346
+ let value = cur.value;
347
+ let j = i;
348
+ while (hasUnclosedAnnotationSpan(value) && nodes[j + 1]?.type === "textDirective") {
349
+ const directive = nodes[j + 1];
350
+ value += ":" + (directive.name ?? "");
351
+ j += 1;
352
+ const following = nodes[j + 1];
353
+ if (following?.type === "text") {
354
+ value += following.value;
355
+ j += 1;
356
+ }
357
+ }
358
+ if (j !== i) {
359
+ out.push({
360
+ type: "text",
361
+ value,
362
+ ...cur.position ? { position: cur.position } : {}
363
+ });
364
+ i = j;
365
+ continue;
366
+ }
357
367
  }
358
368
  out.push(cur);
359
369
  }
360
370
  return out;
361
371
  }
372
+ function hasUnclosedAnnotationSpan(text) {
373
+ const open = text.lastIndexOf("{[");
374
+ if (open === -1) return false;
375
+ return !text.includes("]}", open);
376
+ }
362
377
  var ICON_TOKEN_RE = /\{\[([a-zA-Z0-9_:-]+)\]\}/g;
363
378
  function splitTextOnIcons(value, position) {
364
379
  if (!value) return [];
@@ -230,7 +230,11 @@ var EXTENSION_MIME_MAP = {
230
230
  ".ogg": "audio/ogg",
231
231
  ".css": "text/css",
232
232
  ".html": "text/html",
233
- ".js": "application/javascript"
233
+ ".js": "application/javascript",
234
+ ".csv": "text/csv",
235
+ ".tsv": "text/tab-separated-values",
236
+ ".xlsx": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
237
+ ".parquet": "application/vnd.apache.parquet"
234
238
  };
235
239
  function guessMimeType(path) {
236
240
  const dot = path.lastIndexOf(".");
@@ -3,7 +3,7 @@ import {
3
3
  expectedSyllablesAt,
4
4
  flattenRenderableBlocks,
5
5
  wordPosAtExpectedSyllables
6
- } from "./chunk-DRFJU4MK.js";
6
+ } from "./chunk-B26DU2RH.js";
7
7
 
8
8
  // src/narration/types.ts
9
9
  var DEFAULT_FEATURE_CONFIG = Object.freeze({
@@ -1,11 +1,12 @@
1
- import { bb as TemplateBlock, bc as TemplateContext, a3 as Layer, w as CustomTemplateDefinition, be as TemplateRegistry, bh as Theme, bL as ViewportConfig, aL as PersistentLayerConfig, P as DocBlock, bM as ViewportOrientation, aK as PersistentLayer, bu as TitleBlockInput, b0 as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, b6 as StatHighlightInput, aW as QuoteBlockInput, V as FactCardInput, bB as TwoColumnInput, H as DateEventInput, a1 as ImageWithCaptionInput, a6 as LeftFeatureInput, aZ as RightFeatureInput, aa as MapBlockInput, b5 as StartBlockConfig, Y as FullBleedQuoteInput, a9 as ListBlockInput, aP as PhotoGridInput, J as DefinitionCardInput, t as ComparisonBarInput, aV as PullQuoteInput, bK as VideoWithCaptionInput, bJ as VideoPullQuoteInput, G as DataTableInput, K as DiagramBlockInput, bw as TreeBlockInput, bq as TimelineBlockInput, k as Block, S as DrawingBlockInput, ae as MarkerStyle, A as AccentImage, a0 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, bj as ThemeColorScheme, O as Doc, bl as ThemeRegistry, aD as PageEmphasis, bk as ThemePageStyle, Q as DocDiagnostic, N as DiagramTemplateNode, M as DiagramTemplateEdge, bt as TimelineTemplateTrack, bs as TimelineTemplateLink } from '../Doc-DTyeaFuW.js';
2
- export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints, aY as RenderStyle, bi as ThemeColorPalette, bo as ThemeStyle, bp as ThemeTypography, bC as VIEWPORT_PRESETS, bN as ViewportPreset, bS as createTemplateContext, bZ as getLayoutHints, c0 as getTwoColumnPositions, c1 as getViewport, c2 as getViewportOrientation, c5 as isTemplateBlock, c8 as scaledFontSize } from '../Doc-DTyeaFuW.js';
1
+ import { bb as TemplateBlock, bc as TemplateContext, a3 as Layer, w as CustomTemplateDefinition, be as TemplateRegistry, bh as Theme, bM as ViewportConfig, aL as PersistentLayerConfig, P as DocBlock, bN as ViewportOrientation, aK as PersistentLayer, bu as TitleBlockInput, b0 as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, b6 as StatHighlightInput, aW as QuoteBlockInput, V as FactCardInput, bC as TwoColumnInput, H as DateEventInput, a1 as ImageWithCaptionInput, a6 as LeftFeatureInput, aZ as RightFeatureInput, aa as MapBlockInput, b5 as StartBlockConfig, Y as FullBleedQuoteInput, a9 as ListBlockInput, aP as PhotoGridInput, J as DefinitionCardInput, t as ComparisonBarInput, aV as PullQuoteInput, bL as VideoWithCaptionInput, bK as VideoPullQuoteInput, G as DataTableInput, K as DiagramBlockInput, bx as TreeBlockInput, bq as TimelineBlockInput, k as Block, S as DrawingBlockInput, ae as MarkerStyle, A as AccentImage, a0 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, bj as ThemeColorScheme, O as Doc, bl as ThemeRegistry, aD as PageEmphasis, bk as ThemePageStyle, Q as DocDiagnostic, N as DiagramTemplateNode, M as DiagramTemplateEdge, bt as TimelineTemplateTrack, bs as TimelineTemplateLink } from '../Doc-CRPQCkHn.js';
2
+ export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints, aY as RenderStyle, bi as ThemeColorPalette, bo as ThemeStyle, bp as ThemeTypography, bD as VIEWPORT_PRESETS, bO as ViewportPreset, bT as createTemplateContext, b_ as getLayoutHints, c1 as getTwoColumnPositions, c2 as getViewport, c3 as getViewportOrientation, c6 as isTemplateBlock, c9 as scaledFontSize } from '../Doc-CRPQCkHn.js';
3
3
  import { L as MarkdownNode, a5 as TransitionType, a4 as TransitionDirection, M as MarkdownBlockNode, r as MarkdownHeading, n as MarkdownDocument, V as MarkdownTable, i as MarkdownCodeBlock, G as MarkdownList } from '../types-Be6sBUBx.js';
4
4
  import { C as CoercedBlockMeta } from '../annotationCoercion-Ckqpu33y.js';
5
- import { c as PageSection } from '../materializePageSection-BRNIINlU.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-BRNIINlU.js';
5
+ import { c as PageSection } from '../materializePageSection-BeUPHeCl.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-BeUPHeCl.js';
7
7
  import { C as ContentContainer } from '../ContentContainer-B2w9sUoL.js';
8
- export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-xaxN5UYu.js';
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-BG3jr6mT.js';
9
10
 
10
11
  /** Runtime registry composition for built-in and document-scoped templates. */
11
12
 
@@ -149,6 +150,12 @@ declare const TEMPLATE_AUTHORING_METADATA: {
149
150
  readonly safeForContentFirst: true;
150
151
  readonly placement: "heading";
151
152
  };
153
+ readonly transcript: {
154
+ readonly role: "content";
155
+ readonly bodyPolicy: "structured";
156
+ readonly safeForContentFirst: false;
157
+ readonly placement: "heading";
158
+ };
152
159
  readonly statHighlight: {
153
160
  readonly role: "highlight";
154
161
  readonly bodyPolicy: "derived";
@@ -403,6 +410,15 @@ declare const BLOCK_MEDIA_LAYOUT_POLICIES: {
403
410
  readonly unconsumedMedia: "reserve-when-no-native-media";
404
411
  readonly variants: SupplementalMediaVariantMatrix;
405
412
  };
413
+ readonly transcript: {
414
+ readonly summary: "Speaker avatars are native media (initials medallions when absent); other media stays supplemental.";
415
+ readonly noMedia: "template-without-optional-media";
416
+ readonly ownership: "optional-native";
417
+ readonly nativeLayout: "accent-strip-or-inset";
418
+ readonly additionalMediaLayout: "overlay-inset";
419
+ readonly unconsumedMedia: "reserve-when-no-native-media";
420
+ readonly variants: SupplementalMediaVariantMatrix;
421
+ };
406
422
  readonly content: {
407
423
  readonly summary: "Preserves the complete heading and body; supplemental media receives a companion field.";
408
424
  readonly noMedia: "template-default";
@@ -3164,6 +3180,107 @@ interface NarrationResolution {
3164
3180
  */
3165
3181
  declare function applyNarrationTiming(doc: Doc, container: ContentContainer): Promise<NarrationResolution>;
3166
3182
 
3183
+ /** File extensions (lowercase, no dot) recognized as sidecar data files. */
3184
+ declare const DATA_FILE_EXTENSIONS: readonly ["csv", "tsv", "xlsx", "parquet"];
3185
+ /**
3186
+ * True when `path` is a relative container path ending in a data extension.
3187
+ * Absolute/protocol URLs are never data sidecar references.
3188
+ */
3189
+ declare function isDataFilePath(path: string): boolean;
3190
+ /**
3191
+ * The sidecar directory for a document's data files:
3192
+ * `<docbasename>_files/data/`. One helper owns the convention so importers,
3193
+ * the editor's drop pipeline, and hosts agree on where data lives.
3194
+ */
3195
+ declare function dataSidecarPrefix(docBasename: string): string;
3196
+ /** A bounded window of tabular data read from a sidecar file. */
3197
+ interface DataSourceTable {
3198
+ headers: string[];
3199
+ /** Preview window of data rows, cells stringified for display. */
3200
+ rows: string[][];
3201
+ align?: ('left' | 'center' | 'right' | null)[];
3202
+ /**
3203
+ * Full data-row count in the source AFTER any view-state filter (not just
3204
+ * the preview window). With no filter this is the raw row count.
3205
+ */
3206
+ totalRows: number;
3207
+ totalCols: number;
3208
+ /** Raw row count before filtering, when a filter was applied. */
3209
+ unfilteredTotalRows?: number;
3210
+ /** Problems parsing/applying `sort`/`filter` (see `@bendyline/squisq/table`). */
3211
+ viewIssues?: ViewIssue[];
3212
+ }
3213
+ interface DataSourceReadOptions {
3214
+ /** Worksheet name (workbook sources only). */
3215
+ sheet?: string;
3216
+ /** Top-left cell of the region, e.g. `'B7'` (workbook sources only). */
3217
+ anchor?: string;
3218
+ /** Whether row 1 of the source is a header row. Default true. */
3219
+ headerRow?: boolean;
3220
+ /** Maximum data rows to return in `rows`. */
3221
+ maxRows: number;
3222
+ /**
3223
+ * Raw view-state params (`{[dataTable … sort=… filter=…]}`). Readers parse
3224
+ * them against their REAL headers and apply `applyTableViewState` on the
3225
+ * full body BEFORE windowing to `maxRows` — the resolver cannot do it, the
3226
+ * rows are already gone by then. Problems surface via
3227
+ * `DataSourceTable.viewIssues`, never a throw.
3228
+ */
3229
+ sort?: string;
3230
+ filter?: string;
3231
+ }
3232
+ /**
3233
+ * Decodes one family of data files. `extensions` are lowercase without the
3234
+ * dot (`['csv', 'tsv']`). `read` may throw — the resolver converts failures
3235
+ * into diagnostics rather than propagating them.
3236
+ */
3237
+ interface DataSourceReader {
3238
+ extensions: readonly string[];
3239
+ read(data: ArrayBuffer, opts: DataSourceReadOptions): Promise<DataSourceTable>;
3240
+ }
3241
+ interface ResolveDataReferencesOptions {
3242
+ readers: readonly DataSourceReader[];
3243
+ /** Preview window size when a block has no `previewRows` param. Default 50. */
3244
+ maxPreviewRows?: number;
3245
+ /**
3246
+ * Caller-owned memo of reader reads, keyed by src + read options. A
3247
+ * reader read is a FULL-body parse (view state applies before
3248
+ * windowing), and the editor's projection path re-resolves on every
3249
+ * debounce — for a 20 MB sidecar that cost per keystroke is not
3250
+ * acceptable. The CALLER owns invalidation: clear or replace the map
3251
+ * when the underlying bytes may have changed (the editor scopes its
3252
+ * cache to the container and clears it on every mediaRevision bump).
3253
+ */
3254
+ tableCache?: Map<string, Promise<DataSourceTable>>;
3255
+ }
3256
+ interface ResolvedDataReferences {
3257
+ /** The doc with previews filled in — the SAME object when nothing changed. */
3258
+ doc: Doc;
3259
+ diagnostics: DocDiagnostic[];
3260
+ }
3261
+ /** Stats recorded on `templateData.srcStats` alongside the preview rows. */
3262
+ interface DataSourceStats {
3263
+ /** Data rows after any view-state filter. */
3264
+ totalRows: number;
3265
+ totalCols: number;
3266
+ previewRows: number;
3267
+ truncated: boolean;
3268
+ /** Raw source rows before filtering, when a filter was applied. */
3269
+ unfilteredTotalRows?: number;
3270
+ }
3271
+ /**
3272
+ * Resolve every `src`-referenced table/chart block against the container.
3273
+ *
3274
+ * - Author data wins: blocks that already carry `headers`/`rows` (data fence,
3275
+ * `{[…]}` params) are left untouched.
3276
+ * - Failures never throw: a missing file, unknown extension, or reader error
3277
+ * becomes a diagnostic and the block is left as-is — its body link still
3278
+ * renders in every projection.
3279
+ * - Identity short-circuit: when no block changed, the input doc object is
3280
+ * returned unchanged.
3281
+ */
3282
+ declare function resolveDataReferences(doc: Doc, container: ContentContainer, options: ResolveDataReferencesOptions): Promise<ResolvedDataReferences>;
3283
+
3167
3284
  /**
3168
3285
  * Structured template data from markdown body content.
3169
3286
  *
@@ -3911,4 +4028,4 @@ declare function treeFromMarkdownList(list: MarkdownList): Tree;
3911
4028
  /** Find the first top-level markdown list in a block's body, if any. */
3912
4029
  declare function findFirstList(contents: MarkdownBlockNode[] | undefined): MarkdownList | undefined;
3913
4030
 
3914
- 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 BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, type ClipBox, type ConnectorAnchor, type ConnectorPort, type ConnectorRouting, type ConnectorSnapPoint, 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, DEFAULT_COVER_SLIDE_SETTINGS, DEFAULT_DASHBOARD_SETTINGS, DEFAULT_DASHBOARD_STYLE, DEFAULT_LAYOUT, 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 DeriveTemplateInputsOptions, type DetectAsciiTimelineOptions, type DiagramEdge, type DiagramLabelFit, type DiagramLayout, type DiagramLayoutOptions, type DiagramNodePosition, DocBlock, type DrawingConnector, type DrawingLayout, type DrawingLayoutOptions, type DrawingShape, type DrawingShapeKind, type EmbeddedVideo, type ExpandDocBlocksOptions, type ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, type FirstImage, type Flashcard, type FlashcardChoice, type FlashcardDeck, type FlashcardDiagnostic, type FlashcardDiagnosticCode, type FlashcardFace, type FlashcardKind, type FlashcardSourceMode, type 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, PersistentLayerConfig, type RenderAsciiDiagramOptions, type RenderAsciiTimelineOptions, type RenderTreeOptions, type RepairResult, type ResolvedDashboardCell, 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, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, canvasToAsciiCell, chooseDashboardLayout, clipEndpoints, clipPoint, coerceTemplateParams, comparisonBar, composeDashboardLayers, computeDiagramLayout, computeDrawingLayout, computeLayoutLayers, connectorPath, contentBlock, countBlocks, coverBlock, createAccentLayers, cssFilterForTreatment, dashboardCanvasFill, dashboardCellAccent, dataTable, dateEvent, definitionCard, deriveTemplateInputs, desiredCellZoom, detectAsciiDiagram, detectAsciiTimeline, detectTree, diagramBlock, docToMarkdown, documentTitleFromFileName, drawingBlock, expandCoverBlock, expandDocBlocks, expandPersistentLayers, extractBlockquoteText, extractBodyPlainText, extractEmbeddedVideos, extractFirstEmbeddedVideo, extractFirstImage, extractImages, extractListItems, extractRichListItems, extractTableData, extractTableFromContents, factCard, fallbackBlockLayers, findFirstList, findFirstTable, fitBigTextSize, fitDiagramLabel, flattenBlocks, flattenRenderableBlocks, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, nearestSnapPoint, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, 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, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };
4031
+ 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 BuiltInTemplateName, CONTAINER_TEMPLATES, COVER_SLIDE_FRONTMATTER_KEYS, COVER_SLIDE_TEMPLATE_OPTIONS, type ClipBox, type ConnectorAnchor, type ConnectorPort, type ConnectorRouting, type ConnectorSnapPoint, 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, DIAGRAM_LABEL_HORIZONTAL_PADDING, DIAGRAM_LABEL_LINE_HEIGHT, DIAGRAM_LABEL_MIN_FONT_SIZE, DIAGRAM_LABEL_VERTICAL_PADDING, type DashboardCell, type DashboardCellChrome, type DashboardCellDefinition, type DashboardCellFrame, type DashboardDiagnostic, type DashboardLayoutDefinition, type DashboardLayoutSummary, type DashboardLayoutValidationError, type DashboardLayoutValidationResult, type DashboardMaterialization, type DashboardRectPct, type DashboardSettings, type DashboardSettingsOverrides, type DashboardStyleId, type DashboardStyleSummary, type DashboardTitle, type DashboardTitleSlotDefinition, type DashboardZoomCandidate, type DashboardZoomLevel, type DashboardZoomMode, type DataFenceParseResult, type DataSourceReadOptions, type DataSourceReader, type DataSourceStats, type DataSourceTable, type DeriveTemplateInputsOptions, type DetectAsciiTimelineOptions, type DiagramEdge, type DiagramLabelFit, type DiagramLayout, type DiagramLayoutOptions, type DiagramNodePosition, DocBlock, type DrawingConnector, type DrawingLayout, type DrawingLayoutOptions, type DrawingShape, type DrawingShapeKind, type EmbeddedVideo, type ExpandDocBlocksOptions, type ExtractedTableData, FRONTMATTER_DASHBOARD_LAYOUTS_KEY, type FirstImage, type Flashcard, type FlashcardChoice, type FlashcardDeck, type FlashcardDiagnostic, type FlashcardDiagnosticCode, type FlashcardFace, type FlashcardKind, type FlashcardSourceMode, type 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, 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, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, canvasToAsciiCell, chooseDashboardLayout, clipEndpoints, clipPoint, coerceTemplateParams, comparisonBar, composeDashboardLayers, computeDiagramLayout, computeDrawingLayout, computeLayoutLayers, connectorPath, contentBlock, countBlocks, 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, extractImages, extractListItems, extractRichListItems, extractTableData, extractTableFromContents, factCard, fallbackBlockLayers, findFirstList, findFirstTable, fitBigTextSize, fitDiagramLabel, flattenBlocks, flattenRenderableBlocks, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, nearestSnapPoint, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveFlashcardMarker, resolveLayoutCells, resolvePageBlock, resolvePersistentLayers, resolveTemplateName, resolveThemeForDoc, rightFeature, scaleAnimationDuration, scoreTextSimilarity, sectionExtractors, sectionHeader, shapePath, shouldUseShadow, snapEndpoints, snapPoints, statHighlight, stripBlockBackdropLayer, stripsBlockBackdrop, templateRegistry, themeWantsAmbientMotion, themedEntrance, themedFontSize, themedImageTreatment, themedScrim, themedSurfaceGradient, timelineBlock, titleBlock, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };