@bendyline/squisq 1.5.0 → 1.5.2

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 (135) hide show
  1. package/README.md +14 -1
  2. package/dist/{ContentContainer-DNx460y8.d.ts → ContentContainer-BXUlIf18.d.ts} +6 -2
  3. package/dist/{Doc-BsMkmzH8.d.ts → Doc-BBVGq1_9.d.ts} +94 -15
  4. package/dist/{ImageEditDoc-DvoeHMP9.d.ts → ImageEditDoc-FuyGtt6o.d.ts} +1 -1
  5. package/dist/{chunk-4ZFRZBU2.js → chunk-5TYS5V3G.js} +866 -192
  6. package/dist/chunk-5TYS5V3G.js.map +1 -0
  7. package/dist/{chunk-7MQGNR76.js → chunk-A4O7GIWE.js} +2 -27
  8. package/dist/chunk-A4O7GIWE.js.map +1 -0
  9. package/dist/{chunk-OH43RPTP.js → chunk-BEQODJWV.js} +20 -3
  10. package/dist/chunk-BEQODJWV.js.map +1 -0
  11. package/dist/chunk-ET53IIEP.js +1 -0
  12. package/dist/chunk-ET53IIEP.js.map +1 -0
  13. package/dist/{chunk-KZNXZ5SM.js → chunk-GPLTCSXO.js} +18 -7
  14. package/dist/chunk-GPLTCSXO.js.map +1 -0
  15. package/dist/{chunk-OKJOQXK4.js → chunk-HWVFJAAH.js} +38 -2
  16. package/dist/chunk-HWVFJAAH.js.map +1 -0
  17. package/dist/{chunk-2TMAWB4Y.js → chunk-IMSCRLLV.js} +1 -1
  18. package/dist/chunk-IMSCRLLV.js.map +1 -0
  19. package/dist/{chunk-4AKUQPEE.js → chunk-KKNUBQ6Y.js} +1 -1
  20. package/dist/chunk-KKNUBQ6Y.js.map +1 -0
  21. package/dist/{chunk-TVSGLUID.js → chunk-LDQ2HJIX.js} +3 -3
  22. package/dist/{chunk-RUDYOTA6.js → chunk-LTN6I7QW.js} +56 -1
  23. package/dist/chunk-LTN6I7QW.js.map +1 -0
  24. package/dist/{chunk-2OIBZYKP.js → chunk-P3K7NLHF.js} +2 -2
  25. package/dist/{chunk-K32VJONL.js → chunk-T5UK6YOB.js} +41 -2
  26. package/dist/chunk-T5UK6YOB.js.map +1 -0
  27. package/dist/{chunk-FR2RBTKO.js → chunk-TQWLI6S2.js} +93 -27
  28. package/dist/chunk-TQWLI6S2.js.map +1 -0
  29. package/dist/{chunk-LRCV7N7F.js → chunk-UY7KGQ5R.js} +2 -2
  30. package/dist/{chunk-3E5F2XMR.js → chunk-VWUFZ6ZG.js} +29 -2
  31. package/dist/chunk-VWUFZ6ZG.js.map +1 -0
  32. package/dist/doc/index.d.ts +4 -4
  33. package/dist/doc/index.js +24 -9
  34. package/dist/generate/index.d.ts +2 -80
  35. package/dist/generate/index.js +2 -7
  36. package/dist/imageEdit/index.d.ts +4 -4
  37. package/dist/imageEdit/index.js +2 -2
  38. package/dist/index.d.ts +8 -8
  39. package/dist/index.js +41 -26
  40. package/dist/jsonForm/index.d.ts +42 -1
  41. package/dist/jsonForm/index.js +9 -1
  42. package/dist/markdown/index.d.ts +18 -2
  43. package/dist/markdown/index.js +5 -3
  44. package/dist/recommend/index.js +2 -2
  45. package/dist/schemas/index.d.ts +4 -4
  46. package/dist/schemas/index.js +3 -5
  47. package/dist/storage/index.d.ts +2 -2
  48. package/dist/storage/index.js +1 -1
  49. package/dist/story/index.d.ts +151 -13
  50. package/dist/story/index.js +24 -9
  51. package/dist/{themeLibrary-DQQKuRMx.d.ts → themeLibrary-CehcJhzz.d.ts} +1 -1
  52. package/dist/timing/index.js +3 -5
  53. package/dist/transform/index.d.ts +2 -2
  54. package/dist/transform/index.js +3 -3
  55. package/dist/versions/index.d.ts +1 -1
  56. package/package.json +1 -1
  57. package/src/__tests__/contentExtractor.test.ts +60 -0
  58. package/src/__tests__/coverBlock.test.ts +79 -3
  59. package/src/__tests__/customTemplateSample.test.ts +63 -2
  60. package/src/__tests__/customTemplatesFrontmatter.test.ts +31 -0
  61. package/src/__tests__/customThemesFrontmatter.test.ts +27 -0
  62. package/src/__tests__/inputDescriptors.test.ts +162 -0
  63. package/src/__tests__/jsonForm.tokens.test.ts +84 -0
  64. package/src/__tests__/markdown.test.ts +64 -0
  65. package/src/__tests__/markdownSanitize.test.ts +15 -0
  66. package/src/__tests__/markdownToDoc.test.ts +173 -2
  67. package/src/__tests__/mediaAnnotations.test.ts +27 -0
  68. package/src/__tests__/shapeGeometry.test.ts +37 -0
  69. package/src/__tests__/structuredData.test.ts +73 -3
  70. package/src/__tests__/templateMetadata.test.ts +11 -1
  71. package/src/__tests__/templates.test.ts +112 -0
  72. package/src/__tests__/validateDoc.test.ts +160 -0
  73. package/src/doc/annotationBlocks.ts +117 -0
  74. package/src/doc/customTemplatesFrontmatter.ts +7 -1
  75. package/src/doc/customThemesFrontmatter.ts +6 -1
  76. package/src/doc/docToMarkdown.ts +78 -29
  77. package/src/doc/getLayers.ts +11 -2
  78. package/src/doc/index.ts +12 -0
  79. package/src/doc/markdownToDoc.ts +80 -3
  80. package/src/doc/mediaAnnotations.ts +15 -33
  81. package/src/doc/standaloneAnnotation.ts +58 -0
  82. package/src/doc/structuredData.ts +92 -21
  83. package/src/doc/templates/__tests__/customTemplate.test.ts +21 -2
  84. package/src/doc/templates/comparisonBar.ts +8 -1
  85. package/src/doc/templates/coverBlock.ts +78 -15
  86. package/src/doc/templates/customTemplate.ts +10 -4
  87. package/src/doc/templates/diagramBlock.ts +2 -2
  88. package/src/doc/templates/drawingBlock.ts +2 -2
  89. package/src/doc/templates/factCard.ts +4 -2
  90. package/src/doc/templates/imageWithCaption.ts +10 -8
  91. package/src/doc/templates/index.ts +12 -2
  92. package/src/doc/templates/inputDescriptors.ts +432 -0
  93. package/src/doc/templates/photoGrid.ts +16 -39
  94. package/src/doc/templates/tokens/__tests__/resolveTokens.test.ts +267 -1
  95. package/src/doc/templates/tokens/resolveTokens.ts +0 -0
  96. package/src/doc/templates/videoWithCaption.ts +15 -14
  97. package/src/doc/utils/nearest.ts +59 -0
  98. package/src/doc/utils/shapeGeometry.ts +90 -2
  99. package/src/doc/validate.ts +153 -54
  100. package/src/generate/contentExtractor.ts +148 -35
  101. package/src/generate/index.ts +0 -3
  102. package/src/jsonForm/index.ts +2 -0
  103. package/src/jsonForm/tokens.ts +78 -0
  104. package/src/markdown/annotationCoercion.ts +1 -1
  105. package/src/markdown/attrTokens.ts +19 -0
  106. package/src/markdown/convert.ts +11 -1
  107. package/src/markdown/index.ts +2 -1
  108. package/src/markdown/sanitize.ts +22 -2
  109. package/src/markdown/stringify.ts +12 -3
  110. package/src/markdown/utils.ts +62 -1
  111. package/src/schemas/CustomTemplates.ts +56 -4
  112. package/src/schemas/Doc.ts +39 -41
  113. package/src/schemas/themeCompile.ts +1 -1
  114. package/src/storage/ContentContainer.ts +6 -2
  115. package/src/transform/types.ts +1 -1
  116. package/dist/chunk-2TMAWB4Y.js.map +0 -1
  117. package/dist/chunk-3E5F2XMR.js.map +0 -1
  118. package/dist/chunk-4AKUQPEE.js.map +0 -1
  119. package/dist/chunk-4X3JQXNM.js +0 -35
  120. package/dist/chunk-4X3JQXNM.js.map +0 -1
  121. package/dist/chunk-4ZFRZBU2.js.map +0 -1
  122. package/dist/chunk-7MQGNR76.js.map +0 -1
  123. package/dist/chunk-FBKP5CAO.js +0 -145
  124. package/dist/chunk-FBKP5CAO.js.map +0 -1
  125. package/dist/chunk-FR2RBTKO.js.map +0 -1
  126. package/dist/chunk-K32VJONL.js.map +0 -1
  127. package/dist/chunk-KZNXZ5SM.js.map +0 -1
  128. package/dist/chunk-OH43RPTP.js.map +0 -1
  129. package/dist/chunk-OKJOQXK4.js.map +0 -1
  130. package/dist/chunk-RUDYOTA6.js.map +0 -1
  131. package/src/__tests__/slideshowGenerator.test.ts +0 -128
  132. package/src/generate/slideshowGenerator.ts +0 -280
  133. /package/dist/{chunk-TVSGLUID.js.map → chunk-LDQ2HJIX.js.map} +0 -0
  134. /package/dist/{chunk-2OIBZYKP.js.map → chunk-P3K7NLHF.js.map} +0 -0
  135. /package/dist/{chunk-LRCV7N7F.js.map → chunk-UY7KGQ5R.js.map} +0 -0
package/README.md CHANGED
@@ -18,11 +18,24 @@ npm install @bendyline/squisq
18
18
  | Module | Description |
19
19
  | ------------ | -------------------------------------------------------------------------------- |
20
20
  | **schemas** | Type definitions — `Doc`, `BlockTemplate`, `Viewport`, `Theme`, `LayoutStrategy` |
21
- | **doc** | Template registry, 17 block templates, animation/theme utilities |
21
+ | **doc** | Template registry, 23 block templates, animation/theme utilities |
22
22
  | **markdown** | Markdown parsing, stringifying, AST types (`MarkdownDocument`), tree utilities |
23
23
  | **spatial** | Haversine distance, Geohash encode/decode |
24
24
  | **storage** | `StorageAdapter` interface, Memory + LocalStorage + LocalForage adapters |
25
25
 
26
+ ## New in this release
27
+
28
+ The Squiggly Square markdown standard (see [`docs/SquigglySquare.md`](../../docs/SquigglySquare.md)) gained several authoring capabilities:
29
+
30
+ - **[Standalone annotations](../../docs/SquigglySquare.md#standalone-annotations)** — a top-level paragraph that is exactly `{[templateName …]}` becomes a heading-less template block; the body that follows it is its contents.
31
+ - **[Inline attribute coercion](../../docs/SquigglySquare.md#inline-attribute-coercion)** — `{[map center="47.6,-122.3" zoom=9]}` and `{[twoColumn left="Espresso|Bold"]}` now render without a data fence (typed via `TEMPLATE_INPUT_DESCRIPTORS`).
32
+ - **[Validation additions](../../docs/SquigglySquare.md#validation)** — new `unknown-input` / `invalid-input-value` / `missing-input` warnings plus `possible-data-fence` / `conflicting-annotation-key` info diagnostics (a new `info` severity).
33
+ - **[YAML data fences](../../docs/SquigglySquare.md#structured-data-fences)** now accept one level of nested mappings (a `map` `center` can be pure YAML).
34
+ - **[Multi-line frontmatter](../../docs/SquigglySquare.md#multi-line-frontmatter)** — `squisq-custom-templates` / `squisq-custom-themes` can be authored as pretty JSON via YAML literal block scalars (`key: |-`).
35
+ - **Custom-template tokens v2** (see [`docs/SquigglySquare.md`](../../docs/SquigglySquare.md), "Registering custom templates") — `{attr:key}`, pipe defaults on every token, and per-layer `repeat` with `{item}` / `{index}` tokens.
36
+
37
+ New `@bendyline/squisq/doc` exports powering the above: `coerceTemplateParams`, `lintTemplateParams`, `TEMPLATE_INPUT_DESCRIPTORS`, and `replaceDataFence`.
38
+
26
39
  ## Subpath Imports
27
40
 
28
41
  Import only what you need:
@@ -9,9 +9,9 @@
9
9
  * Paths are forward-slash separated strings relative to the container root
10
10
  * (e.g., 'images/hero.jpg', 'index.md'). No leading slash.
11
11
  *
12
- * Implementations:
12
+ * Implementations (in core):
13
13
  * - MemoryContentContainer — in-memory Map (for zip import, tests, transient use)
14
- * - SlotContentContainerbacked by IndexedDB slot storage (in the site package)
14
+ * - ScopedContentContainera prefix-scoped view onto a parent container
15
15
  */
16
16
  /**
17
17
  * Metadata about a file in a ContentContainer.
@@ -39,6 +39,10 @@ interface ContentContainer {
39
39
  removeFile(path: string): Promise<void>;
40
40
  /**
41
41
  * List files in the container.
42
+ *
43
+ * Returns file **entries** (`ContentEntry[]` with `.path`/`.mimeType`/`.size`),
44
+ * NOT bare path strings — despite the name. Read `entry.path` for the path;
45
+ * calling string methods (e.g. `.startsWith`) directly on an entry will throw.
42
46
  * @param prefix — Optional path prefix to filter by (e.g., 'images/')
43
47
  */
44
48
  listFiles(prefix?: string): Promise<ContentEntry[]>;
@@ -1266,6 +1266,47 @@ declare function lookupRegisteredTheme(id: string | undefined): Theme | undefine
1266
1266
  * ratio to mount with, and the thumbnail renderer which viewBox to use.
1267
1267
  */
1268
1268
 
1269
+ /**
1270
+ * Iteration directive for a custom-template layer.
1271
+ *
1272
+ * A layer that carries a `repeat` is cloned once per item of a source
1273
+ * collection at render time (see `resolveTokens`). The clones are laid
1274
+ * out in a row or column, offset from the base position by the layer's
1275
+ * own width/height plus `gap`, and each clone resolves per-item tokens
1276
+ * (`{item}`, `{item:src}`, `{item:label}`, `{index}`) against its item.
1277
+ */
1278
+ interface LayerRepeat {
1279
+ /**
1280
+ * Which of the source Block's collections to iterate:
1281
+ * - `images` — every image in the block body (alt + url)
1282
+ * - `children` — child block titles
1283
+ * - `listItems` — top-level list-item text in the block body
1284
+ */
1285
+ source: 'images' | 'children' | 'listItems';
1286
+ /**
1287
+ * Layout axis for the clones. `column` (default) stacks them
1288
+ * vertically (offsets `position.y`); `row` lays them out horizontally
1289
+ * (offsets `position.x`).
1290
+ */
1291
+ direction?: 'row' | 'column';
1292
+ /**
1293
+ * Extra spacing added between consecutive clones, in the same unit as
1294
+ * the layer's `width`/`height`. Defaults to 24.
1295
+ */
1296
+ gap?: number;
1297
+ /** Cap on the number of clones rendered (omit for "all items"). */
1298
+ max?: number;
1299
+ }
1300
+ /**
1301
+ * A custom-template layer: a normal render `Layer` that may additionally
1302
+ * carry a `repeat` directive. This is a strict superset of the core
1303
+ * `Layer` type used only inside `CustomTemplateDefinition.layers`; the
1304
+ * resolver strips `repeat` before emitting the final `Layer[]`, so the
1305
+ * core `Layer` type is never widened.
1306
+ */
1307
+ type CustomTemplateLayer = Layer & {
1308
+ repeat?: LayerRepeat;
1309
+ };
1269
1310
  /**
1270
1311
  * A single user-defined template. Stored in `Doc.customTemplates`
1271
1312
  * (frontmatter-backed) or in the user's local library.
@@ -1297,12 +1338,20 @@ interface CustomTemplateDefinition {
1297
1338
  * `position.width` / `position.height` should be a `%`-string at
1298
1339
  * save time (the designer's normalizePositions step enforces this).
1299
1340
  *
1300
- * Tokens supported in v1:
1341
+ * Tokens supported (grammar v2):
1301
1342
  * - TextLayer.content.text — `{title}`, `{content}`, `{children}`,
1302
- * `{image:N}` (substitutes the Nth image's alt text)
1303
- * - ImageLayer.content.src `{image:N}` (substitutes the URL)
1343
+ * `{image:N}` (Nth image's alt text), `{attr:key}` (block
1344
+ * attribute), plus a pipe default on any token
1345
+ * (`{attr:subtitle|Untitled}`).
1346
+ * - ImageLayer.content.src — `{image:N}` (the URL) and `{attr:key}`,
1347
+ * with pipe defaults (`{image:1|fallback.jpg}`).
1348
+ * - Inside a layer with `repeat`, per-item tokens: `{item}`,
1349
+ * `{item:src}`, `{item:label}`, `{index}` (1-based).
1350
+ *
1351
+ * A layer may carry a `repeat` directive (see {@link LayerRepeat}) to
1352
+ * be cloned once per item of a source collection.
1304
1353
  */
1305
- layers: Layer[];
1354
+ layers: CustomTemplateLayer[];
1306
1355
  }
1307
1356
  /**
1308
1357
  * Tag value for the YAML frontmatter key that carries inlined custom
@@ -1354,8 +1403,9 @@ interface StartBlockConfig {
1354
1403
  interface DocDiagnostic {
1355
1404
  /** `error` = the author's intent could not be honored (e.g. unparseable
1356
1405
  * data fence); `warning` = something looks wrong but rendering proceeds
1357
- * with a fallback (e.g. unknown template name). */
1358
- severity: 'error' | 'warning';
1406
+ * with a fallback (e.g. unknown template name); `info` = nothing is
1407
+ * broken, but the author may want to know (e.g. a redundant annotation). */
1408
+ severity: 'error' | 'warning' | 'info';
1359
1409
  /** Stable machine-readable code (e.g. `unknown-template`, `duplicate-id`,
1360
1410
  * `unresolved-connection`, `data-fence-parse`, `missing-asset`). */
1361
1411
  code: string;
@@ -1412,9 +1462,9 @@ interface Doc {
1412
1462
  *
1413
1463
  * Populated from the markdown frontmatter key
1414
1464
  * `squisq-custom-templates`. The template-expansion pipeline
1415
- * (`expandDocBlocks`) merges these into the registry before walking
1416
- * blocks, so a heading annotated `{[myhero]}` resolves against a
1417
- * doc-defined template named `myhero`.
1465
+ * (`expandDocBlocks` in `doc/templates/index.ts`) merges these into
1466
+ * the registry before walking blocks, so a heading annotated
1467
+ * `{[myhero]}` resolves against a doc-defined template named `myhero`.
1418
1468
  *
1419
1469
  * Library templates (stored in localStorage on the editor side) are
1420
1470
  * NOT auto-loaded here — applying a library template to a block
@@ -1458,6 +1508,16 @@ interface Doc {
1458
1508
  * - `sourceHeading` references the original MarkdownHeading node
1459
1509
  * - `contents` holds the body markdown between this heading and the next
1460
1510
  * - `children` holds sub-heading blocks (e.g., H2s under an H1)
1511
+ *
1512
+ * Four adjacent fields carry template information — do not confuse them:
1513
+ * - `template` — the *resolved* template id this block renders with.
1514
+ * - `templateOverrides` — raw `{[…]}` inline params (always strings).
1515
+ * - `templateData` — structured inputs from a data fence / GFM table
1516
+ * (parsed types, not strings).
1517
+ * - `sourceAnnotation.template` — the raw *requested* template name for a
1518
+ * standalone-annotation block (before alias resolution).
1519
+ * Merge order at render time: template defaults → `templateData` →
1520
+ * `templateOverrides`.
1461
1521
  */
1462
1522
  interface Block {
1463
1523
  /** Unique identifier for this block.
@@ -1482,7 +1542,7 @@ interface Block {
1482
1542
  layers?: Layer[];
1483
1543
  /** Entry transition from previous block */
1484
1544
  transition?: Transition;
1485
- /** Template name that generated this block (for debugging) */
1545
+ /** Resolved template id this block renders with (see the quartet note above). */
1486
1546
  template?: string;
1487
1547
  /**
1488
1548
  * True when `template` was chosen by content-aware auto-picking
@@ -1491,6 +1551,29 @@ interface Block {
1491
1551
  * annotations, keeping the markdown round-trip lossless.
1492
1552
  */
1493
1553
  autoTemplate?: boolean;
1554
+ /**
1555
+ * True when this block was produced from a *standalone* `{[templateName …]}`
1556
+ * annotation paragraph in another block's body (rather than from a heading).
1557
+ * Such blocks have no `sourceHeading`; `docToMarkdown` re-emits their
1558
+ * annotation as a synthesized paragraph before their `contents` so the
1559
+ * markdown round-trips. See `annotationBlocks.ts`.
1560
+ *
1561
+ * Presence-marker: only ever `true` (never `false`). Test with
1562
+ * `block.standaloneAnnotation` presence, not as a boolean toggle.
1563
+ */
1564
+ standaloneAnnotation?: true;
1565
+ /**
1566
+ * The annotation a standalone block was built from — the raw (un-resolved)
1567
+ * template name and its params, in author order. Round-tripped by
1568
+ * `docToMarkdown` (via `serializeAnnotation`) and read by validation as the
1569
+ * raw requested template name (symmetric with
1570
+ * `sourceHeading.templateAnnotation`). Present only when
1571
+ * `standaloneAnnotation` is true.
1572
+ */
1573
+ sourceAnnotation?: {
1574
+ template?: string;
1575
+ params?: Record<string, string>;
1576
+ };
1494
1577
  /**
1495
1578
  * Display title for template rendering.
1496
1579
  * Extracted from the sourceHeading when the block is created by markdownToDoc().
@@ -2090,9 +2173,5 @@ declare function getBlockAtTime(blocks: Block[], time: number): Block | null;
2090
2173
  * Find the caption phrase that should be displayed at a given time.
2091
2174
  */
2092
2175
  declare function getCaptionAtTime(captions: CaptionTrack | undefined, time: number): CaptionPhrase | null;
2093
- /**
2094
- * Validate a Doc for completeness.
2095
- */
2096
- declare function validateDoc(script: Doc): string[];
2097
2176
 
2098
- export { type MediaClip as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DARK_SURFACE as D, type DrawingBlockInput as E, FRONTMATTER_CUSTOM_TEMPLATES_KEY as F, FRONTMATTER_CUSTOM_THEMES_KEY as G, type FactCardInput as H, type FontFamily as I, type FontFamilyKind as J, type FullBleedQuoteInput as K, type GradientBackgroundConfig as L, type ImageBackgroundConfig as M, type ImageLayer as N, type ImageTreatment as O, type ImageWithCaptionInput as P, LIGHT_SURFACE as Q, type Layer as R, type LayoutHints as S, type LeftFeatureInput as T, type LinearGradient as U, type ListBlockInput as V, type MapBlockInput as W, type MapLayer as X, type MapMarker as Y, type MapTileStyle as Z, type MarkerStyle as _, type AccentPosition as a, getSegmentAtTime as a$, type PathLayer as a0, type PatternBackgroundConfig as a1, type PersistentLayer as a2, type PersistentLayerConfig as a3, type PersistentLayerTemplate as a4, type PersistentLayerTemplateConfig as a5, type PersistentLayerTemplateType as a6, type PhotoGridInput as a7, type Position as a8, type ProgressIndicatorConfig as a9, type ThemeSchemaVersion as aA, type ThemeSeedColors as aB, type ThemeStyle as aC, type ThemeTypography as aD, type TitleBlockInput as aE, type TitleCaptionConfig as aF, type TwoColumnInput as aG, VIEWPORT_PRESETS as aH, type VideoLayer as aI, type VideoPullQuoteInput as aJ, type VideoWithCaptionInput as aK, type ViewportConfig as aL, type ViewportOrientation as aM, type ViewportPreset as aN, type VignetteConfig as aO, applySurface as aP, calculateDuration as aQ, calculateFontScale as aR, createTemplateContext as aS, createTheme as aT, getAspectRatioString as aU, getBlockAtTime as aV, getCaptionAtTime as aW, getDocPlaybackDuration as aX, getLayoutHints as aY, getRegisteredThemes as aZ, getSafeTextBounds as a_, type PullQuoteInput as aa, type QuoteBlockInput as ab, type RawLayersInput as ac, type RenderStyle as ad, type RightFeatureInput as ae, type ScheduledClip as af, type SectionHeaderInput as ag, type ShapeFilter as ah, type ShapeLayer as ai, type ShapePattern as aj, type SolidBackgroundConfig as ak, type StartBlockConfig as al, type StatHighlightInput as am, type SurfaceScheme as an, THEME_SCHEMA_VERSION as ao, type TableLayer as ap, type TableLayerStyle as aq, type TemplateBlock as ar, type TemplateContext as as, type TemplateFunction as at, type TemplateRegistry as au, type TextLayer as av, type TextStyle as aw, type Theme as ax, type ThemeColorPalette as ay, type ThemeColorScheme as az, type AmbientGradientConfig as b, getTwoColumnPositions as b0, getViewport as b1, getViewportOrientation as b2, isPersistentLayerTemplate as b3, isTemplateBlock as b4, scaledFontSize$1 as b5, lookupRegisteredTheme as b6, registerTheme as b7, resolveMediaSchedule as b8, scaledFontSize as b9, unregisterTheme as ba, validateDoc as bb, type Animation as c, type AnimationType as d, type AudioBookmark as e, type AudioSegment as f, type AudioTimingData as g, type AudioTrack as h, type BlockConnection as i, type BorderStyle as j, type CaptionTrack as k, type CaptionWord as l, type ColorScheme as m, type ComparisonBarInput as n, type CornerBrandingConfig as o, type CustomTemplateDefinition as p, DEFAULT_DOC_FONT as q, DEFAULT_TITLE_FONT as r, type DataTableInput as s, type DateEventInput as t, type DeepPartial as u, type DefinitionCardInput as v, type DiagramBlockInput as w, type Doc as x, type DocBlock as y, type DocDiagnostic as z };
2177
+ export { type MapTileStyle as $, type AccentImage as A, type Block as B, type CaptionPhrase as C, DARK_SURFACE as D, type DocDiagnostic as E, type DrawingBlockInput as F, FRONTMATTER_CUSTOM_TEMPLATES_KEY as G, FRONTMATTER_CUSTOM_THEMES_KEY as H, type FactCardInput as I, type FontFamily as J, type FontFamilyKind as K, type FullBleedQuoteInput as L, type GradientBackgroundConfig as M, type ImageBackgroundConfig as N, type ImageLayer as O, type ImageTreatment as P, type ImageWithCaptionInput as Q, LIGHT_SURFACE as R, type Layer as S, type LayerRepeat as T, type LayoutHints as U, type LeftFeatureInput as V, type LinearGradient as W, type ListBlockInput as X, type MapBlockInput as Y, type MapLayer as Z, type MapMarker as _, type AccentPosition as a, getRegisteredThemes as a$, type MarkerStyle as a0, type MediaClip as a1, type PathLayer as a2, type PatternBackgroundConfig as a3, type PersistentLayer as a4, type PersistentLayerConfig as a5, type PersistentLayerTemplate as a6, type PersistentLayerTemplateConfig as a7, type PersistentLayerTemplateType as a8, type PhotoGridInput as a9, type ThemeColorPalette as aA, type ThemeColorScheme as aB, type ThemeSchemaVersion as aC, type ThemeSeedColors as aD, type ThemeStyle as aE, type ThemeTypography as aF, type TitleBlockInput as aG, type TitleCaptionConfig as aH, type TwoColumnInput as aI, VIEWPORT_PRESETS as aJ, type VideoLayer as aK, type VideoPullQuoteInput as aL, type VideoWithCaptionInput as aM, type ViewportConfig as aN, type ViewportOrientation as aO, type ViewportPreset as aP, type VignetteConfig as aQ, applySurface as aR, calculateDuration as aS, calculateFontScale as aT, createTemplateContext as aU, createTheme as aV, getAspectRatioString as aW, getBlockAtTime as aX, getCaptionAtTime as aY, getDocPlaybackDuration as aZ, getLayoutHints as a_, type Position as aa, type ProgressIndicatorConfig as ab, type PullQuoteInput as ac, type QuoteBlockInput as ad, type RawLayersInput as ae, type RenderStyle as af, type RightFeatureInput as ag, type ScheduledClip as ah, type SectionHeaderInput as ai, type ShapeFilter as aj, type ShapeLayer as ak, type ShapePattern as al, type SolidBackgroundConfig as am, type StartBlockConfig as an, type StatHighlightInput as ao, type SurfaceScheme as ap, THEME_SCHEMA_VERSION as aq, type TableLayer as ar, type TableLayerStyle as as, type TemplateBlock as at, type TemplateContext as au, type TemplateFunction as av, type TemplateRegistry as aw, type TextLayer as ax, type TextStyle as ay, type Theme as az, type AmbientGradientConfig as b, getSafeTextBounds as b0, getSegmentAtTime as b1, getTwoColumnPositions as b2, getViewport as b3, getViewportOrientation as b4, isPersistentLayerTemplate as b5, isTemplateBlock as b6, scaledFontSize$1 as b7, lookupRegisteredTheme as b8, registerTheme as b9, resolveMediaSchedule as ba, scaledFontSize as bb, unregisterTheme as bc, type Animation as c, type AnimationType as d, type AudioBookmark as e, type AudioSegment as f, type AudioTimingData as g, type AudioTrack as h, type BlockConnection as i, type BorderStyle as j, type CaptionTrack as k, type CaptionWord as l, type ColorScheme as m, type ComparisonBarInput as n, type CornerBrandingConfig as o, type CustomTemplateDefinition as p, type CustomTemplateLayer as q, DEFAULT_DOC_FONT as r, DEFAULT_TITLE_FONT as s, type DataTableInput as t, type DateEventInput as u, type DeepPartial as v, type DefinitionCardInput as w, type DiagramBlockInput as x, type Doc as y, type DocBlock as z };
@@ -1,4 +1,4 @@
1
- import { N as ImageLayer, av as TextLayer, ai as ShapeLayer, a0 as PathLayer } from './Doc-BsMkmzH8.js';
1
+ import { O as ImageLayer, ax as TextLayer, ak as ShapeLayer, a2 as PathLayer } from './Doc-BBVGq1_9.js';
2
2
 
3
3
  /**
4
4
  * ImageEditDoc — JSON document describing a layered, editable image.