@broadpaper/core 0.2.0 → 0.3.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.
- package/README.md +62 -0
- package/dist/index.d.ts +259 -1
- package/dist/index.js +760 -70
- package/dist/index.js.map +1 -1
- package/package.json +21 -1
package/README.md
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# @broadpaper/core
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@broadpaper/core)
|
|
4
|
+
[](https://www.broadpaper.com/legal/terms/)
|
|
5
|
+
[](https://www.broadpaper.com/docs/guide/licensing/)
|
|
6
|
+
|
|
7
|
+
The document model, expression language, theme resolution and paginator behind BroadPaper. Framework-free.
|
|
8
|
+
|
|
9
|
+
Part of [**BroadPaper**](https://www.broadpaper.com/developers/) — an embeddable visual report designer and PDF renderer.
|
|
10
|
+
Your users design the report in your application; BroadPaper owns the layout, the branding,
|
|
11
|
+
the pagination and the output.
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @broadpaper/core
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Everything the designer and both PDF backends are built on, with no dependency on React,
|
|
20
|
+
Angular or a DOM. A report is a plain JSON document; this package is what gives it meaning —
|
|
21
|
+
resolving bindings against your data, evaluating conditions, resolving a theme into concrete
|
|
22
|
+
values, and deciding where the pages break.
|
|
23
|
+
|
|
24
|
+
You rarely install this on its own. It arrives with whichever package you did install, and it
|
|
25
|
+
is here because the types are useful: a template is your data, and you may well want to read
|
|
26
|
+
or generate one without rendering anything.
|
|
27
|
+
|
|
28
|
+
**There is no `eval` anywhere in it.** The expression language is a hand-written tokeniser,
|
|
29
|
+
Pratt parser and tree-walking interpreter, statically checkable against your own schemas
|
|
30
|
+
before a single row of data exists.
|
|
31
|
+
|
|
32
|
+
## Licensing
|
|
33
|
+
|
|
34
|
+
BroadPaper is **free to evaluate, with no trial clock and nothing behind a feature gate**.
|
|
35
|
+
Install it, use every feature and evaluate it against your real data for as long as you like.
|
|
36
|
+
Production use needs a licence.
|
|
37
|
+
|
|
38
|
+
In the software, the only difference without a licence is that generated PDFs carry an
|
|
39
|
+
evaluation mark, and a licence removes it. Contractually, the licence is also what permits
|
|
40
|
+
production use. No seats, no activation, no machine binding, no telemetry, and no call home at
|
|
41
|
+
any point.
|
|
42
|
+
|
|
43
|
+
- [How licensing works](https://www.broadpaper.com/docs/guide/licensing/)
|
|
44
|
+
- [Pricing](https://www.broadpaper.com/developers/pricing/)
|
|
45
|
+
- [Licence agreement](https://www.broadpaper.com/legal/terms/)
|
|
46
|
+
|
|
47
|
+
## Documentation
|
|
48
|
+
|
|
49
|
+
- [Concepts](https://www.broadpaper.com/docs/guide/concepts)
|
|
50
|
+
- [Declaring your schemas](https://www.broadpaper.com/docs/guide/schema)
|
|
51
|
+
- [Data bindings](https://www.broadpaper.com/docs/guide/bindings)
|
|
52
|
+
- [Conditional content](https://www.broadpaper.com/docs/guide/conditions)
|
|
53
|
+
- [Full documentation](https://www.broadpaper.com/docs/)
|
|
54
|
+
|
|
55
|
+
## Support
|
|
56
|
+
|
|
57
|
+
Paid licences include email support at [support@broadpaper.com](mailto:support@broadpaper.com).
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
Copyright © 2026 Codingbadger Creative Limited. See [LICENSE](./LICENSE) in this package, and
|
|
62
|
+
[THIRD-PARTY-NOTICES.md](./THIRD-PARTY-NOTICES.md) for the components it ships with.
|
package/dist/index.d.ts
CHANGED
|
@@ -1165,6 +1165,26 @@ interface BlockDefinition<P extends Record<string, unknown> = Record<string, unk
|
|
|
1165
1165
|
* Derived from `split` when omitted.
|
|
1166
1166
|
*/
|
|
1167
1167
|
measure?: "text" | "table" | "none";
|
|
1168
|
+
/**
|
|
1169
|
+
* Props for a block created by dropping a data field onto the page.
|
|
1170
|
+
*
|
|
1171
|
+
* The designer lets a user drag a field out of the data panel, and what should
|
|
1172
|
+
* appear is not the same thing for every block: a list wants a table with a
|
|
1173
|
+
* column per item field, each already formatted the way the schema says; a
|
|
1174
|
+
* scalar wants a labelled value. Only the block knows what its own props mean,
|
|
1175
|
+
* so the block decides — including a custom block, which is the reason this is
|
|
1176
|
+
* a hook rather than a rule in the editor.
|
|
1177
|
+
*
|
|
1178
|
+
* `expr` is the bare path; `formatted` is the same path with the field's own
|
|
1179
|
+
* formatter appended, which is what a prop rendering the value as text should
|
|
1180
|
+
* use. Return undefined to take the designer's default.
|
|
1181
|
+
*/
|
|
1182
|
+
fromField?(field: {
|
|
1183
|
+
expr: string;
|
|
1184
|
+
formatted: string;
|
|
1185
|
+
schema: FieldSchema;
|
|
1186
|
+
label: string;
|
|
1187
|
+
}): Partial<P> | undefined;
|
|
1168
1188
|
/** Adjust resolved props after binding resolution (compute derived data, sort, etc.). */
|
|
1169
1189
|
resolve?(ctx: ResolveHookContext<P>): P | void;
|
|
1170
1190
|
render(ctx: RenderContext<P>): VNode | null;
|
|
@@ -2347,6 +2367,244 @@ declare function synthesizeValue(schema: FieldSchema, opts?: {
|
|
|
2347
2367
|
declare function labelForPath(segments: PathSegment[], scope: SchemaScope): string;
|
|
2348
2368
|
declare function humanizeKey(key: string): string;
|
|
2349
2369
|
|
|
2370
|
+
/**
|
|
2371
|
+
* The formatter a field wants, when nobody has said otherwise.
|
|
2372
|
+
*
|
|
2373
|
+
* A schema already knows that a field is money in sterling, or a date the host
|
|
2374
|
+
* writes as `d MMMM yyyy`, or a fraction meant to be read as a percentage.
|
|
2375
|
+
* Nothing was doing anything with that: a binding inserted from the data panel
|
|
2376
|
+
* was the bare path, so a currency field rendered as `482310.4` and a date as
|
|
2377
|
+
* `2026-08-31T00:00:00.000Z` until somebody typed a pipe after it.
|
|
2378
|
+
*
|
|
2379
|
+
* That is a fine default for a developer who knows the expression language and
|
|
2380
|
+
* a poor one for anybody else, so the pipe is written into the expression at the
|
|
2381
|
+
* moment the binding is created. Written in, and not applied invisibly at render
|
|
2382
|
+
* time, for two reasons worth stating:
|
|
2383
|
+
*
|
|
2384
|
+
* - it stays visible and editable. The template says `| currency:'USD'`, so
|
|
2385
|
+
* somebody reading it can see why the document shows dollars, and somebody who
|
|
2386
|
+
* wants three decimal places can change it;
|
|
2387
|
+
* - it cannot change what an existing template does. Formatting bound values at
|
|
2388
|
+
* render time would alter the output of every document already saved against a
|
|
2389
|
+
* typed schema, which is not a change a published SDK gets to make quietly.
|
|
2390
|
+
*
|
|
2391
|
+
* Blocks that evaluate their own expressions — a table's columns, a chart's
|
|
2392
|
+
* series — get the same treatment from the same function, which is what keeps a
|
|
2393
|
+
* total in a table footer formatted like the column above it.
|
|
2394
|
+
*/
|
|
2395
|
+
|
|
2396
|
+
/**
|
|
2397
|
+
* The pipe expression for a field, or null when the value should be shown as it
|
|
2398
|
+
* is.
|
|
2399
|
+
*
|
|
2400
|
+
* Text, booleans, URLs and rich text are already what they should look like.
|
|
2401
|
+
* Everything numeric or temporal is not.
|
|
2402
|
+
*/
|
|
2403
|
+
declare function defaultPipeFor(schema: FieldSchema | undefined): string | null;
|
|
2404
|
+
/**
|
|
2405
|
+
* Adds the field's default formatter to a path expression.
|
|
2406
|
+
*
|
|
2407
|
+
* Leaves anything that already has a pipe alone — the author said what they
|
|
2408
|
+
* wanted — and leaves anything that is not a plain path alone too, because a
|
|
2409
|
+
* computed expression's type is its own business and appending to it could
|
|
2410
|
+
* change what it means.
|
|
2411
|
+
*/
|
|
2412
|
+
declare function withDefaultPipe(expr: string, schema: FieldSchema | undefined): string;
|
|
2413
|
+
/** Whether an expression already ends in a formatter, ignoring `||`. */
|
|
2414
|
+
declare function hasPipe(expr: string): boolean;
|
|
2415
|
+
/**
|
|
2416
|
+
* A dotted path and nothing else: `client.name`, `row.amount`, `holdings[0].value`.
|
|
2417
|
+
*
|
|
2418
|
+
* Anything with an operator, a call or a literal in it is left alone. `a + b`
|
|
2419
|
+
* with a currency pipe bolted on would format the sum, which may be what the
|
|
2420
|
+
* author wanted or may not, and guessing is worse than doing nothing.
|
|
2421
|
+
*/
|
|
2422
|
+
declare function isPlainPath(expr: string): boolean;
|
|
2423
|
+
|
|
2424
|
+
/**
|
|
2425
|
+
* A calculation, as a person would describe it rather than as the expression
|
|
2426
|
+
* language would.
|
|
2427
|
+
*
|
|
2428
|
+
* The designer has always been able to *bind* a value — point a property at a
|
|
2429
|
+
* field — and never to work one out. Arithmetic arrived only inside a template
|
|
2430
|
+
* somebody wrote by hand, so a host with the expression editor switched off had a
|
|
2431
|
+
* document whose totals it could read and not change, and a host with it on asked
|
|
2432
|
+
* a business user to write `sum(invoice.lineItems.amount) * (1 + taxRate)`. Both
|
|
2433
|
+
* are the same missing feature.
|
|
2434
|
+
*
|
|
2435
|
+
* So: a small closed model of the arithmetic documents actually contain, and a
|
|
2436
|
+
* codec between it and the expression language. The builder in the editor edits
|
|
2437
|
+
* this; the template still holds an ordinary expression, so nothing downstream —
|
|
2438
|
+
* the interpreter, the validator, the renderer, the PDF backends — learns anything
|
|
2439
|
+
* new. A calculation is a *view* of an expression, never a second way to store one.
|
|
2440
|
+
*
|
|
2441
|
+
* ## Left to right, and no brackets
|
|
2442
|
+
*
|
|
2443
|
+
* `start` and then a list of `steps`, each applied to the running total. That is
|
|
2444
|
+
* the one decision here worth defending, because a tree would be more general and
|
|
2445
|
+
* much worse: an interface with brackets in it is a formula editor, and a business
|
|
2446
|
+
* user with a formula editor is a business user writing formulas. Left-to-right
|
|
2447
|
+
* covers what invoices and reports do — a subtotal, VAT on it, a discount off it,
|
|
2448
|
+
* a division for an average — and reads as a sentence:
|
|
2449
|
+
*
|
|
2450
|
+
* Total of Lines › Amount, add VAT rate as a percentage
|
|
2451
|
+
*
|
|
2452
|
+
* Precedence never arises, because there is none to get wrong: every step applies
|
|
2453
|
+
* to everything before it, and `toExpression` brackets accordingly.
|
|
2454
|
+
*
|
|
2455
|
+
* ## Percentages are an operator, not multiplication
|
|
2456
|
+
*
|
|
2457
|
+
* "Add VAT rate as a percentage" rather than "multiply by (1 + VAT rate)". It is
|
|
2458
|
+
* the same arithmetic and it is the difference between a step somebody can choose
|
|
2459
|
+
* and one they have to derive. It is also emitted null-safe — `coalesce(rate, 0)`
|
|
2460
|
+
* — because a business that has not set a VAT rate wants an invoice without VAT,
|
|
2461
|
+
* not one with a hole where the total was.
|
|
2462
|
+
*
|
|
2463
|
+
* ## The contract that makes this safe
|
|
2464
|
+
*
|
|
2465
|
+
* {@link fromExpression} returns `null` for anything it cannot rebuild **byte for
|
|
2466
|
+
* byte**. An interface that offered to edit an expression it would then rewrite
|
|
2467
|
+
* differently is an interface that silently changes documents on being looked at;
|
|
2468
|
+
* refusing is the honest answer, and the caller shows the value as read-only
|
|
2469
|
+
* instead. `calculation.test.ts` asserts the round trip on every expression the
|
|
2470
|
+
* starter templates ship.
|
|
2471
|
+
*/
|
|
2472
|
+
|
|
2473
|
+
/** The five aggregates a document asks for. Deliberately not every function. */
|
|
2474
|
+
type CalcAggregate = "sum" | "avg" | "count" | "min" | "max";
|
|
2475
|
+
/** One thing a calculation reads or holds. Flat: a term is never itself a calculation. */
|
|
2476
|
+
type CalcTerm =
|
|
2477
|
+
/** A field, by its dotted path. `invoice.taxRate`, `row.amount`. */
|
|
2478
|
+
{
|
|
2479
|
+
kind: "field";
|
|
2480
|
+
path: string;
|
|
2481
|
+
}
|
|
2482
|
+
/** A column of a list, across every row of it. `sum(invoice.lineItems.amount)`. */
|
|
2483
|
+
| {
|
|
2484
|
+
kind: "aggregate";
|
|
2485
|
+
fn: CalcAggregate;
|
|
2486
|
+
path: string;
|
|
2487
|
+
}
|
|
2488
|
+
/** A number somebody typed. */
|
|
2489
|
+
| {
|
|
2490
|
+
kind: "number";
|
|
2491
|
+
value: number;
|
|
2492
|
+
};
|
|
2493
|
+
/**
|
|
2494
|
+
* What to do with a term, given everything so far.
|
|
2495
|
+
*
|
|
2496
|
+
* `addPercent` and `subtractPercent` treat the term as a rate: 0.2 is a fifth.
|
|
2497
|
+
* That matches `percent`-typed fields and the mapping package's own reading of a
|
|
2498
|
+
* typed rate, so a VAT rate is the same number everywhere in the product.
|
|
2499
|
+
*/
|
|
2500
|
+
type CalcOp = "add" | "subtract" | "multiply" | "divide" | "addPercent" | "subtractPercent";
|
|
2501
|
+
interface CalcStep {
|
|
2502
|
+
op: CalcOp;
|
|
2503
|
+
term: CalcTerm;
|
|
2504
|
+
}
|
|
2505
|
+
interface Calculation {
|
|
2506
|
+
start: CalcTerm;
|
|
2507
|
+
steps: CalcStep[];
|
|
2508
|
+
/**
|
|
2509
|
+
* How the result is shown: a pipe chain, exactly as it appears after `|` in the
|
|
2510
|
+
* expression. `currency:"GBP"`, `number:0`, `percent:1`. Presentation only, and
|
|
2511
|
+
* applied once at the end — a format in the middle of arithmetic would turn a
|
|
2512
|
+
* number into a string and the next step into a concatenation.
|
|
2513
|
+
*/
|
|
2514
|
+
format?: string;
|
|
2515
|
+
}
|
|
2516
|
+
/** Everything a calculation reads, for validation and for naming it. */
|
|
2517
|
+
declare function calcPaths(calc: Calculation): string[];
|
|
2518
|
+
/** The AST, for a caller that wants to type-check a calculation before storing it. */
|
|
2519
|
+
declare function calcToAst(calc: Calculation): Expr;
|
|
2520
|
+
declare function toExpression(calc: Calculation): string;
|
|
2521
|
+
/**
|
|
2522
|
+
* Reads an expression back as a calculation, or refuses.
|
|
2523
|
+
*
|
|
2524
|
+
* `null` means "this is not something the builder can represent", and the caller's
|
|
2525
|
+
* job is then to show the value rather than offer to edit it. Everything this
|
|
2526
|
+
* accepts, {@link toExpression} reproduces character for character — which is
|
|
2527
|
+
* asserted, because the failure otherwise is a template quietly rewritten by
|
|
2528
|
+
* somebody opening a panel.
|
|
2529
|
+
*/
|
|
2530
|
+
declare function fromExpression(expr: string): Calculation | null;
|
|
2531
|
+
/** Whether an expression is arithmetic rather than a plain field or a formatted one. */
|
|
2532
|
+
declare function isCalculation(calc: Calculation): boolean;
|
|
2533
|
+
|
|
2534
|
+
/**
|
|
2535
|
+
* What changed between two saved templates, said in words.
|
|
2536
|
+
*
|
|
2537
|
+
* A revision history is only useful if it can answer "what is different about
|
|
2538
|
+
* this one" without asking anybody to read a template. A structural diff of the
|
|
2539
|
+
* JSON answers a different question — which keys moved — and it answers it in
|
|
2540
|
+
* the vocabulary of the format: `body[2].children[0].props.columns`. This speaks
|
|
2541
|
+
* the vocabulary of the designer instead: the table in “Summary”, the page
|
|
2542
|
+
* margins, the Heading 1 style.
|
|
2543
|
+
*
|
|
2544
|
+
* Three decisions shape everything below.
|
|
2545
|
+
*
|
|
2546
|
+
* **Nodes are matched by id, never by position.** Every node already carries a
|
|
2547
|
+
* stable id, and matching by position is how inserting one section at the top
|
|
2548
|
+
* becomes "changed every section in the document". A subtree added or removed
|
|
2549
|
+
* is one change, not one per descendant — a person who deleted a section
|
|
2550
|
+
* deleted a section.
|
|
2551
|
+
*
|
|
2552
|
+
* **Expression syntax never reaches the words.** A host may hide expressions
|
|
2553
|
+
* entirely (`expressions: false`), and a revision list that printed
|
|
2554
|
+
* `sum(invoice.lineItems.amount) | currency` would put back exactly what that
|
|
2555
|
+
* flag took away. Bindings are named with `describeExpression`, the same
|
|
2556
|
+
* function the canvas chips use, and anything that still would not read as
|
|
2557
|
+
* words is called "a calculated value".
|
|
2558
|
+
*
|
|
2559
|
+
* **It is pure.** No DOM, no registry required, deterministic output — the same
|
|
2560
|
+
* two templates always produce the same list in the same order, so a host can
|
|
2561
|
+
* store the summary beside a revision and trust it later.
|
|
2562
|
+
*/
|
|
2563
|
+
|
|
2564
|
+
type ChangeKind = "added" | "removed" | "changed" | "moved";
|
|
2565
|
+
type ChangeArea = "document" | "page" | "styles" | "header" | "footer" | "body";
|
|
2566
|
+
interface TemplateChange {
|
|
2567
|
+
kind: ChangeKind;
|
|
2568
|
+
area: ChangeArea;
|
|
2569
|
+
/** The node's id, when the change is to a node. */
|
|
2570
|
+
nodeId?: string;
|
|
2571
|
+
/** What changed, named for a person: "Table", "Top margin", "Heading 1 style". */
|
|
2572
|
+
subject: string;
|
|
2573
|
+
/** One sentence: `Added a table to “Summary”`, `Changed the page margins`. */
|
|
2574
|
+
summary: string;
|
|
2575
|
+
/** Display strings, only when a single simple value changed. ≤ 80 chars each, truncated with "…". */
|
|
2576
|
+
before?: string;
|
|
2577
|
+
after?: string;
|
|
2578
|
+
}
|
|
2579
|
+
interface TemplateDiff {
|
|
2580
|
+
changes: TemplateChange[];
|
|
2581
|
+
counts: Record<ChangeKind, number>;
|
|
2582
|
+
/** Changes beyond `maxChanges` that were counted but not listed. */
|
|
2583
|
+
truncated: number;
|
|
2584
|
+
identical: boolean;
|
|
2585
|
+
}
|
|
2586
|
+
interface DiffOptions {
|
|
2587
|
+
/** Block definitions, for naming block types and their properties. */
|
|
2588
|
+
registry?: BlockRegistry;
|
|
2589
|
+
/** Default 200. */
|
|
2590
|
+
maxChanges?: number;
|
|
2591
|
+
/**
|
|
2592
|
+
* The data sources the template binds to, so a binding is named by its field's
|
|
2593
|
+
* own label ("Invoice number") rather than a humanised key ("Number").
|
|
2594
|
+
* Optional: without them the names are still words, just plainer ones.
|
|
2595
|
+
*/
|
|
2596
|
+
dataSources?: DataSource[];
|
|
2597
|
+
}
|
|
2598
|
+
declare function diffTemplates(before: ReportTemplate, after: ReportTemplate, options?: DiffOptions): TemplateDiff;
|
|
2599
|
+
/**
|
|
2600
|
+
* One line for a list of revisions.
|
|
2601
|
+
*
|
|
2602
|
+
* A single change is worth naming outright; several are counted, because a list
|
|
2603
|
+
* row that tried to name seven changes would be truncated into saying none of
|
|
2604
|
+
* them properly.
|
|
2605
|
+
*/
|
|
2606
|
+
declare function summariseDiff(diff: TemplateDiff): string;
|
|
2607
|
+
|
|
2350
2608
|
interface ResolveOptions {
|
|
2351
2609
|
template: ReportTemplate;
|
|
2352
2610
|
registry: BlockRegistry;
|
|
@@ -2875,4 +3133,4 @@ declare function renderNode(node: ResolvedNode, opts: RenderTreeOptions, width?:
|
|
|
2875
3133
|
/** Renders a list of resolved sections into a fragment-less flat list. */
|
|
2876
3134
|
declare function renderSections(sections: ResolvedNode[], opts: RenderTreeOptions): VNode[];
|
|
2877
3135
|
|
|
2878
|
-
export { type AnyVersionTemplate, type BinaryOp, type BindingInfo, type BindingKind, type BindingSpec, type BlockCategory, type BlockDefinition, type BlockNode, BlockRegistry, type BlockRegistryLike, type BlockStyle, type BorderSpec, type BorderStyle, type BreakMode, type BreakRun, CONDITION_OPERATORS, CURRENT_SCHEMA_VERSION, type CardStyle, type ColorValue, type Command, CommandError, type Condition, type ConditionGroup, type ConditionRule, type ContainerSpec, type CreateNodeOptions, type CreateTemplateOptions, type CustomPageSize, DEFAULT_PAGE_CONTEXT, DEFAULT_THEME, type DataSource, type DispatchOptions, type DocumentStyles, type EditorState, EditorStore, type EditorStoreOptions, type EvalContext, type Expr, ExpressionError, FUNCTION_NAMES, type FieldSchema, type FieldType, type FlowOptions, type FontValue, type FormatContext, GLOBAL_SCHEMAS, type GeometryMap, type HistoryEntry, type InlineNode, type InspectorApi, type InspectorComponent, type InspectorField, type InspectorFieldBase, type InspectorSection, type Issue, type IssueCode, type IssueSeverity, type IssueSource, type LayoutWarning, type LibraryItem, type LicenseTier, type List, type ListItem, MIGRATIONS, type Measurer, type Migration, MigrationError, type MigrationResult, type Node, type NodeEntry, type NodeGeometry, type NodeIndex, type NodeLocation, type OutputCheckOptions, PAGE_SIZES_MM, PIPES, PX_PER_MM, type Page, type PageContext, type PageFragment, type PageGeometry, type PageMargins, type PageOrientation, type PageRegionSettings, type PageSettings, type PageSize, type PageSizeName, type PagedDocument, type PaginateOptions, type Paragraph, type ParseResult, type PathSegment, type PipeDefinition, type PipeFn, REGION_IDS, ROW_LAYOUTS, type RegionContent, type RegionId, type RegistryOptions, type RenderContext, type RenderMode, type RenderTreeOptions, type RepeatedHeader, type ReportData, type ReportTemplate, type ResolveHookContext, type ResolveOptions, type ResolvedDocument, type ResolvedFlow, type ResolvedNode, type ResolvedRegion, type ResolvedRole, type ResolvedSegment, type ResolvedStyle, type RichTextDoc, SchemaScope, type SchemaVersion, Scope, type SectionGeometry, type SelectOption, type Spacing, type SplitMode, type StyleCascadeInput, type StyleGroup, type TableRowGeometry, type TableStyle, type TemplateMeta, type TemplateSegment, type TemplateSettings, type TextAlign, type TextMarks, type TextRun, type TextStyle, type TextStyleId, type Theme, type ThemeColors, type ThemeFontFace, type ThemeTableDefaults, type ThemeTokenInfo, type ThemeTypography, type TokenRef, type TokenRun, type TypeIssue, type TypeResult, type VChild, type VNode, type VProps, type ValidateContext, type ValidateOptions, type ValidationResult, type ValueType, type VerticalAlign, ancestors, applyCommand, bestBreak, bindingSpecsFor, blockStyleSchema, checkExpressionSyntax, checkOutput, classNames, cloneWithNewIds, collectPaths, columnWidth, compareValues, compileCondition, computePageGeometry, countNodes, createColumn, createId, createNode, createParagraph, createRichText, createRow, createSchemaScope, createSection, createTemplate, cssText, dataSourceSchemas, defaultDocumentStyles, defaultPageSettings, defineBlock, describeExpression, documentStylesSchema, escapeHtml, evaluate, evaluateAst, evaluateCondition, evaluateText, evaluateToText, exprToString, extractTemplateTokens, findNode, formatCurrency, formatDate, formatDatePattern, formatNumber, formatPercent, getField, getRegion, h, humaniseLabel, humanize, humanizeKey, indexTemplate, inlineFromTemplate, inlineToPlain, interpolate, isDarkColor, isDescendant, isEmptyValue, isRichTextDoc, isSafeUrl, isTokenRef, isVNode, issue, itemSchemaOf, labelForPath, listAt, listThemeTokens, looseEquals, mergeTheme, migrateTemplate, missingThemeValues, mmToPx, needsMigration, nodeAt, nodeAttrs, nodeSchema, pageSettingsSchema, pageSizeMm, paginate, parseExpression, parseTemplate, pathToString, pxToMm, readProperty, readRegion, renderInline, renderNode, renderRichText, renderSections, renderSegments, resolveDefaultProps, resolvePath, resolvePathSchema, resolveStyle, resolveTemplate, resolveToken, resolveValue, richTextFromTemplate, richTextToPlain, richTextTokens, setDeterministicIds, splitTemplate, styleString, styleToCss, synthesizeSampleData, synthesizeValue, templateSchema, textStyleLabel, toDate, toDisplayString, toHtml, toNumber, tokenChip, tokenize, truthy, typeCheck, typeCheckAst, usedBlockTypes, validateTemplate, walkTemplate, walkVNodes };
|
|
3136
|
+
export { type AnyVersionTemplate, type BinaryOp, type BindingInfo, type BindingKind, type BindingSpec, type BlockCategory, type BlockDefinition, type BlockNode, BlockRegistry, type BlockRegistryLike, type BlockStyle, type BorderSpec, type BorderStyle, type BreakMode, type BreakRun, CONDITION_OPERATORS, CURRENT_SCHEMA_VERSION, type CalcAggregate, type CalcOp, type CalcStep, type CalcTerm, type Calculation, type CardStyle, type ChangeArea, type ChangeKind, type ColorValue, type Command, CommandError, type Condition, type ConditionGroup, type ConditionRule, type ContainerSpec, type CreateNodeOptions, type CreateTemplateOptions, type CustomPageSize, DEFAULT_PAGE_CONTEXT, DEFAULT_THEME, type DataSource, type DiffOptions, type DispatchOptions, type DocumentStyles, type EditorState, EditorStore, type EditorStoreOptions, type EvalContext, type Expr, ExpressionError, FUNCTION_NAMES, type FieldSchema, type FieldType, type FlowOptions, type FontValue, type FormatContext, GLOBAL_SCHEMAS, type GeometryMap, type HistoryEntry, type InlineNode, type InspectorApi, type InspectorComponent, type InspectorField, type InspectorFieldBase, type InspectorSection, type Issue, type IssueCode, type IssueSeverity, type IssueSource, type LayoutWarning, type LibraryItem, type LicenseTier, type List, type ListItem, MIGRATIONS, type Measurer, type Migration, MigrationError, type MigrationResult, type Node, type NodeEntry, type NodeGeometry, type NodeIndex, type NodeLocation, type OutputCheckOptions, PAGE_SIZES_MM, PIPES, PX_PER_MM, type Page, type PageContext, type PageFragment, type PageGeometry, type PageMargins, type PageOrientation, type PageRegionSettings, type PageSettings, type PageSize, type PageSizeName, type PagedDocument, type PaginateOptions, type Paragraph, type ParseResult, type PathSegment, type PipeDefinition, type PipeFn, REGION_IDS, ROW_LAYOUTS, type RegionContent, type RegionId, type RegistryOptions, type RenderContext, type RenderMode, type RenderTreeOptions, type RepeatedHeader, type ReportData, type ReportTemplate, type ResolveHookContext, type ResolveOptions, type ResolvedDocument, type ResolvedFlow, type ResolvedNode, type ResolvedRegion, type ResolvedRole, type ResolvedSegment, type ResolvedStyle, type RichTextDoc, SchemaScope, type SchemaVersion, Scope, type SectionGeometry, type SelectOption, type Spacing, type SplitMode, type StyleCascadeInput, type StyleGroup, type TableRowGeometry, type TableStyle, type TemplateChange, type TemplateDiff, type TemplateMeta, type TemplateSegment, type TemplateSettings, type TextAlign, type TextMarks, type TextRun, type TextStyle, type TextStyleId, type Theme, type ThemeColors, type ThemeFontFace, type ThemeTableDefaults, type ThemeTokenInfo, type ThemeTypography, type TokenRef, type TokenRun, type TypeIssue, type TypeResult, type VChild, type VNode, type VProps, type ValidateContext, type ValidateOptions, type ValidationResult, type ValueType, type VerticalAlign, ancestors, applyCommand, bestBreak, bindingSpecsFor, blockStyleSchema, calcPaths, calcToAst, checkExpressionSyntax, checkOutput, classNames, cloneWithNewIds, collectPaths, columnWidth, compareValues, compileCondition, computePageGeometry, countNodes, createColumn, createId, createNode, createParagraph, createRichText, createRow, createSchemaScope, createSection, createTemplate, cssText, dataSourceSchemas, defaultDocumentStyles, defaultPageSettings, defaultPipeFor, defineBlock, describeExpression, diffTemplates, documentStylesSchema, escapeHtml, evaluate, evaluateAst, evaluateCondition, evaluateText, evaluateToText, exprToString, extractTemplateTokens, findNode, formatCurrency, formatDate, formatDatePattern, formatNumber, formatPercent, fromExpression, getField, getRegion, h, hasPipe, humaniseLabel, humanize, humanizeKey, indexTemplate, inlineFromTemplate, inlineToPlain, interpolate, isCalculation, isDarkColor, isDescendant, isEmptyValue, isPlainPath, isRichTextDoc, isSafeUrl, isTokenRef, isVNode, issue, itemSchemaOf, labelForPath, listAt, listThemeTokens, looseEquals, mergeTheme, migrateTemplate, missingThemeValues, mmToPx, needsMigration, nodeAt, nodeAttrs, nodeSchema, pageSettingsSchema, pageSizeMm, paginate, parseExpression, parseTemplate, pathToString, pxToMm, readProperty, readRegion, renderInline, renderNode, renderRichText, renderSections, renderSegments, resolveDefaultProps, resolvePath, resolvePathSchema, resolveStyle, resolveTemplate, resolveToken, resolveValue, richTextFromTemplate, richTextToPlain, richTextTokens, setDeterministicIds, splitTemplate, styleString, styleToCss, summariseDiff, synthesizeSampleData, synthesizeValue, templateSchema, textStyleLabel, toDate, toDisplayString, toExpression, toHtml, toNumber, tokenChip, tokenize, truthy, typeCheck, typeCheckAst, usedBlockTypes, validateTemplate, walkTemplate, walkVNodes, withDefaultPipe };
|