@bendyline/squisq 2.11.15 → 2.11.17

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 (39) hide show
  1. package/dist/{Doc-C-cv1g4G.d.ts → Doc-CXx1WL8G.d.ts} +28 -3
  2. package/dist/{ImageEditDoc-3J4PRw8N.d.ts → ImageEditDoc-BVLXI-Zd.d.ts} +1 -1
  3. package/dist/{annotationCoercion-Ckqpu33y.d.ts → annotationCoercion-BgL52343.d.ts} +1 -1
  4. package/dist/{chunk-4IQ2DHCI.js → chunk-54RU7TBZ.js} +34 -7
  5. package/dist/{chunk-C3NAY5YP.js → chunk-A5QJJZ5S.js} +8 -5
  6. package/dist/{chunk-HVJ6VFDX.js → chunk-GB7OFYUK.js} +4 -0
  7. package/dist/{chunk-4P557IPH.js → chunk-KNC4ZBQC.js} +5 -5
  8. package/dist/{chunk-YPI2VJSB.js → chunk-L7IIFWWW.js} +127 -20
  9. package/dist/{chunk-UVQPK6A3.js → chunk-LJZHC6GN.js} +146 -11
  10. package/dist/{chunk-GQWIUBJU.js → chunk-MY46W5O5.js} +2 -2
  11. package/dist/{chunk-HUXK7EOT.js → chunk-PGWYC3S2.js} +93 -4
  12. package/dist/{chunk-Z35TG4WR.js → chunk-PNXBDMNS.js} +1 -1
  13. package/dist/{chunk-X7BNDUNI.js → chunk-Q6ELOAOQ.js} +383 -1
  14. package/dist/{chunk-TMOHAFYE.js → chunk-WSFXV5BT.js} +17 -0
  15. package/dist/doc/index.d.ts +54 -9
  16. package/dist/doc/index.js +13 -7
  17. package/dist/fence/index.d.ts +2 -2
  18. package/dist/generate/index.d.ts +2 -2
  19. package/dist/imageEdit/index.d.ts +4 -4
  20. package/dist/index.d.ts +8 -8
  21. package/dist/index.js +37 -11
  22. package/dist/jsonForm/index.d.ts +2 -2
  23. package/dist/jsonForm/index.js +1 -1
  24. package/dist/markdown/index.d.ts +171 -5
  25. package/dist/markdown/index.js +24 -4
  26. package/dist/{materializePageSection-Dmy_-AUQ.d.ts → materializePageSection-BX1uOAlN.d.ts} +7 -2
  27. package/dist/mediaEdit/index.d.ts +3 -3
  28. package/dist/narration/index.d.ts +2 -2
  29. package/dist/narration/index.js +6 -6
  30. package/dist/recommend/index.d.ts +1 -1
  31. package/dist/recommend/index.js +2 -2
  32. package/dist/schemas/index.d.ts +5 -5
  33. package/dist/schemas/index.js +1 -1
  34. package/dist/{themeLibrary-CROfw3YK.d.ts → themeLibrary-Bnq_x-db.d.ts} +1 -1
  35. package/dist/timing/index.d.ts +2 -2
  36. package/dist/transform/index.d.ts +3 -3
  37. package/dist/transform/index.js +6 -6
  38. package/dist/{types-Be6sBUBx.d.ts → types-C6VvDDL2.d.ts} +5 -1
  39. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "./chunk-GQWIUBJU.js";
30
+ } from "./chunk-MY46W5O5.js";
31
31
  import {
32
32
  fenceRendererLangs
33
33
  } from "./chunk-PGI7HSWE.js";
@@ -65,7 +65,7 @@ import {
65
65
  getTransformStyleSummaries,
66
66
  resolveTransformStyle,
67
67
  transformNarratedSegment
68
- } from "./chunk-4P557IPH.js";
68
+ } from "./chunk-KNC4ZBQC.js";
69
69
  import {
70
70
  extractContent,
71
71
  mapElementToBlock,
@@ -154,7 +154,7 @@ import {
154
154
  pipStyleVars,
155
155
  serializeTheme,
156
156
  validateDocSchema
157
- } from "./chunk-HVJ6VFDX.js";
157
+ } from "./chunk-GB7OFYUK.js";
158
158
  import {
159
159
  calculateBearing,
160
160
  decodeGeohash,
@@ -246,7 +246,7 @@ import {
246
246
  validateMarkdownSource,
247
247
  wordRevealDelay,
248
248
  writeDashboardLayoutsToFrontmatter
249
- } from "./chunk-4IQ2DHCI.js";
249
+ } from "./chunk-54RU7TBZ.js";
250
250
  import {
251
251
  buildNarrationScript,
252
252
  buildNarrationTimingJson,
@@ -257,7 +257,7 @@ import {
257
257
  wordIndexAtChar,
258
258
  wordIndexAtTime,
259
259
  wordPosAtExpectedSyllables
260
- } from "./chunk-Z35TG4WR.js";
260
+ } from "./chunk-PNXBDMNS.js";
261
261
  import {
262
262
  ASCII_CHAR_H,
263
263
  ASCII_CHAR_W,
@@ -273,6 +273,7 @@ import {
273
273
  TEMPLATE_AUTHORING_METADATA,
274
274
  TEMPLATE_INPUT_DESCRIPTORS,
275
275
  TEMPLATE_METADATA,
276
+ accentForViewport,
276
277
  adjustY,
277
278
  applyRenderStyleToLayers,
278
279
  asciiCellToCanvas,
@@ -308,6 +309,7 @@ import {
308
309
  extractEmbeddedVideos,
309
310
  extractFirstEmbeddedVideo,
310
311
  extractFirstImage,
312
+ extractHostedVideos,
311
313
  extractImages,
312
314
  extractListItems,
313
315
  extractRichListItems,
@@ -340,6 +342,7 @@ import {
340
342
  imageWithCaption,
341
343
  isDataFence,
342
344
  isGeometryBoundTemplate,
345
+ isMaterializedMediaNode,
343
346
  isShapeName,
344
347
  layoutBlock,
345
348
  leftFeature,
@@ -388,7 +391,7 @@ import {
388
391
  wrapWithPersistentLayers,
389
392
  writeCustomTemplatesToFrontmatter,
390
393
  writeCustomThemesToFrontmatter
391
- } from "./chunk-YPI2VJSB.js";
394
+ } from "./chunk-L7IIFWWW.js";
392
395
  import {
393
396
  ASCII_DIAGRAM_FENCE_LANGS,
394
397
  ASCII_TIMELINE_FENCE_LANGS,
@@ -413,7 +416,7 @@ import {
413
416
  parseWrappedFlowTimeline,
414
417
  profileBlockContents,
415
418
  recommendTemplatesForBlock
416
- } from "./chunk-C3NAY5YP.js";
419
+ } from "./chunk-A5QJJZ5S.js";
417
420
  import {
418
421
  PATH_SHAPE_KINDS,
419
422
  anchorPoint,
@@ -549,7 +552,7 @@ import {
549
552
  stringifyMarkdown,
550
553
  unwrapMarkdownSource,
551
554
  wrapMarkdownSource
552
- } from "./chunk-UVQPK6A3.js";
555
+ } from "./chunk-LJZHC6GN.js";
553
556
  import {
554
557
  DEFAULT_MARKDOWN_SAFETY_LIMITS,
555
558
  MarkdownLimitError,
@@ -561,7 +564,7 @@ import {
561
564
  resolveMarkdownSafetyLimits,
562
565
  serializePandocAttributes,
563
566
  toMdast
564
- } from "./chunk-HUXK7EOT.js";
567
+ } from "./chunk-PGWYC3S2.js";
565
568
  import {
566
569
  BLOCK_META_KEY_DESCRIPTORS,
567
570
  CONTAINER_TEMPLATES,
@@ -579,26 +582,36 @@ import {
579
582
  splitKeyValueToken,
580
583
  tokenizeAttrTokens,
581
584
  unquoteAttrValue
582
- } from "./chunk-TMOHAFYE.js";
585
+ } from "./chunk-WSFXV5BT.js";
583
586
  import {
587
+ VIDEO_EMBED_IFRAME_ALLOW,
588
+ VIDEO_EMBED_PROVIDERS,
584
589
  countNodes,
585
590
  createDocument,
586
591
  extractPlainText,
592
+ findBlockVideoEmbed,
587
593
  findNodesByType,
588
594
  formatBlockScalar,
589
595
  formatFrontmatterValue,
590
596
  formatFrontmatterYaml,
591
597
  getChildren,
592
598
  inferDocumentTitle,
599
+ isVideoEmbedUrl,
600
+ mediaKindForUrl,
593
601
  parseFrontmatter,
594
602
  parseHtmlToNodes,
603
+ parseVideoEmbedInput,
604
+ parseVideoEmbedUrl,
605
+ parseVideoStartTime,
595
606
  plainTextFromInlineHtml,
596
607
  readFrontmatterThemeId,
597
608
  setFrontmatterValues,
598
609
  splitFrontmatterBlock,
599
610
  stringifyHtmlNodes,
611
+ videoEmbedFromIframe,
612
+ videoEmbedIframeAttributes,
600
613
  walkMarkdownTree
601
- } from "./chunk-X7BNDUNI.js";
614
+ } from "./chunk-Q6ELOAOQ.js";
602
615
  import {
603
616
  ICONS,
604
617
  canonicalIconToken,
@@ -748,7 +761,10 @@ export {
748
761
  TREE_FENCE_LANGS,
749
762
  VERSIONS_PREFIX,
750
763
  VERSION_TIMESTAMP_PATTERN,
764
+ VIDEO_EMBED_IFRAME_ALLOW,
765
+ VIDEO_EMBED_PROVIDERS,
751
766
  VIEWPORT_PRESETS,
767
+ accentForViewport,
752
768
  accentToColorScheme,
753
769
  addLayer,
754
770
  adjustY,
@@ -886,6 +902,7 @@ export {
886
902
  extractFirstEmbeddedVideo,
887
903
  extractFirstImage,
888
904
  extractFrameFeatures,
905
+ extractHostedVideos,
889
906
  extractImages,
890
907
  extractKeywords,
891
908
  extractListItems,
@@ -898,6 +915,7 @@ export {
898
915
  featureStep,
899
916
  fenceRendererLangs,
900
917
  fetchResourceBytes,
918
+ findBlockVideoEmbed,
901
919
  findDocumentPath,
902
920
  findFirstList,
903
921
  findFirstTable,
@@ -985,6 +1003,7 @@ export {
985
1003
  isExplicitTreeLang,
986
1004
  isGeometryBoundTemplate,
987
1005
  isHex,
1006
+ isMaterializedMediaNode,
988
1007
  isMotionProfileName,
989
1008
  isPersistentLayerTemplate,
990
1009
  isRepairableDiagram,
@@ -995,6 +1014,7 @@ export {
995
1014
  isTemplatedPageBlock,
996
1015
  isTransitionType,
997
1016
  isTreeFence,
1017
+ isVideoEmbedUrl,
998
1018
  isWrappedFlowTimelineSource,
999
1019
  layoutBlock,
1000
1020
  layoutCapacity,
@@ -1023,6 +1043,7 @@ export {
1023
1043
  materializePageSection,
1024
1044
  materializePageSections,
1025
1045
  mayBeAnimatedImage,
1046
+ mediaKindForUrl,
1026
1047
  motionDelay,
1027
1048
  motionEntrance,
1028
1049
  motionStateTransform,
@@ -1057,6 +1078,9 @@ export {
1057
1078
  parseTree,
1058
1079
  parseVersionPath,
1059
1080
  parseVersionTimestamp,
1081
+ parseVideoEmbedInput,
1082
+ parseVideoEmbedUrl,
1083
+ parseVideoStartTime,
1060
1084
  parseWrappedFlowTimeline,
1061
1085
  parseYamlSubset,
1062
1086
  photoGrid,
@@ -1194,6 +1218,8 @@ export {
1194
1218
  validateMarkdownDoc,
1195
1219
  validateMarkdownSource,
1196
1220
  validateTheme,
1221
+ videoEmbedFromIframe,
1222
+ videoEmbedIframeAttributes,
1197
1223
  videoPullQuote,
1198
1224
  videoWithCaption,
1199
1225
  walkMarkdownTree,
@@ -1,5 +1,5 @@
1
- import { bw as Theme, bm as SurfaceScheme } from '../Doc-C-cv1g4G.js';
2
- import '../types-Be6sBUBx.js';
1
+ import { bw as Theme, bm as SurfaceScheme } from '../Doc-CXx1WL8G.js';
2
+ import '../types-C6VvDDL2.js';
3
3
 
4
4
  /**
5
5
  * JSON Form types — Squisq's hint vocabulary layered on JSON Schema.
@@ -16,7 +16,7 @@ import {
16
16
  setByPointer,
17
17
  toPointer
18
18
  } from "../chunk-7WN7DDMI.js";
19
- import "../chunk-HVJ6VFDX.js";
19
+ import "../chunk-GB7OFYUK.js";
20
20
  import "../chunk-2SRF5III.js";
21
21
  import "../chunk-PFH3WV6J.js";
22
22
  import "../chunk-JSGIWW35.js";
@@ -1,6 +1,6 @@
1
- import { $ as ParseOptions, n as MarkdownDocument, a0 as StringifyOptions, H as HeadingAttributes, e as HtmlNode, L as MarkdownNode } from '../types-Be6sBUBx.js';
2
- export { D as DEFAULT_MARKDOWN_SAFETY_LIMITS, b as HeadingTemplateAnnotation, c as HtmlComment, d as HtmlElement, f as HtmlText, M as MarkdownBlockNode, g as MarkdownBlockquote, h as MarkdownBreak, i as MarkdownCodeBlock, j as MarkdownContainerDirective, k as MarkdownDefinitionDescription, l as MarkdownDefinitionList, m as MarkdownDefinitionTerm, o as MarkdownEmphasis, p as MarkdownFootnoteDefinition, q as MarkdownFootnoteReference, r as MarkdownHeading, s as MarkdownHtmlBlock, t as MarkdownImage, u as MarkdownImageReference, v as MarkdownInlineCode, w as MarkdownInlineHtml, x as MarkdownInlineIcon, y as MarkdownInlineMath, z as MarkdownInlineNode, A as MarkdownLeafDirective, B as MarkdownLimitError, C as MarkdownLink, E as MarkdownLinkDefinition, F as MarkdownLinkReference, G as MarkdownList, I as MarkdownListItem, J as MarkdownMathBlock, K as MarkdownMention, N as MarkdownParagraph, O as MarkdownPoint, P as MarkdownSafetyLimits, Q as MarkdownSourcePosition, R as MarkdownStrikethrough, S as MarkdownStrong, T as MarkdownSubscript, U as MarkdownSuperscript, V as MarkdownTable, W as MarkdownTableCell, X as MarkdownTableRow, Y as MarkdownText, Z as MarkdownTextDirective, _ as MarkdownThematicBreak, a6 as assertMarkdownDocumentWithinLimits, a7 as assertMarkdownSourceWithinLimits, ac as resolveMarkdownSafetyLimits } from '../types-Be6sBUBx.js';
3
- export { B as BLOCK_META_KEY_DESCRIPTORS, a as BlockMetaKeyDescriptor, K as KNOWN_BLOCK_META_KEYS, b as KnownBlockMetaKey, p as parseTimeSeconds } from '../annotationCoercion-Ckqpu33y.js';
1
+ import { $ as ParseOptions, n as MarkdownDocument, a0 as StringifyOptions, H as HeadingAttributes, e as HtmlNode, M as MarkdownBlockNode, d as HtmlElement, L as MarkdownNode } from '../types-C6VvDDL2.js';
2
+ export { D as DEFAULT_MARKDOWN_SAFETY_LIMITS, b as HeadingTemplateAnnotation, c as HtmlComment, f as HtmlText, g as MarkdownBlockquote, h as MarkdownBreak, i as MarkdownCodeBlock, j as MarkdownContainerDirective, k as MarkdownDefinitionDescription, l as MarkdownDefinitionList, m as MarkdownDefinitionTerm, o as MarkdownEmphasis, p as MarkdownFootnoteDefinition, q as MarkdownFootnoteReference, r as MarkdownHeading, s as MarkdownHtmlBlock, t as MarkdownImage, u as MarkdownImageReference, v as MarkdownInlineCode, w as MarkdownInlineHtml, x as MarkdownInlineIcon, y as MarkdownInlineMath, z as MarkdownInlineNode, A as MarkdownLeafDirective, B as MarkdownLimitError, C as MarkdownLink, E as MarkdownLinkDefinition, F as MarkdownLinkReference, G as MarkdownList, I as MarkdownListItem, J as MarkdownMathBlock, K as MarkdownMention, N as MarkdownParagraph, O as MarkdownPoint, P as MarkdownSafetyLimits, Q as MarkdownSourcePosition, R as MarkdownStrikethrough, S as MarkdownStrong, T as MarkdownSubscript, U as MarkdownSuperscript, V as MarkdownTable, W as MarkdownTableCell, X as MarkdownTableRow, Y as MarkdownText, Z as MarkdownTextDirective, _ as MarkdownThematicBreak, a6 as assertMarkdownDocumentWithinLimits, a7 as assertMarkdownSourceWithinLimits, ac as resolveMarkdownSafetyLimits } from '../types-C6VvDDL2.js';
3
+ export { B as BLOCK_META_KEY_DESCRIPTORS, a as BlockMetaKeyDescriptor, K as KNOWN_BLOCK_META_KEYS, b as KnownBlockMetaKey, p as parseTimeSeconds } from '../annotationCoercion-BgL52343.js';
4
4
 
5
5
  /**
6
6
  * Markdown → JSON Parser
@@ -296,6 +296,147 @@ declare function sanitizeUrl(url: string | null | undefined, kind?: UrlKind, opt
296
296
  */
297
297
  declare function sanitizeHtmlNodes(nodes: HtmlNode[]): HtmlNode[];
298
298
 
299
+ /**
300
+ * Hosted-video embeds (YouTube, Vimeo, Loom, Dailymotion, Wistia).
301
+ *
302
+ * The authored form is a paragraph that is ONLY a link, or a bare URL, to a
303
+ * video page:
304
+ *
305
+ * ```markdown
306
+ * [Launch keynote](https://www.youtube.com/watch?v=dQw4w9WgXcQ)
307
+ *
308
+ * https://vimeo.com/76979871
309
+ * ```
310
+ *
311
+ * GitHub, Notion and Medium all follow this convention. It degrades to a working
312
+ * link in every plain markdown renderer and in every document exporter
313
+ * (DOCX/PDF/EPUB), and renderers that know the convention swap in the
314
+ * provider's player. A link inside prose stays a link: only a paragraph made of
315
+ * nothing else is an embed. An `<iframe>` embed snippet copied from a provider's
316
+ * Share → Embed dialog is recognized too ({@link findBlockVideoEmbed} on an
317
+ * `htmlBlock`, {@link parseVideoEmbedInput} for pasted text).
318
+ *
319
+ * The iframe `src` is ALWAYS rebuilt from validated parts — provider, an id
320
+ * matched against the provider's id grammar, a whole-second start offset — on a
321
+ * fixed provider origin. An author's URL never reaches an iframe, which is what
322
+ * lets the HTML sanitizer admit these iframes while it drops every other one.
323
+ */
324
+
325
+ type VideoEmbedProviderId = 'youtube' | 'vimeo' | 'loom' | 'dailymotion' | 'wistia';
326
+ /** Display facts about a supported provider, for pickers and help text. */
327
+ interface VideoEmbedProviderInfo {
328
+ id: VideoEmbedProviderId;
329
+ /** Human-readable name, e.g. `YouTube`. */
330
+ name: string;
331
+ /** A representative page URL, for placeholder and help text. */
332
+ example: string;
333
+ }
334
+ /** The supported providers, in the order UI should list them. */
335
+ declare const VIDEO_EMBED_PROVIDERS: readonly VideoEmbedProviderInfo[];
336
+ /** A recognized hosted video, normalized. */
337
+ interface VideoEmbed {
338
+ provider: VideoEmbedProviderId;
339
+ /** Human-readable provider name, e.g. `YouTube`. */
340
+ providerName: string;
341
+ /**
342
+ * The provider's id for what plays: a video id, or — for a YouTube
343
+ * playlist link with no video — the playlist id.
344
+ */
345
+ id: string;
346
+ /** YouTube playlist the video plays within, when the URL named one. */
347
+ playlistId?: string;
348
+ /** The player URL for an `<iframe src>`. Rebuilt from validated parts. */
349
+ embedUrl: string;
350
+ /**
351
+ * The canonical page URL: what a markdown link should point at. Tracking
352
+ * parameters (`si=`, `feature=`, `pp=` …) are dropped; the start offset and
353
+ * playlist are kept. An embed-only URL (`/embed/<id>`) maps back to the
354
+ * watch page, so a pasted iframe still degrades to a link a reader can open.
355
+ */
356
+ watchUrl: string;
357
+ /** Start offset in whole seconds, when the URL carried one. */
358
+ startSeconds?: number;
359
+ /**
360
+ * A still poster image, when the provider serves one at a predictable URL
361
+ * with no API call (YouTube, Dailymotion). Remote — callers that must stay
362
+ * offline should not fetch it.
363
+ */
364
+ thumbnailUrl?: string;
365
+ /** Frame width ÷ height: 16/9, or 9/16 for YouTube Shorts. */
366
+ aspectRatio: number;
367
+ }
368
+ /** A block that should render as a hosted-video player. */
369
+ interface BlockVideoEmbed {
370
+ embed: VideoEmbed;
371
+ /**
372
+ * The author's label for the video — the link text — or null when the
373
+ * paragraph is a bare URL. For an `<iframe>` block it is the iframe's
374
+ * `title`, unless that is a provider's generic "… video player" title.
375
+ */
376
+ title: string | null;
377
+ /** How the block was written. */
378
+ form: 'link' | 'url' | 'iframe';
379
+ }
380
+ /**
381
+ * A start offset as providers write it — `90`, `90s`, `1m30s`, `1h2m3s`,
382
+ * `1:30`, `1:02:03` — in whole seconds; undefined when absent, zero or
383
+ * unreadable.
384
+ */
385
+ declare function parseVideoStartTime(raw: string | null | undefined): number | undefined;
386
+ /**
387
+ * Recognize a hosted-video page or player URL. Accepts the forms people paste:
388
+ * scheme-less (`youtu.be/…`), protocol-relative (`//player.vimeo.com/…`), the
389
+ * `<…>` autolink form, and markdown-escaped destinations. Returns null for
390
+ * anything that is not a playable video on a supported provider — a channel,
391
+ * a search page, a malformed id.
392
+ */
393
+ declare function parseVideoEmbedUrl(input: string | null | undefined): VideoEmbed | null;
394
+ /** Whether `input` is a hosted-video URL {@link parseVideoEmbedUrl} recognizes. */
395
+ declare function isVideoEmbedUrl(input: string | null | undefined): boolean;
396
+ /** The value a player iframe's `allow` attribute carries. */
397
+ declare const VIDEO_EMBED_IFRAME_ALLOW = "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen";
398
+ /**
399
+ * The complete attribute set for a player `<iframe>` — the ONE definition
400
+ * every renderer and exporter emits, so a sanitized iframe and a rendered link
401
+ * paragraph produce the same element. Attribute names are HTML (lowercase).
402
+ *
403
+ * `referrerpolicy` matters: YouTube refuses to play ("Error 153") when an
404
+ * embed request carries no referrer.
405
+ */
406
+ declare function videoEmbedIframeAttributes(embed: VideoEmbed, title?: string | null): Record<string, string>;
407
+ /**
408
+ * Recognize a provider iframe element (the sanitizer's entry point). Null when
409
+ * its `src` is not a supported video.
410
+ */
411
+ declare function videoEmbedFromIframe(element: HtmlElement): {
412
+ embed: VideoEmbed;
413
+ title: string | null;
414
+ } | null;
415
+ /**
416
+ * What a person pasted or typed where a video is expected: a page URL, or a
417
+ * provider's `<iframe>` embed code. Null when it is neither.
418
+ */
419
+ declare function parseVideoEmbedInput(input: string | null | undefined): {
420
+ embed: VideoEmbed;
421
+ title: string | null;
422
+ } | null;
423
+ /**
424
+ * The hosted video a block stands for, or null:
425
+ *
426
+ * - a paragraph whose only content is one link to a video page
427
+ * (`[title](url)`; `title` is the link text unless that is itself a URL);
428
+ * - a paragraph whose whole text is one video URL (a bare URL, which GFM
429
+ * autolinks — read from the text so an autolink that stopped short of a
430
+ * trailing `_` in the id is still recognized);
431
+ * - an HTML block holding a single provider `<iframe>` (pasted embed code).
432
+ *
433
+ * A link with surrounding prose is not an embed. Renderers ask this of
434
+ * TOP-LEVEL blocks only: a video link in a list item or blockquote is a list
435
+ * of links, not a stack of players. (Explicit `<iframe>` code is honored
436
+ * wherever it appears.)
437
+ */
438
+ declare function findBlockVideoEmbed(node: MarkdownBlockNode): BlockVideoEmbed | null;
439
+
299
440
  /**
300
441
  * Caller-owned policy for resources referenced by a document.
301
442
  *
@@ -633,11 +774,20 @@ declare function rewriteMarkdownReferences(source: string, options?: MarkdownRef
633
774
  interface DocfxMarkdownOptions {
634
775
  /** Image omission retains descriptive alt text. */
635
776
  images?: 'preserve' | 'omit';
777
+ /** Retain invalid or unsupported source metadata visibly without interpreting it. */
778
+ frontmatterAsCode?: boolean;
779
+ /** Resolve code transclusions and UID references without fetching in core. */
780
+ reference?: (kind: 'code' | 'xref', target: string, label: string) => string;
781
+ /** Preserve unsupported presentation markers as visible inline code. */
782
+ unknownDirectives?: 'error' | 'preserve';
783
+ /** Report malformed references retained verbatim as code in preservation mode. */
784
+ onPreservedReference?: (source: string) => void;
636
785
  }
637
786
  /** Convert presentational DocFX directives to portable Markdown without fetching.
638
787
  * Includes and code transclusions remain the source adapter's responsibility.
639
788
  * All zone variants are retained with their pivot labels. Code examples and
640
- * frontmatter remain untouched. Unsupported directives throw instead of losing text.
789
+ * frontmatter remain untouched by default. Hosts can preserve unsupported syntax
790
+ * and metadata visibly through the explicit preservation options.
641
791
  */
642
792
  declare function normalizeDocfxMarkdown(source: string, options?: DocfxMarkdownOptions): string;
643
793
 
@@ -650,4 +800,20 @@ declare function normalizeDocfxMarkdown(source: string, options?: DocfxMarkdownO
650
800
  */
651
801
  declare function condenseMarkdownSource(source: string): string;
652
802
 
653
- export { DEFAULT_INTERACTIVE_RESOURCE_POLICY, DEFAULT_RESOURCE_MAX_BYTES, DEFAULT_RESOURCE_TIMEOUT_MS, DEFAULT_WRAP_WIDTH, type DocfxMarkdownOptions, type FetchResourceBytesOptions, type FetchedResource, HeadingAttributes, HtmlNode, type HtmlPolicy, LOCAL_ONLY_RESOURCE_POLICY, MARKDOWN_SOURCE_TRANSFORMS, MarkdownDocument, MarkdownNode, type MarkdownReferenceOptions, type MarkdownSourceEdit, type MarkdownSourceTransform, type MarkdownSourceTransformId, type MarkdownSourceTransformOptions, type MarkdownSourceTransformResult, type MarkdownWrapState, ParseOptions, type ResourcePolicy, ResourcePolicyError, type SanitizeUrlOptions, StringifyOptions, type TrailingAnnotationMatch, type UrlKind, applyMarkdownSourceTransform, cleanupMarkdownSource, condenseMarkdownSource, countNodes, createDocument, detectMarkdownWrapState, extractPlainText, fetchResourceBytes, findNodesByType, formatBlockScalar, formatFrontmatterValue, formatFrontmatterYaml, fromMdast, getChildren, inferDocumentTitle, isResourceUrlAllowed, matchTrailingPandocAttr, matchTrailingTemplateAnnotation, needsQuoting, normalizeDocfxMarkdown, parseFrontmatter, parseHtmlToNodes, parseMarkdown, parsePandocAttrTokens, plainTextFromInlineHtml, quoteAttrValue, readFrontmatterThemeId, rewriteMarkdownReferences, sanitizeHtmlNodes, sanitizeUrl, serializePandocAttributes, setFrontmatterValues, splitFrontmatterBlock, splitKeyValueToken, stringifyHtmlNodes, stringifyMarkdown, toMdast, tokenizeAttrTokens, unquoteAttrValue, unwrapMarkdownSource, walkMarkdownTree, wrapMarkdownSource };
803
+ /**
804
+ * What a markdown media reference points at. Image syntax is the only
805
+ * embedding markdown has, so documents written for a library that ships
806
+ * clips and recordings (knowledge catalogs, recorder output) reference them
807
+ * as `![A brass bell ringing](sounds/bell.mp3)` — and a renderer that drew
808
+ * every such reference as an `<img>` showed a broken picture.
809
+ *
810
+ * The decision is by file extension, ignoring any query string or fragment.
811
+ * `.webm` and `.mp4` are containers for either; like narration discovery
812
+ * (`audioMapping.ts`), they count as audio only under the `audio/` folder
813
+ * the recorder writes to, and as video everywhere else.
814
+ */
815
+ type MediaReferenceKind = 'video' | 'audio';
816
+ /** `'video'`, `'audio'`, or null for anything else (an image, a page, no extension). */
817
+ declare function mediaKindForUrl(url: string): MediaReferenceKind | null;
818
+
819
+ export { type BlockVideoEmbed, DEFAULT_INTERACTIVE_RESOURCE_POLICY, DEFAULT_RESOURCE_MAX_BYTES, DEFAULT_RESOURCE_TIMEOUT_MS, DEFAULT_WRAP_WIDTH, type DocfxMarkdownOptions, type FetchResourceBytesOptions, type FetchedResource, HeadingAttributes, HtmlElement, HtmlNode, type HtmlPolicy, LOCAL_ONLY_RESOURCE_POLICY, MARKDOWN_SOURCE_TRANSFORMS, MarkdownBlockNode, MarkdownDocument, MarkdownNode, type MarkdownReferenceOptions, type MarkdownSourceEdit, type MarkdownSourceTransform, type MarkdownSourceTransformId, type MarkdownSourceTransformOptions, type MarkdownSourceTransformResult, type MarkdownWrapState, type MediaReferenceKind, ParseOptions, type ResourcePolicy, ResourcePolicyError, type SanitizeUrlOptions, StringifyOptions, type TrailingAnnotationMatch, type UrlKind, VIDEO_EMBED_IFRAME_ALLOW, VIDEO_EMBED_PROVIDERS, type VideoEmbed, type VideoEmbedProviderId, type VideoEmbedProviderInfo, applyMarkdownSourceTransform, cleanupMarkdownSource, condenseMarkdownSource, countNodes, createDocument, detectMarkdownWrapState, extractPlainText, fetchResourceBytes, findBlockVideoEmbed, findNodesByType, formatBlockScalar, formatFrontmatterValue, formatFrontmatterYaml, fromMdast, getChildren, inferDocumentTitle, isResourceUrlAllowed, isVideoEmbedUrl, matchTrailingPandocAttr, matchTrailingTemplateAnnotation, mediaKindForUrl, needsQuoting, normalizeDocfxMarkdown, parseFrontmatter, parseHtmlToNodes, parseMarkdown, parsePandocAttrTokens, parseVideoEmbedInput, parseVideoEmbedUrl, parseVideoStartTime, plainTextFromInlineHtml, quoteAttrValue, readFrontmatterThemeId, rewriteMarkdownReferences, sanitizeHtmlNodes, sanitizeUrl, serializePandocAttributes, setFrontmatterValues, splitFrontmatterBlock, splitKeyValueToken, stringifyHtmlNodes, stringifyMarkdown, toMdast, tokenizeAttrTokens, unquoteAttrValue, unwrapMarkdownSource, videoEmbedFromIframe, videoEmbedIframeAttributes, walkMarkdownTree, wrapMarkdownSource };
@@ -17,7 +17,7 @@ import {
17
17
  stringifyMarkdown,
18
18
  unwrapMarkdownSource,
19
19
  wrapMarkdownSource
20
- } from "../chunk-UVQPK6A3.js";
20
+ } from "../chunk-LJZHC6GN.js";
21
21
  import {
22
22
  DEFAULT_MARKDOWN_SAFETY_LIMITS,
23
23
  MarkdownLimitError,
@@ -29,7 +29,7 @@ import {
29
29
  resolveMarkdownSafetyLimits,
30
30
  serializePandocAttributes,
31
31
  toMdast
32
- } from "../chunk-HUXK7EOT.js";
32
+ } from "../chunk-PGWYC3S2.js";
33
33
  import {
34
34
  BLOCK_META_KEY_DESCRIPTORS,
35
35
  KNOWN_BLOCK_META_KEYS,
@@ -43,26 +43,36 @@ import {
43
43
  splitKeyValueToken,
44
44
  tokenizeAttrTokens,
45
45
  unquoteAttrValue
46
- } from "../chunk-TMOHAFYE.js";
46
+ } from "../chunk-WSFXV5BT.js";
47
47
  import {
48
+ VIDEO_EMBED_IFRAME_ALLOW,
49
+ VIDEO_EMBED_PROVIDERS,
48
50
  countNodes,
49
51
  createDocument,
50
52
  extractPlainText,
53
+ findBlockVideoEmbed,
51
54
  findNodesByType,
52
55
  formatBlockScalar,
53
56
  formatFrontmatterValue,
54
57
  formatFrontmatterYaml,
55
58
  getChildren,
56
59
  inferDocumentTitle,
60
+ isVideoEmbedUrl,
61
+ mediaKindForUrl,
57
62
  parseFrontmatter,
58
63
  parseHtmlToNodes,
64
+ parseVideoEmbedInput,
65
+ parseVideoEmbedUrl,
66
+ parseVideoStartTime,
59
67
  plainTextFromInlineHtml,
60
68
  readFrontmatterThemeId,
61
69
  setFrontmatterValues,
62
70
  splitFrontmatterBlock,
63
71
  stringifyHtmlNodes,
72
+ videoEmbedFromIframe,
73
+ videoEmbedIframeAttributes,
64
74
  walkMarkdownTree
65
- } from "../chunk-X7BNDUNI.js";
75
+ } from "../chunk-Q6ELOAOQ.js";
66
76
  import "../chunk-7N4G32LG.js";
67
77
  import "../chunk-4VOD55SX.js";
68
78
  export {
@@ -77,6 +87,8 @@ export {
77
87
  MARKDOWN_SOURCE_TRANSFORMS,
78
88
  MarkdownLimitError,
79
89
  ResourcePolicyError,
90
+ VIDEO_EMBED_IFRAME_ALLOW,
91
+ VIDEO_EMBED_PROVIDERS,
80
92
  applyMarkdownSourceTransform,
81
93
  assertMarkdownDocumentWithinLimits,
82
94
  assertMarkdownSourceWithinLimits,
@@ -87,6 +99,7 @@ export {
87
99
  detectMarkdownWrapState,
88
100
  extractPlainText,
89
101
  fetchResourceBytes,
102
+ findBlockVideoEmbed,
90
103
  findNodesByType,
91
104
  formatBlockScalar,
92
105
  formatFrontmatterValue,
@@ -95,8 +108,10 @@ export {
95
108
  getChildren,
96
109
  inferDocumentTitle,
97
110
  isResourceUrlAllowed,
111
+ isVideoEmbedUrl,
98
112
  matchTrailingPandocAttr,
99
113
  matchTrailingTemplateAnnotation,
114
+ mediaKindForUrl,
100
115
  needsQuoting,
101
116
  normalizeDocfxMarkdown,
102
117
  parseFrontmatter,
@@ -104,6 +119,9 @@ export {
104
119
  parseMarkdown,
105
120
  parsePandocAttrTokens,
106
121
  parseTimeSeconds,
122
+ parseVideoEmbedInput,
123
+ parseVideoEmbedUrl,
124
+ parseVideoStartTime,
107
125
  plainTextFromInlineHtml,
108
126
  quoteAttrValue,
109
127
  readFrontmatterThemeId,
@@ -121,6 +139,8 @@ export {
121
139
  tokenizeAttrTokens,
122
140
  unquoteAttrValue,
123
141
  unwrapMarkdownSource,
142
+ videoEmbedFromIframe,
143
+ videoEmbedIframeAttributes,
124
144
  walkMarkdownTree,
125
145
  wrapMarkdownSource
126
146
  };
@@ -1,5 +1,5 @@
1
- import { k as Block, aT as PageSectionKind, aR as PageEmphasis, by as ThemeColorScheme, aP as PageBackground, bw as Theme, b$ as ViewportConfig, y as CustomTemplateDefinition, aW as PageVariant, bk as StartBlockConfig, Q as Doc, bz as ThemePageStyle } from './Doc-C-cv1g4G.js';
2
- import { M as MarkdownBlockNode } from './types-Be6sBUBx.js';
1
+ import { k as Block, aT as PageSectionKind, aR as PageEmphasis, by as ThemeColorScheme, aP as PageBackground, bw as Theme, c0 as ViewportConfig, y as CustomTemplateDefinition, aW as PageVariant, bk as StartBlockConfig, Q as Doc, bz as ThemePageStyle } from './Doc-CXx1WL8G.js';
2
+ import { M as MarkdownBlockNode } from './types-C6VvDDL2.js';
3
3
 
4
4
  /**
5
5
  * PageSection — the framework-agnostic block model for Page (linear) mode.
@@ -46,6 +46,11 @@ type PageMedia = {
46
46
  clipEnd?: number;
47
47
  credit?: string;
48
48
  license?: string;
49
+ } | {
50
+ /** A hosted video (YouTube, Vimeo, …) by its page URL; renderers play it. */
51
+ type: 'videoEmbed';
52
+ url: string;
53
+ title?: string;
49
54
  } | {
50
55
  type: 'canvas';
51
56
  spatial: PageSpatialKind;
@@ -1,6 +1,6 @@
1
- import { al as MediaCut, Q as Doc, aj as MediaClip, cv as MediaFxOpId, cw as MediaFxChain } from '../Doc-C-cv1g4G.js';
2
- export { cx as MEDIA_EDIT_PARAMS, cy as MEDIA_FX_ORDER, cz as MEDIA_FX_SPECS, ak as MediaCrop, cA as MediaEditParamKey, cB as MediaEditParamValues, am as MediaEdits, cC as MediaFxOp, cD as formatMediaNumber, cE as hasRenderableFx, cF as mediaEditHtmlAttribute, cG as mediaEditValuesFromAttributes, cH as mediaEditValuesFromParams, cI as mediaRenderKey, cJ as normalizeMediaCrop, cK as normalizeMediaCuts, cL as parseMediaCrop, cM as parseMediaCuts, cN as parseMediaEdits, cO as parseMediaFx, cP as serializeMediaCrop, cQ as serializeMediaCuts, cR as serializeMediaEdits, cS as serializeMediaFx } from '../Doc-C-cv1g4G.js';
3
- import '../types-Be6sBUBx.js';
1
+ import { al as MediaCut, Q as Doc, aj as MediaClip, cw as MediaFxOpId, cx as MediaFxChain } from '../Doc-CXx1WL8G.js';
2
+ export { cy as MEDIA_EDIT_PARAMS, cz as MEDIA_FX_ORDER, cA as MEDIA_FX_SPECS, ak as MediaCrop, cB as MediaEditParamKey, cC as MediaEditParamValues, am as MediaEdits, cD as MediaFxOp, cE as formatMediaNumber, cF as hasRenderableFx, cG as mediaEditHtmlAttribute, cH as mediaEditValuesFromAttributes, cI as mediaEditValuesFromParams, cJ as mediaRenderKey, cK as normalizeMediaCrop, cL as normalizeMediaCuts, cM as parseMediaCrop, cN as parseMediaCuts, cO as parseMediaEdits, cP as parseMediaFx, cQ as serializeMediaCrop, cR as serializeMediaCuts, cS as serializeMediaEdits, cT as serializeMediaFx } from '../Doc-CXx1WL8G.js';
3
+ import '../types-C6VvDDL2.js';
4
4
 
5
5
  /**
6
6
  * Source time ↔ played time for a media clip with a trim window and cuts.
@@ -1,5 +1,5 @@
1
- import { Q as Doc, f as AudioBookmark } from '../Doc-C-cv1g4G.js';
2
- import '../types-Be6sBUBx.js';
1
+ import { Q as Doc, f as AudioBookmark } from '../Doc-CXx1WL8G.js';
2
+ import '../types-C6VvDDL2.js';
3
3
 
4
4
  /**
5
5
  * Shared types + tuning configs for the narration engine.
@@ -27,7 +27,7 @@ import {
27
27
  recordSlideShown,
28
28
  traceWordPosAt,
29
29
  vadStep
30
- } from "../chunk-GQWIUBJU.js";
30
+ } from "../chunk-MY46W5O5.js";
31
31
  import "../chunk-NEWNNLWN.js";
32
32
  import {
33
33
  buildNarrationScript,
@@ -39,14 +39,14 @@ import {
39
39
  wordIndexAtChar,
40
40
  wordIndexAtTime,
41
41
  wordPosAtExpectedSyllables
42
- } from "../chunk-Z35TG4WR.js";
43
- import "../chunk-YPI2VJSB.js";
44
- import "../chunk-C3NAY5YP.js";
42
+ } from "../chunk-PNXBDMNS.js";
43
+ import "../chunk-L7IIFWWW.js";
44
+ import "../chunk-A5QJJZ5S.js";
45
45
  import "../chunk-PUS54YU6.js";
46
46
  import "../chunk-PFH3WV6J.js";
47
47
  import "../chunk-L7QZORLB.js";
48
- import "../chunk-TMOHAFYE.js";
49
- import "../chunk-X7BNDUNI.js";
48
+ import "../chunk-WSFXV5BT.js";
49
+ import "../chunk-Q6ELOAOQ.js";
50
50
  import "../chunk-4VOD55SX.js";
51
51
  import "../chunk-GHOPHGOK.js";
52
52
  import "../chunk-XRW6P7IF.js";
@@ -1,4 +1,4 @@
1
- import { M as MarkdownBlockNode } from '../types-Be6sBUBx.js';
1
+ import { M as MarkdownBlockNode } from '../types-C6VvDDL2.js';
2
2
 
3
3
  /**
4
4
  * Block template recommendations.
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  profileBlockContents,
3
3
  recommendTemplatesForBlock
4
- } from "../chunk-C3NAY5YP.js";
5
- import "../chunk-X7BNDUNI.js";
4
+ } from "../chunk-A5QJJZ5S.js";
5
+ import "../chunk-Q6ELOAOQ.js";
6
6
  export {
7
7
  profileBlockContents,
8
8
  recommendTemplatesForBlock
@@ -1,10 +1,10 @@
1
1
  export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
2
- import { Q as Doc, bw as Theme, bz as ThemePageStyle, by as ThemeColorScheme, K as DeepPartial, bC as ThemeSeedColors, bx as ThemeColorPalette, _ as FontFamilyKind, Z as FontFamily } from '../Doc-C-cv1g4G.js';
3
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CountUpSpec, x as CreateTemplateContextOptions, y as CustomTemplateDefinition, z as CustomTemplateLayer, D as CustomTemplateValidationError, E as CustomTemplateValidationResult, F as DARK_SURFACE, G as DEFAULT_DOC_FONT, H as DEFAULT_TITLE_FONT, I as DataTableInput, J as DateEventInput, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, R as DocBlock, S as DocDiagnostic, T as DonutChartInput, U as DrawingBlockInput, V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, X as FRONTMATTER_MOTION_KEY, Y as FactCardInput, $ as FullBleedQuoteInput, a0 as GradientBackgroundConfig, a1 as ImageBackgroundConfig, a2 as ImageLayer, a3 as ImageTreatment, a4 as ImageWithCaptionInput, a5 as LIGHT_SURFACE, a6 as Layer, a7 as LayerRepeat, a8 as LayoutHints, a9 as LeftFeatureInput, aa as LineChartInput, ab as LinearGradient, ac as ListBlockInput, ad as MOTION_PROFILES, ae as MapBlockInput, af as MapLayer, ag as MapMarker, ah as MapTileStyle, ai as MarkerStyle, aj as MediaClip, ak as MediaCrop, al as MediaCut, am as MediaEdits, an as MediaScheduleOptions, ao as MermaidLayer, ap as MotionEntrance, aq as MotionOrigin, ar as MotionProfile, as as MotionProfileName, at as MotionSpec, au as MotionState, av as PAGE_ACCENT_STRATEGIES, aw as PAGE_BACKGROUNDS, ax as PAGE_BACKGROUND_RHYTHMS, ay as PAGE_DESIGN_FAMILIES, az as PAGE_DIVIDERS, aA as PAGE_EMPHASES, aB as PAGE_EYEBROWS, aC as PAGE_HEADING_CASES, aD as PAGE_HEADING_SCALES, aE as PAGE_HEADING_UNDERLINES, aF as PAGE_HERO_STYLES, aG as PAGE_IMAGE_FRAMINGS, aH as PAGE_NUMERAL_STYLES, aI as PAGE_PATTERNS, aJ as PAGE_QUOTE_MARKS, aK as PAGE_SECTION_KINDS, aL as PAGE_SECTION_SPACINGS, aM as PAGE_SHADOWS, aN as PAGE_VARIANTS, aO as PageAccentRotation, aP as PageBackground, aQ as PageDesignFamily, aR as PageEmphasis, aS as PageHeadingTreatment, aT as PageSectionKind, aU as PageSectionOverride, aV as PageTokens, aW as PageVariant, aX as PathLayer, aY as PatternBackgroundConfig, aZ as PersistentLayer, a_ as PersistentLayerConfig, a$ as PersistentLayerTemplate, b0 as PersistentLayerTemplateConfig, b1 as PersistentLayerTemplateType, b2 as PhotoGridInput, b3 as PieChartInput, b4 as PipStyle, b5 as Position, b6 as ProgressIndicatorConfig, b7 as PromotedBodyAnnotation, b8 as PullQuoteInput, b9 as QuoteBlockInput, ba as RawLayersInput, bb as RenderStyle, bc as RightFeatureInput, bd as ScatterChartInput, be as ScheduledClip, bf as SectionHeaderInput, bg as ShapeFilter, bh as ShapeLayer, bi as ShapePattern, bj as SolidBackgroundConfig, bk as StartBlockConfig, bl as StatHighlightInput, bm as SurfaceScheme, bn as THEME_SCHEMA_VERSION, bo as TableLayer, bp as TableLayerStyle, bq as TemplateBlock, br as TemplateContext, bs as TemplateFunction, bt as TemplateRegistry, bu as TextLayer, bv as TextStyle, bA as ThemeRegistry, bB as ThemeSchemaVersion, bD as ThemeStyle, bE as ThemeTypography, bF as TimelineBlockInput, bG as TimelineTemplateEvent, bH as TimelineTemplateLink, bI as TimelineTemplateTrack, bJ as TitleBlockInput, bK as TitleCaptionConfig, bL as TranscriptBlockInput, bM as TreeBlockInput, bN as TreeLayer, bO as TreeLayerItem, bP as TreeLayerStyle, bQ as TreeTemplateItem, bR as TwoColumnInput, bS as VIEWPORT_PRESETS, bT as VideoLayer, bU as VideoPipPosition, bV as VideoPipShape, bW as VideoPipSize, bX as VideoPlacement, bY as VideoPresentation, bZ as VideoPullQuoteInput, b_ as VideoWithCaptionInput, b$ as ViewportConfig, c0 as ViewportOrientation, c1 as ViewportPreset, c2 as VignetteConfig, c3 as applySurface, c4 as calculateDuration, c5 as calculateFontScale, c6 as createTemplateContext, c7 as createTheme, c8 as createThemeRegistry, c9 as getAspectRatioString, ca as getBlockAtTime, cb as getCaptionAtTime, cc as getDocPlaybackDuration, cd as getLayoutHints, ce as getSafeTextBounds, cf as getSegmentAtTime, cg as getTwoColumnPositions, ch as getViewport, ci as getViewportOrientation, cj as isCustomTemplateDefinition, ck as isMotionProfileName, cl as isPersistentLayerTemplate, cm as isTemplateBlock, cn as layoutScaledFontSize, co as readFrontmatterMotion, cp as resolveMediaSchedule, cq as resolveMotionForDoc, cr as resolveMotionProfile, cs as scaledFontSize, ct as scheduleMediaClip, cu as validateCustomTemplateDefinition } from '../Doc-C-cv1g4G.js';
4
- export { a as DEFAULT_TRANSITION_DURATION_SECONDS, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ad as resolveTransitionDuration } from '../types-Be6sBUBx.js';
5
- export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-CROfw3YK.js';
2
+ import { Q as Doc, bw as Theme, bz as ThemePageStyle, by as ThemeColorScheme, K as DeepPartial, bC as ThemeSeedColors, bx as ThemeColorPalette, _ as FontFamilyKind, Z as FontFamily } from '../Doc-CXx1WL8G.js';
3
+ export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AreaChartInput, f as AudioBookmark, g as AudioSegment, h as AudioTimingData, i as AudioTrack, B as BarChartInput, j as BigTextInput, k as Block, l as BlockConnection, m as BorderStyle, C as CaptionPhrase, n as CaptionTrack, o as CaptionWord, p as ChartBaseFields, q as ChartTemplateInput, r as ColorScheme, s as ColumnChartInput, t as ComparisonBarInput, u as ContentBlockInput, v as CornerBrandingConfig, w as CountUpSpec, x as CreateTemplateContextOptions, y as CustomTemplateDefinition, z as CustomTemplateLayer, D as CustomTemplateValidationError, E as CustomTemplateValidationResult, F as DARK_SURFACE, G as DEFAULT_DOC_FONT, H as DEFAULT_TITLE_FONT, I as DataTableInput, J as DateEventInput, L as DefinitionCardInput, M as DiagramBlockInput, N as DiagramEdgeAnchor, O as DiagramTemplateEdge, P as DiagramTemplateNode, R as DocBlock, S as DocDiagnostic, T as DonutChartInput, U as DrawingBlockInput, V as FRONTMATTER_CUSTOM_TEMPLATES_KEY, W as FRONTMATTER_CUSTOM_THEMES_KEY, X as FRONTMATTER_MOTION_KEY, Y as FactCardInput, $ as FullBleedQuoteInput, a0 as GradientBackgroundConfig, a1 as ImageBackgroundConfig, a2 as ImageLayer, a3 as ImageTreatment, a4 as ImageWithCaptionInput, a5 as LIGHT_SURFACE, a6 as Layer, a7 as LayerRepeat, a8 as LayoutHints, a9 as LeftFeatureInput, aa as LineChartInput, ab as LinearGradient, ac as ListBlockInput, ad as MOTION_PROFILES, ae as MapBlockInput, af as MapLayer, ag as MapMarker, ah as MapTileStyle, ai as MarkerStyle, aj as MediaClip, ak as MediaCrop, al as MediaCut, am as MediaEdits, an as MediaScheduleOptions, ao as MermaidLayer, ap as MotionEntrance, aq as MotionOrigin, ar as MotionProfile, as as MotionProfileName, at as MotionSpec, au as MotionState, av as PAGE_ACCENT_STRATEGIES, aw as PAGE_BACKGROUNDS, ax as PAGE_BACKGROUND_RHYTHMS, ay as PAGE_DESIGN_FAMILIES, az as PAGE_DIVIDERS, aA as PAGE_EMPHASES, aB as PAGE_EYEBROWS, aC as PAGE_HEADING_CASES, aD as PAGE_HEADING_SCALES, aE as PAGE_HEADING_UNDERLINES, aF as PAGE_HERO_STYLES, aG as PAGE_IMAGE_FRAMINGS, aH as PAGE_NUMERAL_STYLES, aI as PAGE_PATTERNS, aJ as PAGE_QUOTE_MARKS, aK as PAGE_SECTION_KINDS, aL as PAGE_SECTION_SPACINGS, aM as PAGE_SHADOWS, aN as PAGE_VARIANTS, aO as PageAccentRotation, aP as PageBackground, aQ as PageDesignFamily, aR as PageEmphasis, aS as PageHeadingTreatment, aT as PageSectionKind, aU as PageSectionOverride, aV as PageTokens, aW as PageVariant, aX as PathLayer, aY as PatternBackgroundConfig, aZ as PersistentLayer, a_ as PersistentLayerConfig, a$ as PersistentLayerTemplate, b0 as PersistentLayerTemplateConfig, b1 as PersistentLayerTemplateType, b2 as PhotoGridInput, b3 as PieChartInput, b4 as PipStyle, b5 as Position, b6 as ProgressIndicatorConfig, b7 as PromotedBodyAnnotation, b8 as PullQuoteInput, b9 as QuoteBlockInput, ba as RawLayersInput, bb as RenderStyle, bc as RightFeatureInput, bd as ScatterChartInput, be as ScheduledClip, bf as SectionHeaderInput, bg as ShapeFilter, bh as ShapeLayer, bi as ShapePattern, bj as SolidBackgroundConfig, bk as StartBlockConfig, bl as StatHighlightInput, bm as SurfaceScheme, bn as THEME_SCHEMA_VERSION, bo as TableLayer, bp as TableLayerStyle, bq as TemplateBlock, br as TemplateContext, bs as TemplateFunction, bt as TemplateRegistry, bu as TextLayer, bv as TextStyle, bA as ThemeRegistry, bB as ThemeSchemaVersion, bD as ThemeStyle, bE as ThemeTypography, bF as TimelineBlockInput, bG as TimelineTemplateEvent, bH as TimelineTemplateLink, bI as TimelineTemplateTrack, bJ as TitleBlockInput, bK as TitleCaptionConfig, bL as TranscriptBlockInput, bM as TreeBlockInput, bN as TreeLayer, bO as TreeLayerItem, bP as TreeLayerStyle, bQ as TreeTemplateItem, bR as TwoColumnInput, bS as VIEWPORT_PRESETS, bT as VideoEmbedLayer, bU as VideoLayer, bV as VideoPipPosition, bW as VideoPipShape, bX as VideoPipSize, bY as VideoPlacement, bZ as VideoPresentation, b_ as VideoPullQuoteInput, b$ as VideoWithCaptionInput, c0 as ViewportConfig, c1 as ViewportOrientation, c2 as ViewportPreset, c3 as VignetteConfig, c4 as applySurface, c5 as calculateDuration, c6 as calculateFontScale, c7 as createTemplateContext, c8 as createTheme, c9 as createThemeRegistry, ca as getAspectRatioString, cb as getBlockAtTime, cc as getCaptionAtTime, cd as getDocPlaybackDuration, ce as getLayoutHints, cf as getSafeTextBounds, cg as getSegmentAtTime, ch as getTwoColumnPositions, ci as getViewport, cj as getViewportOrientation, ck as isCustomTemplateDefinition, cl as isMotionProfileName, cm as isPersistentLayerTemplate, cn as isTemplateBlock, co as layoutScaledFontSize, cp as readFrontmatterMotion, cq as resolveMediaSchedule, cr as resolveMotionForDoc, cs as resolveMotionProfile, ct as scaledFontSize, cu as scheduleMediaClip, cv as validateCustomTemplateDefinition } from '../Doc-CXx1WL8G.js';
4
+ export { a as DEFAULT_TRANSITION_DURATION_SECONDS, a1 as TRANSITION_DIRECTIONS, a2 as TRANSITION_TYPES, a3 as Transition, a4 as TransitionDirection, a5 as TransitionType, a8 as isTransitionType, a9 as normalizeTransitionDirection, aa as normalizeTransitionType, ab as resolveBlockTransition, ad as resolveTransitionDuration } from '../types-C6VvDDL2.js';
5
+ export { D as DEFAULT_THEME, a as DEFAULT_THEME_ID, T as THEMES, g as getAvailableThemes, b as getThemeSummaries, r as resolveTheme } from '../themeLibrary-Bnq_x-db.js';
6
6
  export { M as MediaEntry, a as MediaProvider } from '../MediaProvider-wpSe21B3.js';
7
- export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-3J4PRw8N.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-BVLXI-Zd.js';
8
8
 
9
9
  /**
10
10
  * Runtime validation for the canonical {@link Doc} JSON shape.