@bendyline/squisq 2.11.9 → 2.11.11

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 (31) hide show
  1. package/dist/{Doc-DmElSKmg.d.ts → Doc-BWtfp7dT.d.ts} +207 -3
  2. package/dist/{ImageEditDoc-Dm_BETxC.d.ts → ImageEditDoc-CYRQK8so.d.ts} +1 -1
  3. package/dist/{chunk-YNO6JV36.js → chunk-2SRF5III.js} +4 -4
  4. package/dist/{chunk-QOVINAB2.js → chunk-42IU2SJY.js} +383 -114
  5. package/dist/{chunk-DTM4FG7S.js → chunk-7WN7DDMI.js} +1 -1
  6. package/dist/{chunk-2PGC4JDT.js → chunk-BR7ZMDWW.js} +1 -1
  7. package/dist/{chunk-CCRBHFNO.js → chunk-EWO2VLOS.js} +2 -2
  8. package/dist/{chunk-B5STNW6C.js → chunk-HVJ6VFDX.js} +2 -2
  9. package/dist/{chunk-PCCQLD3G.js → chunk-PFH3WV6J.js} +143 -3
  10. package/dist/{chunk-VRTXPGP7.js → chunk-S4427XKY.js} +98 -4
  11. package/dist/{chunk-QDA7NXDO.js → chunk-X2TDC4E5.js} +2 -2
  12. package/dist/doc/index.d.ts +103 -6
  13. package/dist/doc/index.js +31 -5
  14. package/dist/fence/index.d.ts +1 -1
  15. package/dist/generate/index.d.ts +1 -1
  16. package/dist/imageEdit/index.d.ts +3 -3
  17. package/dist/index.d.ts +5 -5
  18. package/dist/index.js +47 -9
  19. package/dist/jsonForm/index.d.ts +1 -1
  20. package/dist/jsonForm/index.js +4 -4
  21. package/dist/{materializePageSection-BfttC9Zj.d.ts → materializePageSection-Db7pABI0.d.ts} +1 -1
  22. package/dist/mediaEdit/index.d.ts +2 -2
  23. package/dist/narration/index.d.ts +1 -1
  24. package/dist/narration/index.js +4 -4
  25. package/dist/schemas/index.d.ts +4 -4
  26. package/dist/schemas/index.js +15 -3
  27. package/dist/{themeLibrary-ChnTImby.d.ts → themeLibrary-Bphz1CRp.d.ts} +1 -1
  28. package/dist/timing/index.d.ts +1 -1
  29. package/dist/transform/index.d.ts +2 -2
  30. package/dist/transform/index.js +3 -3
  31. package/package.json +1 -1
@@ -2,7 +2,7 @@ import {
2
2
  DEFAULT_THEME,
3
3
  applySurface,
4
4
  resolveFontFamily
5
- } from "./chunk-PCCQLD3G.js";
5
+ } from "./chunk-PFH3WV6J.js";
6
6
 
7
7
  // src/jsonForm/chooseControl.ts
8
8
  var ENUM_SEGMENTED_LIMIT = 4;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  flattenRenderableBlocks,
3
3
  getBlockBodyText
4
- } from "./chunk-QOVINAB2.js";
4
+ } from "./chunk-42IU2SJY.js";
5
5
  import {
6
6
  estimateSpokenWordCount
7
7
  } from "./chunk-GHOPHGOK.js";
@@ -5,11 +5,11 @@ import {
5
5
  } from "./chunk-SVN7T6BK.js";
6
6
  import {
7
7
  markdownToDoc
8
- } from "./chunk-QOVINAB2.js";
8
+ } from "./chunk-42IU2SJY.js";
9
9
  import {
10
10
  cloneAndFreezeData,
11
11
  isTemplateBlock
12
- } from "./chunk-PCCQLD3G.js";
12
+ } from "./chunk-PFH3WV6J.js";
13
13
  import {
14
14
  parseMarkdown
15
15
  } from "./chunk-HUXK7EOT.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  defaultPageStyle
3
- } from "./chunk-YNO6JV36.js";
3
+ } from "./chunk-2SRF5III.js";
4
4
  import {
5
5
  FONT_FALLBACKS,
6
6
  THEME_SCHEMA_VERSION,
@@ -15,7 +15,7 @@ import {
15
15
  relativeLuminance,
16
16
  resolveFontFamily,
17
17
  withAlpha
18
- } from "./chunk-PCCQLD3G.js";
18
+ } from "./chunk-PFH3WV6J.js";
19
19
 
20
20
  // src/schemas/Doc.ts
21
21
  function calculateDuration(audio) {
@@ -2,6 +2,97 @@ import {
2
2
  isTransitionType
3
3
  } from "./chunk-4VOD55SX.js";
4
4
 
5
+ // src/schemas/Motion.ts
6
+ var MOTION_PROFILE_NAMES = ["calm", "documentary", "vibrant"];
7
+ var FRONTMATTER_MOTION_KEY = "squisq-motion";
8
+ var OVERSHOOT_EASING = "cubic-bezier(0.34, 1.4, 0.64, 1)";
9
+ var SETTLE_EASING = "cubic-bezier(0.22, 1, 0.36, 1)";
10
+ var MOTION_PROFILES = Object.freeze({
11
+ calm: Object.freeze({
12
+ name: "calm",
13
+ textEntrance: Object.freeze({ type: "fadeIn", duration: 1, delayScale: 1 }),
14
+ chartGrowth: false,
15
+ chartGrowthDuration: 1,
16
+ countUp: false,
17
+ countUpDuration: 1.5,
18
+ diagramBuild: false,
19
+ photoGridStagger: 0,
20
+ coverWordReveal: false
21
+ }),
22
+ documentary: Object.freeze({
23
+ name: "documentary",
24
+ textEntrance: Object.freeze({
25
+ type: "fadeInUp",
26
+ duration: 0.8,
27
+ easing: SETTLE_EASING,
28
+ delayScale: 1
29
+ }),
30
+ chartGrowth: true,
31
+ chartGrowthDuration: 1.1,
32
+ countUp: true,
33
+ countUpDuration: 1.6,
34
+ diagramBuild: true,
35
+ photoGridStagger: 0.22,
36
+ coverWordReveal: false
37
+ }),
38
+ vibrant: Object.freeze({
39
+ name: "vibrant",
40
+ textEntrance: Object.freeze({
41
+ type: "fadeInUp",
42
+ duration: 0.55,
43
+ easing: OVERSHOOT_EASING,
44
+ delayScale: 0.8
45
+ }),
46
+ chartGrowth: true,
47
+ chartGrowthDuration: 0.9,
48
+ countUp: true,
49
+ countUpDuration: 1.2,
50
+ diagramBuild: true,
51
+ photoGridStagger: 0.16,
52
+ coverWordReveal: false
53
+ })
54
+ });
55
+ function isMotionProfileName(value) {
56
+ return typeof value === "string" && MOTION_PROFILE_NAMES.includes(value);
57
+ }
58
+ function resolveMotionProfile(spec, fallback = "calm") {
59
+ if (spec == null) return MOTION_PROFILES[fallback];
60
+ if (typeof spec === "string") {
61
+ return MOTION_PROFILES[isMotionProfileName(spec) ? spec : fallback];
62
+ }
63
+ if (typeof spec !== "object") return MOTION_PROFILES[fallback];
64
+ const named = spec;
65
+ const baseName = isMotionProfileName(named.profile) ? named.profile : isMotionProfileName(named.name) ? named.name : fallback;
66
+ const base = MOTION_PROFILES[baseName];
67
+ const { profile: _profile, name: _name, ...overrides } = spec;
68
+ const merged = { ...base };
69
+ for (const [key, value] of Object.entries(overrides)) {
70
+ if (value === void 0) continue;
71
+ if (key === "textEntrance" && typeof value === "object" && value !== null) {
72
+ merged.textEntrance = { ...base.textEntrance, ...value };
73
+ } else if (key in base && typeof value === typeof base[key]) {
74
+ merged[key] = value;
75
+ }
76
+ }
77
+ return merged;
78
+ }
79
+ function readFrontmatterMotion(frontmatter) {
80
+ if (!frontmatter) return void 0;
81
+ const raw = frontmatter[FRONTMATTER_MOTION_KEY] ?? frontmatter.motion;
82
+ if (typeof raw === "string") {
83
+ const trimmed = raw.trim();
84
+ return isMotionProfileName(trimmed) ? trimmed : void 0;
85
+ }
86
+ if (raw && typeof raw === "object" && !Array.isArray(raw)) return raw;
87
+ return void 0;
88
+ }
89
+ function resolveMotionForDoc(doc, theme, explicit) {
90
+ const themeName = theme?.renderStyle.motionProfile;
91
+ const themeDefault = isMotionProfileName(themeName) ? themeName : "calm";
92
+ const spec = explicit ?? doc?.motion ?? readFrontmatterMotion(doc?.frontmatter);
93
+ return resolveMotionProfile(spec, themeDefault);
94
+ }
95
+
5
96
  // src/schemas/Viewport.ts
6
97
  var VIEWPORT_PRESETS = {
7
98
  /** 16:9 landscape (default, 1080p) */
@@ -130,7 +221,7 @@ var DEFAULT_TITLE_FONT = 'Georgia, "Times New Roman", serif';
130
221
  function isTemplateBlock(block) {
131
222
  return "template" in block && typeof block.template === "string";
132
223
  }
133
- function createTemplateContext(theme, blockIndex, totalBlocks, viewport = VIEWPORT_PRESETS.landscape) {
224
+ function createTemplateContext(theme, blockIndex, totalBlocks, viewport = VIEWPORT_PRESETS.landscape, options = {}) {
134
225
  const orientation = getViewportOrientation(viewport);
135
226
  const overrides = theme.renderStyle.layoutOverrides;
136
227
  const baseLayout = getLayoutHints(orientation);
@@ -141,7 +232,8 @@ function createTemplateContext(theme, blockIndex, totalBlocks, viewport = VIEWPO
141
232
  viewport,
142
233
  fontScale: calculateFontScale(viewport),
143
234
  orientation,
144
- layout: overrides ? { ...baseLayout, ...overrides } : baseLayout
235
+ layout: overrides ? { ...baseLayout, ...overrides } : baseLayout,
236
+ motion: resolveMotionForDoc(null, theme, options.motion)
145
237
  };
146
238
  }
147
239
  function scaledFontSize2(basePx, context, isTitle = false) {
@@ -172,8 +264,18 @@ var ANIMATION_TYPES = /* @__PURE__ */ new Set([
172
264
  "zoomOut",
173
265
  "panLeft",
174
266
  "panRight",
175
- "typewriter"
267
+ "typewriter",
268
+ "fadeInUp",
269
+ "slideIn",
270
+ "wordReveal",
271
+ "countUp",
272
+ "drawOn",
273
+ "grow",
274
+ "reveal",
275
+ "drift",
276
+ "tween"
176
277
  ]);
278
+ var MOTION_ORIGINS = ["center", "left", "right", "top", "bottom"];
177
279
  var TemplateValidator = class {
178
280
  constructor() {
179
281
  this.errors = [];
@@ -256,6 +358,30 @@ function validateAnimation(v, value, path) {
256
358
  optionalString(v, value, "easing", path);
257
359
  optionalEnum(v, value, "direction", path, ["in", "out"]);
258
360
  optionalEnum(v, value, "panDirection", path, ["left", "right", "up", "down"]);
361
+ optionalEnum(v, value, "origin", path, MOTION_ORIGINS);
362
+ optionalEnum(v, value, "shape", path, ["wipe", "iris"]);
363
+ optionalNumber(v, value, "stagger", path);
364
+ if (value.wordTimes !== void 0) {
365
+ if (!Array.isArray(value.wordTimes) || value.wordTimes.some((t) => typeof t !== "number")) {
366
+ v.error(`${path}.wordTimes`, "expected array of numbers");
367
+ }
368
+ }
369
+ const count = value.count;
370
+ if (count !== void 0 && v.object(count, `${path}.count`)) {
371
+ if (typeof count.to !== "number") v.error(`${path}.count.to`, "expected number");
372
+ optionalNumber(v, count, "from", `${path}.count`);
373
+ optionalNumber(v, count, "decimals", `${path}.count`);
374
+ optionalString(v, count, "prefix", `${path}.count`);
375
+ optionalString(v, count, "suffix", `${path}.count`);
376
+ }
377
+ for (const key of ["fromState", "toState"]) {
378
+ const state = value[key];
379
+ if (state !== void 0 && v.object(state, `${path}.${key}`)) {
380
+ for (const field of ["scale", "x", "y", "opacity", "rotate"]) {
381
+ optionalNumber(v, state, field, `${path}.${key}`);
382
+ }
383
+ }
384
+ }
259
385
  }
260
386
  function validateRepeat(v, value, path) {
261
387
  if (!v.object(value, path)) return;
@@ -993,6 +1119,9 @@ var V = class {
993
1119
  if (v.ambientMotion !== void 0 && !this.isBoolean(v.ambientMotion)) {
994
1120
  this.err(`${path}.ambientMotion`, "expected boolean");
995
1121
  }
1122
+ if (v.motionProfile !== void 0 && !isMotionProfileName(v.motionProfile)) {
1123
+ this.err(`${path}.motionProfile`, "expected calm | documentary | vibrant");
1124
+ }
996
1125
  for (const k of ["defaultTextAnimation", "defaultImageAnimation"]) {
997
1126
  if (v[k] !== void 0 && !this.isString(v[k])) {
998
1127
  this.err(`${path}.${k}`, "expected animation type string");
@@ -1704,6 +1833,7 @@ var documentary_default = {
1704
1833
  defaultTextAnimation: "fadeIn",
1705
1834
  defaultImageAnimation: "slowZoom",
1706
1835
  ambientMotion: true,
1836
+ motionProfile: "documentary",
1707
1837
  defaultTransition: {
1708
1838
  type: "fade",
1709
1839
  duration: 0.8
@@ -1902,6 +2032,7 @@ var bold_default = {
1902
2032
  defaultTextAnimation: "zoomIn",
1903
2033
  defaultImageAnimation: "slowZoom",
1904
2034
  ambientMotion: true,
2035
+ motionProfile: "vibrant",
1905
2036
  defaultTransition: { type: "dissolve", duration: 0.5 },
1906
2037
  templateHints: {
1907
2038
  statHighlight: { entrance: "dramatic" },
@@ -2111,6 +2242,7 @@ var tech_dark_default = {
2111
2242
  defaultTextAnimation: "typewriter",
2112
2243
  defaultImageAnimation: "slowZoom",
2113
2244
  ambientMotion: true,
2245
+ motionProfile: "vibrant",
2114
2246
  defaultTransition: {
2115
2247
  type: "dissolve",
2116
2248
  duration: 0.4
@@ -2380,6 +2512,7 @@ var cinematic_default = {
2380
2512
  defaultTextAnimation: "fadeIn",
2381
2513
  defaultImageAnimation: "slowZoom",
2382
2514
  ambientMotion: true,
2515
+ motionProfile: "documentary",
2383
2516
  defaultTransition: {
2384
2517
  type: "dissolve",
2385
2518
  duration: 1.2
@@ -2516,6 +2649,7 @@ var warm_earth_default = {
2516
2649
  defaultTextAnimation: "fadeIn",
2517
2650
  defaultImageAnimation: "panLeft",
2518
2651
  ambientMotion: true,
2652
+ motionProfile: "documentary",
2519
2653
  defaultTransition: { type: "fade", duration: 0.9 }
2520
2654
  },
2521
2655
  colorSchemes: {
@@ -2965,6 +3099,12 @@ function matchFontFamily(name) {
2965
3099
  }
2966
3100
 
2967
3101
  export {
3102
+ FRONTMATTER_MOTION_KEY,
3103
+ MOTION_PROFILES,
3104
+ isMotionProfileName,
3105
+ resolveMotionProfile,
3106
+ readFrontmatterMotion,
3107
+ resolveMotionForDoc,
2968
3108
  VIEWPORT_PRESETS,
2969
3109
  getViewport,
2970
3110
  calculateFontScale,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  buildNarrationScript,
3
3
  parseNarrationTimingJson
4
- } from "./chunk-2PGC4JDT.js";
4
+ } from "./chunk-BR7ZMDWW.js";
5
5
  import {
6
6
  SHAPE_NAMES,
7
7
  buildChartData,
@@ -32,7 +32,7 @@ import {
32
32
  templateRegistry,
33
33
  writeCustomTemplatesToFrontmatter,
34
34
  writeCustomThemesToFrontmatter
35
- } from "./chunk-QOVINAB2.js";
35
+ } from "./chunk-42IU2SJY.js";
36
36
  import {
37
37
  ASCII_TREE_VOCAB,
38
38
  ASCII_VOCAB,
@@ -56,7 +56,7 @@ import {
56
56
  import {
57
57
  defaultPageStyle,
58
58
  resolveMediaSchedule
59
- } from "./chunk-YNO6JV36.js";
59
+ } from "./chunk-2SRF5III.js";
60
60
  import {
61
61
  DEFAULT_THEME,
62
62
  FRONTMATTER_CUSTOM_TEMPLATES_KEY,
@@ -73,7 +73,7 @@ import {
73
73
  resolveFontFamily,
74
74
  resolveTheme,
75
75
  withAlpha
76
- } from "./chunk-PCCQLD3G.js";
76
+ } from "./chunk-PFH3WV6J.js";
77
77
  import {
78
78
  createMediaTimeMap
79
79
  } from "./chunk-JSGIWW35.js";
@@ -133,10 +133,63 @@ function getAnimationClassName(animation) {
133
133
  return "anim-panRight";
134
134
  case "typewriter":
135
135
  return "anim-typewriter";
136
+ case "fadeInUp":
137
+ return "anim-fadeInUp";
138
+ case "slideIn":
139
+ return `anim-slideIn-${animation.origin && animation.origin !== "center" ? animation.origin : "left"}`;
140
+ case "wordReveal":
141
+ return "anim-wordReveal";
142
+ case "countUp":
143
+ return "anim-countUp";
144
+ case "drawOn":
145
+ return "anim-drawOn";
146
+ case "grow":
147
+ return growClassName(animation.origin);
148
+ case "reveal":
149
+ if (animation.shape === "iris") return "anim-reveal-iris";
150
+ return `anim-reveal-${animation.origin && animation.origin !== "center" ? animation.origin : "left"}`;
151
+ case "drift":
152
+ return "anim-drift";
153
+ case "tween":
154
+ return "anim-tween";
136
155
  default:
137
156
  return "";
138
157
  }
139
158
  }
159
+ function growClassName(origin) {
160
+ switch (origin) {
161
+ case "left":
162
+ case "right":
163
+ return "anim-grow-x";
164
+ case "top":
165
+ case "bottom":
166
+ return "anim-grow-y";
167
+ default:
168
+ return "anim-grow";
169
+ }
170
+ }
171
+ function transformOriginFor(origin) {
172
+ switch (origin) {
173
+ case "left":
174
+ return "left center";
175
+ case "right":
176
+ return "right center";
177
+ case "top":
178
+ return "center top";
179
+ case "bottom":
180
+ return "center bottom";
181
+ default:
182
+ return "center center";
183
+ }
184
+ }
185
+ function motionStateTransform(state) {
186
+ if (!state) return "none";
187
+ const parts = [];
188
+ if (state.x || state.y) parts.push(`translate(${state.x ?? 0}px, ${state.y ?? 0}px)`);
189
+ if (state.rotate) parts.push(`rotate(${state.rotate}deg)`);
190
+ if (state.scale != null && state.scale !== 1) parts.push(`scale(${state.scale})`);
191
+ return parts.length > 0 ? parts.join(" ") : "none";
192
+ }
140
193
  function getAnimationCSSVars(animation) {
141
194
  const vars = {};
142
195
  if (animation.duration !== void 0) {
@@ -148,8 +201,32 @@ function getAnimationCSSVars(animation) {
148
201
  if (animation.easing) {
149
202
  vars["--anim-easing"] = animation.easing;
150
203
  }
204
+ if (animation.type === "grow" || animation.type === "reveal") {
205
+ vars["--anim-origin"] = transformOriginFor(animation.origin);
206
+ }
207
+ if (animation.type === "wordReveal") {
208
+ vars["--anim-stagger"] = `${animation.stagger ?? DEFAULT_WORD_STAGGER}s`;
209
+ }
210
+ if (animation.type === "tween") {
211
+ vars["--tween-from-transform"] = motionStateTransform(animation.fromState);
212
+ vars["--tween-to-transform"] = motionStateTransform(animation.toState);
213
+ vars["--tween-from-opacity"] = `${animation.fromState?.opacity ?? 1}`;
214
+ vars["--tween-to-opacity"] = `${animation.toState?.opacity ?? 1}`;
215
+ }
151
216
  return vars;
152
217
  }
218
+ var DEFAULT_WORD_STAGGER = 0.08;
219
+ function wordRevealDelay(animation, index) {
220
+ const base = animation.delay ?? 0;
221
+ const times = animation.wordTimes;
222
+ if (times && times.length > 0) {
223
+ if (index < times.length) return times[index];
224
+ const last = times[times.length - 1];
225
+ const step = times.length > 1 ? Math.max(0.02, last - times[times.length - 2]) : animation.stagger ?? DEFAULT_WORD_STAGGER;
226
+ return last + step * (index - times.length + 1);
227
+ }
228
+ return base + (animation.stagger ?? DEFAULT_WORD_STAGGER) * index;
229
+ }
153
230
  function getDefaultAnimationDuration(type) {
154
231
  switch (type) {
155
232
  case "slowZoom":
@@ -165,6 +242,19 @@ function getDefaultAnimationDuration(type) {
165
242
  case "zoomIn":
166
243
  case "zoomOut":
167
244
  return 0.5;
245
+ case "fadeInUp":
246
+ case "slideIn":
247
+ case "reveal":
248
+ return 0.7;
249
+ case "grow":
250
+ case "drawOn":
251
+ return 1;
252
+ case "countUp":
253
+ return 1.5;
254
+ case "wordReveal":
255
+ return 0.4;
256
+ case "drift":
257
+ return 12;
168
258
  default:
169
259
  return 1;
170
260
  }
@@ -6251,6 +6341,10 @@ function renderTree(tree2, options = {}) {
6251
6341
 
6252
6342
  export {
6253
6343
  getAnimationStyle,
6344
+ transformOriginFor,
6345
+ motionStateTransform,
6346
+ DEFAULT_WORD_STAGGER,
6347
+ wordRevealDelay,
6254
6348
  getDefaultAnimationDuration,
6255
6349
  getTransitionClass,
6256
6350
  getAnimationProgress,
@@ -7,10 +7,10 @@ import {
7
7
  buildNarrationScript,
8
8
  expectedSyllablesAt,
9
9
  wordPosAtExpectedSyllables
10
- } from "./chunk-2PGC4JDT.js";
10
+ } from "./chunk-BR7ZMDWW.js";
11
11
  import {
12
12
  flattenRenderableBlocks
13
- } from "./chunk-QOVINAB2.js";
13
+ } from "./chunk-42IU2SJY.js";
14
14
 
15
15
  // src/narration/types.ts
16
16
  var DEFAULT_FEATURE_CONFIG = Object.freeze({
@@ -1,15 +1,26 @@
1
- import { bg as TemplateBlock, bh as TemplateContext, a3 as Layer, w as CustomTemplateDefinition, bj as TemplateRegistry, bm as Theme, bR as ViewportConfig, aQ as PersistentLayerConfig, P as DocBlock, bS as ViewportOrientation, aP as PersistentLayer, bz as TitleBlockInput, b5 as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bb as StatHighlightInput, a$ as QuoteBlockInput, V as FactCardInput, bH as TwoColumnInput, H as DateEventInput, a1 as ImageWithCaptionInput, a6 as LeftFeatureInput, b2 as RightFeatureInput, aa as MapBlockInput, ba as StartBlockConfig, Y as FullBleedQuoteInput, a9 as ListBlockInput, aU as PhotoGridInput, J as DefinitionCardInput, t as ComparisonBarInput, a_ as PullQuoteInput, bQ as VideoWithCaptionInput, bP as VideoPullQuoteInput, G as DataTableInput, K as DiagramBlockInput, bC as TreeBlockInput, bv 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, bo as ThemeColorScheme, O as Doc, bq as ThemeRegistry, aH as PageEmphasis, bp as ThemePageStyle, Q as DocDiagnostic, N as DiagramTemplateNode, M as DiagramTemplateEdge, by as TimelineTemplateTrack, bx as TimelineTemplateLink } from '../Doc-DmElSKmg.js';
2
- export { T as FRONTMATTER_CUSTOM_TEMPLATES_KEY, U as FRONTMATTER_CUSTOM_THEMES_KEY, a5 as LayoutHints, b1 as RenderStyle, bn as ThemeColorPalette, bt as ThemeStyle, bu as ThemeTypography, bI as VIEWPORT_PRESETS, bT as ViewportPreset, bY as createTemplateContext, c3 as getLayoutHints, c6 as getTwoColumnPositions, c7 as getViewport, c8 as getViewportOrientation, cb as isTemplateBlock, ce as scaledFontSize } from '../Doc-DmElSKmg.js';
1
+ import { bq as TemplateBlock, br as TemplateContext, a6 as Layer, y as CustomTemplateDefinition, bt as TemplateRegistry, bw as Theme, b$ as ViewportConfig, a_ as PersistentLayerConfig, at as MotionSpec, R as DocBlock, c0 as ViewportOrientation, aZ as PersistentLayer, bJ as TitleBlockInput, bf as SectionHeaderInput, j as BigTextInput, u as ContentBlockInput, bl as StatHighlightInput, b9 as QuoteBlockInput, Y as FactCardInput, bR as TwoColumnInput, J as DateEventInput, a4 as ImageWithCaptionInput, a9 as LeftFeatureInput, bc as RightFeatureInput, ae as MapBlockInput, bk as StartBlockConfig, $ as FullBleedQuoteInput, ac as ListBlockInput, b2 as PhotoGridInput, L as DefinitionCardInput, t as ComparisonBarInput, b8 as PullQuoteInput, b_ as VideoWithCaptionInput, bZ as VideoPullQuoteInput, I as DataTableInput, M as DiagramBlockInput, bM as TreeBlockInput, bF as TimelineBlockInput, k as Block, U as DrawingBlockInput, ai as MarkerStyle, A as AccentImage, a3 as ImageTreatment, a as AccentPosition, c as Animation, d as AnimationType, au as MotionState, ar as MotionProfile, by as ThemeColorScheme, w as CountUpSpec, Q as Doc, bA as ThemeRegistry, aR as PageEmphasis, bz as ThemePageStyle, S as DocDiagnostic, P as DiagramTemplateNode, O as DiagramTemplateEdge, bI as TimelineTemplateTrack, bH as TimelineTemplateLink } from '../Doc-BWtfp7dT.js';
2
+ export { V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, a8 as LayoutHints, bb as RenderStyle, bx as ThemeColorPalette, bD as ThemeStyle, bE as ThemeTypography, bS as VIEWPORT_PRESETS, c1 as ViewportPreset, c6 as createTemplateContext, cd as getLayoutHints, cg as getTwoColumnPositions, ch as getViewport, ci as getViewportOrientation, cm as isTemplateBlock, cs as scaledFontSize } from '../Doc-BWtfp7dT.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-BfttC9Zj.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-BfttC9Zj.js';
5
+ import { c as PageSection } from '../materializePageSection-Db7pABI0.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-Db7pABI0.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-ChnTImby.js';
9
+ export { D as DEFAULT_THEME, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-Bphz1CRp.js';
10
10
 
11
11
  /** Runtime registry composition for built-in and document-scoped templates. */
12
12
 
13
+ /**
14
+ * Templates whose text is bound to drawn geometry — axis ticks, legend
15
+ * entries, timeline callouts, diagram labels, comparison-bar values. Their
16
+ * layers are positioned in pixels against marks that do not scale, so the
17
+ * slideshow's grow-text-to-fit pass (which enlarges every text layer in a
18
+ * block until the tightest one meets its box) would detach the labels from
19
+ * what they label. Renderers skip that pass for these templates.
20
+ */
21
+ declare const GEOMETRY_BOUND_TEMPLATES: ReadonlySet<string>;
22
+ /** Whether a template's text must keep its authored size (see {@link GEOMETRY_BOUND_TEMPLATES}). */
23
+ declare function isGeometryBoundTemplate(template: string | undefined): boolean;
13
24
  /** Built-in templates keyed by the ids used in document annotations. */
14
25
  declare const templateRegistry: TemplateRegistry;
15
26
  /** Broad runtime view used after a template name has selected its function. */
@@ -76,6 +87,8 @@ interface MaterializeBlockLayersOptions {
76
87
  customTemplates?: readonly CustomTemplateDefinition[];
77
88
  /** Failed templates render a visible fallback by default. */
78
89
  failureMode?: LayerMaterializationFailureMode;
90
+ /** Motion profile for template output; omitted → theme default, else `calm`. */
91
+ motion?: MotionSpec | null;
79
92
  }
80
93
  /**
81
94
  * Turn any doc block into an owned, render-ready layer graph.
@@ -1733,6 +1746,13 @@ interface ExpandDocBlocksOptions {
1733
1746
  failureMode?: LayerMaterializationFailureMode;
1734
1747
  /** Receives structured template failures without hidden console output. */
1735
1748
  onDiagnostic?: (diagnostic: LayerMaterializationDiagnostic, block: DocBlock, blockIndex: number) => void;
1749
+ /**
1750
+ * Motion profile for template output (`calm` | `documentary` | `vibrant`
1751
+ * or a spec with overrides). Omitted → the theme's `renderStyle.motionProfile`,
1752
+ * else `calm`. Callers that render a `Doc` resolve it first with
1753
+ * `resolveMotionForDoc()` so `Doc.motion` and frontmatter take part.
1754
+ */
1755
+ motion?: MotionSpec | null;
1736
1756
  }
1737
1757
  declare function expandDocBlocks(blocks: DocBlock[], options?: ExpandDocBlocksOptions): Block[];
1738
1758
  /**
@@ -1766,6 +1786,18 @@ interface AnimationResult {
1766
1786
  * Get CSS class and styles for an animation.
1767
1787
  */
1768
1788
  declare function getAnimationStyle(animation: Animation | undefined, _currentTime?: number): AnimationResult;
1789
+ /** CSS `transform-origin` for a motion origin. */
1790
+ declare function transformOriginFor(origin: Animation['origin']): string;
1791
+ /** CSS transform for a tween state (rest state → `none`). */
1792
+ declare function motionStateTransform(state: MotionState | undefined): string;
1793
+ /** Seconds between words in a `wordReveal` when the animation names none. */
1794
+ declare const DEFAULT_WORD_STAGGER = 0.08;
1795
+ /**
1796
+ * Start offset (seconds from block start) of word `index` in a `wordReveal`.
1797
+ * Explicit `wordTimes` win; later words continue at the last interval, or at
1798
+ * the stagger when the list is empty.
1799
+ */
1800
+ declare function wordRevealDelay(animation: Animation, index: number): number;
1769
1801
  /**
1770
1802
  * Get default duration for an animation type.
1771
1803
  */
@@ -1836,6 +1868,28 @@ declare function getDefaultAnimation(context: TemplateContext, layerType: 'text'
1836
1868
  * `applyRenderStyleToLayers` post-pass, not an entrance.
1837
1869
  */
1838
1870
  declare function themedEntrance(context: TemplateContext, layerType: 'text' | 'image', fallback: Animation): Animation;
1871
+ /**
1872
+ * The motion profile in force for this block. Contexts built without one
1873
+ * (older callers, tests) behave as `calm`, which is the pre-profile output.
1874
+ */
1875
+ declare function getMotionProfile(context: TemplateContext): MotionProfile;
1876
+ /**
1877
+ * Profile-aware entrance for a text or caption layer.
1878
+ *
1879
+ * Under `calm` the template's fallback is returned untouched (same object),
1880
+ * so calm output is byte-identical to pre-profile output. Other profiles
1881
+ * swap in their entrance type, duration and easing while keeping the
1882
+ * template's authored delay (scaled by the profile's `delayScale`), so
1883
+ * staggers survive. The theme's `defaultTextAnimation` still applies first
1884
+ * through `themedEntrance`, and a `typewriter` theme keeps its typewriter.
1885
+ *
1886
+ * ```ts
1887
+ * animation: motionEntrance(context, { type: 'fadeIn', duration: 1, delay: 0.3 })
1888
+ * ```
1889
+ */
1890
+ declare function motionEntrance(context: TemplateContext, fallback: Animation, layerType?: 'text' | 'image'): Animation;
1891
+ /** A template-authored delay scaled by the profile (identity under `calm`). */
1892
+ declare function motionDelay(context: TemplateContext, delay: number): number;
1839
1893
  /**
1840
1894
  * Whether the theme defaults to text shadows.
1841
1895
  * Templates should consult this when choosing `shadow: true/false`.
@@ -1882,6 +1936,49 @@ declare function themedScrim(context: TemplateContext, alpha?: number): string;
1882
1936
  */
1883
1937
  declare function getTemplateHint<T extends string | number | boolean>(context: TemplateContext, templateName: string, key: string, fallback: T): T;
1884
1938
 
1939
+ /**
1940
+ * Count-up formatting
1941
+ *
1942
+ * Pure helpers behind the `countUp` animation: parse the number out of a
1943
+ * statistic such as `"$1.2M"`, `"73%"` or `"12,000 km"`, then format the
1944
+ * value the layer should show at a given block time. Both the player and the
1945
+ * offline renderer call `formatCountUp(text, animation, blockTime)`, so the
1946
+ * digits on screen are a pure function of time — no interval, no state.
1947
+ *
1948
+ * Related files:
1949
+ * - `schemas/Doc.ts` — `Animation.count`
1950
+ * - `react/src/layers/TextLayer.tsx` — renders the formatted text
1951
+ * - `doc/templates/statHighlight.ts`, `comparisonBar.ts` — opt in
1952
+ */
1953
+
1954
+ /** A statistic split into the parts that stay fixed and the number that animates. */
1955
+ interface ParsedStat {
1956
+ prefix: string;
1957
+ value: number;
1958
+ /** Decimal places written in the source text. */
1959
+ decimals: number;
1960
+ /** Whether the source used thousands separators. */
1961
+ grouping: boolean;
1962
+ suffix: string;
1963
+ }
1964
+ /**
1965
+ * Parse the first number in a statistic. Returns `null` for text without a
1966
+ * number (`"Unknown"`) or with a number a count-up would misrepresent
1967
+ * (years such as `1889` are left alone: counting to a date is nonsense).
1968
+ */
1969
+ declare function parseStatNumber(text: string): ParsedStat | null;
1970
+ /** Build the `count` spec for a statistic, or `null` when it cannot count up. */
1971
+ declare function countUpSpecFor(text: string): CountUpSpec | null;
1972
+ /** Format a number with fixed decimals and optional thousands separators. */
1973
+ declare function formatCountValue(value: number, decimals: number, grouping: boolean): string;
1974
+ /**
1975
+ * The text a `countUp` layer shows at `blockTime` seconds into its block.
1976
+ * Before the animation's delay the layer shows the starting value; after
1977
+ * `delay + duration` it shows the authored text verbatim, so the final frame
1978
+ * is always exactly what the author wrote.
1979
+ */
1980
+ declare function formatCountUp(text: string, animation: Animation, blockTime: number): string;
1981
+
1885
1982
  /**
1886
1983
  * Render-style post-pass — applies a theme's mechanical motion defaults to
1887
1984
  * template-generated layers.
@@ -4140,4 +4237,4 @@ declare function treeFromMarkdownList(list: MarkdownList): Tree;
4140
4237
  /** Find the first top-level markdown list in a block's body, if any. */
4141
4238
  declare function findFirstList(contents: MarkdownBlockNode[] | undefined): MarkdownList | undefined;
4142
4239
 
4143
- 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 };
4240
+ 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, 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 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, adjustY, anchorPoint, applyNarrationTiming, applyRenderStyleToLayers, asciiCellToCanvas, asciiDiagramFromBlocks, asciiDiagramFromTemplateData, asciiDiagramToTemplateData, asciiTimelineToTemplateData, autoTemplatePreservesContent, bigText, buildDashboardCellChrome, buildPageCss, buildPageCssVars, buildPreviewDoc, buildRegistry, canvasToAsciiCell, chooseDashboardLayout, clipEndpoints, clipPoint, coerceTemplateParams, comparisonBar, composeDashboardLayers, computeDiagramLayout, computeDrawingLayout, computeLayoutLayers, connectorPath, contentBlock, countBlocks, countUpSpecFor, coverBlock, createAccentLayers, cssFilterForTreatment, dashboardCanvasFill, dashboardCellAccent, dataSidecarPrefix, dataTable, dateEvent, definitionCard, deriveTemplateInputs, desiredCellZoom, detectAsciiDiagram, detectAsciiTimeline, detectTree, diagramBlock, docToMarkdown, documentTitleFromFileName, drawingBlock, expandCoverBlock, expandDocBlocks, expandPersistentLayers, extractBlockquoteText, extractBodyPlainText, extractEmbeddedVideos, extractFirstEmbeddedVideo, extractFirstImage, extractImages, extractListItems, extractRichListItems, extractTableData, extractTableFromContents, factCard, fallbackBlockLayers, findFirstList, findFirstTable, fitBigTextSize, fitDiagramLabel, flattenBlocks, flattenRenderableBlocks, formatCountUp, formatCountValue, fullBleedQuote, getAccentLayout, getAnimationProgress, getAnimationStyle, getAvailableTemplates, getBlockBodyText, getBlockDepth, getBlockMediaLayoutPolicy, getDashboardLayoutSummaries, getDefaultAnimation, getDefaultAnimationDuration, getMotionProfile, getOverlayOpacity, getPersistentLayersFromTheme, getPinnedBlockMeta, getTemplateHint, getThemeFont, getTransitionClass, hasTemplate, imageWithCaption, isAsciiDiagramFence, isAsciiTimelineFence, isContainerTemplate, isDataFence, isDataFilePath, isEligibleAsciiFenceLang, isEligibleAsciiTimelineFenceLang, isEligibleTreeFenceLang, isExplicitDiagramLang, isExplicitTimelineLang, isExplicitTreeLang, isGeometryBoundTemplate, isRepairableDiagram, isShapeName, isTemplatedPageBlock, isTreeFence, isWrappedFlowTimelineSource, layoutBlock, layoutCapacity, leftFeature, lineStyleDasharray, lintTemplateParams, listBlock, listDashboardLayouts, mapBlock, markdownBlockSeparatorLines, markdownToDoc, markerPath, materializeBlockLayers, materializeDashboard, materializeFlashcards, motionDelay, motionEntrance, motionStateTransform, nearestSnapPoint, normalizeDashboardZoom, normalizeShapeKind, pageStyleDataAttributes, parseAsciiDiagram, parseAsciiTimeline, parseAsciiTimelineWithStats, parseDataFence, parseStatNumber, parseTree, parseWrappedFlowTimeline, parseYamlSubset, photoGrid, pullQuote, quoteBlock, readCustomTemplatesFromFrontmatter, readCustomThemesFromFrontmatter, readDashboardLayoutsFromFrontmatter, renderAsciiDiagram, renderAsciiTimeline, renderMarkdownBlocksHtml, renderTree, repairAsciiDiagram, replaceDataFence, resolveAudioMapping, resolveColorScheme, resolveCoverSlideSettings, resolveDashboardLayoutDefinition, resolveDashboardSettings, resolveDashboardStyleId, resolveDashboardZooms, resolveDataReferences, resolveFlashcardMarker, resolveLayoutCells, resolvePageBlock, resolvePersistentLayers, resolveTemplateName, resolveThemeForDoc, rightFeature, scaleAnimationDuration, scoreTextSimilarity, sectionExtractors, sectionHeader, shapePath, shouldUseShadow, snapEndpoints, snapPoints, statHighlight, stripBlockBackdropLayer, stripsBlockBackdrop, templateRegistry, themeWantsAmbientMotion, themedEntrance, themedFontSize, themedImageTreatment, themedScrim, themedSurfaceGradient, timelineBlock, titleBlock, transformOriginFor, transposeCells, treeBlock, treeFromMarkdownList, treeFromTemplateData, treeToTemplateData, twoColumn, validateDashboardLayoutDefinition, validateMarkdownDoc, validateMarkdownSource, videoPullQuote, videoWithCaption, wordRevealDelay, wrapWithPersistentLayers, writeCustomTemplatesToFrontmatter, writeCustomThemesToFrontmatter, writeDashboardLayoutsToFrontmatter };