@bendyline/squisq 2.3.2 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/{Doc-BrgZC7SE.d.ts → Doc-DLpyOAXJ.d.ts} +87 -2
  2. package/dist/{ImageEditDoc-rum0Xb9P.d.ts → ImageEditDoc-Cu30xb9b.d.ts} +1 -1
  3. package/dist/{chunk-2ZWIXGAC.js → chunk-2S74DPJH.js} +4 -0
  4. package/dist/{chunk-ZQKZSJAX.js → chunk-2VCNTDNZ.js} +245 -0
  5. package/dist/{chunk-RS5AP3J4.js → chunk-AE3IUKMM.js} +1 -1
  6. package/dist/{chunk-QWCFK5FN.js → chunk-CUYHFOFL.js} +5 -1
  7. package/dist/{chunk-ACZOVWX3.js → chunk-D4LPP3P5.js} +44 -15
  8. package/dist/{chunk-CKZY6K5R.js → chunk-F2IEPSMA.js} +2565 -1143
  9. package/dist/{chunk-ZAFLMJPD.js → chunk-KPBZZVGY.js} +37 -7
  10. package/dist/{chunk-BCCXTMN5.js → chunk-O7JILDEF.js} +7 -0
  11. package/dist/{chunk-SPTY4C6F.js → chunk-REDUXXDJ.js} +1 -1
  12. package/dist/{chunk-BCHAXKKI.js → chunk-ZHLNKB2I.js} +1 -1
  13. package/dist/chunk-ZYO3DBTA.js +983 -0
  14. package/dist/doc/index.d.ts +111 -6
  15. package/dist/doc/index.js +11 -7
  16. package/dist/generate/index.d.ts +1 -1
  17. package/dist/imageEdit/index.d.ts +3 -3
  18. package/dist/index.d.ts +6 -6
  19. package/dist/index.js +34 -14
  20. package/dist/jsonForm/index.d.ts +1 -1
  21. package/dist/jsonForm/index.js +2 -2
  22. package/dist/markdown/index.d.ts +118 -1
  23. package/dist/markdown/index.js +24 -8
  24. package/dist/{materializePageSection-DAbyLi-k.d.ts → materializePageSection-CgNs5Qmw.d.ts} +4 -2
  25. package/dist/narration/index.d.ts +1 -1
  26. package/dist/narration/index.js +5 -5
  27. package/dist/recommend/index.js +2 -2
  28. package/dist/schemas/index.d.ts +4 -4
  29. package/dist/schemas/index.js +2 -2
  30. package/dist/{themeLibrary-DJt89gyP.d.ts → themeLibrary-RWsNtlOu.d.ts} +1 -1
  31. package/dist/transform/index.d.ts +2 -2
  32. package/dist/transform/index.js +2 -2
  33. package/package.json +1 -1
  34. package/dist/chunk-3IGPAPQ7.js +0 -645
@@ -430,6 +430,21 @@ declare function parseFrontmatter(yaml: string): Record<string, unknown> | null;
430
430
  * blank (no trailing whitespace) so the output diffs cleanly.
431
431
  */
432
432
  declare function formatBlockScalar(value: string): string;
433
+ /**
434
+ * Split a markdown source into its raw leading YAML frontmatter block and
435
+ * the body that follows.
436
+ *
437
+ * `frontmatter` is the exact source bytes of the block — both `---` fence
438
+ * lines and the trailing newline — or `null` when the source does not start
439
+ * with one. Unlike {@link parseFrontmatter}, nothing is interpreted:
440
+ * comment-only and empty blocks are preserved verbatim, which is what
441
+ * source-level rewriters (`cleanupMarkdownSource`) need to keep authored
442
+ * YAML byte-identical.
443
+ */
444
+ declare function splitFrontmatterBlock(source: string): {
445
+ frontmatter: string | null;
446
+ body: string;
447
+ };
433
448
  /** Quote a frontmatter scalar so it round-trips cleanly through `parseFrontmatter`. */
434
449
  declare function formatFrontmatterValue(value: string | number | boolean): string;
435
450
  /**
@@ -499,4 +514,106 @@ declare function readFrontmatterThemeId(frontmatter: Record<string, unknown> | u
499
514
  */
500
515
  declare function plainTextFromInlineHtml(html: string): string;
501
516
 
502
- export { DEFAULT_INTERACTIVE_RESOURCE_POLICY, DEFAULT_RESOURCE_MAX_BYTES, DEFAULT_RESOURCE_TIMEOUT_MS, type FetchResourceBytesOptions, type FetchedResource, HeadingAttributes, HtmlNode, type HtmlPolicy, LOCAL_ONLY_RESOURCE_POLICY, MarkdownDocument, MarkdownNode, ParseOptions, type ResourcePolicy, ResourcePolicyError, type SanitizeUrlOptions, StringifyOptions, type TrailingAnnotationMatch, type UrlKind, countNodes, createDocument, extractPlainText, fetchResourceBytes, findNodesByType, formatBlockScalar, formatFrontmatterValue, formatFrontmatterYaml, fromMdast, getChildren, inferDocumentTitle, isResourceUrlAllowed, matchTrailingPandocAttr, matchTrailingTemplateAnnotation, needsQuoting, parseFrontmatter, parseHtmlToNodes, parseMarkdown, parsePandocAttrTokens, plainTextFromInlineHtml, quoteAttrValue, readFrontmatterThemeId, sanitizeHtmlNodes, sanitizeUrl, serializePandocAttributes, setFrontmatterValues, splitKeyValueToken, stringifyHtmlNodes, stringifyMarkdown, toMdast, tokenizeAttrTokens, unquoteAttrValue, walkMarkdownTree };
517
+ /**
518
+ * Markdown source transforms
519
+ *
520
+ * One-time, whole-document transforms over markdown SOURCE TEXT (not the
521
+ * AST): unwrap forced line wrapping, wrap prose at a column width, and
522
+ * canonical cleanup — plus detection of a document's prevailing wrap
523
+ * convention. A shared registry drives both the editor's Transform menu and
524
+ * the `squisq transform` CLI command.
525
+ *
526
+ * Wrap and unwrap rewrite ONLY paragraph prose, located by source position:
527
+ * headings, tables, code fences, math, HTML blocks, frontmatter, and link
528
+ * definitions stay byte-identical. Every transform reparses its output and
529
+ * structurally compares it against the input document; on any mismatch it
530
+ * returns the input unchanged (or throws in `strict` mode) rather than risk
531
+ * corrupting a document — the same verify-before-commit contract the ASCII
532
+ * diagram editor uses.
533
+ *
534
+ * Distinct from `@bendyline/squisq/transform` (the slideshow style
535
+ * pipeline): these transforms rewrite markdown text, not docs.
536
+ */
537
+ type MarkdownSourceTransformId = 'unwrap' | 'wrap' | 'cleanup';
538
+ interface MarkdownSourceTransformOptions {
539
+ /** Target column for `wrap` (clamped to 20–500). Default {@link DEFAULT_WRAP_WIDTH}. */
540
+ width?: number;
541
+ /**
542
+ * Throw instead of degrading when the transformed output fails the
543
+ * structural-equivalence check. The editor uses the default (degrade to a
544
+ * no-op + `console.warn`); the CLI and tests run strict.
545
+ */
546
+ strict?: boolean;
547
+ }
548
+ /** A single source rewrite: replace `[start, end)` with `text`. */
549
+ interface MarkdownSourceEdit {
550
+ start: number;
551
+ end: number;
552
+ text: string;
553
+ }
554
+ interface MarkdownSourceTransformResult {
555
+ /** The transformed source (=== the input when `changed` is false). */
556
+ output: string;
557
+ /** True when the transform produced a different source. */
558
+ changed: boolean;
559
+ /**
560
+ * True when the safety net fired: the transform DID produce edits, but the
561
+ * result no longer parsed to an equivalent document, so the input was
562
+ * returned unchanged. Distinct from a genuine no-op (`changed: false,
563
+ * degraded: false`).
564
+ */
565
+ degraded: boolean;
566
+ /**
567
+ * The minimal edits that turn the input into `output`, in DESCENDING
568
+ * `start` order so they can be applied top-of-stack first (offsets stay
569
+ * valid). Present for `unwrap`/`wrap` (one edit per touched paragraph) and
570
+ * `cleanup` (one whole-document edit); empty when nothing changed.
571
+ */
572
+ edits: MarkdownSourceEdit[];
573
+ }
574
+ interface MarkdownSourceTransform {
575
+ id: MarkdownSourceTransformId;
576
+ /** Short human label for menus. */
577
+ label: string;
578
+ /** One-line description for menus/help. */
579
+ description: string;
580
+ apply(source: string, options?: MarkdownSourceTransformOptions): MarkdownSourceTransformResult;
581
+ }
582
+ /** The prevailing wrap convention of a document's paragraph prose. */
583
+ interface MarkdownWrapState {
584
+ /**
585
+ * - `wrapped`: a clear majority of paragraphs that would need wrapping are
586
+ * hard-wrapped; `width` carries the detected column.
587
+ * - `unwrapped`: paragraph prose is single-line.
588
+ * - `mixed`: contradictory evidence — consumers should leave the doc alone.
589
+ * - `no-prose`: nothing to judge (no paragraphs).
590
+ */
591
+ kind: 'unwrapped' | 'wrapped' | 'mixed' | 'no-prose';
592
+ /** Detected wrap column (present when `kind` is `wrapped`). */
593
+ width?: number;
594
+ totalParagraphs: number;
595
+ wrappedParagraphs: number;
596
+ /** Longest physical line observed across paragraph prose. */
597
+ maxLineLength: number;
598
+ }
599
+ declare const DEFAULT_WRAP_WIDTH = 80;
600
+ declare const MARKDOWN_SOURCE_TRANSFORMS: readonly MarkdownSourceTransform[];
601
+ /** Apply a registered transform by id. Throws on an unknown id. */
602
+ declare function applyMarkdownSourceTransform(id: string, source: string, options?: MarkdownSourceTransformOptions): MarkdownSourceTransformResult;
603
+ /** Remove forced line wrapping; each paragraph becomes a single line. */
604
+ declare function unwrapMarkdownSource(source: string, options?: MarkdownSourceTransformOptions): string;
605
+ /** Hard-wrap paragraph prose at a column width on word boundaries. */
606
+ declare function wrapMarkdownSource(source: string, options?: MarkdownSourceTransformOptions): string;
607
+ /** Normalize the document through the canonical house-style serializer. */
608
+ declare function cleanupMarkdownSource(source: string, options?: MarkdownSourceTransformOptions): string;
609
+ /**
610
+ * Detect the prevailing wrap convention of a document's paragraph prose.
611
+ *
612
+ * Evidence is the soft (non-hard-break, non-immovable) line breaks inside
613
+ * paragraphs: their non-final line lengths vote for a wrap column, which is
614
+ * snapped up to the nearest common convention (60/72/80/100/120) when close.
615
+ * Hard-break lines (poetry, addresses) are never wrap evidence.
616
+ */
617
+ declare function detectMarkdownWrapState(source: string): MarkdownWrapState;
618
+
619
+ export { DEFAULT_INTERACTIVE_RESOURCE_POLICY, DEFAULT_RESOURCE_MAX_BYTES, DEFAULT_RESOURCE_TIMEOUT_MS, DEFAULT_WRAP_WIDTH, type FetchResourceBytesOptions, type FetchedResource, HeadingAttributes, HtmlNode, type HtmlPolicy, LOCAL_ONLY_RESOURCE_POLICY, MARKDOWN_SOURCE_TRANSFORMS, MarkdownDocument, MarkdownNode, 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, countNodes, createDocument, detectMarkdownWrapState, extractPlainText, fetchResourceBytes, findNodesByType, formatBlockScalar, formatFrontmatterValue, formatFrontmatterYaml, fromMdast, getChildren, inferDocumentTitle, isResourceUrlAllowed, matchTrailingPandocAttr, matchTrailingTemplateAnnotation, needsQuoting, parseFrontmatter, parseHtmlToNodes, parseMarkdown, parsePandocAttrTokens, plainTextFromInlineHtml, quoteAttrValue, readFrontmatterThemeId, sanitizeHtmlNodes, sanitizeUrl, serializePandocAttributes, setFrontmatterValues, splitFrontmatterBlock, splitKeyValueToken, stringifyHtmlNodes, stringifyMarkdown, toMdast, tokenizeAttrTokens, unquoteAttrValue, unwrapMarkdownSource, walkMarkdownTree, wrapMarkdownSource };
@@ -2,14 +2,19 @@ import {
2
2
  DEFAULT_INTERACTIVE_RESOURCE_POLICY,
3
3
  DEFAULT_RESOURCE_MAX_BYTES,
4
4
  DEFAULT_RESOURCE_TIMEOUT_MS,
5
+ DEFAULT_WRAP_WIDTH,
5
6
  LOCAL_ONLY_RESOURCE_POLICY,
7
+ MARKDOWN_SOURCE_TRANSFORMS,
6
8
  ResourcePolicyError,
9
+ applyMarkdownSourceTransform,
10
+ cleanupMarkdownSource,
11
+ detectMarkdownWrapState,
7
12
  fetchResourceBytes,
8
13
  isResourceUrlAllowed,
9
- sanitizeHtmlNodes,
10
- sanitizeUrl,
11
- stringifyMarkdown
12
- } from "../chunk-3IGPAPQ7.js";
14
+ stringifyMarkdown,
15
+ unwrapMarkdownSource,
16
+ wrapMarkdownSource
17
+ } from "../chunk-ZYO3DBTA.js";
13
18
  import {
14
19
  DEFAULT_MARKDOWN_SAFETY_LIMITS,
15
20
  MarkdownLimitError,
@@ -21,7 +26,7 @@ import {
21
26
  resolveMarkdownSafetyLimits,
22
27
  serializePandocAttributes,
23
28
  toMdast
24
- } from "../chunk-ACZOVWX3.js";
29
+ } from "../chunk-D4LPP3P5.js";
25
30
  import {
26
31
  BLOCK_META_KEY_DESCRIPTORS,
27
32
  KNOWN_BLOCK_META_KEYS,
@@ -30,10 +35,12 @@ import {
30
35
  needsQuoting,
31
36
  parseTimeSeconds,
32
37
  quoteAttrValue,
38
+ sanitizeHtmlNodes,
39
+ sanitizeUrl,
33
40
  splitKeyValueToken,
34
41
  tokenizeAttrTokens,
35
42
  unquoteAttrValue
36
- } from "../chunk-ZQKZSJAX.js";
43
+ } from "../chunk-2VCNTDNZ.js";
37
44
  import "../chunk-7N4G32LG.js";
38
45
  import {
39
46
  countNodes,
@@ -50,9 +57,10 @@ import {
50
57
  plainTextFromInlineHtml,
51
58
  readFrontmatterThemeId,
52
59
  setFrontmatterValues,
60
+ splitFrontmatterBlock,
53
61
  stringifyHtmlNodes,
54
62
  walkMarkdownTree
55
- } from "../chunk-BCCXTMN5.js";
63
+ } from "../chunk-O7JILDEF.js";
56
64
  import "../chunk-4VOD55SX.js";
57
65
  export {
58
66
  BLOCK_META_KEY_DESCRIPTORS,
@@ -60,14 +68,19 @@ export {
60
68
  DEFAULT_MARKDOWN_SAFETY_LIMITS,
61
69
  DEFAULT_RESOURCE_MAX_BYTES,
62
70
  DEFAULT_RESOURCE_TIMEOUT_MS,
71
+ DEFAULT_WRAP_WIDTH,
63
72
  KNOWN_BLOCK_META_KEYS,
64
73
  LOCAL_ONLY_RESOURCE_POLICY,
74
+ MARKDOWN_SOURCE_TRANSFORMS,
65
75
  MarkdownLimitError,
66
76
  ResourcePolicyError,
77
+ applyMarkdownSourceTransform,
67
78
  assertMarkdownDocumentWithinLimits,
68
79
  assertMarkdownSourceWithinLimits,
80
+ cleanupMarkdownSource,
69
81
  countNodes,
70
82
  createDocument,
83
+ detectMarkdownWrapState,
71
84
  extractPlainText,
72
85
  fetchResourceBytes,
73
86
  findNodesByType,
@@ -94,11 +107,14 @@ export {
94
107
  sanitizeUrl,
95
108
  serializePandocAttributes,
96
109
  setFrontmatterValues,
110
+ splitFrontmatterBlock,
97
111
  splitKeyValueToken,
98
112
  stringifyHtmlNodes,
99
113
  stringifyMarkdown,
100
114
  toMdast,
101
115
  tokenizeAttrTokens,
102
116
  unquoteAttrValue,
103
- walkMarkdownTree
117
+ unwrapMarkdownSource,
118
+ walkMarkdownTree,
119
+ wrapMarkdownSource
104
120
  };
@@ -1,4 +1,4 @@
1
- import { B as Block, au as PageSectionKind, as as PageEmphasis, b4 as ThemeColorScheme, aq as PageBackground, b2 as Theme, br as ViewportConfig, q as CustomTemplateDefinition, aS as StartBlockConfig, G as Doc, b5 as ThemePageStyle } from './Doc-BrgZC7SE.js';
1
+ import { j as Block, aB as PageSectionKind, az as PageEmphasis, bd as ThemeColorScheme, ax as PageBackground, bb as Theme, bB as ViewportConfig, v as CustomTemplateDefinition, a$ as StartBlockConfig, L as Doc, be as ThemePageStyle } from './Doc-DLpyOAXJ.js';
2
2
  import { M as MarkdownBlockNode } from './types-CUNc9biN.js';
3
3
 
4
4
  /**
@@ -27,7 +27,7 @@ interface PageRichText {
27
27
  markdown?: MarkdownBlockNode[];
28
28
  }
29
29
  /** Which spatial pipeline a canvas-embed section renders through. */
30
- type PageSpatialKind = 'diagram' | 'tree' | 'timeline' | 'map' | 'drawing' | 'layout' | 'custom' | 'authored';
30
+ type PageSpatialKind = 'diagram' | 'tree' | 'timeline' | 'map' | 'chart' | 'drawing' | 'layout' | 'custom' | 'authored';
31
31
  /** Media content for a section slot. */
32
32
  type PageMedia = {
33
33
  type: 'image';
@@ -64,6 +64,8 @@ type PageMedia = {
64
64
  interface PageSectionItem {
65
65
  title?: string;
66
66
  body?: string;
67
+ /** Original rich body nodes when this item came from authored Markdown. */
68
+ markdown?: MarkdownBlockNode[];
67
69
  /** Large numeral / value for stat and comparison items. */
68
70
  value?: string | number;
69
71
  media?: PageMedia;
@@ -1,4 +1,4 @@
1
- import { G as Doc, e as AudioBookmark } from '../Doc-BrgZC7SE.js';
1
+ import { L as Doc, f as AudioBookmark } from '../Doc-DLpyOAXJ.js';
2
2
  import '../types-CUNc9biN.js';
3
3
 
4
4
  /**
@@ -23,7 +23,7 @@ import {
23
23
  reanchorSession,
24
24
  traceWordPosAt,
25
25
  vadStep
26
- } from "../chunk-BCHAXKKI.js";
26
+ } from "../chunk-ZHLNKB2I.js";
27
27
  import {
28
28
  buildNarrationScript,
29
29
  buildNarrationTimingJson,
@@ -33,13 +33,13 @@ import {
33
33
  wordIndexAtChar,
34
34
  wordIndexAtTime,
35
35
  wordPosAtExpectedSyllables
36
- } from "../chunk-CKZY6K5R.js";
36
+ } from "../chunk-F2IEPSMA.js";
37
37
  import "../chunk-PUS54YU6.js";
38
- import "../chunk-QWCFK5FN.js";
38
+ import "../chunk-CUYHFOFL.js";
39
39
  import "../chunk-C33GTPUZ.js";
40
40
  import "../chunk-BAOV476U.js";
41
- import "../chunk-ZQKZSJAX.js";
42
- import "../chunk-BCCXTMN5.js";
41
+ import "../chunk-2VCNTDNZ.js";
42
+ import "../chunk-O7JILDEF.js";
43
43
  import "../chunk-4VOD55SX.js";
44
44
  import "../chunk-XOFT65EX.js";
45
45
  import "../chunk-67L6WRJN.js";
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  profileBlockContents,
3
3
  recommendTemplatesForBlock
4
- } from "../chunk-QWCFK5FN.js";
5
- import "../chunk-BCCXTMN5.js";
4
+ } from "../chunk-CUYHFOFL.js";
5
+ import "../chunk-O7JILDEF.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 { b2 as Theme, b5 as ThemePageStyle, b4 as ThemeColorScheme, w as DeepPartial, b8 as ThemeSeedColors, b3 as ThemeColorPalette, O as FontFamilyKind, N as FontFamily } from '../Doc-BrgZC7SE.js';
3
- export { A as AccentImage, a as AccentPosition, b as AmbientGradientConfig, c as Animation, d as AnimationType, e as AudioBookmark, f as AudioSegment, g as AudioTimingData, h as AudioTrack, B as Block, i as BlockConnection, j as BorderStyle, C as CaptionPhrase, k as CaptionTrack, l as CaptionWord, m as ColorScheme, n as ComparisonBarInput, o as ContentBlockInput, p as CornerBrandingConfig, q as CustomTemplateDefinition, r as CustomTemplateLayer, D as DARK_SURFACE, s as DEFAULT_DOC_FONT, t as DEFAULT_TITLE_FONT, u as DataTableInput, v as DateEventInput, x as DefinitionCardInput, y as DiagramBlockInput, z as DiagramEdgeAnchor, E as DiagramTemplateEdge, F as DiagramTemplateNode, G as Doc, H as DocBlock, I as DocDiagnostic, J as DrawingBlockInput, K as FRONTMATTER_CUSTOM_TEMPLATES_KEY, L as FRONTMATTER_CUSTOM_THEMES_KEY, M as FactCardInput, P as FullBleedQuoteInput, Q as GradientBackgroundConfig, R as ImageBackgroundConfig, S as ImageLayer, T as ImageTreatment, U as ImageWithCaptionInput, V as LIGHT_SURFACE, W as Layer, X as LayerRepeat, Y as LayoutHints, Z as LeftFeatureInput, _ as LinearGradient, $ as ListBlockInput, a0 as MapBlockInput, a1 as MapLayer, a2 as MapMarker, a3 as MapTileStyle, a4 as MarkerStyle, a5 as MediaClip, a6 as MermaidLayer, a7 as PAGE_ACCENT_STRATEGIES, a8 as PAGE_BACKGROUNDS, a9 as PAGE_BACKGROUND_RHYTHMS, aa as PAGE_DESIGN_FAMILIES, ab as PAGE_DIVIDERS, ac as PAGE_EMPHASES, ad as PAGE_EYEBROWS, ae as PAGE_HEADING_CASES, af as PAGE_HEADING_SCALES, ag as PAGE_HEADING_UNDERLINES, ah as PAGE_HERO_STYLES, ai as PAGE_IMAGE_FRAMINGS, aj as PAGE_NUMERAL_STYLES, ak as PAGE_PATTERNS, al as PAGE_QUOTE_MARKS, am as PAGE_SECTION_KINDS, an as PAGE_SECTION_SPACINGS, ao as PAGE_SHADOWS, ap as PageAccentRotation, aq as PageBackground, ar as PageDesignFamily, as as PageEmphasis, at as PageHeadingTreatment, au as PageSectionKind, av as PageSectionOverride, aw as PageTokens, ax as PathLayer, ay as PatternBackgroundConfig, az as PersistentLayer, aA as PersistentLayerConfig, aB as PersistentLayerTemplate, aC as PersistentLayerTemplateConfig, aD as PersistentLayerTemplateType, aE as PhotoGridInput, aF as Position, aG as ProgressIndicatorConfig, aH as PullQuoteInput, aI as QuoteBlockInput, aJ as RawLayersInput, aK as RenderStyle, aL as RightFeatureInput, aM as ScheduledClip, aN as SectionHeaderInput, aO as ShapeFilter, aP as ShapeLayer, aQ as ShapePattern, aR as SolidBackgroundConfig, aS as StartBlockConfig, aT as StatHighlightInput, aU as SurfaceScheme, aV as THEME_SCHEMA_VERSION, aW as TableLayer, aX as TableLayerStyle, aY as TemplateBlock, aZ as TemplateContext, a_ as TemplateFunction, a$ as TemplateRegistry, b0 as TextLayer, b1 as TextStyle, b6 as ThemeRegistry, b7 as ThemeSchemaVersion, b9 as ThemeStyle, ba as ThemeTypography, bb as TimelineBlockInput, bc as TimelineTemplateEvent, bd as TimelineTemplateLink, be as TimelineTemplateTrack, bf as TitleBlockInput, bg as TitleCaptionConfig, bh as TreeBlockInput, bi as TreeLayer, bj as TreeLayerItem, bk as TreeLayerStyle, bl as TreeTemplateItem, bm as TwoColumnInput, bn as VIEWPORT_PRESETS, bo as VideoLayer, bp as VideoPullQuoteInput, bq as VideoWithCaptionInput, br as ViewportConfig, bs as ViewportOrientation, bt as ViewportPreset, bu as VignetteConfig, bv as applySurface, bw as calculateDuration, bx as calculateFontScale, by as createTemplateContext, bz as createTheme, bA as createThemeRegistry, bB as getAspectRatioString, bC as getBlockAtTime, bD as getCaptionAtTime, bE as getDocPlaybackDuration, bF as getLayoutHints, bG as getSafeTextBounds, bH as getSegmentAtTime, bI as getTwoColumnPositions, bJ as getViewport, bK as getViewportOrientation, bL as isPersistentLayerTemplate, bM as isTemplateBlock, bN as layoutScaledFontSize, bO as resolveMediaSchedule, bP as scaledFontSize } from '../Doc-BrgZC7SE.js';
2
+ import { bb as Theme, be as ThemePageStyle, bd as ThemeColorScheme, F as DeepPartial, bh as ThemeSeedColors, bc as ThemeColorPalette, U as FontFamilyKind, T as FontFamily } from '../Doc-DLpyOAXJ.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 Block, k as BlockConnection, l as BorderStyle, C as CaptionPhrase, m as CaptionTrack, n as CaptionWord, o as ChartBaseFields, p as ChartTemplateInput, q as ColorScheme, r as ColumnChartInput, s as ComparisonBarInput, t as ContentBlockInput, u as CornerBrandingConfig, v as CustomTemplateDefinition, w as CustomTemplateLayer, D as DARK_SURFACE, x as DEFAULT_DOC_FONT, y as DEFAULT_TITLE_FONT, z as DataTableInput, E as DateEventInput, G as DefinitionCardInput, H as DiagramBlockInput, I as DiagramEdgeAnchor, J as DiagramTemplateEdge, K as DiagramTemplateNode, L as Doc, M as DocBlock, N as DocDiagnostic, O as DonutChartInput, P as DrawingBlockInput, Q as FRONTMATTER_CUSTOM_TEMPLATES_KEY, R as FRONTMATTER_CUSTOM_THEMES_KEY, S as FactCardInput, V as FullBleedQuoteInput, W as GradientBackgroundConfig, X as ImageBackgroundConfig, Y as ImageLayer, Z as ImageTreatment, _ as ImageWithCaptionInput, $ as LIGHT_SURFACE, a0 as Layer, a1 as LayerRepeat, a2 as LayoutHints, a3 as LeftFeatureInput, a4 as LineChartInput, a5 as LinearGradient, a6 as ListBlockInput, a7 as MapBlockInput, a8 as MapLayer, a9 as MapMarker, aa as MapTileStyle, ab as MarkerStyle, ac as MediaClip, ad as MermaidLayer, ae as PAGE_ACCENT_STRATEGIES, af as PAGE_BACKGROUNDS, ag as PAGE_BACKGROUND_RHYTHMS, ah as PAGE_DESIGN_FAMILIES, ai as PAGE_DIVIDERS, aj as PAGE_EMPHASES, ak as PAGE_EYEBROWS, al as PAGE_HEADING_CASES, am as PAGE_HEADING_SCALES, an as PAGE_HEADING_UNDERLINES, ao as PAGE_HERO_STYLES, ap as PAGE_IMAGE_FRAMINGS, aq as PAGE_NUMERAL_STYLES, ar as PAGE_PATTERNS, as as PAGE_QUOTE_MARKS, at as PAGE_SECTION_KINDS, au as PAGE_SECTION_SPACINGS, av as PAGE_SHADOWS, aw as PageAccentRotation, ax as PageBackground, ay as PageDesignFamily, az as PageEmphasis, aA as PageHeadingTreatment, aB as PageSectionKind, aC as PageSectionOverride, aD as PageTokens, aE as PathLayer, aF as PatternBackgroundConfig, aG as PersistentLayer, aH as PersistentLayerConfig, aI as PersistentLayerTemplate, aJ as PersistentLayerTemplateConfig, aK as PersistentLayerTemplateType, aL as PhotoGridInput, aM as PieChartInput, aN as Position, aO as ProgressIndicatorConfig, aP as PullQuoteInput, aQ as QuoteBlockInput, aR as RawLayersInput, aS as RenderStyle, aT as RightFeatureInput, aU as ScatterChartInput, aV as ScheduledClip, aW as SectionHeaderInput, aX as ShapeFilter, aY as ShapeLayer, aZ as ShapePattern, a_ as SolidBackgroundConfig, a$ as StartBlockConfig, b0 as StatHighlightInput, b1 as SurfaceScheme, b2 as THEME_SCHEMA_VERSION, b3 as TableLayer, b4 as TableLayerStyle, b5 as TemplateBlock, b6 as TemplateContext, b7 as TemplateFunction, b8 as TemplateRegistry, b9 as TextLayer, ba as TextStyle, bf as ThemeRegistry, bg as ThemeSchemaVersion, bi as ThemeStyle, bj as ThemeTypography, bk as TimelineBlockInput, bl as TimelineTemplateEvent, bm as TimelineTemplateLink, bn as TimelineTemplateTrack, bo as TitleBlockInput, bp as TitleCaptionConfig, bq as TreeBlockInput, br as TreeLayer, bs as TreeLayerItem, bt as TreeLayerStyle, bu as TreeTemplateItem, bv as TwoColumnInput, bw as VIEWPORT_PRESETS, bx as VideoLayer, by as VideoPlacement, bz as VideoPullQuoteInput, bA as VideoWithCaptionInput, bB as ViewportConfig, bC as ViewportOrientation, bD as ViewportPreset, bE as VignetteConfig, bF as applySurface, bG as calculateDuration, bH as calculateFontScale, bI as createTemplateContext, bJ as createTheme, bK as createThemeRegistry, bL as getAspectRatioString, bM as getBlockAtTime, bN as getCaptionAtTime, bO as getDocPlaybackDuration, bP as getLayoutHints, bQ as getSafeTextBounds, bR as getSegmentAtTime, bS as getTwoColumnPositions, bT as getViewport, bU as getViewportOrientation, bV as isPersistentLayerTemplate, bW as isTemplateBlock, bX as layoutScaledFontSize, bY as resolveMediaSchedule, bZ as scaledFontSize } from '../Doc-DLpyOAXJ.js';
4
4
  export { a as DEFAULT_TRANSITION_DURATION_SECONDS, _ as TRANSITION_DIRECTIONS, $ as TRANSITION_TYPES, a0 as Transition, a1 as TransitionDirection, a2 as TransitionType, a5 as isTransitionType, a6 as normalizeTransitionDirection, a7 as normalizeTransitionType, a8 as resolveBlockTransition, aa as resolveTransitionDuration } from '../types-CUNc9biN.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-DJt89gyP.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-RWsNtlOu.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-rum0Xb9P.js';
7
+ export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-Cu30xb9b.js';
8
8
 
9
9
  /**
10
10
  * Page Style Defaults
@@ -10,12 +10,12 @@ import {
10
10
  getSegmentAtTime,
11
11
  parseTheme,
12
12
  serializeTheme
13
- } from "../chunk-SPTY4C6F.js";
13
+ } from "../chunk-REDUXXDJ.js";
14
14
  import {
15
15
  defaultPageStyle,
16
16
  getDocPlaybackDuration,
17
17
  resolveMediaSchedule
18
- } from "../chunk-2ZWIXGAC.js";
18
+ } from "../chunk-2S74DPJH.js";
19
19
  import {
20
20
  AVAILABLE_FONT_STACKS,
21
21
  DARK_SURFACE,
@@ -1,4 +1,4 @@
1
- import { b2 as Theme, b6 as ThemeRegistry } from './Doc-BrgZC7SE.js';
1
+ import { bb as Theme, bf as ThemeRegistry } from './Doc-DLpyOAXJ.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,5 +1,5 @@
1
- import { m as ColorScheme, G as Doc, B as Block } from '../Doc-BrgZC7SE.js';
2
- import { i as PageTransformHints } from '../materializePageSection-DAbyLi-k.js';
1
+ import { q as ColorScheme, L as Doc, j as Block } from '../Doc-DLpyOAXJ.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-CgNs5Qmw.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
4
  import '../types-CUNc9biN.js';
5
5
 
@@ -7,10 +7,10 @@ import {
7
7
  getTransformStyleIds,
8
8
  getTransformStyleSummaries,
9
9
  resolveTransformStyle
10
- } from "../chunk-RS5AP3J4.js";
10
+ } from "../chunk-AE3IUKMM.js";
11
11
  import "../chunk-NKNMGIIN.js";
12
12
  import "../chunk-BAOV476U.js";
13
- import "../chunk-BCCXTMN5.js";
13
+ import "../chunk-O7JILDEF.js";
14
14
  import "../chunk-67L6WRJN.js";
15
15
  import "../chunk-XRW6P7IF.js";
16
16
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.3.2",
3
+ "version": "2.4.0",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",