@p10node/office-engine 0.0.0 → 0.1.1

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 (124) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -1
  3. package/dist/DocViewer-kfAVEXOO.js +10533 -0
  4. package/dist/DocViewer-kfAVEXOO.js.map +1 -0
  5. package/dist/THIRD_PARTY_LICENSES.txt +79 -0
  6. package/dist/assets/worker-DbLPJnSo.js.map +1 -0
  7. package/dist/collab-BzN1ZI-z.js +1984 -0
  8. package/dist/collab-BzN1ZI-z.js.map +1 -0
  9. package/dist/collab.js +2 -0
  10. package/dist/core.js +2 -0
  11. package/dist/default-worker-f546VALp.js +9196 -0
  12. package/dist/default-worker-f546VALp.js.map +1 -0
  13. package/dist/embed.js +91 -0
  14. package/dist/embed.js.map +1 -0
  15. package/dist/index.js +5 -0
  16. package/dist/office-engine.embed.js +81 -0
  17. package/dist/office-engine.worker.js +9092 -0
  18. package/dist/types/collab/codec.d.ts +3 -0
  19. package/dist/types/collab/docx.d.ts +166 -0
  20. package/dist/types/collab/hosts.d.ts +24 -0
  21. package/dist/types/collab/hub.d.ts +41 -0
  22. package/dist/types/collab/index.d.ts +43 -0
  23. package/dist/types/collab/pptx-ops.d.ts +60 -0
  24. package/dist/types/collab/pptx-worker.d.ts +35 -0
  25. package/dist/types/collab/pptx.d.ts +47 -0
  26. package/dist/types/collab/protocol.d.ts +76 -0
  27. package/dist/types/collab/react.d.ts +23 -0
  28. package/dist/types/collab/session.d.ts +115 -0
  29. package/dist/types/collab/transport.d.ts +47 -0
  30. package/dist/types/collab/xlsx-ops.d.ts +72 -0
  31. package/dist/types/collab/xlsx-worker.d.ts +29 -0
  32. package/dist/types/collab/xlsx.d.ts +51 -0
  33. package/dist/types/core/color.d.ts +25 -0
  34. package/dist/types/core/convert.d.ts +29 -0
  35. package/dist/types/core/default-worker.d.ts +1 -0
  36. package/dist/types/core/docx/numbering.d.ts +33 -0
  37. package/dist/types/core/docx/parser.d.ts +126 -0
  38. package/dist/types/core/docx/spec.d.ts +4 -0
  39. package/dist/types/core/docx/styles.d.ts +63 -0
  40. package/dist/types/core/docx/types.d.ts +325 -0
  41. package/dist/types/core/docx/writer.d.ts +35 -0
  42. package/dist/types/core/fonts.d.ts +1 -0
  43. package/dist/types/core/index.d.ts +15 -0
  44. package/dist/types/core/opc.d.ts +56 -0
  45. package/dist/types/core/pptx/edit.d.ts +10 -0
  46. package/dist/types/core/pptx/parser.d.ts +52 -0
  47. package/dist/types/core/pptx/types.d.ts +238 -0
  48. package/dist/types/core/raw.d.ts +40 -0
  49. package/dist/types/core/source.d.ts +65 -0
  50. package/dist/types/core/theme.d.ts +11 -0
  51. package/dist/types/core/units.d.ts +7 -0
  52. package/dist/types/core/worker/client.d.ts +48 -0
  53. package/dist/types/core/worker/engine.d.ts +27 -0
  54. package/dist/types/core/worker/protocol.d.ts +112 -0
  55. package/dist/types/core/worker/worker.d.ts +1 -0
  56. package/dist/types/core/xlsx/calc.d.ts +31 -0
  57. package/dist/types/core/xlsx/editor.d.ts +95 -0
  58. package/dist/types/core/xlsx/formula/assist.d.ts +35 -0
  59. package/dist/types/core/xlsx/formula/catalog.d.ts +14 -0
  60. package/dist/types/core/xlsx/formula/dates.d.ts +23 -0
  61. package/dist/types/core/xlsx/formula/evaluate.d.ts +33 -0
  62. package/dist/types/core/xlsx/formula/fn-date.d.ts +2 -0
  63. package/dist/types/core/xlsx/formula/fn-logic.d.ts +3 -0
  64. package/dist/types/core/xlsx/formula/fn-lookup.d.ts +3 -0
  65. package/dist/types/core/xlsx/formula/fn-math.d.ts +3 -0
  66. package/dist/types/core/xlsx/formula/fn-stats.d.ts +3 -0
  67. package/dist/types/core/xlsx/formula/fn-text.d.ts +3 -0
  68. package/dist/types/core/xlsx/formula/fn.d.ts +64 -0
  69. package/dist/types/core/xlsx/formula/format.d.ts +5 -0
  70. package/dist/types/core/xlsx/formula/functions.d.ts +4 -0
  71. package/dist/types/core/xlsx/formula/index.d.ts +17 -0
  72. package/dist/types/core/xlsx/formula/lexer.d.ts +54 -0
  73. package/dist/types/core/xlsx/formula/parser.d.ts +53 -0
  74. package/dist/types/core/xlsx/formula/refs.d.ts +23 -0
  75. package/dist/types/core/xlsx/formula/transform.d.ts +21 -0
  76. package/dist/types/core/xlsx/formula/types.d.ts +59 -0
  77. package/dist/types/core/xlsx/formula/values.d.ts +49 -0
  78. package/dist/types/core/xlsx/numfmt.d.ts +11 -0
  79. package/dist/types/core/xlsx/structure.d.ts +31 -0
  80. package/dist/types/core/xlsx/styles.d.ts +17 -0
  81. package/dist/types/core/xlsx/types.d.ts +193 -0
  82. package/dist/types/core/xlsx/workbook.d.ts +94 -0
  83. package/dist/types/core/xml.d.ts +80 -0
  84. package/dist/types/core/zip.d.ts +35 -0
  85. package/dist/types/core/zipwrite.d.ts +11 -0
  86. package/dist/types/embed.d.ts +30 -0
  87. package/dist/types/index.d.ts +19 -0
  88. package/dist/types/react/DocViewer.d.ts +61 -0
  89. package/dist/types/react/common/ContextMenu.d.ts +21 -0
  90. package/dist/types/react/common/Dialog.d.ts +35 -0
  91. package/dist/types/react/common/Slots.d.ts +38 -0
  92. package/dist/types/react/common/Status.d.ts +6 -0
  93. package/dist/types/react/common/ZoomControl.d.ts +6 -0
  94. package/dist/types/react/common/hooks.d.ts +20 -0
  95. package/dist/types/react/docx/DocxEditor.d.ts +172 -0
  96. package/dist/types/react/docx/DocxToolbar.d.ts +19 -0
  97. package/dist/types/react/docx/DocxView.d.ts +8 -0
  98. package/dist/types/react/docx/FindBar.d.ts +22 -0
  99. package/dist/types/react/docx/html.d.ts +8 -0
  100. package/dist/types/react/docx/render.d.ts +24 -0
  101. package/dist/types/react/docx/tables.d.ts +20 -0
  102. package/dist/types/react/edit/Toolbar.d.ts +134 -0
  103. package/dist/types/react/edit/input.d.ts +81 -0
  104. package/dist/types/react/edit/rich.d.ts +40 -0
  105. package/dist/types/react/file/DetailsDialog.d.ts +7 -0
  106. package/dist/types/react/file/FileMenu.d.ts +48 -0
  107. package/dist/types/react/file/importFile.d.ts +10 -0
  108. package/dist/types/react/file/print.d.ts +16 -0
  109. package/dist/types/react/file/text.d.ts +10 -0
  110. package/dist/types/react/injectStyles.d.ts +4 -0
  111. package/dist/types/react/pptx/PptxEditor.d.ts +95 -0
  112. package/dist/types/react/pptx/PptxToolbar.d.ts +36 -0
  113. package/dist/types/react/pptx/PptxView.d.ts +24 -0
  114. package/dist/types/react/pptx/Presenter.d.ts +9 -0
  115. package/dist/types/react/pptx/Slide.d.ts +28 -0
  116. package/dist/types/react/pptx/geometry.d.ts +5 -0
  117. package/dist/types/react/useDocument.d.ts +11 -0
  118. package/dist/types/react/xlsx/XlsxToolbar.d.ts +27 -0
  119. package/dist/types/react/xlsx/XlsxView.d.ts +18 -0
  120. package/dist/types/react/xlsx/axis.d.ts +19 -0
  121. package/dist/types/react/xlsx/print.d.ts +17 -0
  122. package/dist/xlsx-ops-CsjNpMI0.js +244 -0
  123. package/dist/xlsx-ops-CsjNpMI0.js.map +1 -0
  124. package/package.json +75 -2
@@ -0,0 +1,72 @@
1
+ /** XLSX collaboration operations (shared by the main-thread adapter and the worker) + their transforms. */
2
+ import type { CellInput, FindOptions, FmtPatch, Range, SheetOp } from '../core/xlsx/types';
3
+ /** sheets are addressed by part path: indexes move when sheets are added / reordered */
4
+ export type PBookOp = {
5
+ op: 'add';
6
+ name?: string;
7
+ after?: string;
8
+ } | {
9
+ op: 'rename';
10
+ path: string;
11
+ name: string;
12
+ } | {
13
+ op: 'delete';
14
+ path: string;
15
+ } | {
16
+ op: 'move';
17
+ path: string;
18
+ to: number;
19
+ };
20
+ export type XOp = {
21
+ t: 'set';
22
+ id: string;
23
+ sheet: string;
24
+ cells: CellInput[];
25
+ } | {
26
+ t: 'fmt';
27
+ id: string;
28
+ sheet: string;
29
+ range: Range;
30
+ patch: FmtPatch;
31
+ } | {
32
+ t: 'sheet';
33
+ id: string;
34
+ sheet: string;
35
+ op: SheetOp;
36
+ } | {
37
+ t: 'replace';
38
+ id: string;
39
+ sheet: string;
40
+ query: string;
41
+ by: string;
42
+ opts?: FindOptions;
43
+ at?: {
44
+ r: number;
45
+ c: number;
46
+ };
47
+ } | {
48
+ t: 'book';
49
+ id: string;
50
+ op: PBookOp;
51
+ }
52
+ /** sets the cells changed by op `target` back to their state before (`prev`) or after (`next`) it */
53
+ | {
54
+ t: 'revert';
55
+ id: string;
56
+ target: string;
57
+ which: 'prev' | 'next';
58
+ };
59
+ export declare const STRUCTURAL: Set<"colWidth" | "deleteCols" | "deleteRows" | "fill" | "freeze" | "gridlines" | "hideCols" | "hideRows" | "insertCols" | "insertRows" | "merge" | "rowHeight" | "sort" | "unmerge">;
60
+ export declare const isStructural: (o: XOp) => boolean;
61
+ /** index after `n` items were inserted (n > 0) or deleted (n < 0) at `at`; null when deleted */
62
+ export declare function shiftIdx(x: number, at: number, n: number): number | null;
63
+ /** inclusive span [a, b] after an insert / delete; null when entirely deleted */
64
+ export declare function shiftSpan(a: number, b: number, at: number, n: number): [number, number] | null;
65
+ /** `op` adjusted to apply after `prior` (deterministic) */
66
+ export declare function transformX(op: XOp, prior: XOp): XOp | null;
67
+ export declare function footprint(op: XOp): {
68
+ sheet: string;
69
+ range: Range;
70
+ } | null;
71
+ /** whether remote ops interact with pending local ones (→ rebase) */
72
+ export declare function conflictsX(pending: XOp[], remote: XOp[]): boolean;
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Worker side of XLSX collaboration: runs operations on the XlsxEditor without its undo
3
+ * history, keeping one exact record per applied operation (for rebasing and shared undo).
4
+ */
5
+ import type { XlsxEditor } from '../core/xlsx/editor';
6
+ import type { SheetProgress, XlsxEditResult } from '../core/xlsx/types';
7
+ import type { XlsxWorkbook } from '../core/xlsx/workbook';
8
+ import { type XOp } from './xlsx-ops';
9
+ export declare class XlsxCollabWorker {
10
+ private ed;
11
+ private wb;
12
+ private emit;
13
+ private recs;
14
+ /** op id → record of its latest application */
15
+ private byOp;
16
+ private seq;
17
+ constructor(ed: XlsxEditor, wb: XlsxWorkbook, emit: (p: SheetProgress) => void);
18
+ private index;
19
+ private sheet;
20
+ /** forgets the records of a sheet (null: all), whose cell keys / indexes changed under them */
21
+ private dropSheet;
22
+ apply(op: XOp): Promise<{
23
+ res: XlsxEditResult | null;
24
+ rec: number | null;
25
+ }>;
26
+ private run;
27
+ /** exactly undoes an applied operation (rebase) */
28
+ revert(id: number): Promise<XlsxEditResult | null>;
29
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * XLSX collaboration (main thread): turns the view's worker calls into shared operations.
3
+ * Cell edits, formatting, layout, fill / sort / replace are applied optimistically; inserting /
4
+ * deleting rows or columns and sheet-list changes wait for the hub's order. Undo / redo only
5
+ * touch the local user's own operations (shared as `revert` operations).
6
+ */
7
+ import type { DocumentClient } from '../core/worker/client';
8
+ import type { Methods } from '../core/worker/protocol';
9
+ import type { Range } from '../core/xlsx/types';
10
+ import type { Adapter, ApplyResult } from './session';
11
+ import { type XOp } from './xlsx-ops';
12
+ export interface XlsxPresence {
13
+ k: 'xlsx';
14
+ /** sheet part path */
15
+ sheet: string;
16
+ /** selected range and active cell */
17
+ range: Range;
18
+ ar: number;
19
+ ac: number;
20
+ }
21
+ /** what XlsxView publishes about the local selection */
22
+ export interface XlsxLocalSel {
23
+ sheet: number;
24
+ range: Range;
25
+ ar: number;
26
+ ac: number;
27
+ }
28
+ export declare class XlsxCollab implements Adapter<XOp> {
29
+ private client;
30
+ submit?: (op: XOp) => Promise<unknown>;
31
+ nextId?: () => string;
32
+ onPresence?: (p: XlsxPresence) => void;
33
+ private undoStack;
34
+ private redoStack;
35
+ private offLocal;
36
+ constructor(client: DocumentClient);
37
+ dispose(): void;
38
+ private get meta();
39
+ private path;
40
+ private id;
41
+ captures(method: keyof Methods): boolean;
42
+ intercept(method: keyof Methods, args: unknown[]): Promise<unknown> | undefined;
43
+ private pbook;
44
+ private local;
45
+ private history;
46
+ transform(op: XOp, prior: XOp): XOp | null;
47
+ conflicts(pending: XOp[], remote: XOp[]): boolean;
48
+ pessimistic(op: XOp): boolean;
49
+ apply(op: XOp, kind: 'local' | 'replay' | 'remote'): Promise<ApplyResult>;
50
+ revert(undo: unknown): Promise<void>;
51
+ }
@@ -0,0 +1,25 @@
1
+ import { type XEl } from './xml';
2
+ import type { Theme } from './theme';
3
+ export type RGB = [number, number, number];
4
+ export declare function hexToRgb(hex: string): RGB;
5
+ export declare function rgbToHex([r, g, b]: RGB): string;
6
+ export declare function rgbToHsl([r, g, b]: RGB): [number, number, number];
7
+ export declare function hslToRgb([h, s, l]: [number, number, number]): RGB;
8
+ /** Excel/Word style tint (-1..1) applied in HSL luminance. */
9
+ export declare function applyTint(hex: string, tint: number): string;
10
+ export interface ColorCtx {
11
+ theme?: Theme;
12
+ /** pptx clrMap: bg1→lt1 … */
13
+ clrMap?: Record<string, string>;
14
+ /** Placeholder color for style matrix references. */
15
+ phClr?: string;
16
+ }
17
+ export declare const COLOR_TAGS: Set<string>;
18
+ /** Resolves a DrawingML color element (srgbClr, schemeClr, …) to a CSS color. */
19
+ export declare function drawingColor(el: XEl, ctx: ColorCtx): string | undefined;
20
+ /** First color child of a fill-ish element (solidFill, fgClr, …). */
21
+ export declare function colorOf(parent: XEl | undefined, ctx: ColorCtx): string | undefined;
22
+ export declare const INDEXED: string[];
23
+ /** SpreadsheetML <color rgb|theme|indexed tint>. */
24
+ export declare function sheetColor(el: XEl | undefined, theme: Theme | undefined, indexed?: string[]): string | undefined;
25
+ export declare function customIndexed(stylesRoot: XEl | undefined): string[];
@@ -0,0 +1,29 @@
1
+ import type { RunSet } from './docx/types';
2
+ /** Separator of a delimited text file: tab, semicolon (European CSV) or comma. */
3
+ export declare function detectSeparator(text: string): string;
4
+ /** RFC 4180 parser (quoted fields, escaped quotes, CRLF / LF, newlines inside quotes). */
5
+ export declare function parseCsv(text: string, sep?: string): string[][];
6
+ /**
7
+ * Builds a one-sheet workbook from rows of text.
8
+ * `decimalComma`: "12,5" is a number (semicolon-separated files from comma-decimal locales).
9
+ */
10
+ export declare function rowsToXlsx(rows: string[][], sheetName?: string, decimalComma?: boolean): Promise<Blob>;
11
+ export interface ImportRun {
12
+ text: string;
13
+ set?: RunSet;
14
+ href?: string;
15
+ }
16
+ export interface ImportPara {
17
+ runs: ImportRun[];
18
+ /** heading level 1-6 */
19
+ heading?: number;
20
+ list?: 'bullet' | 'number';
21
+ }
22
+ /** One paragraph per line. */
23
+ export declare function textToParas(text: string): ImportPara[];
24
+ /** Small CommonMark subset → HTML: headings, paragraphs, lists, quotes, code blocks, rules, tables. */
25
+ export declare function markdownToHtml(md: string): string;
26
+ /** Builds a document (Letter, 1" margins, Calibri 11) from paragraphs of formatted runs. */
27
+ export declare function parasToDocx(paras: ImportPara[]): Promise<Blob>;
28
+ /** One empty title slide, 16:9, Office theme; layouts: title, title and content, blank. */
29
+ export declare function blankPptx(): Promise<Blob>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,33 @@
1
+ import type { Theme } from '../theme';
2
+ import { type XEl } from '../xml';
3
+ import type { ParaStyle, RunStyle } from './types';
4
+ export interface Level {
5
+ start: number;
6
+ fmt: string;
7
+ text: string;
8
+ ps: ParaStyle;
9
+ rs: RunStyle;
10
+ isLgl: boolean;
11
+ suff: string;
12
+ restart?: number;
13
+ }
14
+ export declare function formatNumber(n: number, fmt: string): string;
15
+ export declare class Numbering {
16
+ private abstracts;
17
+ private nums;
18
+ private counters;
19
+ constructor(root: XEl | undefined, theme: Theme);
20
+ reset(): void;
21
+ /** First list instance whose level 0 is a bullet / a number, without overrides. */
22
+ findList(kind: 'bullet' | 'number'): string | undefined;
23
+ ids(): {
24
+ abstract: number;
25
+ num: number;
26
+ };
27
+ level(numId: string, ilvl: number): Level | undefined;
28
+ /** Advances the counter for (numId, ilvl) and returns the marker text. */
29
+ next(numId: string, ilvl: number): {
30
+ text: string;
31
+ level: Level;
32
+ } | undefined;
33
+ }
@@ -0,0 +1,126 @@
1
+ import { OpcPackage, type Rels } from '../opc';
2
+ import { type Theme } from '../theme';
3
+ import { type XEl } from '../xml';
4
+ import { Numbering } from './numbering';
5
+ import { StyleSheet, type NumPr } from './styles';
6
+ import type { Block, DocxMeta, ListMarker, PageSetup, ParaStyle, RunSet, RunStyle, SrcRef, Table } from './types';
7
+ export type Layer = {
8
+ ps: ParaStyle;
9
+ rs: RunStyle;
10
+ };
11
+ export interface ParaRecord {
12
+ layer?: Layer;
13
+ num?: NumPr;
14
+ ro: boolean;
15
+ sid: string;
16
+ lst?: 'bullet' | 'number';
17
+ marker?: ListMarker;
18
+ }
19
+ /** run ordinal → original source (reconversion of generated XML) */
20
+ export interface GenRun {
21
+ src?: SrcRef;
22
+ d?: RunSet;
23
+ }
24
+ export interface ConvHooks {
25
+ /** registers an editable paragraph; returns its id */
26
+ para?(el: XEl, rec: ParaRecord): number | undefined;
27
+ forced?: {
28
+ pid: number;
29
+ root: XEl;
30
+ map: GenRun[];
31
+ layer?: Layer;
32
+ marker?: ListMarker;
33
+ rec?: ParaRecord;
34
+ };
35
+ /** body item currently being converted (tables remember it) */
36
+ item?: () => number;
37
+ }
38
+ export declare function pageSetup(sectPr: XEl | undefined): PageSetup;
39
+ /** Runs of a paragraph in preorder (the ordinal is the run's identity for write-back). */
40
+ export declare function collectRuns(p: XEl): Map<XEl, number>;
41
+ /** Paragraphs of a body item (root included) in preorder. */
42
+ export declare function collectParas(roots: XEl[], into?: Map<XEl, number>): Map<XEl, number>;
43
+ export declare function markerOf(numbering: Numbering, num: NumPr, markRs: RunStyle): {
44
+ marker: ListMarker;
45
+ lst: 'bullet' | 'number';
46
+ } | undefined;
47
+ export declare class Converter {
48
+ private styles;
49
+ private numbering;
50
+ private theme;
51
+ private rels;
52
+ private hooks;
53
+ private fields;
54
+ private tableLayer?;
55
+ private boxDepth;
56
+ private tableDepth;
57
+ private cur?;
58
+ constructor(styles: StyleSheet, numbering: Numbering, theme: Theme, rels: Rels, hooks?: ConvHooks);
59
+ blocks(el: XEl, out: Block[]): void;
60
+ paragraph(el: XEl, out: Block[]): void;
61
+ /** source reference + user formatting of a run element */
62
+ private srcOf;
63
+ private inlines;
64
+ private run;
65
+ private target;
66
+ private boxBlocks;
67
+ private drawing;
68
+ private vml;
69
+ table(el: XEl): Table;
70
+ private tableInner;
71
+ }
72
+ export interface DocxStreamCallbacks {
73
+ onBlocks(blocks: Block[]): void;
74
+ onMeta(meta: DocxMeta): void;
75
+ onProgress?(loaded: number, total: number): void;
76
+ signal?: AbortSignal;
77
+ /** Hold blocks until this much time passed so small docs render in one go (ms). */
78
+ initialHoldMs?: number;
79
+ }
80
+ export interface PInfo extends ParaRecord {
81
+ item: number;
82
+ ord: number;
83
+ }
84
+ export declare class DocxDocument {
85
+ readonly pkg: OpcPackage;
86
+ readonly mainPath: string;
87
+ rels: Rels;
88
+ readonly styles: StyleSheet;
89
+ numbering: Numbering;
90
+ readonly theme: Theme;
91
+ /** raw XML of each body child (exact source) */
92
+ items: string[];
93
+ prefix: string;
94
+ suffix: string;
95
+ info: Map<number, PInfo>;
96
+ /** where each original paragraph lives in the source (never changes) */
97
+ origLoc: Map<number, {
98
+ item: number;
99
+ ord: number;
100
+ }>;
101
+ /** original paragraph id per (item, ord) */
102
+ ordPid: Map<string, number>;
103
+ itemParas: Map<number, number[]>;
104
+ /** (item:ord) → paragraph ids now standing in for that original paragraph */
105
+ groups: Map<string, number[]>;
106
+ genXml: Map<number, string>;
107
+ /** whole body items replaced by the editor (regenerated tables; '' = deleted) */
108
+ itemXml: Map<number, string>;
109
+ private nextPid;
110
+ private captured;
111
+ private edited;
112
+ private constructor();
113
+ static open(pkg: OpcPackage, mainPath: string): Promise<DocxDocument>;
114
+ get dirty(): boolean;
115
+ markEdited(): void;
116
+ private headerFooter;
117
+ stream(cb: DocxStreamCallbacks): Promise<void>;
118
+ get ready(): boolean;
119
+ /** Re-converts generated paragraph XML into blocks (styles, list levels resolved by the engine). */
120
+ reconvert(pid: number, xml: string, map: GenRun[], layer: Layer | undefined, marker?: ListMarker): {
121
+ blocks: Block[];
122
+ rec: ParaRecord;
123
+ };
124
+ /** Recomputes list markers in document order; returns changed ones. */
125
+ recomputeMarkers(): Map<number, PInfo>;
126
+ }
@@ -0,0 +1,4 @@
1
+ import type { Inline, Paragraph, ParaSpec, SpecRun } from './types';
2
+ export declare function inlineSpec(x: Inline): SpecRun;
3
+ /** Write-back spec for a paragraph (all page-break parts sharing one pid). */
4
+ export declare function paraSpec(parts: Paragraph[]): ParaSpec;
@@ -0,0 +1,63 @@
1
+ import type { Theme } from '../theme';
2
+ import { type XEl } from '../xml';
3
+ import type { Border, CanonStyle, ParaStyle, RunStyle, StyleInfo } from './types';
4
+ export declare const HIGHLIGHT: Record<string, string>;
5
+ export declare const hexColor: (v: string | undefined) => string | undefined;
6
+ export declare function shading(el: XEl | undefined): string | undefined;
7
+ export declare function border(el: XEl | undefined): Border | undefined | null;
8
+ export declare const borderCss: (b: Border | null | undefined) => string | undefined;
9
+ export declare function readRPr(rPr: XEl | undefined, theme: Theme): RunStyle;
10
+ export interface NumPr {
11
+ numId: string;
12
+ ilvl: number;
13
+ }
14
+ export interface PPrResult {
15
+ ps: ParaStyle;
16
+ styleId?: string;
17
+ numPr?: NumPr;
18
+ sectPr?: XEl;
19
+ }
20
+ export declare function readPPr(pPr: XEl | undefined): PPrResult;
21
+ export declare const merge: <T extends object>(...parts: (T | undefined)[]) => T;
22
+ export interface ResolvedParaStyle {
23
+ ps: ParaStyle;
24
+ rs: RunStyle;
25
+ numPr?: NumPr;
26
+ }
27
+ export interface CondFormat {
28
+ rs: RunStyle;
29
+ shd?: string;
30
+ }
31
+ export interface ResolvedTableStyle {
32
+ ps: ParaStyle;
33
+ rs: RunStyle;
34
+ borders: Record<string, Border | null | undefined>;
35
+ cellMar: Partial<Record<'top' | 'left' | 'bottom' | 'right', number>>;
36
+ shd?: string;
37
+ cond: Record<string, CondFormat>;
38
+ }
39
+ export declare class StyleSheet {
40
+ private theme;
41
+ private defs;
42
+ private paraCache;
43
+ private charCache;
44
+ private tblCache;
45
+ defaultPara?: string;
46
+ defaultTable?: string;
47
+ docRs: RunStyle;
48
+ docPs: ParaStyle;
49
+ constructor(root: XEl | undefined, theme: Theme);
50
+ /** registers a style element added to styles.xml */
51
+ add(s: XEl): void;
52
+ /** ids of the built-in paragraph styles present in the document (matched by name, any locale id) */
53
+ canonical(): Partial<Record<CanonStyle, string>>;
54
+ has(id: string): boolean;
55
+ /** Paragraph styles offered in the style picker (Normal, Title, Heading 1…). */
56
+ quickStyles(): StyleInfo[];
57
+ private chain;
58
+ para(id: string | undefined): ResolvedParaStyle;
59
+ char(id: string | undefined): RunStyle;
60
+ table(id: string | undefined): ResolvedTableStyle;
61
+ }
62
+ export declare function readTableBorders(el: XEl | undefined): Record<string, Border | null | undefined>;
63
+ export declare function readMargins(el: XEl | undefined): Partial<Record<'top' | 'left' | 'bottom' | 'right', number>>;