@bendyline/squisq 2.13.13 → 2.13.15
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.
- package/dist/{Doc-BhvotZx_.d.ts → Doc-C_Sh49ot.d.ts} +59 -6
- package/dist/{ImageEditDoc-D8hYio6b.d.ts → ImageEditDoc-Sqw3Tw-R.d.ts} +1 -1
- package/dist/{chunk-OIQ2GO2O.js → chunk-2CB37BOU.js} +1 -1
- package/dist/{chunk-CTT4XAGO.js → chunk-4HQ7QZKB.js} +2289 -630
- package/dist/chunk-C7DKMO4H.js +88 -0
- package/dist/{chunk-C4SB3NN4.js → chunk-DDJHIZED.js} +1 -1
- package/dist/{chunk-TCGGJUKC.js → chunk-FYP7GNER.js} +93 -15
- package/dist/chunk-N3FQSUVT.js +515 -0
- package/dist/{chunk-SGNWO7OF.js → chunk-OFE5RZWW.js} +490 -24
- package/dist/{chunk-YQQWE4HG.js → chunk-OJCAKUHW.js} +192 -260
- package/dist/{chunk-7MS26OXD.js → chunk-UDPPWYYM.js} +6 -0
- package/dist/{chunk-5DFFVW75.js → chunk-Y34KYMAS.js} +1 -1
- package/dist/doc/index.d.ts +337 -22
- package/dist/doc/index.js +56 -8
- package/dist/fence/index.d.ts +1 -1
- package/dist/generate/index.d.ts +1 -1
- package/dist/imageEdit/index.d.ts +3 -3
- package/dist/index.d.ts +8 -8
- package/dist/index.js +127 -21
- package/dist/jsonForm/index.d.ts +1 -1
- package/dist/markdown/index.js +3 -3
- package/dist/{materializePageSection-CWxou4mX.d.ts → materializePageSection-Dmf-rf1b.d.ts} +121 -8
- package/dist/mediaEdit/index.d.ts +2 -2
- package/dist/narration/index.d.ts +1 -1
- package/dist/narration/index.js +4 -4
- package/dist/recommend/index.d.ts +129 -2
- package/dist/recommend/index.js +11 -3
- package/dist/schemas/index.d.ts +4 -4
- package/dist/{themeLibrary-BIYE6aLw.d.ts → themeLibrary-B4VLovhW.d.ts} +1 -1
- package/dist/timing/index.d.ts +66 -2
- package/dist/timing/index.js +12 -0
- package/dist/transform/index.d.ts +173 -16
- package/dist/transform/index.js +55 -16
- package/package.json +1 -1
- package/dist/chunk-FCB6JLWB.js +0 -125
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { k as Block,
|
|
1
|
+
import { k as Block, b0 as PageSectionKind, a_ as PageEmphasis, bP as ThemeColorScheme, aY as PageBackground, bN as Theme, cj as ViewportConfig, D as CustomTemplateDefinition, b3 as PageVariant, bw as StartBlockConfig, U as Doc, bQ as ThemePageStyle } from './Doc-C_Sh49ot.js';
|
|
2
2
|
import { M as MarkdownBlockNode } from './types-Zk8qYuaT.js';
|
|
3
3
|
|
|
4
4
|
/** A prominent number found inside a short stat-like string. */
|
|
@@ -15,7 +15,7 @@ interface NumberHighlightMatch {
|
|
|
15
15
|
|
|
16
16
|
declare const PRESENTATION_KEY = "squisq-presentation";
|
|
17
17
|
/** The layouts a summary (a headline and up to four points) can fill. */
|
|
18
|
-
declare const PRESENTATION_LAYOUTS: readonly ["title", "divider", "statement", "emphasis", "quote", "stat", "definition", "list", "comparison", "steps", "image", "cards", "process", "cycle", "layers"];
|
|
18
|
+
declare const PRESENTATION_LAYOUTS: readonly ["title", "divider", "statement", "emphasis", "quote", "stat", "definition", "list", "comparison", "steps", "image", "cards", "process", "cycle", "layers", "stats", "pyramid", "funnel", "hub", "venn", "matrix"];
|
|
19
19
|
type PresentationLayout = (typeof PRESENTATION_LAYOUTS)[number];
|
|
20
20
|
/** Shows a section's own block, with the template its author chose, instead of
|
|
21
21
|
* a summary. A section shown this way is one slide for its whole narration. */
|
|
@@ -27,12 +27,26 @@ declare function presentationStat(headline: string, points: readonly string[]):
|
|
|
27
27
|
line: string;
|
|
28
28
|
index: number;
|
|
29
29
|
} | null;
|
|
30
|
-
/** Whether a summary can fill a layout:
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
*
|
|
30
|
+
/** Whether a summary can fill a layout: the items a drawn layout takes
|
|
31
|
+
* (`conceptItemsProblem`: three stages for a cycle, a figure in every key
|
|
32
|
+
* number, four ideas for a matrix…); enough points for a list, steps or a
|
|
33
|
+
* comparison; a prominent number for a key number; a short headline for a big
|
|
34
|
+
* statement; and, for a quote, a headline found word for word in `passage`,
|
|
35
|
+
* the source text the slide summarizes. An image slide also needs a picture,
|
|
36
|
+
* which callers check. */
|
|
35
37
|
declare function presentationLayoutFits(layout: PresentationLayout, headline: string, points: readonly string[], passage: string): boolean;
|
|
38
|
+
/** Why a summary cannot fill a layout, as a sentence its author can act on
|
|
39
|
+
* (a person reading a designer's help, a model reading a correction), or
|
|
40
|
+
* `undefined` when it can. */
|
|
41
|
+
declare function presentationLayoutProblem(layout: PresentationLayout, headline: string, points: readonly string[], passage: string): string | undefined;
|
|
42
|
+
/** What a slide must have for a layout to apply, as a designer's help says it
|
|
43
|
+
* ("at least 2 points", "exactly 4 points"), or `undefined` when any slide
|
|
44
|
+
* will do. It states what `presentationLayoutProblem` checks, so a picker's
|
|
45
|
+
* help and the plan agree. `points` names a slide's points in the host's own
|
|
46
|
+
* word ("highlights"). */
|
|
47
|
+
declare function presentationLayoutNeeds(layout: PresentationLayout, wording?: {
|
|
48
|
+
points?: string;
|
|
49
|
+
}): string | undefined;
|
|
36
50
|
interface PresentationBeat {
|
|
37
51
|
id: string;
|
|
38
52
|
sourceStart: number;
|
|
@@ -45,7 +59,19 @@ interface PresentationBeat {
|
|
|
45
59
|
media?: string[];
|
|
46
60
|
/** Left out of the deck; the slide shown before it stays on screen instead. */
|
|
47
61
|
hidden?: true;
|
|
62
|
+
/** A hub only: the one to three words its ideas share, written inside it. */
|
|
63
|
+
center?: string;
|
|
64
|
+
/** A matrix only: what grows from left to right, named along the foot. */
|
|
65
|
+
xAxis?: string;
|
|
66
|
+
/** A matrix only: what grows from bottom to top, named up the side. */
|
|
67
|
+
yAxis?: string;
|
|
48
68
|
}
|
|
69
|
+
/** What a layout draws beyond its headline and points. */
|
|
70
|
+
type PresentationBeatExtras = Pick<PresentationBeat, 'center' | 'xAxis' | 'yAxis'>;
|
|
71
|
+
/** The extras of `source` that `layout` draws, trimmed; ones it does not draw,
|
|
72
|
+
* empty ones and ones too long to set are left out. Read loosely, so a model's
|
|
73
|
+
* reply and a saved beat pass through the same door. */
|
|
74
|
+
declare function presentationBeatExtras(layout: string, source: unknown): PresentationBeatExtras;
|
|
49
75
|
interface PresentationPlan {
|
|
50
76
|
version: 1;
|
|
51
77
|
sourceText: string;
|
|
@@ -57,10 +83,97 @@ declare const PRESENTATION_LIMITS: {
|
|
|
57
83
|
readonly beats: 80;
|
|
58
84
|
readonly serializedCharacters: 160000;
|
|
59
85
|
readonly mediaPerBeat: 4;
|
|
86
|
+
/** The most points a summary slide holds. */
|
|
87
|
+
readonly points: 4;
|
|
88
|
+
/** The longest a hub's centre or a matrix's axis name may be. */
|
|
89
|
+
readonly extraCharacters: 40;
|
|
60
90
|
};
|
|
61
91
|
declare function parsePresentationPlan(input: unknown): PresentationPlan | null;
|
|
62
92
|
declare function serializePresentationPlan(plan: PresentationPlan): string;
|
|
63
93
|
|
|
94
|
+
/**
|
|
95
|
+
* Concept specs — what each concept template takes, as data.
|
|
96
|
+
*
|
|
97
|
+
* The ten concept templates draw a handful of ideas, and every product that
|
|
98
|
+
* lets an author choose one has to say the same things about it: how many
|
|
99
|
+
* items it takes, how an item is written, what order they come in, and what
|
|
100
|
+
* the template draws when it is given something else. Those facts used to be
|
|
101
|
+
* restated wherever they were needed (a prompt's "3–5", a validator's table,
|
|
102
|
+
* a picker's help text, each template's own fallback) and the copies drifted.
|
|
103
|
+
* This module is the one statement of them:
|
|
104
|
+
*
|
|
105
|
+
* - {@link CONCEPT_SPECS}: per template, the items an author should write and
|
|
106
|
+
* the inputs it takes beyond them. The authoring guide renders its counts
|
|
107
|
+
* from here ({@link conceptItemCount}), so a prompt and a check agree.
|
|
108
|
+
* - {@link conceptItemsProblem}: whether a set of items meets that contract,
|
|
109
|
+
* as a sentence an author or a repair prompt can act on.
|
|
110
|
+
* - {@link conceptDowngrade}: what a template draws instead when it cannot
|
|
111
|
+
* draw its own picture. The templates call it, so it cannot disagree with
|
|
112
|
+
* them, and `markdownToDoc` reports it (`template-shape-unmet`).
|
|
113
|
+
*
|
|
114
|
+
* Pure text in, plain data out.
|
|
115
|
+
*
|
|
116
|
+
* Related: `conceptItems.ts` (how one item is read), `conceptBlocks.ts` and
|
|
117
|
+
* `conceptShapes.ts` (the drawings), `authoringGuide.ts` (what authors are told).
|
|
118
|
+
*/
|
|
119
|
+
|
|
120
|
+
/** Every template that draws a handful of ideas. */
|
|
121
|
+
declare const CONCEPT_TEMPLATES: readonly ["cards", "process", "cycle", "layers", "stats", "pyramid", "funnel", "hub", "venn", "matrix"];
|
|
122
|
+
type ConceptTemplateName = (typeof CONCEPT_TEMPLATES)[number];
|
|
123
|
+
/** The most ideas a concept template draws; more are shown as the list they are. */
|
|
124
|
+
declare const CONCEPT_MAX_DRAWN = 6;
|
|
125
|
+
/** An input a concept template takes beyond `title` and `items`. */
|
|
126
|
+
interface ConceptSpecInput {
|
|
127
|
+
key: string;
|
|
128
|
+
/** What an author writes there, as a guide lists it. */
|
|
129
|
+
guide: string;
|
|
130
|
+
}
|
|
131
|
+
interface ConceptSpec {
|
|
132
|
+
/** The fewest and the most items an author should write. */
|
|
133
|
+
items: readonly [min: number, max: number];
|
|
134
|
+
/** How an item is written: a label and its detail, or a figure and what it measures. */
|
|
135
|
+
itemForm: 'label-detail' | 'figure-caption';
|
|
136
|
+
/** The order the items are written in, when the drawing depends on it. */
|
|
137
|
+
order?: string;
|
|
138
|
+
/** Inputs beyond `title` and `items`. */
|
|
139
|
+
inputs?: readonly ConceptSpecInput[];
|
|
140
|
+
}
|
|
141
|
+
declare const CONCEPT_SPECS: Readonly<Record<ConceptTemplateName, ConceptSpec>>;
|
|
142
|
+
/** The concept template a name denotes, or `undefined`. */
|
|
143
|
+
declare function conceptTemplate(template: string): ConceptTemplateName | undefined;
|
|
144
|
+
interface ConceptItemsOptions {
|
|
145
|
+
/**
|
|
146
|
+
* The most items the author's surface holds, when that is fewer than the
|
|
147
|
+
* template takes (a summary slide holds four points).
|
|
148
|
+
*/
|
|
149
|
+
max?: number;
|
|
150
|
+
}
|
|
151
|
+
/** How many items a template takes, as a guide says it: "2–4", or "exactly 4". */
|
|
152
|
+
declare function conceptItemCount(template: ConceptTemplateName, options?: ConceptItemsOptions): string;
|
|
153
|
+
/**
|
|
154
|
+
* Why `items` do not meet a template's contract, or `undefined` when they do:
|
|
155
|
+
* too few or too many, a key number without a figure, a Venn diagram without
|
|
156
|
+
* the item that names what its sets share. The sentence is written for the
|
|
157
|
+
* author, so a validator can log it and a repair prompt can quote it.
|
|
158
|
+
*/
|
|
159
|
+
declare function conceptItemsProblem(template: ConceptTemplateName, items: readonly unknown[] | undefined, options?: ConceptItemsOptions): string | undefined;
|
|
160
|
+
/** What a concept template draws when it cannot draw its own picture, and why. */
|
|
161
|
+
interface ConceptDowngrade {
|
|
162
|
+
drawsAs: ConceptTemplateName | 'list';
|
|
163
|
+
/** Completes "…, so it is drawn as <drawsAs>": "a matrix places exactly four items and this has three". */
|
|
164
|
+
reason: string;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* What a template draws instead of its own picture for these items, or
|
|
168
|
+
* `undefined` when it draws itself. A template never draws a broken diagram:
|
|
169
|
+
* a matrix without four ideas, a Venn diagram without two sets and key
|
|
170
|
+
* numbers without a figure draw as cards; a cycle too short or too wordy for
|
|
171
|
+
* a ring draws as a process; more than six ideas are shown as a list.
|
|
172
|
+
*/
|
|
173
|
+
declare function conceptDowngrade(template: ConceptTemplateName, items: readonly unknown[] | undefined): ConceptDowngrade | undefined;
|
|
174
|
+
/** The template that draws these items: `template` itself unless it is downgraded. */
|
|
175
|
+
declare function conceptDrawsAs(template: ConceptTemplateName, items: readonly unknown[] | undefined): ConceptTemplateName | 'list';
|
|
176
|
+
|
|
64
177
|
/**
|
|
65
178
|
* PageSection — the framework-agnostic block model for Page (linear) mode.
|
|
66
179
|
*
|
|
@@ -300,4 +413,4 @@ declare function materializePageSection(block: Block, options?: MaterializePageS
|
|
|
300
413
|
*/
|
|
301
414
|
declare function materializePageSections(doc: Doc, options?: MaterializePageSectionsOptions): PageSectionMaterialization[];
|
|
302
415
|
|
|
303
|
-
export { AUTHORED_PRESENTATION_LAYOUT as A, type MaterializePageSectionOptions as M, PRESENTATION_KEY as P,
|
|
416
|
+
export { AUTHORED_PRESENTATION_LAYOUT as A, conceptItemCount as B, CONCEPT_MAX_DRAWN as C, conceptItemsProblem as D, conceptTemplate as E, materializePageSection as F, materializePageSections as G, parsePresentationPlan as H, presentationBeatExtras as I, presentationLayoutFits as J, presentationLayoutNeeds as K, presentationLayoutProblem as L, type MaterializePageSectionOptions as M, presentationStat as N, resolvePageStyle as O, PRESENTATION_KEY as P, serializePresentationPlan as Q, CONCEPT_SPECS as a, CONCEPT_TEMPLATES as b, type ConceptDowngrade as c, type ConceptItemsOptions as d, type ConceptSpec as e, type ConceptSpecInput as f, type ConceptTemplateName as g, type MaterializePageSectionsOptions as h, PRESENTATION_LAYOUTS as i, PRESENTATION_LIMITS as j, type PageMedia as k, type PageRichText as l, type PageSection as m, type PageSectionDiagnostic as n, type PageSectionItem as o, type PageSectionMaterialization as p, type PageSectionSource as q, type PageSpatialKind as r, type PageTransformHints as s, type PresentationBeat as t, type PresentationBeatExtras as u, type PresentationBeatLayout as v, type PresentationLayout as w, type PresentationPlan as x, conceptDowngrade as y, conceptDrawsAs as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export {
|
|
1
|
+
import { at as MediaCut, U as Doc, ar as MediaClip, cP as MediaFxOpId, cQ as MediaFxChain } from '../Doc-C_Sh49ot.js';
|
|
2
|
+
export { cR as MEDIA_EDIT_PARAMS, cS as MEDIA_FX_ORDER, cT as MEDIA_FX_SPECS, as as MediaCrop, cU as MediaEditParamKey, cV as MediaEditParamValues, au as MediaEdits, cW as MediaFxOp, cX as formatMediaNumber, cY as hasRenderableFx, cZ as mediaEditHtmlAttribute, c_ as mediaEditValuesFromAttributes, c$ as mediaEditValuesFromParams, d0 as mediaRenderKey, d1 as normalizeMediaCrop, d2 as normalizeMediaCuts, d3 as parseMediaCrop, d4 as parseMediaCuts, d5 as parseMediaEdits, d6 as parseMediaFx, d7 as serializeMediaCrop, d8 as serializeMediaCuts, d9 as serializeMediaEdits, da as serializeMediaFx } from '../Doc-C_Sh49ot.js';
|
|
3
3
|
import '../types-Zk8qYuaT.js';
|
|
4
4
|
|
|
5
5
|
/**
|
package/dist/narration/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
traceWordPosAt,
|
|
32
32
|
transcriptWordKeys,
|
|
33
33
|
vadStep
|
|
34
|
-
} from "../chunk-
|
|
34
|
+
} from "../chunk-2CB37BOU.js";
|
|
35
35
|
import "../chunk-NEWNNLWN.js";
|
|
36
36
|
import {
|
|
37
37
|
buildNarrationTimingJson,
|
|
@@ -45,12 +45,12 @@ import {
|
|
|
45
45
|
wordIndexAtChar,
|
|
46
46
|
wordIndexAtTime,
|
|
47
47
|
wordPosAtExpectedSyllables
|
|
48
|
-
} from "../chunk-
|
|
49
|
-
import "../chunk-
|
|
48
|
+
} from "../chunk-4HQ7QZKB.js";
|
|
49
|
+
import "../chunk-OFE5RZWW.js";
|
|
50
50
|
import "../chunk-FUBMT6SJ.js";
|
|
51
51
|
import "../chunk-JNUNNQ74.js";
|
|
52
52
|
import "../chunk-L7QZORLB.js";
|
|
53
|
-
import "../chunk-
|
|
53
|
+
import "../chunk-UDPPWYYM.js";
|
|
54
54
|
import "../chunk-L3KSFLTP.js";
|
|
55
55
|
import "../chunk-P53Z4RYC.js";
|
|
56
56
|
import "../chunk-GHOPHGOK.js";
|
|
@@ -1,5 +1,97 @@
|
|
|
1
1
|
import { M as MarkdownBlockNode } from '../types-Zk8qYuaT.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* List shapes — what a list is a picture of.
|
|
5
|
+
*
|
|
6
|
+
* A bulleted list says only "here are some things". Its heading and its
|
|
7
|
+
* items usually say more: that the things happen in order, come round again,
|
|
8
|
+
* sit inside one another, narrow from many to few, stand against each other,
|
|
9
|
+
* or are numbers. `classifyListShape` reads those signals and names the
|
|
10
|
+
* relationship and the template that draws it, so a plain Markdown list can
|
|
11
|
+
* become a process, a cycle, concentric layers, a pyramid, a funnel, a Venn
|
|
12
|
+
* diagram, a row of key numbers — or stay a list when nothing says otherwise.
|
|
13
|
+
*
|
|
14
|
+
* It is deliberately a reader of evidence, not a guesser: a `strong` result
|
|
15
|
+
* rests on something the author wrote (a numbered list, dates in order, a
|
|
16
|
+
* heading that says "cycle", items written `Label: detail`) and is safe to
|
|
17
|
+
* apply automatically; a `weak` one is only worth offering as a suggestion.
|
|
18
|
+
* A drawing that misstates the relationship is worse than a list, so an
|
|
19
|
+
* ordering the items do not make clear (is the first layer the core or the
|
|
20
|
+
* crust?) is never applied automatically.
|
|
21
|
+
*
|
|
22
|
+
* Used by `markdownToDoc`'s automatic templates, the editor's template
|
|
23
|
+
* recommendations, and hosts that plan slides from their own outlines.
|
|
24
|
+
* Pure text in, plain data out.
|
|
25
|
+
*
|
|
26
|
+
* Related: `recommend/templates.ts`, `doc/templates/conceptItems.ts`,
|
|
27
|
+
* `doc/templates/conceptBlocks.ts`, `doc/templates/conceptShapes.ts`.
|
|
28
|
+
*/
|
|
29
|
+
/** The relationship a list's items have to one another. */
|
|
30
|
+
type ListShape = 'figures' | 'timeline' | 'sequence' | 'cycle' | 'nested' | 'hierarchy' | 'funnel' | 'contrast' | 'overlap' | 'matrix' | 'hub' | 'parallel' | 'plain';
|
|
31
|
+
interface ListShapeInput {
|
|
32
|
+
/** The heading over the list. */
|
|
33
|
+
heading?: string;
|
|
34
|
+
/** The items as text; write a nested item as `Label: detail`. */
|
|
35
|
+
items: readonly string[];
|
|
36
|
+
/** Whether the list was numbered. */
|
|
37
|
+
ordered?: boolean;
|
|
38
|
+
/** Prose that introduces the list, when there is some. */
|
|
39
|
+
intro?: string;
|
|
40
|
+
}
|
|
41
|
+
interface ListShapeResult {
|
|
42
|
+
shape: ListShape;
|
|
43
|
+
/** The template that draws the shape. */
|
|
44
|
+
template: string;
|
|
45
|
+
/**
|
|
46
|
+
* `strong`: the author's own words or structure say so; apply it.
|
|
47
|
+
* `weak`: plausible; offer it, but leave the choice to a person.
|
|
48
|
+
*/
|
|
49
|
+
confidence: 'strong' | 'weak';
|
|
50
|
+
/** Inputs the template needs beyond the items (a reversed order, `versus`). */
|
|
51
|
+
inputs?: Record<string, unknown>;
|
|
52
|
+
/** What the classification rests on, for a tooltip or a log. */
|
|
53
|
+
reason: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Name the relationship among a list's items and the template that draws it.
|
|
57
|
+
* A list no concept template can hold (one item, more than six, or items the
|
|
58
|
+
* length of paragraphs) is `plain`.
|
|
59
|
+
*/
|
|
60
|
+
declare function classifyListShape(input: ListShapeInput): ListShapeResult;
|
|
61
|
+
/** What says whether a relationship holds: the heading, the prose, the items. */
|
|
62
|
+
interface ShapeEvidence {
|
|
63
|
+
/** The heading over the ideas. */
|
|
64
|
+
heading?: string;
|
|
65
|
+
/** The prose the ideas summarize or sit under. */
|
|
66
|
+
passage?: string;
|
|
67
|
+
/** The ideas as they would be drawn. */
|
|
68
|
+
items: readonly string[];
|
|
69
|
+
/** A matrix's axis names; naming both says what its panels are placed on. */
|
|
70
|
+
axes?: readonly [x?: string, y?: string];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether the source says its ideas have the relationship `template` draws.
|
|
74
|
+
*
|
|
75
|
+
* `classifyListShape` chooses a drawing for a list; this is the other
|
|
76
|
+
* direction, for an author (a model, usually) that has already chosen one.
|
|
77
|
+
* Cards, a process, a hub and key numbers claim little beyond what their
|
|
78
|
+
* items say, so they always pass. The shapes that assert how the ideas
|
|
79
|
+
* relate need the source to say so, in the heading, the prose or the items:
|
|
80
|
+
*
|
|
81
|
+
* - `cycle`: it comes round again ("cycle", "loop", "the cycle repeats");
|
|
82
|
+
* - `layers`: the parts are nested ("layers", "anatomy", a core and a crust);
|
|
83
|
+
* - `pyramid`: there is a hierarchy ("hierarchy", "tiers", a top and a base);
|
|
84
|
+
* - `funnel`: the stages narrow ("funnel", "conversion"), or their figures shrink;
|
|
85
|
+
* - `venn`: the two share something ("both", "in common", "overlap");
|
|
86
|
+
* - `matrix`: two named axes, or a source that calls it a matrix.
|
|
87
|
+
*
|
|
88
|
+
* A drawing that misstates the relationship is worse than cards, so a caller
|
|
89
|
+
* that gets `false` should draw the ideas as cards (or a process) instead.
|
|
90
|
+
*/
|
|
91
|
+
declare function shapeIsStated(template: string, evidence: ShapeEvidence): boolean;
|
|
92
|
+
/** What to draw instead when the source does not state a shape: the same ideas, claiming less. */
|
|
93
|
+
declare function unstatedShapeFallback(template: string): 'cards' | 'process' | undefined;
|
|
94
|
+
|
|
3
95
|
/**
|
|
4
96
|
* Block template recommendations.
|
|
5
97
|
*
|
|
@@ -40,6 +132,17 @@ interface BlockContentProfile {
|
|
|
40
132
|
* exclusive with `hasAsciiDiagram`.
|
|
41
133
|
*/
|
|
42
134
|
hasTree?: boolean;
|
|
135
|
+
/**
|
|
136
|
+
* What the body's list is a picture of — a process, a cycle, key numbers…
|
|
137
|
+
* (see `classifyListShape`). Set when the body is one list of two to six
|
|
138
|
+
* items; a `strong` shape picks its template automatically.
|
|
139
|
+
*/
|
|
140
|
+
listShape?: ListShapeResult;
|
|
141
|
+
}
|
|
142
|
+
/** What `profileBlockContents` may know beyond the body itself. */
|
|
143
|
+
interface ProfileBlockOptions {
|
|
144
|
+
/** The heading over the body: "The water cycle" says more than its bullets do. */
|
|
145
|
+
heading?: string;
|
|
43
146
|
}
|
|
44
147
|
interface RecommendationResult {
|
|
45
148
|
recommended: string[];
|
|
@@ -49,7 +152,31 @@ interface RecommendationResult {
|
|
|
49
152
|
* Walk a slice of block nodes and summarize what kinds of content it
|
|
50
153
|
* contains. Cheap to run — no markdown parsing, just AST traversal.
|
|
51
154
|
*/
|
|
52
|
-
declare function profileBlockContents(nodes: MarkdownBlockNode[]): BlockContentProfile;
|
|
155
|
+
declare function profileBlockContents(nodes: MarkdownBlockNode[], options?: ProfileBlockOptions): BlockContentProfile;
|
|
156
|
+
/** How `pickAutoTemplate` chooses. */
|
|
157
|
+
interface AutoTemplateOptions {
|
|
158
|
+
/**
|
|
159
|
+
* Draw a list as what it is a picture of (a process, a cycle, key
|
|
160
|
+
* numbers…) when its shape is clear. `false` keeps every list a `list`.
|
|
161
|
+
* Default true.
|
|
162
|
+
*/
|
|
163
|
+
concepts?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Deterministic single-template choice for an unannotated heading block,
|
|
167
|
+
* from strong content signals only. Returns `undefined` when no signal is
|
|
168
|
+
* decisive — the caller keeps its structural default (`sectionHeader`).
|
|
169
|
+
*
|
|
170
|
+
* Precedence favors the most specific/structured content: a table beats
|
|
171
|
+
* a video beats an image beats a blockquote beats a stat-looking line. `blockIndex`
|
|
172
|
+
* alternates left/right feature composition for single-image blocks so a
|
|
173
|
+
* run of image sections doesn't stack the same layout.
|
|
174
|
+
*
|
|
175
|
+
* Used by `markdownToDoc`'s auto template picking (see its `autoTemplates`
|
|
176
|
+
* option); the multi-candidate `recommendTemplatesForBlock` below serves
|
|
177
|
+
* the editor's template-picker UI instead.
|
|
178
|
+
*/
|
|
179
|
+
declare function pickAutoTemplate(profile: BlockContentProfile, blockIndex?: number, options?: AutoTemplateOptions): string | undefined;
|
|
53
180
|
/**
|
|
54
181
|
* Split a flat list of template names into a "Recommended" bucket
|
|
55
182
|
* (matches the active block's content profile) and a "rest" bucket
|
|
@@ -59,4 +186,4 @@ declare function profileBlockContents(nodes: MarkdownBlockNode[]): BlockContentP
|
|
|
59
186
|
*/
|
|
60
187
|
declare function recommendTemplatesForBlock(profile: BlockContentProfile, allNames: readonly string[]): RecommendationResult;
|
|
61
188
|
|
|
62
|
-
export { type BlockContentProfile, type RecommendationResult, profileBlockContents, recommendTemplatesForBlock };
|
|
189
|
+
export { type AutoTemplateOptions, type BlockContentProfile, type ListShape, type ListShapeInput, type ListShapeResult, type ProfileBlockOptions, type RecommendationResult, type ShapeEvidence, classifyListShape, pickAutoTemplate, profileBlockContents, recommendTemplatesForBlock, shapeIsStated, unstatedShapeFallback };
|
package/dist/recommend/index.js
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
|
+
classifyListShape,
|
|
3
|
+
pickAutoTemplate,
|
|
2
4
|
profileBlockContents,
|
|
3
|
-
recommendTemplatesForBlock
|
|
4
|
-
|
|
5
|
+
recommendTemplatesForBlock,
|
|
6
|
+
shapeIsStated,
|
|
7
|
+
unstatedShapeFallback
|
|
8
|
+
} from "../chunk-OFE5RZWW.js";
|
|
5
9
|
import "../chunk-L7QZORLB.js";
|
|
6
10
|
import "../chunk-L3KSFLTP.js";
|
|
7
11
|
import "../chunk-P53Z4RYC.js";
|
|
8
12
|
export {
|
|
13
|
+
classifyListShape,
|
|
14
|
+
pickAutoTemplate,
|
|
9
15
|
profileBlockContents,
|
|
10
|
-
recommendTemplatesForBlock
|
|
16
|
+
recommendTemplatesForBlock,
|
|
17
|
+
shapeIsStated,
|
|
18
|
+
unstatedShapeFallback
|
|
11
19
|
};
|
package/dist/schemas/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { B as BUILD_EFFECTS, a as BUILD_MODES, b as BUILD_PARAM_KEYS, c as BUILD_PREVIOUS, d as BuildAdvance, e as BuildCursor, f as BuildSpec, g as BuildStep, h as BuildTiming, i as DEFAULT_TRANSITION_DURATION_SECONDS, aa as TRANSITION_DIRECTIONS, ab as TRANSITION_TYPES, ac as Transition, ad as TransitionDirection, ae as TransitionType, ah as buildSpecParams, ai as isTransitionType, aj as normalizeTransitionDirection, ak as normalizeTransitionType, al as parseBuildSpec, am as recordBuildAdvance, an as resolveBlockTransition, ap as resolveTransitionDuration } from '../types-Zk8qYuaT.js';
|
|
2
2
|
export { B as BoundingBox, C as Coordinates } from '../Types-sh2VRxfo.js';
|
|
3
|
-
import {
|
|
4
|
-
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, n as BottomFeatureInput, C as CaptionPhrase, o as CaptionTrack, p as CaptionWord, q as CardsBlockInput, r as ChartBaseFields, s as ChartTemplateInput, t as ColorScheme, u as ColumnChartInput, v as ComparisonBarInput, w as ContentBlockInput, x as CornerBrandingConfig, y as CountUpSpec, z as CreateTemplateContextOptions, D as CustomTemplateDefinition, E as CustomTemplateLayer, F as CustomTemplateValidationError, G as CustomTemplateValidationResult, H as CycleBlockInput, I as DARK_SURFACE, J as DEFAULT_DOC_FONT, K as DEFAULT_TITLE_FONT, L as DataTableInput, M as DateEventInput, O as DefinitionCardInput, P as DiagramBlockInput, Q as DiagramEdgeAnchor, R as DiagramTemplateEdge, S as DiagramTemplateNode,
|
|
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-
|
|
3
|
+
import { U as Doc, bN as Theme, bQ as ThemePageStyle, bP as ThemeColorScheme, N as DeepPartial, bT as ThemeSeedColors, bO as ThemeColorPalette, a2 as FontFamilyKind, a1 as FontFamily } from '../Doc-C_Sh49ot.js';
|
|
4
|
+
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, n as BottomFeatureInput, C as CaptionPhrase, o as CaptionTrack, p as CaptionWord, q as CardsBlockInput, r as ChartBaseFields, s as ChartTemplateInput, t as ColorScheme, u as ColumnChartInput, v as ComparisonBarInput, w as ContentBlockInput, x as CornerBrandingConfig, y as CountUpSpec, z as CreateTemplateContextOptions, D as CustomTemplateDefinition, E as CustomTemplateLayer, F as CustomTemplateValidationError, G as CustomTemplateValidationResult, H as CycleBlockInput, I as DARK_SURFACE, J as DEFAULT_DOC_FONT, K as DEFAULT_TITLE_FONT, L as DataTableInput, M as DateEventInput, O as DefinitionCardInput, P as DiagramBlockInput, Q as DiagramEdgeAnchor, R as DiagramTemplateEdge, S as DiagramTemplateNode, T as DiagramTemplateNodeInput, V as DocBlock, W as DocDiagnostic, X as DonutChartInput, Y as DrawingBlockInput, Z as FRONTMATTER_CUSTOM_TEMPLATES_KEY, _ as FRONTMATTER_CUSTOM_THEMES_KEY, $ as FRONTMATTER_MOTION_KEY, a0 as FactCardInput, a3 as FullBleedQuoteInput, a4 as FunnelBlockInput, a5 as GradientBackgroundConfig, a6 as HubBlockInput, a7 as ImageBackgroundConfig, a8 as ImageLayer, a9 as ImageTreatment, aa as ImageWithCaptionInput, ab as LIGHT_SURFACE, ac as Layer, ad as LayerRepeat, ae as LayersBlockInput, af as LayoutHints, ag as LeftFeatureInput, ah as LineChartInput, ai as LinearGradient, aj as ListBlockInput, ak as MOTION_PROFILES, al as MapBlockInput, am as MapLayer, an as MapMarker, ao as MapTileStyle, ap as MarkerStyle, aq as MatrixBlockInput, ar as MediaClip, as as MediaCrop, at as MediaCut, au as MediaEdits, av as MediaOnlyInput, aw as MediaScheduleOptions, ax as MermaidLayer, ay as MotionEntrance, az as MotionOrigin, aA as MotionProfile, aB as MotionProfileName, aC as MotionSpec, aD as MotionState, 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 PAGE_VARIANTS, aX as PageAccentRotation, aY as PageBackground, aZ as PageDesignFamily, a_ as PageEmphasis, a$ as PageHeadingTreatment, b0 as PageSectionKind, b1 as PageSectionOverride, b2 as PageTokens, b3 as PageVariant, b4 as PathLayer, b5 as PatternBackgroundConfig, b6 as PersistentLayer, b7 as PersistentLayerConfig, b8 as PersistentLayerTemplate, b9 as PersistentLayerTemplateConfig, ba as PersistentLayerTemplateType, bb as PhotoGridInput, bc as PieChartInput, bd as PipStyle, be as Position, bf as PresentationSlideMark, bg as ProcessBlockInput, bh as ProgressIndicatorConfig, bi as PromotedBodyAnnotation, bj as PullQuoteInput, bk as PyramidBlockInput, bl as QuoteBlockInput, bm as RawLayersInput, bn as RenderStyle, bo as RightFeatureInput, bp as ScatterChartInput, bq as ScheduledClip, br as SectionHeaderInput, bs as ShapeFilter, bt as ShapeLayer, bu as ShapePattern, bv as SolidBackgroundConfig, bw as StartBlockConfig, bx as StatHighlightInput, by as StatsBlockInput, bz as SurfaceScheme, bA as SvgLayer, bB as THEME_SCHEMA_VERSION, bC as TableLayer, bD as TableLayerStyle, bE as TemplateBlock, bF as TemplateContext, bG as TemplateFunction, bH as TemplateRegistry, bI as TextFlow, bJ as TextLayer, bK as TextParagraph, bL as TextParagraphList, bM as TextStyle, bR as ThemeRegistry, bS as ThemeSchemaVersion, bU as ThemeStyle, bV as ThemeTypography, bW as TimelineBlockInput, bX as TimelineTemplateEvent, bY as TimelineTemplateLink, bZ as TimelineTemplateTrack, b_ as TitleBlockInput, b$ as TitleCaptionConfig, c0 as TopFeatureInput, c1 as TranscriptBlockInput, c2 as TreeBlockInput, c3 as TreeLayer, c4 as TreeLayerItem, c5 as TreeLayerStyle, c6 as TreeTemplateItem, c7 as TwoColumnInput, c8 as VIEWPORT_PRESETS, c9 as VennBlockInput, ca as VideoEmbedLayer, cb as VideoLayer, cc as VideoPipPosition, cd as VideoPipShape, ce as VideoPipSize, cf as VideoPlacement, cg as VideoPresentation, ch as VideoPullQuoteInput, ci as VideoWithCaptionInput, cj as ViewportConfig, ck as ViewportOrientation, cl as ViewportPreset, cm as VignetteConfig, cn as applySurface, co as calculateDuration, cp as calculateFontScale, cq as createTemplateContext, cr as createTheme, cs as createThemeRegistry, ct as getAspectRatioString, cu as getBlockAtTime, cv as getCaptionAtTime, cw as getDocPlaybackDuration, cx as getLayoutHints, cy as getSafeTextBounds, cz as getSegmentAtTime, cA as getTwoColumnPositions, cB as getViewport, cC as getViewportOrientation, cD as isCustomTemplateDefinition, cE as isMotionProfileName, cF as isPersistentLayerTemplate, cG as isTemplateBlock, cH as layoutScaledFontSize, cI as readFrontmatterMotion, cJ as resolveMediaSchedule, cK as resolveMotionForDoc, cL as resolveMotionProfile, cM as scaledFontSize, cN as scheduleMediaClip, cO as validateCustomTemplateDefinition } from '../Doc-C_Sh49ot.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-B4VLovhW.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-
|
|
7
|
+
export { E as EditorLayerMeta, I as ImageEditCanvas, a as ImageEditDoc, b as ImageEditLayer, c as ImageEditLayerKind, d as ImageEditMeta } from '../ImageEditDoc-Sqw3Tw-R.js';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Runtime validation for the canonical {@link Doc} JSON shape.
|
package/dist/timing/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { g as AudioSegment, h as AudioTimingData, o as CaptionTrack } from '../Doc-
|
|
1
|
+
import { g as AudioSegment, h as AudioTimingData, o as CaptionTrack, U as Doc, k as Block } from '../Doc-C_Sh49ot.js';
|
|
2
2
|
import '../types-Zk8qYuaT.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
@@ -139,6 +139,70 @@ interface BuildCaptionTrackOptions {
|
|
|
139
139
|
}
|
|
140
140
|
declare function buildCaptionTrack(sources: CaptionSegmentSource[], options?: BuildCaptionTrackOptions): CaptionTrack;
|
|
141
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Caption and chapter files — a doc's timing as text other players read.
|
|
144
|
+
*
|
|
145
|
+
* A rendered video burns its captions into the picture, which is right for a
|
|
146
|
+
* silent autoplay feed and wrong for everything else: a viewer cannot turn
|
|
147
|
+
* them off, a platform cannot translate or index them, and a screen reader
|
|
148
|
+
* cannot read them. These writers turn the same `CaptionTrack` the player
|
|
149
|
+
* shows into the two sidecar formats every video host accepts, SubRip (`.srt`)
|
|
150
|
+
* and WebVTT (`.vtt`), and a doc's sections into a chapter list.
|
|
151
|
+
*
|
|
152
|
+
* All three are pure functions of the doc's own times, so a host that
|
|
153
|
+
* post-processes the audio (a pre-roll, a trimmed take) passes an `offset`
|
|
154
|
+
* rather than rewriting cues. A cue never runs past the start of the next
|
|
155
|
+
* one, and cues with no words, or that end before they start, are left out.
|
|
156
|
+
*
|
|
157
|
+
* Related: `timing/captions.ts` (`buildCaptionTrack`), `schemas/Doc.ts`
|
|
158
|
+
* (`CaptionTrack`), the CLI's `video --captions`.
|
|
159
|
+
*/
|
|
160
|
+
|
|
161
|
+
interface CaptionFileOptions {
|
|
162
|
+
/** Seconds added to every time, for a video that starts before the doc does (a cover pre-roll). */
|
|
163
|
+
offset?: number;
|
|
164
|
+
}
|
|
165
|
+
/** A caption track as a SubRip (`.srt`) file; empty when it has no cues. */
|
|
166
|
+
declare function formatCaptionsSrt(track: Pick<CaptionTrack, 'phrases'> | undefined, options?: CaptionFileOptions): string;
|
|
167
|
+
/**
|
|
168
|
+
* A caption track as a WebVTT (`.vtt`) file. The header is always written,
|
|
169
|
+
* so a track without cues is still a valid file.
|
|
170
|
+
*/
|
|
171
|
+
declare function formatCaptionsVtt(track: Pick<CaptionTrack, 'phrases'> | undefined, options?: CaptionFileOptions): string;
|
|
172
|
+
/** One chapter of a doc: where a section starts, and what it is called. */
|
|
173
|
+
interface DocChapter {
|
|
174
|
+
/** Seconds from the start of the video. */
|
|
175
|
+
startTime: number;
|
|
176
|
+
title: string;
|
|
177
|
+
}
|
|
178
|
+
interface DocChapterOptions extends CaptionFileOptions {
|
|
179
|
+
/**
|
|
180
|
+
* The shortest a chapter may be, in seconds (default 10). A section that
|
|
181
|
+
* starts sooner after the one before it is folded into it: players and
|
|
182
|
+
* platforms ignore chapter lists with very short entries.
|
|
183
|
+
*/
|
|
184
|
+
minDuration?: number;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* A doc's chapters: its titled blocks, in time order, from the blocks as a
|
|
188
|
+
* player schedules them (pass the doc after `resolveAudioMapping`, or the
|
|
189
|
+
* blocks `expandDocBlocks` returns). Consecutive blocks with one title — a
|
|
190
|
+
* section shown over several slides — are one chapter. The first chapter
|
|
191
|
+
* starts at zero, as chapter lists must.
|
|
192
|
+
*/
|
|
193
|
+
declare function docChapters(doc: Pick<Doc, 'blocks'> | readonly Block[], options?: DocChapterOptions): DocChapter[];
|
|
194
|
+
/**
|
|
195
|
+
* Chapters as an FFmpeg metadata file (`ffmpeg -i video.mp4 -i chapters.txt
|
|
196
|
+
* -map_metadata 1 -codec copy out.mp4`), which is how a chapter list is
|
|
197
|
+
* written into an MP4. `duration` closes the last chapter.
|
|
198
|
+
*/
|
|
199
|
+
declare function formatChaptersFfmetadata(chapters: readonly DocChapter[], duration: number): string;
|
|
200
|
+
/**
|
|
201
|
+
* Chapters as the timestamp list video platforms read from a description
|
|
202
|
+
* ("0:00 Introduction"). Hours appear only when the video runs past one.
|
|
203
|
+
*/
|
|
204
|
+
declare function formatChaptersText(chapters: readonly DocChapter[]): string;
|
|
205
|
+
|
|
142
206
|
/**
|
|
143
207
|
* Word timings: when narration speaks a given place in its script.
|
|
144
208
|
*
|
|
@@ -195,4 +259,4 @@ declare function phraseOffset(timeline: WordTimeline, phrase: string, from?: num
|
|
|
195
259
|
*/
|
|
196
260
|
declare function phraseStartTime(timeline: WordTimeline, phrase: string, options?: PhraseTimeOptions): number | null;
|
|
197
261
|
|
|
198
|
-
export { type BuildCaptionTrackOptions, type CaptionSegmentSource, DEFAULT_WORDS_PER_SECOND, type NarrationTimeEstimate, type NarrationTimeOptions, type PhraseTimeOptions, type ReadingTimeEstimate, type ReadingTimeOptions, type WordMark, type WordSnap, type WordTimeline, buildCaptionTrack, calculatePrefixDuration, countSpokenWords, estimateNarrationDuration, estimateNarrationTime, estimateReadingTime, estimateSpokenWordCount, estimateTimeFromText, phraseOffset, phraseStartTime, wordTimeAt };
|
|
262
|
+
export { type BuildCaptionTrackOptions, type CaptionFileOptions, type CaptionSegmentSource, DEFAULT_WORDS_PER_SECOND, type DocChapter, type DocChapterOptions, type NarrationTimeEstimate, type NarrationTimeOptions, type PhraseTimeOptions, type ReadingTimeEstimate, type ReadingTimeOptions, type WordMark, type WordSnap, type WordTimeline, buildCaptionTrack, calculatePrefixDuration, countSpokenWords, docChapters, estimateNarrationDuration, estimateNarrationTime, estimateReadingTime, estimateSpokenWordCount, estimateTimeFromText, formatCaptionsSrt, formatCaptionsVtt, formatChaptersFfmetadata, formatChaptersText, phraseOffset, phraseStartTime, wordTimeAt };
|
package/dist/timing/index.js
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
docChapters,
|
|
3
|
+
formatCaptionsSrt,
|
|
4
|
+
formatCaptionsVtt,
|
|
5
|
+
formatChaptersFfmetadata,
|
|
6
|
+
formatChaptersText
|
|
7
|
+
} from "../chunk-C7DKMO4H.js";
|
|
1
8
|
import {
|
|
2
9
|
buildCaptionTrack
|
|
3
10
|
} from "../chunk-5HWYSUXS.js";
|
|
@@ -21,11 +28,16 @@ export {
|
|
|
21
28
|
buildCaptionTrack,
|
|
22
29
|
calculatePrefixDuration,
|
|
23
30
|
countSpokenWords,
|
|
31
|
+
docChapters,
|
|
24
32
|
estimateNarrationDuration,
|
|
25
33
|
estimateNarrationTime,
|
|
26
34
|
estimateReadingTime,
|
|
27
35
|
estimateSpokenWordCount,
|
|
28
36
|
estimateTimeFromText,
|
|
37
|
+
formatCaptionsSrt,
|
|
38
|
+
formatCaptionsVtt,
|
|
39
|
+
formatChaptersFfmetadata,
|
|
40
|
+
formatChaptersText,
|
|
29
41
|
phraseOffset,
|
|
30
42
|
phraseStartTime,
|
|
31
43
|
wordTimeAt
|