@agile-team/mach-report 2.11.1 → 2.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -6
- package/THIRD_PARTY_NOTICES.md +270 -0
- package/dist/{ExcelBindingWizard-LWX6G1A2.js → ExcelBindingWizard-CeAf4QSE.js} +2 -2
- package/dist/{ExcelBindingWizard-a4kslPHF.cjs → ExcelBindingWizard-y0mT-AHR.cjs} +1 -1
- package/dist/{RuleEditor-C2QsOHOs.cjs → RuleEditor-ChRzNQuF.cjs} +1 -1
- package/dist/{RuleEditor-D9wQHrkf.js → RuleEditor-DzAmW5YH.js} +1 -1
- package/dist/analytics.d.cts +28 -0
- package/dist/analytics.d.ts +28 -0
- package/dist/assets-C2U-e-Sz.cjs +4 -0
- package/dist/assets-Q0wUwNrV.js +217 -0
- package/dist/code-options-BKXXY7NI.js +18 -0
- package/dist/code-options-BUTChiZZ.cjs +1 -0
- package/dist/codes.cjs +9 -0
- package/dist/codes.d.cts +223 -0
- package/dist/codes.d.ts +223 -0
- package/dist/codes.js +26917 -0
- package/dist/designer.cjs +2 -2
- package/dist/designer.d.cts +267 -0
- package/dist/designer.d.ts +267 -0
- package/dist/designer.js +2737 -1941
- package/dist/grid-strokes-Cr7DwUux.cjs +1 -0
- package/dist/grid-strokes-DyyG1q_o.js +53 -0
- package/dist/index.cjs +7 -7
- package/dist/index.d.cts +80 -1
- package/dist/index.d.ts +80 -1
- package/dist/index.js +404 -374
- package/dist/pdf.cjs +76 -59
- package/dist/pdf.d.cts +51 -0
- package/dist/pdf.d.ts +51 -0
- package/dist/pdf.js +32193 -32102
- package/dist/record-bindings-By_UKZ2g.cjs +1 -0
- package/dist/{list-cell-ClFra1zS.js → record-bindings-D-5jQlTj.js} +67 -44
- package/dist/{region-binding-workflow-DhQvu1co.cjs → region-binding-workflow-BzfbxRiR.cjs} +1 -1
- package/dist/{region-binding-workflow-CXDmt9Bs.js → region-binding-workflow-CcUq8W2Q.js} +1 -1
- package/dist/server/node.d.cts +52 -1
- package/dist/server/node.d.ts +52 -1
- package/dist/server-node.cjs +1 -1
- package/dist/server-node.js +239 -210
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +95 -3
- package/dist/server.d.ts +95 -3
- package/dist/server.js +456 -433
- package/dist/style.css +1 -1
- package/dist/{template-registry-WNXdkiET.js → template-registry-BjE1VS6g.js} +221 -157
- package/dist/template-registry-D3SjENi6.cjs +1 -0
- package/dist/template-review-BfCC8Ng9.cjs +2 -0
- package/dist/{template-review-BdcXSYbx.js → template-review-BzpcI-tR.js} +772 -666
- package/dist/validate-BJ5HIWY8.cjs +1 -0
- package/dist/validate-DbgEM1Hh.js +163 -0
- package/dist/vue/async.d.cts +121 -2
- package/dist/vue/async.d.ts +121 -2
- package/dist/vue/index.d.cts +114 -6
- package/dist/vue/index.d.ts +114 -6
- package/dist/{workbook-session-BKOTwcoq.js → workbook-session-BPb3TMnT.js} +1 -1
- package/dist/{workbook-session-CLYLhZWu.cjs → workbook-session-DNa2RHNG.cjs} +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +52 -1
- package/dist/worker.d.ts +52 -1
- package/dist/worker.js +2 -2
- package/dist/xlsx.cjs +1 -1
- package/dist/xlsx.d.cts +40 -0
- package/dist/xlsx.d.ts +40 -0
- package/dist/xlsx.js +3 -3
- package/package.json +16 -3
- package/dist/assets-Bu6UohJx.cjs +0 -1
- package/dist/assets-DegqDNqY.js +0 -160
- package/dist/list-cell-BuYn4tGF.cjs +0 -1
- package/dist/template-registry-ukBGlm8N.cjs +0 -1
- package/dist/template-review-BXp2oyqg.cjs +0 -1
- package/dist/textwrap-CWHyzkBH.cjs +0 -4
- package/dist/textwrap-DE1kgcJB.js +0 -110
- package/dist/validate-7s0yn6ii.js +0 -148
- package/dist/validate-DsRiNw8h.cjs +0 -1
package/dist/codes.d.cts
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/** Stable failure category and field path, without echoing business payloads. */
|
|
2
|
+
export declare class CodeImageError extends Error {
|
|
3
|
+
readonly code: CodeImageErrorCode;
|
|
4
|
+
readonly path?: string;
|
|
5
|
+
readonly cause: unknown;
|
|
6
|
+
constructor(code: CodeImageErrorCode, message: string, path?: string, cause?: unknown);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare type CodeImageErrorCode = "invalid-input" | "unsupported-format" | "capacity" | "encode-failed";
|
|
10
|
+
|
|
11
|
+
export declare interface CodeImageOptions {
|
|
12
|
+
/** PNG raster resolution, default 300; independent of the preview zoom. */
|
|
13
|
+
dpi?: number;
|
|
14
|
+
/** UTF-8 payload budget, default 2048 bytes (linear symbols also cap at 256 characters). */
|
|
15
|
+
maxTextBytes?: number;
|
|
16
|
+
/** Raster allocation budget, default 4,000,000 grayscale pixels. */
|
|
17
|
+
maxPixels?: number;
|
|
18
|
+
/** Maximum width/height, default 4096 pixels. */
|
|
19
|
+
maxDimensionPx?: number;
|
|
20
|
+
/** Per-renderer successful-image LRU, default 64 entries; 0 disables caching. */
|
|
21
|
+
maxCacheEntries?: number;
|
|
22
|
+
/** Approximate retained UTF-16 key/data-URL bytes, default 8 MiB; 0 disables caching. */
|
|
23
|
+
maxCacheBytes?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Serializable symbol settings. Encoders remain in the optional /codes entry. */
|
|
27
|
+
export declare interface CodeOptions {
|
|
28
|
+
/** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
|
|
29
|
+
value?: string;
|
|
30
|
+
symbology?: "code128" | "code39" | "ean13" | "ean8";
|
|
31
|
+
errorCorrection?: "L" | "M" | "Q" | "H";
|
|
32
|
+
/** White modules around a symbol: QR >=4, linear >=10, EAN >=11. */
|
|
33
|
+
quietZoneModules?: number;
|
|
34
|
+
/** Human-readable content below a linear barcode. */
|
|
35
|
+
showText?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 列值格式化(声明式、JSON 可序列化)。
|
|
40
|
+
* 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
|
|
41
|
+
* 三后端(DOM/Canvas/PDF)零改动。
|
|
42
|
+
*
|
|
43
|
+
* 语义约定(v0.9 固化):
|
|
44
|
+
* - number.digits 显式给出 → 精确保留(12.5 + digits:2 → "12.50")
|
|
45
|
+
* - number.thousands 默认 false(千分位显式开启)
|
|
46
|
+
* - date 字符串按"本地时区的日历日"解析(YYYY-MM-DD / YYYY/MM/DD 直取年月日,
|
|
47
|
+
* 不经 Date 字符串构造——后者按 UTC 零点,负时区环境会少一天)
|
|
48
|
+
*/
|
|
49
|
+
declare type ColumnFormat = {
|
|
50
|
+
kind: "number";
|
|
51
|
+
thousands?: boolean;
|
|
52
|
+
digits?: number;
|
|
53
|
+
} | {
|
|
54
|
+
kind: "percent";
|
|
55
|
+
digits?: number;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "date";
|
|
58
|
+
pattern?: string;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/** A literal own field of the current label record; expressions and paths are not evaluated. */
|
|
62
|
+
declare interface ComponentBinding {
|
|
63
|
+
field: string;
|
|
64
|
+
format?: ValueFormat;
|
|
65
|
+
prefix?: string;
|
|
66
|
+
suffix?: string;
|
|
67
|
+
emptyText?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare interface ComponentImageContext {
|
|
71
|
+
readonly component: Readonly<PlanComponent>;
|
|
72
|
+
readonly pageIndex: number;
|
|
73
|
+
readonly componentIndex: number;
|
|
74
|
+
readonly componentPath: readonly number[];
|
|
75
|
+
readonly signal: AbortSignal;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
declare type ComponentImageRenderer = (context: ComponentImageContext) => string | Promise<string>;
|
|
79
|
+
|
|
80
|
+
declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
|
|
81
|
+
|
|
82
|
+
declare interface ComponentStyle {
|
|
83
|
+
fontSizePx?: number;
|
|
84
|
+
fontSize?: number;
|
|
85
|
+
fontFamily?: string;
|
|
86
|
+
bold?: boolean;
|
|
87
|
+
italic?: boolean;
|
|
88
|
+
underline?: boolean;
|
|
89
|
+
color?: string;
|
|
90
|
+
backgroundColor?: string;
|
|
91
|
+
align?: "left" | "center" | "right" | "justify";
|
|
92
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
93
|
+
lineColor?: string;
|
|
94
|
+
borderColor?: string;
|
|
95
|
+
lineWidthPt?: number;
|
|
96
|
+
borderTop?: boolean;
|
|
97
|
+
borderRight?: boolean;
|
|
98
|
+
borderBottom?: boolean;
|
|
99
|
+
borderLeft?: boolean;
|
|
100
|
+
lineHeight?: number;
|
|
101
|
+
letterSpacing?: number;
|
|
102
|
+
opacity?: number;
|
|
103
|
+
rotateDeg?: number;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Plug into assets.assetRenderers. Its bounded LRU stores successful images only. */
|
|
107
|
+
export declare function createCodeAssetRenderers(options?: CodeImageOptions): {
|
|
108
|
+
barcode: ComponentImageRenderer;
|
|
109
|
+
qrcode: ComponentImageRenderer;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
declare interface GridCell {
|
|
113
|
+
text?: string;
|
|
114
|
+
rawText?: string;
|
|
115
|
+
/** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
|
|
116
|
+
value?: string | number | boolean | null;
|
|
117
|
+
/** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
|
|
118
|
+
numberFormat?: string;
|
|
119
|
+
/** Physical left inset for hierarchical labels; raw value stays unchanged. */
|
|
120
|
+
indentMm?: number;
|
|
121
|
+
/** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
|
|
122
|
+
valueType?: "text" | "number" | "boolean";
|
|
123
|
+
/** 单元格级编辑控制;预览仍需显式开启 editing。 */
|
|
124
|
+
editable?: boolean;
|
|
125
|
+
source?: ReportCellSource;
|
|
126
|
+
/** SDK 派生结果不映射业务来源,始终只读(包括覆盖同名源字段的计算)。 */
|
|
127
|
+
derived?: boolean;
|
|
128
|
+
/** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
|
|
129
|
+
formula?: string;
|
|
130
|
+
children?: PlanComponent[];
|
|
131
|
+
colSpan?: number;
|
|
132
|
+
rowSpan?: number;
|
|
133
|
+
style?: ComponentStyle;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
declare interface PlanComponent {
|
|
137
|
+
/** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
|
|
138
|
+
code?: CodeOptions;
|
|
139
|
+
/** Template-only binding; resolved and removed before constructing the output plan. */
|
|
140
|
+
binding?: ComponentBinding;
|
|
141
|
+
/** Template page furniture repeats per page and reserves its vertical band. */
|
|
142
|
+
pageAnchor?: "header" | "footer";
|
|
143
|
+
kind: ComponentKind;
|
|
144
|
+
leftMm: number;
|
|
145
|
+
topMm: number;
|
|
146
|
+
widthMm: number;
|
|
147
|
+
heightMm: number;
|
|
148
|
+
nid?: string;
|
|
149
|
+
rkey?: string;
|
|
150
|
+
text?: string;
|
|
151
|
+
rawText?: string;
|
|
152
|
+
lines?: string[];
|
|
153
|
+
richParagraphs?: RichParagraph[];
|
|
154
|
+
imageData?: string;
|
|
155
|
+
/** 明确指定线段方向;省略保持历史水平线行为。 */
|
|
156
|
+
lineDirection?: "down" | "up";
|
|
157
|
+
grid?: PlanGrid;
|
|
158
|
+
table?: PlanTableFragment;
|
|
159
|
+
style?: ComponentStyle;
|
|
160
|
+
meta?: Record<string, unknown>;
|
|
161
|
+
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
162
|
+
fallbackText?: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
declare interface PlanGrid {
|
|
166
|
+
/** 行内允许 null 空位;渲染器按空单元格处理 */
|
|
167
|
+
cells: (GridCell | null)[][];
|
|
168
|
+
colWidthsMm?: number[];
|
|
169
|
+
rowHeightsMm?: number[];
|
|
170
|
+
gapMm?: number;
|
|
171
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
172
|
+
paddingMm?: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
176
|
+
declare interface PlanTableFragment {
|
|
177
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
178
|
+
id: string;
|
|
179
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
180
|
+
rowIndex: number;
|
|
181
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
182
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
183
|
+
columnKeys: string[];
|
|
184
|
+
layout?: "page" | "wide";
|
|
185
|
+
title?: string;
|
|
186
|
+
/** 只有宿主声明稳定 rowKey 时生成,不能用显示顺序替代业务主键。 */
|
|
187
|
+
source?: Omit<ReportCellSource, "field" | "rowKey"> & {
|
|
188
|
+
rowKey?: string | number;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Cross-platform PNG output. It uses no DOM, Canvas, Buffer, network or platform font service. */
|
|
193
|
+
export declare function renderCodeImage(component: Readonly<PlanComponent>, options?: CodeImageOptions, signal?: AbortSignal): Promise<string>;
|
|
194
|
+
|
|
195
|
+
/** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
|
|
196
|
+
declare interface ReportCellSource {
|
|
197
|
+
datasetId: string;
|
|
198
|
+
rowKey: string | number;
|
|
199
|
+
field: string;
|
|
200
|
+
revision?: string | number;
|
|
201
|
+
sourceToken?: string;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare interface RichParagraph {
|
|
205
|
+
segments: RichSegment[];
|
|
206
|
+
align?: ComponentStyle["align"];
|
|
207
|
+
lineHeight?: number;
|
|
208
|
+
spaceBeforeMm?: number;
|
|
209
|
+
spaceAfterMm?: number;
|
|
210
|
+
indentMm?: number;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
declare interface RichSegment {
|
|
214
|
+
kind?: "text" | "field";
|
|
215
|
+
text?: string;
|
|
216
|
+
field?: string;
|
|
217
|
+
style?: ComponentStyle;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/** The same declarative formatting used by list columns, before any output backend. */
|
|
221
|
+
declare type ValueFormat = ColumnFormat;
|
|
222
|
+
|
|
223
|
+
export { }
|
package/dist/codes.d.ts
ADDED
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
/** Stable failure category and field path, without echoing business payloads. */
|
|
2
|
+
export declare class CodeImageError extends Error {
|
|
3
|
+
readonly code: CodeImageErrorCode;
|
|
4
|
+
readonly path?: string;
|
|
5
|
+
readonly cause: unknown;
|
|
6
|
+
constructor(code: CodeImageErrorCode, message: string, path?: string, cause?: unknown);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export declare type CodeImageErrorCode = "invalid-input" | "unsupported-format" | "capacity" | "encode-failed";
|
|
10
|
+
|
|
11
|
+
export declare interface CodeImageOptions {
|
|
12
|
+
/** PNG raster resolution, default 300; independent of the preview zoom. */
|
|
13
|
+
dpi?: number;
|
|
14
|
+
/** UTF-8 payload budget, default 2048 bytes (linear symbols also cap at 256 characters). */
|
|
15
|
+
maxTextBytes?: number;
|
|
16
|
+
/** Raster allocation budget, default 4,000,000 grayscale pixels. */
|
|
17
|
+
maxPixels?: number;
|
|
18
|
+
/** Maximum width/height, default 4096 pixels. */
|
|
19
|
+
maxDimensionPx?: number;
|
|
20
|
+
/** Per-renderer successful-image LRU, default 64 entries; 0 disables caching. */
|
|
21
|
+
maxCacheEntries?: number;
|
|
22
|
+
/** Approximate retained UTF-16 key/data-URL bytes, default 8 MiB; 0 disables caching. */
|
|
23
|
+
maxCacheBytes?: number;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/** Serializable symbol settings. Encoders remain in the optional /codes entry. */
|
|
27
|
+
export declare interface CodeOptions {
|
|
28
|
+
/** Explicit content, including an empty value, takes precedence over legacy fallbackText. */
|
|
29
|
+
value?: string;
|
|
30
|
+
symbology?: "code128" | "code39" | "ean13" | "ean8";
|
|
31
|
+
errorCorrection?: "L" | "M" | "Q" | "H";
|
|
32
|
+
/** White modules around a symbol: QR >=4, linear >=10, EAN >=11. */
|
|
33
|
+
quietZoneModules?: number;
|
|
34
|
+
/** Human-readable content below a linear barcode. */
|
|
35
|
+
showText?: boolean;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* 列值格式化(声明式、JSON 可序列化)。
|
|
40
|
+
* 在 paginate 的 cellText 出口统一消费:格式化发生在进 RenderPlan 之前,
|
|
41
|
+
* 三后端(DOM/Canvas/PDF)零改动。
|
|
42
|
+
*
|
|
43
|
+
* 语义约定(v0.9 固化):
|
|
44
|
+
* - number.digits 显式给出 → 精确保留(12.5 + digits:2 → "12.50")
|
|
45
|
+
* - number.thousands 默认 false(千分位显式开启)
|
|
46
|
+
* - date 字符串按"本地时区的日历日"解析(YYYY-MM-DD / YYYY/MM/DD 直取年月日,
|
|
47
|
+
* 不经 Date 字符串构造——后者按 UTC 零点,负时区环境会少一天)
|
|
48
|
+
*/
|
|
49
|
+
declare type ColumnFormat = {
|
|
50
|
+
kind: "number";
|
|
51
|
+
thousands?: boolean;
|
|
52
|
+
digits?: number;
|
|
53
|
+
} | {
|
|
54
|
+
kind: "percent";
|
|
55
|
+
digits?: number;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "date";
|
|
58
|
+
pattern?: string;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
/** A literal own field of the current label record; expressions and paths are not evaluated. */
|
|
62
|
+
declare interface ComponentBinding {
|
|
63
|
+
field: string;
|
|
64
|
+
format?: ValueFormat;
|
|
65
|
+
prefix?: string;
|
|
66
|
+
suffix?: string;
|
|
67
|
+
emptyText?: string;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
declare interface ComponentImageContext {
|
|
71
|
+
readonly component: Readonly<PlanComponent>;
|
|
72
|
+
readonly pageIndex: number;
|
|
73
|
+
readonly componentIndex: number;
|
|
74
|
+
readonly componentPath: readonly number[];
|
|
75
|
+
readonly signal: AbortSignal;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
declare type ComponentImageRenderer = (context: ComponentImageContext) => string | Promise<string>;
|
|
79
|
+
|
|
80
|
+
declare type ComponentKind = "text" | "image" | "barcode" | "qrcode" | "chart" | "line" | "rect" | "ellipse";
|
|
81
|
+
|
|
82
|
+
declare interface ComponentStyle {
|
|
83
|
+
fontSizePx?: number;
|
|
84
|
+
fontSize?: number;
|
|
85
|
+
fontFamily?: string;
|
|
86
|
+
bold?: boolean;
|
|
87
|
+
italic?: boolean;
|
|
88
|
+
underline?: boolean;
|
|
89
|
+
color?: string;
|
|
90
|
+
backgroundColor?: string;
|
|
91
|
+
align?: "left" | "center" | "right" | "justify";
|
|
92
|
+
verticalAlign?: "top" | "middle" | "bottom";
|
|
93
|
+
lineColor?: string;
|
|
94
|
+
borderColor?: string;
|
|
95
|
+
lineWidthPt?: number;
|
|
96
|
+
borderTop?: boolean;
|
|
97
|
+
borderRight?: boolean;
|
|
98
|
+
borderBottom?: boolean;
|
|
99
|
+
borderLeft?: boolean;
|
|
100
|
+
lineHeight?: number;
|
|
101
|
+
letterSpacing?: number;
|
|
102
|
+
opacity?: number;
|
|
103
|
+
rotateDeg?: number;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Plug into assets.assetRenderers. Its bounded LRU stores successful images only. */
|
|
107
|
+
export declare function createCodeAssetRenderers(options?: CodeImageOptions): {
|
|
108
|
+
barcode: ComponentImageRenderer;
|
|
109
|
+
qrcode: ComponentImageRenderer;
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
declare interface GridCell {
|
|
113
|
+
text?: string;
|
|
114
|
+
rawText?: string;
|
|
115
|
+
/** 原始值,仅供 Excel raw 模式消费;不参与预览、分页与 PDF 绘制。 */
|
|
116
|
+
value?: string | number | boolean | null;
|
|
117
|
+
/** Excel 数字格式(例如 #,##0.00 / 0.00%),不改变 text。 */
|
|
118
|
+
numberFormat?: string;
|
|
119
|
+
/** Physical left inset for hierarchical labels; raw value stays unchanged. */
|
|
120
|
+
indentMm?: number;
|
|
121
|
+
/** 编辑输入类型;省略时只按原始值推断,数字字符串不会被转换为数值。 */
|
|
122
|
+
valueType?: "text" | "number" | "boolean";
|
|
123
|
+
/** 单元格级编辑控制;预览仍需显式开启 editing。 */
|
|
124
|
+
editable?: boolean;
|
|
125
|
+
source?: ReportCellSource;
|
|
126
|
+
/** SDK 派生结果不映射业务来源,始终只读(包括覆盖同名源字段的计算)。 */
|
|
127
|
+
derived?: boolean;
|
|
128
|
+
/** Excel 公式保留元数据;当前引擎不计算公式,公式格始终只读。 */
|
|
129
|
+
formula?: string;
|
|
130
|
+
children?: PlanComponent[];
|
|
131
|
+
colSpan?: number;
|
|
132
|
+
rowSpan?: number;
|
|
133
|
+
style?: ComponentStyle;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
declare interface PlanComponent {
|
|
137
|
+
/** Optional QR/barcode encoding configuration; no encoder is loaded by the core. */
|
|
138
|
+
code?: CodeOptions;
|
|
139
|
+
/** Template-only binding; resolved and removed before constructing the output plan. */
|
|
140
|
+
binding?: ComponentBinding;
|
|
141
|
+
/** Template page furniture repeats per page and reserves its vertical band. */
|
|
142
|
+
pageAnchor?: "header" | "footer";
|
|
143
|
+
kind: ComponentKind;
|
|
144
|
+
leftMm: number;
|
|
145
|
+
topMm: number;
|
|
146
|
+
widthMm: number;
|
|
147
|
+
heightMm: number;
|
|
148
|
+
nid?: string;
|
|
149
|
+
rkey?: string;
|
|
150
|
+
text?: string;
|
|
151
|
+
rawText?: string;
|
|
152
|
+
lines?: string[];
|
|
153
|
+
richParagraphs?: RichParagraph[];
|
|
154
|
+
imageData?: string;
|
|
155
|
+
/** 明确指定线段方向;省略保持历史水平线行为。 */
|
|
156
|
+
lineDirection?: "down" | "up";
|
|
157
|
+
grid?: PlanGrid;
|
|
158
|
+
table?: PlanTableFragment;
|
|
159
|
+
style?: ComponentStyle;
|
|
160
|
+
meta?: Record<string, unknown>;
|
|
161
|
+
/** MachReport 扩展字段:未知 kind 的兜底渲染标记 */
|
|
162
|
+
fallbackText?: string;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
declare interface PlanGrid {
|
|
166
|
+
/** 行内允许 null 空位;渲染器按空单元格处理 */
|
|
167
|
+
cells: (GridCell | null)[][];
|
|
168
|
+
colWidthsMm?: number[];
|
|
169
|
+
rowHeightsMm?: number[];
|
|
170
|
+
gapMm?: number;
|
|
171
|
+
/** 单元格四边内距;旧静态网格默认 0.5mm,分页列表使用其真实测量内距。 */
|
|
172
|
+
paddingMm?: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/** 列表的逻辑行来源;用于连续 Excel 重组,避免按文本猜测重复表头。 */
|
|
176
|
+
declare interface PlanTableFragment {
|
|
177
|
+
/** 在整个计划中唯一的逻辑表身份;同一表的分页片段共享身份。 */
|
|
178
|
+
id: string;
|
|
179
|
+
/** 表头固定 -1;其余行(包括组头/小计/总计)从 0 连续递增。 */
|
|
180
|
+
rowIndex: number;
|
|
181
|
+
role: "header" | "body" | "group-header" | "subtotal" | "grand-total";
|
|
182
|
+
/** 按物理列顺序保存字段身份;不以表头显示文本判断列结构。 */
|
|
183
|
+
columnKeys: string[];
|
|
184
|
+
layout?: "page" | "wide";
|
|
185
|
+
title?: string;
|
|
186
|
+
/** 只有宿主声明稳定 rowKey 时生成,不能用显示顺序替代业务主键。 */
|
|
187
|
+
source?: Omit<ReportCellSource, "field" | "rowKey"> & {
|
|
188
|
+
rowKey?: string | number;
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/** Cross-platform PNG output. It uses no DOM, Canvas, Buffer, network or platform font service. */
|
|
193
|
+
export declare function renderCodeImage(component: Readonly<PlanComponent>, options?: CodeImageOptions, signal?: AbortSignal): Promise<string>;
|
|
194
|
+
|
|
195
|
+
/** 可持久化的业务身份与计划坐标独立;权限及并发校验仍由业务服务器执行。 */
|
|
196
|
+
declare interface ReportCellSource {
|
|
197
|
+
datasetId: string;
|
|
198
|
+
rowKey: string | number;
|
|
199
|
+
field: string;
|
|
200
|
+
revision?: string | number;
|
|
201
|
+
sourceToken?: string;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
declare interface RichParagraph {
|
|
205
|
+
segments: RichSegment[];
|
|
206
|
+
align?: ComponentStyle["align"];
|
|
207
|
+
lineHeight?: number;
|
|
208
|
+
spaceBeforeMm?: number;
|
|
209
|
+
spaceAfterMm?: number;
|
|
210
|
+
indentMm?: number;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
declare interface RichSegment {
|
|
214
|
+
kind?: "text" | "field";
|
|
215
|
+
text?: string;
|
|
216
|
+
field?: string;
|
|
217
|
+
style?: ComponentStyle;
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
/** The same declarative formatting used by list columns, before any output backend. */
|
|
221
|
+
declare type ValueFormat = ColumnFormat;
|
|
222
|
+
|
|
223
|
+
export { }
|