@bendyline/squisq 2.11.19 → 2.12.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 (45) hide show
  1. package/dist/{Doc-B6TYHYGc.d.ts → Doc-DIdmgDsV.d.ts} +22 -24
  2. package/dist/{ImageEditDoc-CN_3Ysj5.d.ts → ImageEditDoc-DXQMA6qH.d.ts} +1 -1
  3. package/dist/{annotationCoercion-BgL52343.d.ts → annotationCoercion-TxFucMtA.d.ts} +6 -15
  4. package/dist/{chunk-3XEABCT3.js → chunk-3H7SYCZS.js} +19 -0
  5. package/dist/{chunk-JVY3NH6H.js → chunk-3Z2NGHLI.js} +1 -1
  6. package/dist/{chunk-A5QJJZ5S.js → chunk-B3AFOXMA.js} +1 -1
  7. package/dist/{chunk-PUS54YU6.js → chunk-FUBMT6SJ.js} +9 -7
  8. package/dist/{chunk-Y4OZ5DSG.js → chunk-H54A35NZ.js} +2 -2
  9. package/dist/{chunk-PFH3WV6J.js → chunk-I4L4GYDN.js} +1 -1
  10. package/dist/{chunk-QKNFR55R.js → chunk-K2PZMWQ5.js} +38 -8
  11. package/dist/{chunk-4VOD55SX.js → chunk-M6YXFNGO.js} +37 -0
  12. package/dist/{chunk-7WN7DDMI.js → chunk-QHNO67JS.js} +1 -1
  13. package/dist/{chunk-BA5MMBI6.js → chunk-RPPUCFRW.js} +65 -8
  14. package/dist/{chunk-K2Z7K65P.js → chunk-VTG7PNOL.js} +2 -2
  15. package/dist/{chunk-QLN6ILHM.js → chunk-W45PAVYE.js} +4373 -4109
  16. package/dist/{chunk-GB7OFYUK.js → chunk-WAX4QYHA.js} +6 -1
  17. package/dist/{chunk-OU5FYBOB.js → chunk-YA74HTAB.js} +1 -1
  18. package/dist/{chunk-WSFXV5BT.js → chunk-ZYWYSM6W.js} +105 -74
  19. package/dist/doc/index.d.ts +57 -30
  20. package/dist/doc/index.js +27 -11
  21. package/dist/fence/index.d.ts +2 -2
  22. package/dist/generate/index.d.ts +2 -2
  23. package/dist/imageEdit/index.d.ts +4 -4
  24. package/dist/imageEdit/index.js +2 -2
  25. package/dist/index.d.ts +7 -7
  26. package/dist/index.js +46 -16
  27. package/dist/jsonForm/index.d.ts +2 -2
  28. package/dist/jsonForm/index.js +4 -4
  29. package/dist/markdown/index.d.ts +3 -3
  30. package/dist/markdown/index.js +5 -5
  31. package/dist/{materializePageSection-IYXU3tDN.d.ts → materializePageSection-C33MgcDg.d.ts} +2 -2
  32. package/dist/mediaEdit/index.d.ts +3 -3
  33. package/dist/narration/index.d.ts +4 -18
  34. package/dist/narration/index.js +9 -9
  35. package/dist/recommend/index.d.ts +1 -1
  36. package/dist/recommend/index.js +2 -2
  37. package/dist/schemas/index.d.ts +5 -5
  38. package/dist/schemas/index.js +17 -3
  39. package/dist/{themeLibrary-_46saKYO.d.ts → themeLibrary-BaDfxgzt.d.ts} +1 -1
  40. package/dist/timing/index.d.ts +2 -2
  41. package/dist/transform/index.d.ts +4 -5
  42. package/dist/transform/index.js +9 -9
  43. package/dist/{types-C6VvDDL2.d.ts → types-BmEHcL3l.d.ts} +42 -1
  44. package/package.json +1 -1
  45. package/dist/{chunk-Q6ELOAOQ.js → chunk-NNJA7ICB.js} +17 -17
@@ -13,7 +13,7 @@ import {
13
13
  pipStyleVars,
14
14
  serializeTheme,
15
15
  validateDocSchema
16
- } from "../chunk-GB7OFYUK.js";
16
+ } from "../chunk-WAX4QYHA.js";
17
17
  import {
18
18
  defaultPageStyle,
19
19
  getDocPlaybackDuration,
@@ -97,21 +97,32 @@ import {
97
97
  validateCustomTemplateDefinition,
98
98
  validateTheme,
99
99
  withAlpha
100
- } from "../chunk-PFH3WV6J.js";
100
+ } from "../chunk-I4L4GYDN.js";
101
101
  import "../chunk-JSGIWW35.js";
102
102
  import "../chunk-L7QZORLB.js";
103
103
  import {
104
+ BUILD_EFFECTS,
105
+ BUILD_MODES,
106
+ BUILD_PARAM_KEYS,
107
+ BUILD_PREVIOUS,
104
108
  DEFAULT_TRANSITION_DURATION_SECONDS,
105
109
  TRANSITION_DIRECTIONS,
106
110
  TRANSITION_TYPES,
111
+ buildSpecParams,
107
112
  isTransitionType,
108
113
  normalizeTransitionDirection,
109
114
  normalizeTransitionType,
115
+ parseBuildSpec,
116
+ recordBuildAdvance,
110
117
  resolveBlockTransition,
111
118
  resolveTransitionDuration
112
- } from "../chunk-4VOD55SX.js";
119
+ } from "../chunk-M6YXFNGO.js";
113
120
  export {
114
121
  AVAILABLE_FONT_STACKS,
122
+ BUILD_EFFECTS,
123
+ BUILD_MODES,
124
+ BUILD_PARAM_KEYS,
125
+ BUILD_PREVIOUS,
115
126
  DARK_SURFACE,
116
127
  DEFAULT_DOC_FONT,
117
128
  DEFAULT_THEME,
@@ -155,6 +166,7 @@ export {
155
166
  assertTheme,
156
167
  buildGoogleFontsUrl,
157
168
  buildMermaidThemeVariables,
169
+ buildSpecParams,
158
170
  calculateDuration,
159
171
  calculateFontScale,
160
172
  compileTheme,
@@ -194,10 +206,12 @@ export {
194
206
  oklchDarken,
195
207
  oklchLighten,
196
208
  oklchSetChroma,
209
+ parseBuildSpec,
197
210
  parseTheme,
198
211
  pickContrastingText,
199
212
  pipStyleVars,
200
213
  readFrontmatterMotion,
214
+ recordBuildAdvance,
201
215
  relativeLuminance,
202
216
  resolveBlockTransition,
203
217
  resolveFontFamily,
@@ -1,4 +1,4 @@
1
- import { bw as Theme, bA as ThemeRegistry } from './Doc-B6TYHYGc.js';
1
+ import { bw as Theme, bA as ThemeRegistry } from './Doc-DIdmgDsV.js';
2
2
 
3
3
  /**
4
4
  * Built-in Theme Library
@@ -1,5 +1,5 @@
1
- import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-B6TYHYGc.js';
2
- import '../types-C6VvDDL2.js';
1
+ import { g as AudioSegment, h as AudioTimingData, n as CaptionTrack } from '../Doc-DIdmgDsV.js';
2
+ import '../types-BmEHcL3l.js';
3
3
 
4
4
  /**
5
5
  * Narration timing estimation.
@@ -1,7 +1,7 @@
1
- import { Q as Doc, r as ColorScheme, k as Block, bq as TemplateBlock } from '../Doc-B6TYHYGc.js';
2
- import { i as PageTransformHints } from '../materializePageSection-IYXU3tDN.js';
1
+ import { Q as Doc, r as ColorScheme, k as Block, bq as TemplateBlock } from '../Doc-DIdmgDsV.js';
2
+ import { i as PageTransformHints } from '../materializePageSection-C33MgcDg.js';
3
3
  import { d as ExtractionType, E as ExtractedElement, b as ExtractionOptions } from '../contentExtractor-BNfVJV2U.js';
4
- import '../types-C6VvDDL2.js';
4
+ import { f as BuildSpec } from '../types-BmEHcL3l.js';
5
5
 
6
6
  /** Identifier for a built-in or caller-registered transform style. */
7
7
  type TransformStyleId = string;
@@ -351,11 +351,10 @@ declare const PRESENTATION_LIMITS: {
351
351
  declare function parsePresentationPlan(input: unknown): PresentationPlan | null;
352
352
  declare function serializePresentationPlan(plan: PresentationPlan): string;
353
353
 
354
- /** Durable author intent. Generated slides and their source offsets are never saved here. */
355
-
356
354
  declare const PRESENTATION_HINTS_KEY = "squisq-presentation-hints";
357
355
  declare const DYNAMIC_PRESENTATION_STYLE = "dynamic-slides";
358
356
  interface PresentationBlockHint {
357
+ build?: BuildSpec;
359
358
  blockId: string;
360
359
  layout?: PresentationLayout;
361
360
  inbetweens?: boolean;
@@ -24,18 +24,18 @@ import {
24
24
  serializePresentationPlan,
25
25
  transformNarratedSegment,
26
26
  usesDynamicPresentation
27
- } from "../chunk-QKNFR55R.js";
28
- import "../chunk-QLN6ILHM.js";
29
- import "../chunk-A5QJJZ5S.js";
27
+ } from "../chunk-K2PZMWQ5.js";
28
+ import "../chunk-W45PAVYE.js";
29
+ import "../chunk-B3AFOXMA.js";
30
30
  import "../chunk-SVN7T6BK.js";
31
- import "../chunk-PUS54YU6.js";
32
- import "../chunk-PFH3WV6J.js";
31
+ import "../chunk-FUBMT6SJ.js";
32
+ import "../chunk-I4L4GYDN.js";
33
33
  import "../chunk-L7QZORLB.js";
34
- import "../chunk-Y4OZ5DSG.js";
35
- import "../chunk-WSFXV5BT.js";
36
- import "../chunk-Q6ELOAOQ.js";
34
+ import "../chunk-H54A35NZ.js";
35
+ import "../chunk-ZYWYSM6W.js";
36
+ import "../chunk-NNJA7ICB.js";
37
37
  import "../chunk-CZ7AUSLI.js";
38
- import "../chunk-4VOD55SX.js";
38
+ import "../chunk-M6YXFNGO.js";
39
39
  import "../chunk-GHOPHGOK.js";
40
40
  import "../chunk-XRW6P7IF.js";
41
41
  export {
@@ -1,3 +1,43 @@
1
+ /** Semantic reveal order is independent of decorative motion and slide transitions. */
2
+ declare const BUILD_MODES: readonly ["off", "items", "branches", "chunks"];
3
+ declare const BUILD_EFFECTS: readonly ["appear", "fadeIn", "fadeInUp", "slideIn"];
4
+ declare const BUILD_PREVIOUS: readonly ["keep", "dim"];
5
+ interface BuildSpec {
6
+ mode: (typeof BUILD_MODES)[number];
7
+ effect?: (typeof BUILD_EFFECTS)[number];
8
+ /** Entrance seconds. Reveal timing is independent of this duration. */
9
+ duration?: number;
10
+ previous?: (typeof BUILD_PREVIOUS)[number];
11
+ }
12
+ /** Projection-only semantic step. IDs are stable for an unchanged source. */
13
+ interface BuildStep {
14
+ id: string;
15
+ text: string;
16
+ /** Earlier steps which must remain readable for this step's context. */
17
+ ancestors?: number[];
18
+ }
19
+ /** Number of revealed steps and progress of the most recently revealed step. */
20
+ interface BuildCursor {
21
+ revealed: number;
22
+ progress: number;
23
+ }
24
+ /** Source-guarded offsets from block start, produced by narration or recording. */
25
+ interface BuildTiming {
26
+ sourceText: string;
27
+ starts: number[];
28
+ }
29
+ /** First reveal of a step during a recording. Time is take-relative seconds. */
30
+ interface BuildAdvance {
31
+ blockId: string;
32
+ sourceText: string;
33
+ step: number;
34
+ time: number;
35
+ }
36
+ declare function recordBuildAdvance(log: readonly BuildAdvance[], event: BuildAdvance): readonly BuildAdvance[];
37
+ declare const BUILD_PARAM_KEYS: readonly ["build", "buildEffect", "buildDuration", "buildPrevious"];
38
+ declare function parseBuildSpec(value: unknown): BuildSpec | undefined;
39
+ declare function buildSpecParams(build: BuildSpec): Record<string, string>;
40
+
1
41
  interface MarkdownSafetyLimits {
2
42
  maxSourceBytes: number;
3
43
  maxNodes: number;
@@ -212,6 +252,7 @@ interface HeadingAttributes {
212
252
  params?: Record<string, string>;
213
253
  /** Typed values for known block-meta keys (coerced from `params`). */
214
254
  blockMeta?: {
255
+ build?: BuildSpec;
215
256
  x?: number;
216
257
  y?: number;
217
258
  startTime?: number;
@@ -695,4 +736,4 @@ interface StringifyOptions {
695
736
  setext?: boolean;
696
737
  }
697
738
 
698
- export { type ParseOptions as $, type MarkdownLeafDirective as A, MarkdownLimitError as B, type MarkdownLink as C, DEFAULT_MARKDOWN_SAFETY_LIMITS as D, type MarkdownLinkDefinition as E, type MarkdownLinkReference as F, type MarkdownList as G, type HeadingAttributes as H, type MarkdownListItem as I, type MarkdownMathBlock as J, type MarkdownMention as K, type MarkdownNode as L, type MarkdownBlockNode as M, type MarkdownParagraph as N, type MarkdownPoint as O, type MarkdownSafetyLimits as P, type MarkdownSourcePosition as Q, type MarkdownStrikethrough as R, type MarkdownStrong as S, type MarkdownSubscript as T, type MarkdownSuperscript as U, type MarkdownTable as V, type MarkdownTableCell as W, type MarkdownTableRow as X, type MarkdownText as Y, type MarkdownTextDirective as Z, type MarkdownThematicBreak as _, DEFAULT_TRANSITION_DURATION_SECONDS as a, type StringifyOptions as a0, TRANSITION_DIRECTIONS as a1, TRANSITION_TYPES as a2, type Transition as a3, type TransitionDirection as a4, type TransitionType as a5, assertMarkdownDocumentWithinLimits as a6, assertMarkdownSourceWithinLimits as a7, isTransitionType as a8, normalizeTransitionDirection as a9, normalizeTransitionType as aa, resolveBlockTransition as ab, resolveMarkdownSafetyLimits as ac, resolveTransitionDuration as ad, type BlockConnection as ae, type HeadingTemplateAnnotation as b, type HtmlComment as c, type HtmlElement as d, type HtmlNode as e, type HtmlText as f, type MarkdownBlockquote as g, type MarkdownBreak as h, type MarkdownCodeBlock as i, type MarkdownContainerDirective as j, type MarkdownDefinitionDescription as k, type MarkdownDefinitionList as l, type MarkdownDefinitionTerm as m, type MarkdownDocument as n, type MarkdownEmphasis as o, type MarkdownFootnoteDefinition as p, type MarkdownFootnoteReference as q, type MarkdownHeading as r, type MarkdownHtmlBlock as s, type MarkdownImage as t, type MarkdownImageReference as u, type MarkdownInlineCode as v, type MarkdownInlineHtml as w, type MarkdownInlineIcon as x, type MarkdownInlineMath as y, type MarkdownInlineNode as z };
739
+ export { type MarkdownStrong as $, type MarkdownHtmlBlock as A, BUILD_EFFECTS as B, type MarkdownImage as C, DEFAULT_MARKDOWN_SAFETY_LIMITS as D, type MarkdownImageReference as E, type MarkdownInlineCode as F, type MarkdownInlineHtml as G, type HeadingAttributes as H, type MarkdownInlineIcon as I, type MarkdownInlineMath as J, type MarkdownInlineNode as K, type MarkdownLeafDirective as L, type MarkdownBlockNode as M, MarkdownLimitError as N, type MarkdownLink as O, type MarkdownLinkDefinition as P, type MarkdownLinkReference as Q, type MarkdownList as R, type MarkdownListItem as S, type MarkdownMathBlock as T, type MarkdownMention as U, type MarkdownNode as V, type MarkdownParagraph as W, type MarkdownPoint as X, type MarkdownSafetyLimits as Y, type MarkdownSourcePosition as Z, type MarkdownStrikethrough as _, BUILD_MODES as a, type MarkdownSubscript as a0, type MarkdownSuperscript as a1, type MarkdownTable as a2, type MarkdownTableCell as a3, type MarkdownTableRow as a4, type MarkdownText as a5, type MarkdownTextDirective as a6, type MarkdownThematicBreak as a7, type ParseOptions as a8, type StringifyOptions as a9, TRANSITION_DIRECTIONS as aa, TRANSITION_TYPES as ab, type Transition as ac, type TransitionDirection as ad, type TransitionType as ae, assertMarkdownDocumentWithinLimits as af, assertMarkdownSourceWithinLimits as ag, buildSpecParams as ah, isTransitionType as ai, normalizeTransitionDirection as aj, normalizeTransitionType as ak, parseBuildSpec as al, recordBuildAdvance as am, resolveBlockTransition as an, resolveMarkdownSafetyLimits as ao, resolveTransitionDuration as ap, type BlockConnection as aq, BUILD_PARAM_KEYS as b, BUILD_PREVIOUS as c, type BuildAdvance as d, type BuildCursor as e, type BuildSpec as f, type BuildStep as g, type BuildTiming as h, DEFAULT_TRANSITION_DURATION_SECONDS as i, type HeadingTemplateAnnotation as j, type HtmlComment as k, type HtmlElement as l, type HtmlNode as m, type HtmlText as n, type MarkdownBlockquote as o, type MarkdownBreak as p, type MarkdownCodeBlock as q, type MarkdownContainerDirective as r, type MarkdownDefinitionDescription as s, type MarkdownDefinitionList as t, type MarkdownDefinitionTerm as u, type MarkdownDocument as v, type MarkdownEmphasis as w, type MarkdownFootnoteDefinition as x, type MarkdownFootnoteReference as y, type MarkdownHeading as z };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bendyline/squisq",
3
- "version": "2.11.19",
3
+ "version": "2.12.0",
4
4
  "description": "Headless utilities for doc/block rendering, spatial math, Markdown, and storage",
5
5
  "license": "MIT",
6
6
  "author": "Bendyline",
@@ -1,3 +1,19 @@
1
+ // src/markdown/mediaReference.ts
2
+ var VIDEO_EXTENSIONS = /* @__PURE__ */ new Set(["mp4", "m4v", "mov", "webm", "ogv"]);
3
+ var AUDIO_EXTENSIONS = /* @__PURE__ */ new Set(["mp3", "m4a", "aac", "wav", "ogg", "oga", "opus", "flac"]);
4
+ var CONTAINER_EXTENSIONS = /* @__PURE__ */ new Set(["webm", "mp4"]);
5
+ function mediaKindForUrl(url) {
6
+ const path = url.split(/[?#]/, 1)[0] ?? "";
7
+ const name = path.slice(path.lastIndexOf("/") + 1);
8
+ const dot = name.lastIndexOf(".");
9
+ if (dot <= 0) return null;
10
+ const ext = name.slice(dot + 1).toLowerCase();
11
+ if (AUDIO_EXTENSIONS.has(ext)) return "audio";
12
+ if (CONTAINER_EXTENSIONS.has(ext) && /^(?:\.\/)?audio\//i.test(path)) return "audio";
13
+ if (VIDEO_EXTENSIONS.has(ext)) return "video";
14
+ return null;
15
+ }
16
+
1
17
  // src/markdown/htmlParse.ts
2
18
  import { fromHtml } from "hast-util-from-html";
3
19
  var HAST_PROP_TO_ATTR = {
@@ -685,22 +701,6 @@ function plainTextFromInlineHtml(html) {
685
701
  return walk(parseHtmlToNodes(html)).replace(/\u00A0/g, " ").replace(/\n{3,}/g, "\n\n").trim();
686
702
  }
687
703
 
688
- // src/markdown/mediaReference.ts
689
- var VIDEO_EXTENSIONS = /* @__PURE__ */ new Set(["mp4", "m4v", "mov", "webm", "ogv"]);
690
- var AUDIO_EXTENSIONS = /* @__PURE__ */ new Set(["mp3", "m4a", "aac", "wav", "ogg", "oga", "opus", "flac"]);
691
- var CONTAINER_EXTENSIONS = /* @__PURE__ */ new Set(["webm", "mp4"]);
692
- function mediaKindForUrl(url) {
693
- const path = url.split(/[?#]/, 1)[0] ?? "";
694
- const name = path.slice(path.lastIndexOf("/") + 1);
695
- const dot = name.lastIndexOf(".");
696
- if (dot <= 0) return null;
697
- const ext = name.slice(dot + 1).toLowerCase();
698
- if (AUDIO_EXTENSIONS.has(ext)) return "audio";
699
- if (CONTAINER_EXTENSIONS.has(ext) && /^(?:\.\/)?audio\//i.test(path)) return "audio";
700
- if (VIDEO_EXTENSIONS.has(ext)) return "video";
701
- return null;
702
- }
703
-
704
704
  // src/markdown/videoEmbed.ts
705
705
  var VIDEO_EMBED_PROVIDERS = [
706
706
  { id: "youtube", name: "YouTube", example: "https://www.youtube.com/watch?v=dQw4w9WgXcQ" },
@@ -1058,6 +1058,7 @@ function findBlockVideoEmbed(node) {
1058
1058
  }
1059
1059
 
1060
1060
  export {
1061
+ mediaKindForUrl,
1061
1062
  parseHtmlToNodes,
1062
1063
  stringifyHtmlNodes,
1063
1064
  getChildren,
@@ -1075,7 +1076,6 @@ export {
1075
1076
  inferDocumentTitle,
1076
1077
  readFrontmatterThemeId,
1077
1078
  plainTextFromInlineHtml,
1078
- mediaKindForUrl,
1079
1079
  VIDEO_EMBED_PROVIDERS,
1080
1080
  parseVideoStartTime,
1081
1081
  parseVideoEmbedUrl,