@agile-team/mach-report 2.8.4 → 2.9.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.
- package/README.md +27 -9
- package/dist/ExcelBindingWizard-DiaxvWpQ.cjs +1 -0
- package/dist/ExcelBindingWizard-RLJIXKKG.js +816 -0
- package/dist/{ReportPreview-DTWiCH5a.js → ReportPreview-B5ZNEasW.js} +22 -21
- package/dist/ReportPreview-DRtVPUYo.cjs +6 -0
- package/dist/RuleEditor-CskN5Fr3.cjs +1 -0
- package/dist/RuleEditor-CtJFzKuY.js +1578 -0
- package/dist/TemplateReviewPanel-C_Lmzis6.cjs +1 -0
- package/dist/TemplateReviewPanel-Cn32OY4_.js +173 -0
- package/dist/analytics.cjs +1 -1
- package/dist/analytics.d.cts +188 -5
- package/dist/analytics.d.ts +188 -5
- package/dist/analytics.js +68 -202
- package/dist/{assets-B9qJku3V.js → assets-DDsfEi8R.js} +3 -3
- package/dist/{assets-RZan7EyL.cjs → assets-ahTRUXRk.cjs} +1 -1
- package/dist/binding-preview-B5834rml.cjs +2 -0
- package/dist/binding-preview-ChXjN5L5.js +649 -0
- package/dist/{capabilities-joSutDF8.js → capabilities-Cm9hZ3uV.js} +5 -5
- package/dist/{capabilities-xGTpnPjJ.cjs → capabilities-DYzWL7KS.cjs} +1 -1
- package/dist/dataset-BkRmwgeJ.cjs +1 -0
- package/dist/dataset-H5pFuQGU.js +121 -0
- package/dist/defaults-DXhiM1ZD.js +10 -0
- package/dist/defaults-xhmcLLrf.cjs +1 -0
- package/dist/designer.cjs +2 -1
- package/dist/designer.d.cts +1373 -6
- package/dist/designer.d.ts +1373 -6
- package/dist/designer.js +2495 -767
- package/dist/grid-geometry-BNptEcMm.js +65 -0
- package/dist/grid-geometry-CZ_cYB6O.cjs +1 -0
- package/dist/import-template-CNMLJSQw.js +23030 -0
- package/dist/import-template-CpxunKVp.cjs +29 -0
- package/dist/index.cjs +7 -7
- package/dist/index.d.cts +202 -3
- package/dist/index.d.ts +202 -3
- package/dist/index.js +554 -535
- package/dist/matrix-CNPDJxED.js +745 -0
- package/dist/matrix-Div9Ilh3.cjs +1 -0
- package/dist/pdf.cjs +46 -46
- package/dist/pdf.d.cts +2 -0
- package/dist/pdf.d.ts +2 -0
- package/dist/pdf.js +17 -16
- package/dist/{plugin-CQmJXNcA.js → plugin-BWwIgZXV.js} +1 -1
- package/dist/{plugin-DSFu51Ua.cjs → plugin-Dg-J1Rbm.cjs} +1 -1
- package/dist/progress-7OSZbFok.js +39 -0
- package/dist/progress-BnLiS5eH.cjs +1 -0
- package/dist/render-plan-7xpGrCEl.cjs +1 -0
- package/dist/render-plan-Ck6koX9L.js +13 -0
- package/dist/server/node.d.cts +62 -0
- package/dist/server/node.d.ts +62 -0
- package/dist/server-node.cjs +1 -1
- package/dist/server-node.js +373 -145
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +311 -0
- package/dist/server.d.ts +311 -0
- package/dist/server.js +590 -186
- package/dist/{style-Dv5o_x6b.js → style-CQ1PK8ZB.js} +5 -5
- package/dist/style-UgIJSA1F.cjs +1 -0
- package/dist/style.css +1 -1
- package/dist/template-registry-CHMYZ7SD.cjs +1 -0
- package/dist/template-registry-R61AMCr0.js +433 -0
- package/dist/template-review-hvWWQFsi.js +1027 -0
- package/dist/template-review-jEcOfmGr.cjs +1 -0
- package/dist/textwrap-CWHyzkBH.cjs +4 -0
- package/dist/{textwrap-DOl04hCQ.js → textwrap-DE1kgcJB.js} +1 -1
- package/dist/{validate-DfHPD8wX.cjs → validate-BDiMqkJC.cjs} +1 -1
- package/dist/{validate-S6CgIm5d.js → validate-DWPF7icl.js} +13 -13
- package/dist/vue/async.d.cts +186 -0
- package/dist/vue/async.d.ts +186 -0
- package/dist/vue/index.d.cts +271 -3
- package/dist/vue/index.d.ts +271 -3
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +3 -3
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +4 -4
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +2 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.js +1 -1
- package/dist/xlsx.cjs +2 -30
- package/dist/xlsx.d.cts +268 -0
- package/dist/xlsx.d.ts +268 -0
- package/dist/xlsx.js +220 -23440
- package/package.json +1 -1
- package/dist/ReportPreview-DjGeWHY-.cjs +0 -6
- package/dist/progress-DD964VAB.js +0 -102
- package/dist/progress-KvhwXZ1Q.cjs +0 -1
- package/dist/render-plan-CckPEQyf.cjs +0 -1
- package/dist/render-plan-uzZYYSy1.js +0 -19
- package/dist/report-source-BXHNy_AD.js +0 -755
- package/dist/report-source-CCAvFE3t.cjs +0 -1
- package/dist/style-CpwiOPyB.cjs +0 -1
- package/dist/template-registry-DWExx0gU.cjs +0 -1
- package/dist/template-registry-NpOakidD.js +0 -354
- package/dist/textwrap-CnGsEum6.cjs +0 -4
package/dist/vue/async.d.ts
CHANGED
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import { App } from 'vue';
|
|
2
|
+
declare interface AggregateDefinition {
|
|
3
|
+
/** Output column; valueField defaults to this field. */
|
|
4
|
+
field: string;
|
|
5
|
+
op: AggregateOperation;
|
|
6
|
+
valueField?: string;
|
|
7
|
+
weightField?: string;
|
|
8
|
+
numeric?: "number" | "decimal";
|
|
9
|
+
digits?: number;
|
|
10
|
+
}
|
|
11
|
+
declare interface AggregateDefinition_2 {
|
|
12
|
+
/** Output column; valueField defaults to this field. */
|
|
13
|
+
field: string;
|
|
14
|
+
op: AggregateOperation_2;
|
|
15
|
+
valueField?: string;
|
|
16
|
+
weightField?: string;
|
|
17
|
+
numeric?: "number" | "decimal";
|
|
18
|
+
digits?: number;
|
|
19
|
+
}
|
|
20
|
+
declare type AggregateOperation = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
|
|
21
|
+
declare type AggregateOperation_2 = "sum" | "count" | "avg" | "min" | "max" | "weightedAvg";
|
|
2
22
|
declare interface AssetRenderBudget {
|
|
3
23
|
/** Maximum newly rendered assets, default 1000. Existing imageData is kept unchanged. */
|
|
4
24
|
maxAssets?: number;
|
|
@@ -140,6 +160,24 @@ declare interface ComponentStyle_3 {
|
|
|
140
160
|
opacity?: number;
|
|
141
161
|
rotateDeg?: number;
|
|
142
162
|
}
|
|
163
|
+
declare interface ComputedField extends ExpressionOptions {
|
|
164
|
+
field: string;
|
|
165
|
+
expression: ReportExpression | string;
|
|
166
|
+
/** Scope controls aggregate inputs; row expressions may reference the current row in any scope. */
|
|
167
|
+
scope?: "row" | "group" | "dataset";
|
|
168
|
+
groupBy?: readonly string[];
|
|
169
|
+
/** String adapter expressions cannot be inspected; declare dependencies explicitly. */
|
|
170
|
+
dependsOn?: readonly string[];
|
|
171
|
+
}
|
|
172
|
+
declare interface ComputedField_2 extends ExpressionOptions_2 {
|
|
173
|
+
field: string;
|
|
174
|
+
expression: ReportExpression_2 | string;
|
|
175
|
+
/** Scope controls aggregate inputs; row expressions may reference the current row in any scope. */
|
|
176
|
+
scope?: "row" | "group" | "dataset";
|
|
177
|
+
groupBy?: readonly string[];
|
|
178
|
+
/** String adapter expressions cannot be inspected; declare dependencies explicitly. */
|
|
179
|
+
dependsOn?: readonly string[];
|
|
180
|
+
}
|
|
143
181
|
declare interface DatasetContract {
|
|
144
182
|
fields: readonly ReportFieldContract[];
|
|
145
183
|
rowKey?: string;
|
|
@@ -225,6 +263,26 @@ declare interface ExcelImportResult {
|
|
|
225
263
|
warnings: string[];
|
|
226
264
|
sheets: ExcelImportedSheet[];
|
|
227
265
|
}
|
|
266
|
+
declare interface ExpressionOptions {
|
|
267
|
+
numeric?: "number" | "decimal";
|
|
268
|
+
digits?: number;
|
|
269
|
+
nulls?: "propagate" | "error";
|
|
270
|
+
divisionByZero?: "null" | "error";
|
|
271
|
+
}
|
|
272
|
+
declare interface ExpressionOptions_2 {
|
|
273
|
+
numeric?: "number" | "decimal";
|
|
274
|
+
digits?: number;
|
|
275
|
+
nulls?: "propagate" | "error";
|
|
276
|
+
divisionByZero?: "null" | "error";
|
|
277
|
+
}
|
|
278
|
+
declare interface FormulaAdapter {
|
|
279
|
+
/** Explicit trusted engine; core never evaluates source code/macros/external workbook references. */
|
|
280
|
+
evaluate(expression: string, context: {
|
|
281
|
+
row: Readonly<Record<string, unknown>>;
|
|
282
|
+
rowIndex: number;
|
|
283
|
+
rows: readonly Record<string, unknown>[];
|
|
284
|
+
}): unknown;
|
|
285
|
+
}
|
|
228
286
|
declare interface GridCell {
|
|
229
287
|
text?: string;
|
|
230
288
|
rawText?: string;
|
|
@@ -308,6 +366,9 @@ declare interface ListColumn {
|
|
|
308
366
|
valueType?: GridCell["valueType"];
|
|
309
367
|
/** 字段语义用于 auto 对齐;明确声明编号,避免把数字编号当成度量。 */
|
|
310
368
|
semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
|
|
369
|
+
hidden?: boolean;
|
|
370
|
+
/** Condition hides cell content, preserving its physical layout in preview and exports. */
|
|
371
|
+
visibleWhen?: StyleRule["when"];
|
|
311
372
|
}
|
|
312
373
|
declare interface ListColumn_2 {
|
|
313
374
|
header: string;
|
|
@@ -330,6 +391,9 @@ declare interface ListColumn_2 {
|
|
|
330
391
|
valueType?: GridCell_3["valueType"];
|
|
331
392
|
/** 字段语义用于 auto 对齐;明确声明编号,避免把数字编号当成度量。 */
|
|
332
393
|
semanticRole?: "identifier" | "dimension" | "measure" | "date" | "text";
|
|
394
|
+
hidden?: boolean;
|
|
395
|
+
/** Condition hides cell content, preserving its physical layout in preview and exports. */
|
|
396
|
+
visibleWhen?: StyleRule_2["when"];
|
|
333
397
|
}
|
|
334
398
|
declare interface ListComponent {
|
|
335
399
|
kind: "list";
|
|
@@ -363,6 +427,15 @@ declare interface ListComponent {
|
|
|
363
427
|
border?: boolean;
|
|
364
428
|
/** 分组小计(组头/组尾小计/组头防孤行) */
|
|
365
429
|
groupBy?: ListGroupBy;
|
|
430
|
+
/** Ordered outer-to-inner grouping; groupBy remains the single-level shorthand. */
|
|
431
|
+
groups?: ListGroupBy[];
|
|
432
|
+
computed?: ComputedField[];
|
|
433
|
+
/** Dynamic pivot of the current source dataset, with read-only derived identities. */
|
|
434
|
+
matrix?: MatrixTableOptions;
|
|
435
|
+
/** Explicit row visibility; hidden rows do not participate in summaries. */
|
|
436
|
+
rowVisibleWhen?: StyleRule["when"];
|
|
437
|
+
/** Master/detail relation is keyed by business identity, never by display row index. */
|
|
438
|
+
detail?: ListDetail;
|
|
366
439
|
/** 末尾总合计行(依赖 groupBy.subtotal 或显式 fields) */
|
|
367
440
|
grandTotal?: ListGrandTotal;
|
|
368
441
|
}
|
|
@@ -398,20 +471,55 @@ declare interface ListComponent_2 {
|
|
|
398
471
|
border?: boolean;
|
|
399
472
|
/** 分组小计(组头/组尾小计/组头防孤行) */
|
|
400
473
|
groupBy?: ListGroupBy_2;
|
|
474
|
+
/** Ordered outer-to-inner grouping; groupBy remains the single-level shorthand. */
|
|
475
|
+
groups?: ListGroupBy_2[];
|
|
476
|
+
computed?: ComputedField_2[];
|
|
477
|
+
/** Dynamic pivot of the current source dataset, with read-only derived identities. */
|
|
478
|
+
matrix?: MatrixTableOptions_2;
|
|
479
|
+
/** Explicit row visibility; hidden rows do not participate in summaries. */
|
|
480
|
+
rowVisibleWhen?: StyleRule_2["when"];
|
|
481
|
+
/** Master/detail relation is keyed by business identity, never by display row index. */
|
|
482
|
+
detail?: ListDetail_2;
|
|
401
483
|
/** 末尾总合计行(依赖 groupBy.subtotal 或显式 fields) */
|
|
402
484
|
grandTotal?: ListGrandTotal_2;
|
|
403
485
|
}
|
|
486
|
+
declare interface ListDetail {
|
|
487
|
+
dataset: string;
|
|
488
|
+
parentKey: string;
|
|
489
|
+
foreignKey: string;
|
|
490
|
+
rowKey?: string;
|
|
491
|
+
columns: ListColumn[];
|
|
492
|
+
rowHeightMm?: number;
|
|
493
|
+
header?: boolean;
|
|
494
|
+
label?: string;
|
|
495
|
+
/** Unmatched children fail by default; opt-in ignore is explicit. */
|
|
496
|
+
unmatched?: "error" | "ignore";
|
|
497
|
+
}
|
|
498
|
+
declare interface ListDetail_2 {
|
|
499
|
+
dataset: string;
|
|
500
|
+
parentKey: string;
|
|
501
|
+
foreignKey: string;
|
|
502
|
+
rowKey?: string;
|
|
503
|
+
columns: ListColumn_2[];
|
|
504
|
+
rowHeightMm?: number;
|
|
505
|
+
header?: boolean;
|
|
506
|
+
label?: string;
|
|
507
|
+
/** Unmatched children fail by default; opt-in ignore is explicit. */
|
|
508
|
+
unmatched?: "error" | "ignore";
|
|
509
|
+
}
|
|
404
510
|
declare type ListGrandTotal = boolean | {
|
|
405
511
|
label?: string;
|
|
406
512
|
style?: ComponentStyle;
|
|
407
513
|
/** 合计列(缺省沿用 groupBy.subtotal) */
|
|
408
514
|
fields?: string[];
|
|
515
|
+
aggregates?: AggregateDefinition[];
|
|
409
516
|
};
|
|
410
517
|
declare type ListGrandTotal_2 = boolean | {
|
|
411
518
|
label?: string;
|
|
412
519
|
style?: ComponentStyle_3;
|
|
413
520
|
/** 合计列(缺省沿用 groupBy.subtotal) */
|
|
414
521
|
fields?: string[];
|
|
522
|
+
aggregates?: AggregateDefinition_2[];
|
|
415
523
|
};
|
|
416
524
|
/** 分组小计配置(声明式,见 ListComponent.groupBy) */
|
|
417
525
|
declare interface ListGroupBy {
|
|
@@ -426,6 +534,9 @@ declare interface ListGroupBy {
|
|
|
426
534
|
subtotalLabel?: string;
|
|
427
535
|
/** 组头防孤行(默认 true:页尾放不下"组头+首行"时整体换页) */
|
|
428
536
|
keepWithNext?: boolean;
|
|
537
|
+
aggregates?: AggregateDefinition[];
|
|
538
|
+
/** Repeat this group heading after page breaks within the group. */
|
|
539
|
+
repeatHeader?: boolean;
|
|
429
540
|
}
|
|
430
541
|
/** 分组小计配置(声明式,见 ListComponent.groupBy) */
|
|
431
542
|
declare interface ListGroupBy_2 {
|
|
@@ -440,6 +551,9 @@ declare interface ListGroupBy_2 {
|
|
|
440
551
|
subtotalLabel?: string;
|
|
441
552
|
/** 组头防孤行(默认 true:页尾放不下"组头+首行"时整体换页) */
|
|
442
553
|
keepWithNext?: boolean;
|
|
554
|
+
aggregates?: AggregateDefinition_2[];
|
|
555
|
+
/** Repeat this group heading after page breaks within the group. */
|
|
556
|
+
repeatHeader?: boolean;
|
|
443
557
|
}
|
|
444
558
|
declare const machReportAsyncPlugin: {
|
|
445
559
|
install(app: App, options?: MachReportPluginOptions): void;
|
|
@@ -740,6 +854,36 @@ declare interface MachReportToolbarOptions {
|
|
|
740
854
|
/** 未传时显示全部已有出口;空数组表示不提供导出工具。 */
|
|
741
855
|
exportFormats?: ReportExportFormat[];
|
|
742
856
|
}
|
|
857
|
+
declare interface MatrixTableOptions {
|
|
858
|
+
rowFields: readonly string[];
|
|
859
|
+
columnFields: readonly string[];
|
|
860
|
+
measures: readonly (AggregateDefinition & {
|
|
861
|
+
label?: string;
|
|
862
|
+
})[];
|
|
863
|
+
totals?: boolean;
|
|
864
|
+
rowHeader?: string;
|
|
865
|
+
columnWidthMm?: number;
|
|
866
|
+
rowWidthMm?: number;
|
|
867
|
+
maxRows?: number;
|
|
868
|
+
maxColumns?: number;
|
|
869
|
+
maxInputRows?: number;
|
|
870
|
+
maxCells?: number;
|
|
871
|
+
}
|
|
872
|
+
declare interface MatrixTableOptions_2 {
|
|
873
|
+
rowFields: readonly string[];
|
|
874
|
+
columnFields: readonly string[];
|
|
875
|
+
measures: readonly (AggregateDefinition_2 & {
|
|
876
|
+
label?: string;
|
|
877
|
+
})[];
|
|
878
|
+
totals?: boolean;
|
|
879
|
+
rowHeader?: string;
|
|
880
|
+
columnWidthMm?: number;
|
|
881
|
+
rowWidthMm?: number;
|
|
882
|
+
maxRows?: number;
|
|
883
|
+
maxColumns?: number;
|
|
884
|
+
maxInputRows?: number;
|
|
885
|
+
maxCells?: number;
|
|
886
|
+
}
|
|
743
887
|
declare interface OutputDiagnostic {
|
|
744
888
|
code: "missing-image" | "unsupported-component" | "unsupported-image-format" | "unsupported-style" | "rich-text-flattened" | "nested-components-omitted" | "async-image-required" | "image-decode-failed" | "asset-render-failed" | "asset-budget-exceeded";
|
|
745
889
|
severity: "warning";
|
|
@@ -800,6 +944,14 @@ declare interface PaginateOptions {
|
|
|
800
944
|
measurer?: TextMeasurer;
|
|
801
945
|
/** 可选页数上限;在追加超限页前终止,避免先分配全部页面再检查。 */
|
|
802
946
|
maxPages?: number;
|
|
947
|
+
/** Actual grid cells, including repeated furniture and nested children; checked before each page is appended. */
|
|
948
|
+
maxCells?: number;
|
|
949
|
+
signal?: AbortSignal;
|
|
950
|
+
/** Streaming total-page anchors can skip the bounded counting pass when known. */
|
|
951
|
+
knownTotalPages?: number;
|
|
952
|
+
onWarning?: (warning: string) => void;
|
|
953
|
+
/** Trusted formula adapter is passed at execution time; it is never serialized in templates. */
|
|
954
|
+
formula?: FormulaAdapter;
|
|
803
955
|
}
|
|
804
956
|
/** PDF 导出器:RenderPlan → PDF 字节;第二参数可上报非致命保真告警。 */
|
|
805
957
|
declare interface PdfExporter {
|
|
@@ -818,6 +970,8 @@ declare interface PdfFontCheckResult {
|
|
|
818
970
|
/** available 仅表示字体资源可达;实际导出仍会校验文字能否编码。 */
|
|
819
971
|
declare type PdfFontStatus = "unchecked" | "checking" | "available" | "disabled" | "unverified" | "error";
|
|
820
972
|
declare interface PlanComponent {
|
|
973
|
+
/** Template page furniture repeats per page and reserves its vertical band. */
|
|
974
|
+
pageAnchor?: "header" | "footer";
|
|
821
975
|
kind: ComponentKind;
|
|
822
976
|
leftMm: number;
|
|
823
977
|
topMm: number;
|
|
@@ -840,6 +994,8 @@ declare interface PlanComponent {
|
|
|
840
994
|
fallbackText?: string;
|
|
841
995
|
}
|
|
842
996
|
declare interface PlanComponent_2 {
|
|
997
|
+
/** Template page furniture repeats per page and reserves its vertical band. */
|
|
998
|
+
pageAnchor?: "header" | "footer";
|
|
843
999
|
kind: ComponentKind_2;
|
|
844
1000
|
leftMm: number;
|
|
845
1001
|
topMm: number;
|
|
@@ -862,6 +1018,8 @@ declare interface PlanComponent_2 {
|
|
|
862
1018
|
fallbackText?: string;
|
|
863
1019
|
}
|
|
864
1020
|
declare interface PlanComponent_3 {
|
|
1021
|
+
/** Template page furniture repeats per page and reserves its vertical band. */
|
|
1022
|
+
pageAnchor?: "header" | "footer";
|
|
865
1023
|
kind: ComponentKind_3;
|
|
866
1024
|
leftMm: number;
|
|
867
1025
|
topMm: number;
|
|
@@ -1205,6 +1363,30 @@ declare interface ReportEmptyState {
|
|
|
1205
1363
|
}
|
|
1206
1364
|
/** 输出能力仍由宿主授权;工具偏好只决定当前预览实例的可见与启用状态。 */
|
|
1207
1365
|
declare type ReportExportFormat = "html" | "pdf" | "xlsx" | "png" | "word";
|
|
1366
|
+
declare type ReportExpression = {
|
|
1367
|
+
field: string;
|
|
1368
|
+
} | {
|
|
1369
|
+
value: string | number | boolean | null;
|
|
1370
|
+
} | {
|
|
1371
|
+
aggregate: AggregateOperation;
|
|
1372
|
+
field?: string;
|
|
1373
|
+
weightField?: string;
|
|
1374
|
+
} | {
|
|
1375
|
+
op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
|
|
1376
|
+
args: readonly ReportExpression[];
|
|
1377
|
+
};
|
|
1378
|
+
declare type ReportExpression_2 = {
|
|
1379
|
+
field: string;
|
|
1380
|
+
} | {
|
|
1381
|
+
value: string | number | boolean | null;
|
|
1382
|
+
} | {
|
|
1383
|
+
aggregate: AggregateOperation_2;
|
|
1384
|
+
field?: string;
|
|
1385
|
+
weightField?: string;
|
|
1386
|
+
} | {
|
|
1387
|
+
op: "add" | "subtract" | "multiply" | "divide" | "coalesce";
|
|
1388
|
+
args: readonly ReportExpression_2[];
|
|
1389
|
+
};
|
|
1208
1390
|
/** 保持 Promise<RenderPlan> 契约;元数据为可选,旧业务 fetcher 无需改造。 */
|
|
1209
1391
|
declare interface ReportFetcher {
|
|
1210
1392
|
(input: ReportFetchInput): Promise<RenderPlan>;
|
|
@@ -1476,6 +1658,8 @@ declare interface StyleRule {
|
|
|
1476
1658
|
field: string;
|
|
1477
1659
|
op: ">" | ">=" | "<" | "<=" | "==" | "!=";
|
|
1478
1660
|
value: number | string;
|
|
1661
|
+
/** Explicit decimal comparisons retain decimal thresholds as text. */
|
|
1662
|
+
numeric?: "number" | "decimal";
|
|
1479
1663
|
};
|
|
1480
1664
|
/** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
|
|
1481
1665
|
style: Record<string, unknown>;
|
|
@@ -1486,6 +1670,8 @@ declare interface StyleRule_2 {
|
|
|
1486
1670
|
field: string;
|
|
1487
1671
|
op: ">" | ">=" | "<" | "<=" | "==" | "!=";
|
|
1488
1672
|
value: number | string;
|
|
1673
|
+
/** Explicit decimal comparisons retain decimal thresholds as text. */
|
|
1674
|
+
numeric?: "number" | "decimal";
|
|
1489
1675
|
};
|
|
1490
1676
|
/** 命中时合并进单元格样式(color/bold/backgroundColor 等) */
|
|
1491
1677
|
style: Record<string, unknown>;
|