@agile-team/mach-report 2.20.0 → 2.21.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 (112) hide show
  1. package/README.md +6 -2
  2. package/dist/{ExcelBindingWizard-B7aeRg46.cjs → ExcelBindingWizard-Bu0LUlzl.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Chn6ZC2-.js → ExcelBindingWizard-mnAO2qOX.js} +3 -3
  4. package/dist/{ParamEditor-BdFMa1CX.cjs → ParamEditor-38ZfNrPU.cjs} +1 -1
  5. package/dist/{ParamEditor-o-7E7WZZ.js → ParamEditor-C8l0EC8m.js} +1 -1
  6. package/dist/{ReportBatchPanel-CNJ4Useq.js → ReportBatchPanel-CfUVhvkO.js} +1 -1
  7. package/dist/{ReportBatchPanel-DVpmB7tG.cjs → ReportBatchPanel-nCC06Nfp.cjs} +1 -1
  8. package/dist/ReportLabelStudio-CaEvYuSK.cjs +1 -0
  9. package/dist/ReportLabelStudio-DQPBmh4v.js +765 -0
  10. package/dist/{ReportPreview-CGcxwkAn.js → ReportPreview-BBJNlu2U.js} +8 -8
  11. package/dist/{ReportPreview-hlwvZ1wf.cjs → ReportPreview-nf4Dk1Jc.cjs} +2 -2
  12. package/dist/{ReportTemplateLibrary-DyIJhJjX.js → ReportTemplateLibrary-B5t_EcIs.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-DjjyZnZB.cjs → ReportTemplateLibrary-DVlsf72p.cjs} +1 -1
  14. package/dist/{RuleEditor-BeknHHOD.js → RuleEditor-kT1JsZ9f.js} +3 -3
  15. package/dist/RuleEditor-xFkCVlii.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-Bv8CxbXS.js → TemplateOutlinePanel-BesgGR1P.js} +1 -1
  17. package/dist/{TemplateOutlinePanel-D6TXg1aV.cjs → TemplateOutlinePanel-CDI6mfWx.cjs} +1 -1
  18. package/dist/{TemplateReusePanel-wrSbd_mr.cjs → TemplateReusePanel-BG9Or5-P.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-CfousvPY.js → TemplateReusePanel-BNFU6V-W.js} +2 -2
  20. package/dist/{TemplateReviewPanel-BKFcSbTh.cjs → TemplateReviewPanel-BmBrjt6P.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-F2tqWNLO.js → TemplateReviewPanel-CwvwyCSs.js} +1 -1
  22. package/dist/artifact-integrity.json +90 -92
  23. package/dist/{assets-2eC3mOcV.js → assets-CxHunY_9.js} +2 -2
  24. package/dist/{assets-B0Hxn4l6.cjs → assets-vbjAGgk8.cjs} +1 -1
  25. package/dist/{auto-BlchZ1b8.js → auto-BkdGiNtr.js} +4 -4
  26. package/dist/{auto-B0EZFIK1.cjs → auto-Tq7ReIC1.cjs} +1 -1
  27. package/dist/{component-tree-CvW4lzpv.js → component-tree-1_QCiQJX.js} +1 -1
  28. package/dist/component-tree-BjZIp6w9.cjs +1 -0
  29. package/dist/{data-bar-PtjXhMgN.js → data-bar-8baGYEZ9.js} +1 -1
  30. package/dist/{data-bar-Ce38juRZ.cjs → data-bar-YltqGTaC.cjs} +1 -1
  31. package/dist/designer-DU3yDWgs.cjs +2 -0
  32. package/dist/designer-HQi-03R6.js +6869 -0
  33. package/dist/designer.cjs +1 -1
  34. package/dist/designer.d.cts +25 -3
  35. package/dist/designer.d.ts +25 -3
  36. package/dist/designer.js +1 -1
  37. package/dist/{encoding-B--eZpp1.cjs → encoding-B79hW4zq.cjs} +1 -1
  38. package/dist/{encoding-mctOLocI.js → encoding-BSeUwrN7.js} +2 -2
  39. package/dist/{font-loader-DBBJ5KE9.cjs → font-loader-BB372_XN.cjs} +1 -1
  40. package/dist/{font-loader-DW8tIaNp.js → font-loader-Di0lQKFf.js} +1 -1
  41. package/dist/grid-geometry-D3SJgWFv.js +136 -0
  42. package/dist/grid-geometry-D8ReblRV.cjs +1 -0
  43. package/dist/index.cjs +6 -6
  44. package/dist/index.js +194 -195
  45. package/dist/json-snapshot-I5VI84Vp.cjs +2 -0
  46. package/dist/{json-snapshot-By4ZVVUt.js → json-snapshot-Kgn459Oj.js} +895 -879
  47. package/dist/{pdf-DqyxJ96U.cjs → pdf-CARdBcuw.cjs} +45 -45
  48. package/dist/{pdf-CKROKygt.js → pdf-DmlnL5eB.js} +13 -14
  49. package/dist/pdf.cjs +1 -1
  50. package/dist/pdf.js +2 -2
  51. package/dist/{plugin-BMsIIJDh.cjs → plugin-BaRUGORD.cjs} +1 -1
  52. package/dist/{plugin-Co1oKD7T.js → plugin-D4kAxfLG.js} +1 -1
  53. package/dist/{prefill-D7EswyTI.cjs → prefill-Bpyn58AZ.cjs} +1 -1
  54. package/dist/{prefill-B8H9qwE4.js → prefill-CJSazcVY.js} +2 -2
  55. package/dist/{prepared-CGVphji3.cjs → prepared-BiSz_9vN.cjs} +1 -1
  56. package/dist/{prepared-BE-4jfX5.js → prepared-BwjwEzFz.js} +1 -1
  57. package/dist/{protocol-Cr81vFSQ.js → protocol-Bs9-ohHN.js} +3 -3
  58. package/dist/{protocol-ByRVzzQG.cjs → protocol-C8VWF9An.cjs} +1 -1
  59. package/dist/record-bindings-Ct1HkPrc.cjs +1 -0
  60. package/dist/{record-bindings-DEJtmo3p.js → record-bindings-VZGS-Qd8.js} +1 -1
  61. package/dist/{region-binding-workflow-CBg0l_tj.js → region-binding-workflow-Cy4GIOUo.js} +2 -2
  62. package/dist/{region-binding-workflow-D05tOYn3.cjs → region-binding-workflow-JNowHd0A.cjs} +1 -1
  63. package/dist/report-encoding-worker.cjs +1 -1
  64. package/dist/report-encoding-worker.js +1 -1
  65. package/dist/rich-text-layout-K48VHUoW.cjs +3 -0
  66. package/dist/{rich-text-layout-Ct5WrY1g.js → rich-text-layout-wxBhnAS7.js} +1 -1
  67. package/dist/{runtime-CEMvybO7.js → runtime-BDf5x1i1.js} +5 -5
  68. package/dist/runtime-DsJt1PIf.cjs +1 -0
  69. package/dist/sbom.cdx.json +1 -1
  70. package/dist/server-node.cjs +4 -4
  71. package/dist/server-node.js +1272 -1274
  72. package/dist/server.cjs +1 -1
  73. package/dist/server.js +8 -8
  74. package/dist/style.css +1 -1
  75. package/dist/{template-catalog-CmbWOJqy.js → template-catalog-DFwIS9aN.js} +3 -3
  76. package/dist/{template-catalog-Utu4GP09.cjs → template-catalog-D_2jdnkL.cjs} +1 -1
  77. package/dist/template-fragments-DZVUBhuB.cjs +1 -0
  78. package/dist/{template-fragments-DWgo9tlZ.js → template-fragments-Dng-AlHk.js} +11 -11
  79. package/dist/{template-registry-BIhIHOab.js → template-registry-DhBqoD7W.js} +120 -118
  80. package/dist/template-registry-DpLUSLwF.cjs +1 -0
  81. package/dist/{column-visual-BpgQVWwT.js → template-serialization-Cc3h-miv.js} +74 -65
  82. package/dist/{column-visual-CtYxnBCP.cjs → template-serialization-D1R5oAqh.cjs} +1 -1
  83. package/dist/{textwrap-BEIg2w8y.js → textwrap-CkGjRFT3.js} +1 -1
  84. package/dist/textwrap-OTOUMr4f.cjs +4 -0
  85. package/dist/vue-async.cjs +1 -1
  86. package/dist/vue-async.js +3 -3
  87. package/dist/vue.cjs +1 -1
  88. package/dist/vue.js +4 -4
  89. package/dist/{workbook-session-B94EwVa_.cjs → workbook-session-NYv01LHe.cjs} +1 -1
  90. package/dist/{workbook-session-BoScoOg-.js → workbook-session-oinxX3qo.js} +2 -2
  91. package/dist/worker.cjs +1 -1
  92. package/dist/worker.js +4 -4
  93. package/dist/xlsx.cjs +4 -4
  94. package/dist/xlsx.js +204 -205
  95. package/package.json +1 -1
  96. package/dist/ReportLabelStudio-Drsm9sAS.cjs +0 -1
  97. package/dist/ReportLabelStudio-r8VFnhGQ.js +0 -589
  98. package/dist/RuleEditor-BVuRn_OQ.cjs +0 -1
  99. package/dist/component-tree-6TV7W6Yj.cjs +0 -1
  100. package/dist/designer-B52ddmHO.js +0 -6676
  101. package/dist/designer-Dtsw_rh7.cjs +0 -2
  102. package/dist/grid-geometry-BNptEcMm.js +0 -65
  103. package/dist/grid-geometry-CZ_cYB6O.cjs +0 -1
  104. package/dist/json-snapshot-jiXff4lc.cjs +0 -2
  105. package/dist/record-bindings-ehjnCDHt.cjs +0 -1
  106. package/dist/rich-text-layout-ALlMoYOG.cjs +0 -3
  107. package/dist/runtime-CDA6d263.cjs +0 -1
  108. package/dist/style-67OqfNed.js +0 -73
  109. package/dist/style-C22Pbv3T.cjs +0 -1
  110. package/dist/template-fragments-C_zSHJAa.cjs +0 -1
  111. package/dist/template-registry-DzWswQI5.cjs +0 -1
  112. package/dist/textwrap-BI-yJ6Wt.cjs +0 -4
package/dist/designer.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("vue");const E=require("./designer-Dtsw_rh7.cjs");exports.COLUMN_VISUAL_MESSAGES=E.COLUMN_VISUAL_MESSAGES;exports.ChartBindingInspector=E.ChartBindingInspector;exports.ColumnVisualEditor=E.ColumnVisualEditor;exports.DESIGNER_GUIDE_MESSAGES=E.DESIGNER_GUIDE_MESSAGES;exports.EXCEL_BINDING_MESSAGES=E.EXCEL_BINDING_MESSAGES;exports.ExcelBindingWizard=E.ExcelBindingWizard;exports.LABEL_STUDIO_MESSAGES=E.LABEL_STUDIO_MESSAGES;exports.PARAM_EDITOR_MESSAGES=E.PARAM_EDITOR_MESSAGES;exports.ParamEditor=E.ParamEditor;exports.REPORT_BATCH_MESSAGES=E.REPORT_BATCH_MESSAGES;exports.RULE_EDITOR_MESSAGES=E.DEFAULT_RULE_EDITOR_MESSAGES;exports.ReportBatchPanel=E.ReportBatchPanel;exports.ReportLabelStudio=E.ReportLabelStudio;exports.ReportTemplateEditor=E.ReportTemplateEditor;exports.ReportTemplateLibrary=E.ReportTemplateLibrary;exports.RuleEditor=E.RuleEditor;exports.TEMPLATE_EDITOR_MESSAGES=E.TEMPLATE_EDITOR_MESSAGES;exports.TEMPLATE_LIBRARY_MESSAGES=E.TEMPLATE_LIBRARY_MESSAGES;exports.TEMPLATE_PRODUCT_MESSAGES=E.TEMPLATE_PRODUCT_MESSAGES;exports.TEMPLATE_RECOVERY_MESSAGES=E.TEMPLATE_RECOVERY_MESSAGES;exports.TEMPLATE_REVIEW_MESSAGES=E.TEMPLATE_REVIEW_MESSAGES;exports.TemplateOutlinePanel=E.TemplateOutlinePanel;exports.TemplateReusePanel=E.TemplateReusePanel;exports.TemplateReviewPanel=E.TemplateReviewPanel;exports.createTemplateDraftStorage=E.createTemplateDraftStorage;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("vue");const E=require("./designer-DU3yDWgs.cjs");exports.COLUMN_VISUAL_MESSAGES=E.COLUMN_VISUAL_MESSAGES;exports.ChartBindingInspector=E.ChartBindingInspector;exports.ColumnVisualEditor=E.ColumnVisualEditor;exports.DESIGNER_GUIDE_MESSAGES=E.DESIGNER_GUIDE_MESSAGES;exports.EXCEL_BINDING_MESSAGES=E.EXCEL_BINDING_MESSAGES;exports.ExcelBindingWizard=E.ExcelBindingWizard;exports.LABEL_STUDIO_MESSAGES=E.LABEL_STUDIO_MESSAGES;exports.PARAM_EDITOR_MESSAGES=E.PARAM_EDITOR_MESSAGES;exports.ParamEditor=E.ParamEditor;exports.REPORT_BATCH_MESSAGES=E.REPORT_BATCH_MESSAGES;exports.RULE_EDITOR_MESSAGES=E.DEFAULT_RULE_EDITOR_MESSAGES;exports.ReportBatchPanel=E.ReportBatchPanel;exports.ReportLabelStudio=E.ReportLabelStudio;exports.ReportTemplateEditor=E.ReportTemplateEditor;exports.ReportTemplateLibrary=E.ReportTemplateLibrary;exports.RuleEditor=E.RuleEditor;exports.TEMPLATE_EDITOR_MESSAGES=E.TEMPLATE_EDITOR_MESSAGES;exports.TEMPLATE_LIBRARY_MESSAGES=E.TEMPLATE_LIBRARY_MESSAGES;exports.TEMPLATE_PRODUCT_MESSAGES=E.TEMPLATE_PRODUCT_MESSAGES;exports.TEMPLATE_RECOVERY_MESSAGES=E.TEMPLATE_RECOVERY_MESSAGES;exports.TEMPLATE_REVIEW_MESSAGES=E.TEMPLATE_REVIEW_MESSAGES;exports.TemplateOutlinePanel=E.TemplateOutlinePanel;exports.TemplateReusePanel=E.TemplateReusePanel;exports.TemplateReviewPanel=E.TemplateReviewPanel;exports.createTemplateDraftStorage=E.createTemplateDraftStorage;
@@ -509,6 +509,15 @@ declare const DESIGNER_INSERT_MESSAGES: {
509
509
  readonly back: "返回内容类型";
510
510
  readonly duplicate: "复制组件";
511
511
  readonly newPage: "当前版面空间不足或含动态明细,内容已放到新增版面,可撤销恢复。";
512
+ readonly newPageTitle: "需要新增一个版面";
513
+ readonly newPageDescription: "当前版面没有足够空间,将新增同规格的 {width} × {height} mm 版面放置内容。";
514
+ readonly reportPageImpact: "模板版面 {before} → {after}。最终输出页数由明细分页决定。";
515
+ readonly labelPageImpact: "每份标签 {before} → {after} 个版面。每条记录的输出都会增加一个版面。";
516
+ readonly labelCountImpact: "按当前设计样本,标签数 {before} → {after} 张。";
517
+ readonly newPageConfirm: "新增版面并添加";
518
+ readonly newPageCancel: "取消添加";
519
+ readonly newPagePending: "请先确认或取消新增版面,再预览或保存。";
520
+ readonly contentTooLarge: "内容尺寸大于当前纸张的可用区域,请先调整纸张或内容尺寸。内容没有被缩小或添加。";
512
521
  readonly addColumn: "添加字段列";
513
522
  readonly removeColumn: "删除当前列";
514
523
  readonly removeLast: "至少保留一列";
@@ -979,7 +988,8 @@ export declare const LABEL_STUDIO_MESSAGES: {
979
988
  readonly count: "条记录";
980
989
  readonly invalidCopies: "份数待校验";
981
990
  readonly sheet: "A4 标签拼版";
982
- readonly sheetHint: "2 列 × 4 行,保持原尺寸";
991
+ readonly sheetHint: "{columns} 列 × {rows} 行 · 每页 {capacity} 张,保持原尺寸";
992
+ readonly sheetUnavailable: "当前版面尺寸不适合 A4 拼版,请统一版面尺寸或使用原尺寸打印。";
983
993
  readonly printHint: "先试打一张,使用同规格纸张与 100% 比例核对尺寸和扫码。";
984
994
  readonly empty: "暂无可打印记录";
985
995
  readonly save: "保存标签模板";
@@ -996,7 +1006,19 @@ export declare const LABEL_STUDIO_MESSAGES: {
996
1006
  readonly brand: "标题与品牌";
997
1007
  readonly brandName: "主标题";
998
1008
  readonly brandTagline: "副标题(可选)";
999
- readonly applyLayout: "更新标签";
1009
+ readonly applyLayout: "应用新样式";
1010
+ readonly applyContent: "更新内容";
1011
+ readonly contentHint: "标题与字段原位更新,保留手工排版和追加内容。";
1012
+ readonly contentNeedsDesign: "新增内容与现有设计重叠或缺少可识别位置,请还原轻配置后进入设计调整,或确认重建样式。";
1013
+ readonly rebuildCurrent: "重新套用所选样式";
1014
+ readonly applyLayoutFirst: "样式尚未应用,请先确认重建或还原轻配置后继续。";
1015
+ readonly rebuildTitle: "确认重建标签布局";
1016
+ readonly rebuildDescription: "将替换当前全部版面和手工调整,保留打印份数。进入设计后可撤销本次重建。";
1017
+ readonly cancelRebuild: "继续调整";
1018
+ readonly confirmRebuild: "确认重建";
1019
+ readonly invalidSavedTemplate: "保存服务返回的模板标识不一致,请重试。";
1020
+ readonly designLoading: "正在加载标签设计器…";
1021
+ readonly designLoadFailed: "标签设计器加载失败,请重试。";
1000
1022
  readonly restoreConfiguration: "还原轻配置";
1001
1023
  readonly choosePreset: "请选择成品样式后更新标签,或还原轻配置继续使用当前模板。";
1002
1024
  readonly discardTitle: "保留标签修改";
@@ -3666,7 +3688,7 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
3666
3688
  pendingLocalChanges: boolean;
3667
3689
  saving: boolean;
3668
3690
  blocked: boolean;
3669
- guardChanges: (reason?: TemplateEditorBeforeDiscardContext["reason"], replacement?: ReportTemplateDocument) => Promise<boolean>;
3691
+ guardChanges: (reason?: "reset" | "replace" | undefined, replacement?: ReportTemplateDocument | undefined) => Promise<boolean>;
3670
3692
  reset: () => Promise<void>;
3671
3693
  save: typeof saveDocument;
3672
3694
  insertComponent: (component: TemplateComponent) => boolean;
@@ -509,6 +509,15 @@ declare const DESIGNER_INSERT_MESSAGES: {
509
509
  readonly back: "返回内容类型";
510
510
  readonly duplicate: "复制组件";
511
511
  readonly newPage: "当前版面空间不足或含动态明细,内容已放到新增版面,可撤销恢复。";
512
+ readonly newPageTitle: "需要新增一个版面";
513
+ readonly newPageDescription: "当前版面没有足够空间,将新增同规格的 {width} × {height} mm 版面放置内容。";
514
+ readonly reportPageImpact: "模板版面 {before} → {after}。最终输出页数由明细分页决定。";
515
+ readonly labelPageImpact: "每份标签 {before} → {after} 个版面。每条记录的输出都会增加一个版面。";
516
+ readonly labelCountImpact: "按当前设计样本,标签数 {before} → {after} 张。";
517
+ readonly newPageConfirm: "新增版面并添加";
518
+ readonly newPageCancel: "取消添加";
519
+ readonly newPagePending: "请先确认或取消新增版面,再预览或保存。";
520
+ readonly contentTooLarge: "内容尺寸大于当前纸张的可用区域,请先调整纸张或内容尺寸。内容没有被缩小或添加。";
512
521
  readonly addColumn: "添加字段列";
513
522
  readonly removeColumn: "删除当前列";
514
523
  readonly removeLast: "至少保留一列";
@@ -979,7 +988,8 @@ export declare const LABEL_STUDIO_MESSAGES: {
979
988
  readonly count: "条记录";
980
989
  readonly invalidCopies: "份数待校验";
981
990
  readonly sheet: "A4 标签拼版";
982
- readonly sheetHint: "2 列 × 4 行,保持原尺寸";
991
+ readonly sheetHint: "{columns} 列 × {rows} 行 · 每页 {capacity} 张,保持原尺寸";
992
+ readonly sheetUnavailable: "当前版面尺寸不适合 A4 拼版,请统一版面尺寸或使用原尺寸打印。";
983
993
  readonly printHint: "先试打一张,使用同规格纸张与 100% 比例核对尺寸和扫码。";
984
994
  readonly empty: "暂无可打印记录";
985
995
  readonly save: "保存标签模板";
@@ -996,7 +1006,19 @@ export declare const LABEL_STUDIO_MESSAGES: {
996
1006
  readonly brand: "标题与品牌";
997
1007
  readonly brandName: "主标题";
998
1008
  readonly brandTagline: "副标题(可选)";
999
- readonly applyLayout: "更新标签";
1009
+ readonly applyLayout: "应用新样式";
1010
+ readonly applyContent: "更新内容";
1011
+ readonly contentHint: "标题与字段原位更新,保留手工排版和追加内容。";
1012
+ readonly contentNeedsDesign: "新增内容与现有设计重叠或缺少可识别位置,请还原轻配置后进入设计调整,或确认重建样式。";
1013
+ readonly rebuildCurrent: "重新套用所选样式";
1014
+ readonly applyLayoutFirst: "样式尚未应用,请先确认重建或还原轻配置后继续。";
1015
+ readonly rebuildTitle: "确认重建标签布局";
1016
+ readonly rebuildDescription: "将替换当前全部版面和手工调整,保留打印份数。进入设计后可撤销本次重建。";
1017
+ readonly cancelRebuild: "继续调整";
1018
+ readonly confirmRebuild: "确认重建";
1019
+ readonly invalidSavedTemplate: "保存服务返回的模板标识不一致,请重试。";
1020
+ readonly designLoading: "正在加载标签设计器…";
1021
+ readonly designLoadFailed: "标签设计器加载失败,请重试。";
1000
1022
  readonly restoreConfiguration: "还原轻配置";
1001
1023
  readonly choosePreset: "请选择成品样式后更新标签,或还原轻配置继续使用当前模板。";
1002
1024
  readonly discardTitle: "保留标签修改";
@@ -3666,7 +3688,7 @@ export declare const ReportTemplateEditor: DefineComponent<TemplateEditorOptions
3666
3688
  pendingLocalChanges: boolean;
3667
3689
  saving: boolean;
3668
3690
  blocked: boolean;
3669
- guardChanges: (reason?: TemplateEditorBeforeDiscardContext["reason"], replacement?: ReportTemplateDocument) => Promise<boolean>;
3691
+ guardChanges: (reason?: "reset" | "replace" | undefined, replacement?: ReportTemplateDocument | undefined) => Promise<boolean>;
3670
3692
  reset: () => Promise<void>;
3671
3693
  save: typeof saveDocument;
3672
3694
  insertComponent: (component: TemplateComponent) => boolean;
package/dist/designer.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "vue";
2
- import { C as e, e as s, f as t, g as T, E as _, h as A, L as R, P as r, i as M, R as l, D as i, j as o, k as G, d as L, l as p, m as P, n, a as I, b as m, o as D, T as d, p as O, q as C, r as B, s as u } from "./designer-B52ddmHO.js";
2
+ import { C as e, d as s, e as t, f as T, E as _, g as A, L as R, P as r, h as M, R as l, D as i, i as o, j as G, k as L, l as p, m as P, n, a as I, b as m, o as D, T as d, p as O, q as C, r as B, s as u } from "./designer-HQi-03R6.js";
3
3
  export {
4
4
  e as COLUMN_VISUAL_MESSAGES,
5
5
  s as ChartBindingInspector,
@@ -1 +1 @@
1
- "use strict";const s=require("./runtime-CDA6d263.cjs"),e=require("./protocol-ByRVzzQG.cjs");async function a(r,t){try{if(r.operation!=="exportPrepared")throw new TypeError("内置编码 Worker 仅接受 exportPrepared");return await e.runReportWorkerRequest(s.createReportRuntime({reports:{},budget:r.budget}),r,t)}catch(o){return{protocol:e.REPORT_WORKER_PROTOCOL,id:r.id,error:e.serializeError(o)}}}function R(r=globalThis){const t=o=>{if(!e.isReportWorkerRequest(o.data))return;const i=o.data;a(i,n=>r.postMessage({protocol:e.REPORT_WORKER_PROTOCOL,id:i.id,type:"event",event:n})).then(n=>r.postMessage(n,e.reportWorkerTransferList(n)))};return r.addEventListener("message",t),()=>r.removeEventListener("message",t)}exports.serveReportEncodingWorker=R;
1
+ "use strict";const s=require("./runtime-DsJt1PIf.cjs"),e=require("./protocol-C8VWF9An.cjs");async function a(r,t){try{if(r.operation!=="exportPrepared")throw new TypeError("内置编码 Worker 仅接受 exportPrepared");return await e.runReportWorkerRequest(s.createReportRuntime({reports:{},budget:r.budget}),r,t)}catch(o){return{protocol:e.REPORT_WORKER_PROTOCOL,id:r.id,error:e.serializeError(o)}}}function R(r=globalThis){const t=o=>{if(!e.isReportWorkerRequest(o.data))return;const i=o.data;a(i,n=>r.postMessage({protocol:e.REPORT_WORKER_PROTOCOL,id:i.id,type:"event",event:n})).then(n=>r.postMessage(n,e.reportWorkerTransferList(n)))};return r.addEventListener("message",t),()=>r.removeEventListener("message",t)}exports.serveReportEncodingWorker=R;
@@ -1,5 +1,5 @@
1
- import { c as n } from "./runtime-CEMvybO7.js";
2
- import { i, a as p, r as d, R as a, s as R } from "./protocol-Cr81vFSQ.js";
1
+ import { c as n } from "./runtime-BDf5x1i1.js";
2
+ import { i, a as p, r as d, R as a, s as R } from "./protocol-Bs9-ohHN.js";
3
3
  async function u(r, e) {
4
4
  try {
5
5
  if (r.operation !== "exportPrepared") throw new TypeError("内置编码 Worker 仅接受 exportPrepared");
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=new Map;let b=0,d={maxFonts:8,maxBytes:64*1024*1024,maxFontBytes:24*1024*1024};function O(){for(;f.size>d.maxFonts||b>d.maxBytes;){const t=f.keys().next().value;b-=f.get(t).byteLength,f.delete(t)}}function W(t){const e={...d,...t};if(!Object.values(e).every(n=>Number.isSafeInteger(n)&&n>0))throw new Error("字体缓存预算应为正整数字节/数量");d=e;for(const[n,a]of f)a.byteLength>d.maxFontBytes&&B(n);O()}function p(){return{fonts:f.size,bytes:b,...d}}function j(t){const e=f.get(t);return e&&(f.delete(t),f.set(t,e)),e}function B(t){const e=f.get(t);e&&(b-=e.byteLength),f.delete(t)}function q(){f.clear(),b=0}function H(t,e){B(t),!(e.byteLength>d.maxBytes||e.byteLength>d.maxFontBytes)&&(f.set(t,e),b+=e.byteLength,O())}const V="mach-report-fonts",u="fonts";function $(){return new Promise((t,e)=>{const n=indexedDB.open(V,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(u)||n.result.createObjectStore(u)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}function M(t){if(t instanceof Uint8Array)return{bytes:t,accessedAt:0};const e=t;return e?.bytes instanceof Uint8Array&&Number.isFinite(e.accessedAt)?e:void 0}async function C(t,e){if(typeof indexedDB>"u")return t;let n;try{return n=await $(),await e(n)}catch{return t}finally{n?.close()}}function G(t){return C(null,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u),i=o.get(t);let c=null;i.onsuccess=()=>{const s=M(i.result);s&&s.bytes.byteLength<=p().maxFontBytes?(c=s.bytes,o.put({bytes:s.bytes,accessedAt:Date.now()},t)):i.result!==void 0&&o.delete(t)},r.oncomplete=()=>n(c),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}function J(t,e,n,a){const r=p(),o=e.filter(s=>s.key!==n);t.delete(n),a.byteLength<=Math.min(r.maxFontBytes,r.maxBytes)&&o.unshift({key:n,bytes:a.byteLength,accessedAt:Date.now()}),o.sort((s,h)=>h.accessedAt-s.accessedAt);let i=0,c=0;for(const s of o){if(c>=r.maxFonts||i+s.bytes>r.maxBytes||s.bytes>r.maxFontBytes){t.delete(s.key);continue}i+=s.bytes,c++,s.key===n&&t.put({bytes:a,accessedAt:s.accessedAt},n)}}function _(t,e){return C(void 0,n=>new Promise((a,r)=>{const o=n.transaction(u,"readwrite"),i=o.objectStore(u),c=i.openCursor(),s=[];c.onsuccess=()=>{const h=c.result;if(!h){J(i,s,t,e);return}const x=M(h.value);x?s.push({key:h.key,bytes:x.bytes.byteLength,accessedAt:x.accessedAt}):h.delete(),h.continue()},o.oncomplete=()=>a(),o.onerror=()=>r(o.error),o.onabort=()=>r(o.error)}))}function D(t){return C(void 0,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u);t===void 0?o.clear():o.delete(t),r.oncomplete=()=>n(),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}let L=0,S=0,v=Promise.resolve();const g=new Map;async function N(t){l.set(t,(l.get(t)??0)+1),B(t),w.delete(t);const e=g.get(t),n=(async()=>{await v,await e,await y.get(t),await D(t)})();g.set(t,n);try{await n}finally{g.get(t)===n&&g.delete(t)}}async function I(){L++,q(),w.clear(),l.clear();const t=v,e=(async()=>{await t,await Promise.all(y.values()),await D()})();v=e.catch(()=>{}),await e}const l=new Map,y=new Map,w=new Map,E=new Set;function k(){!S&&!E.size&&l.clear()}const T=new WeakMap;function K(t){const e=new TextDecoder().decode(t.subarray(0,256));return/^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e)}function R(t){if(t.byteLength===0)throw new Error("字体文件为空");if(K(t))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件")}function Q(t){const e=T.get(t);if(e)return e;const n=(async()=>{const a=String.fromCharCode(...t.subarray(0,4));if(!["\0\0\0","true","OTTO","wOFF","wOF2","ttcf"].includes(a))throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");const{default:r}=await Promise.resolve().then(()=>require("./pdf-DqyxJ96U.cjs")).then(i=>i.fontkit_es),o=r.create(t);if(!Number.isFinite(o.unitsPerEm)||o.unitsPerEm<=0||!o.characterSet?.length||!o.numGlyphs)throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件")})();return T.set(t,n),n}function A(t,e,n=!1){const a=n?"字体加载超时,请检查网络或字体服务":e instanceof Error?e.message:String(e);return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`),{cause:e})}function P(t,e){if(t>e)throw new Error(`字体文件超过单字体下载预算(${e}字节)`)}async function X(t,e,n){const a=Number(t.headers?.get("content-length"));try{Number.isFinite(a)&&P(a,e)}catch(r){throw t.body?.cancel(r).catch(()=>{}),r}if(!t.body){const r=new Uint8Array(await F(t.arrayBuffer(),n));return P(r.byteLength,e),r}return U(t.body,e,n)}async function U(t,e,n){const a=t.getReader(),r=[];let o=0;try{for(;;){const s=await F(a.read(),n);if(s.done)break;o+=s.value.byteLength,P(o,e),r.push(s.value)}const i=new Uint8Array(o);let c=0;for(const s of r)i.set(s,c),c+=s.byteLength;return i}catch(i){throw a.cancel(i).catch(()=>{}),i}finally{a.releaseLock()}}async function Y(t,e,n){if(t[0]!==31||t[1]!==139)return t;if(typeof DecompressionStream>"u")throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");const r=new ReadableStream({start(o){o.enqueue(t),o.close()}}).pipeThrough(new DecompressionStream("gzip"));return U(r,e,n)}async function Z(t){const e=new AbortController;let n=!1;const a=setTimeout(()=>{n=!0,e.abort()},15e3);try{const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`字体请求返回 HTTP ${r.status}`);if(/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type")??""))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");const o=p().maxFontBytes,i=await X(r,o,e.signal),c=await Y(i,o,e.signal);return R(c),{bytes:c,fromCache:!1}}catch(r){throw e.abort(),A(t,r,n)}finally{clearTimeout(a)}}async function tt(t){await v,await g.get(t);const e=await G(t);if(e)try{return R(e),{bytes:e,fromCache:!0}}catch{}return Z(t)}function et(t){const e=w.get(t);if(e)return e;const n=tt(t);w.set(t,n),E.add(n);const a=()=>{w.get(t)===n&&w.delete(t),E.delete(n),k()};return n.then(a,a),n}async function nt(t,e,n,a){if((l.get(t)??0)!==n||L!==a)return;H(t,e);const r=y.get(t);if(r){await r;return}const o=_(t,e);y.set(t,o),await o,y.get(t)===o&&y.delete(t)}function m(t){return t.reason??new DOMException("字体加载已取消","AbortError")}function F(t,e){return e?e.aborted?Promise.reject(m(e)):new Promise((n,a)=>{const r=()=>{e.removeEventListener("abort",r),a(m(e))};e.addEventListener("abort",r,{once:!0}),t.then(o=>{e.removeEventListener("abort",r),n(o)},o=>{e.removeEventListener("abort",r),a(o)})}):t}async function rt(t,e,n,a,r){try{return await F(Q(e.bytes),n.signal),e.bytes}catch(o){if(n.signal?.aborted)throw m(n.signal);if((l.get(t)??0)!==a||L!==r)throw A(t,o);if(await N(t),e.fromCache)return await z(t,n);throw A(t,o)}}async function z(t,e={}){if(e.signal?.aborted)throw m(e.signal);const n=l.get(t)??0,a=L,r=j(t);if(r&&!e.strict)return r;const o=r?void 0:et(t);S++;try{const i=r?{bytes:r,fromCache:!0}:await F(o,e.signal),c=e.strict?await rt(t,i,e,n,a):i.bytes;if(e.signal?.aborted)throw m(e.signal);return r||await F(nt(t,c,n,a),e.signal),c}catch(i){if(e.signal?.aborted)throw m(e.signal);if(e.strict)throw i;return null}finally{S--,k()}}exports.clearFontCache=I;exports.configureFontCache=W;exports.getFontCacheStats=p;exports.invalidateFontCache=N;exports.loadFontWithCache=z;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=new Map;let b=0,d={maxFonts:8,maxBytes:64*1024*1024,maxFontBytes:24*1024*1024};function O(){for(;f.size>d.maxFonts||b>d.maxBytes;){const t=f.keys().next().value;b-=f.get(t).byteLength,f.delete(t)}}function W(t){const e={...d,...t};if(!Object.values(e).every(n=>Number.isSafeInteger(n)&&n>0))throw new Error("字体缓存预算应为正整数字节/数量");d=e;for(const[n,a]of f)a.byteLength>d.maxFontBytes&&B(n);O()}function p(){return{fonts:f.size,bytes:b,...d}}function j(t){const e=f.get(t);return e&&(f.delete(t),f.set(t,e)),e}function B(t){const e=f.get(t);e&&(b-=e.byteLength),f.delete(t)}function q(){f.clear(),b=0}function H(t,e){B(t),!(e.byteLength>d.maxBytes||e.byteLength>d.maxFontBytes)&&(f.set(t,e),b+=e.byteLength,O())}const V="mach-report-fonts",u="fonts";function $(){return new Promise((t,e)=>{const n=indexedDB.open(V,1);n.onupgradeneeded=()=>{n.result.objectStoreNames.contains(u)||n.result.createObjectStore(u)},n.onsuccess=()=>t(n.result),n.onerror=()=>e(n.error)})}function M(t){if(t instanceof Uint8Array)return{bytes:t,accessedAt:0};const e=t;return e?.bytes instanceof Uint8Array&&Number.isFinite(e.accessedAt)?e:void 0}async function C(t,e){if(typeof indexedDB>"u")return t;let n;try{return n=await $(),await e(n)}catch{return t}finally{n?.close()}}function G(t){return C(null,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u),i=o.get(t);let c=null;i.onsuccess=()=>{const s=M(i.result);s&&s.bytes.byteLength<=p().maxFontBytes?(c=s.bytes,o.put({bytes:s.bytes,accessedAt:Date.now()},t)):i.result!==void 0&&o.delete(t)},r.oncomplete=()=>n(c),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}function J(t,e,n,a){const r=p(),o=e.filter(s=>s.key!==n);t.delete(n),a.byteLength<=Math.min(r.maxFontBytes,r.maxBytes)&&o.unshift({key:n,bytes:a.byteLength,accessedAt:Date.now()}),o.sort((s,h)=>h.accessedAt-s.accessedAt);let i=0,c=0;for(const s of o){if(c>=r.maxFonts||i+s.bytes>r.maxBytes||s.bytes>r.maxFontBytes){t.delete(s.key);continue}i+=s.bytes,c++,s.key===n&&t.put({bytes:a,accessedAt:s.accessedAt},n)}}function _(t,e){return C(void 0,n=>new Promise((a,r)=>{const o=n.transaction(u,"readwrite"),i=o.objectStore(u),c=i.openCursor(),s=[];c.onsuccess=()=>{const h=c.result;if(!h){J(i,s,t,e);return}const x=M(h.value);x?s.push({key:h.key,bytes:x.bytes.byteLength,accessedAt:x.accessedAt}):h.delete(),h.continue()},o.oncomplete=()=>a(),o.onerror=()=>r(o.error),o.onabort=()=>r(o.error)}))}function D(t){return C(void 0,e=>new Promise((n,a)=>{const r=e.transaction(u,"readwrite"),o=r.objectStore(u);t===void 0?o.clear():o.delete(t),r.oncomplete=()=>n(),r.onerror=()=>a(r.error),r.onabort=()=>a(r.error)}))}let L=0,S=0,v=Promise.resolve();const g=new Map;async function N(t){l.set(t,(l.get(t)??0)+1),B(t),w.delete(t);const e=g.get(t),n=(async()=>{await v,await e,await y.get(t),await D(t)})();g.set(t,n);try{await n}finally{g.get(t)===n&&g.delete(t)}}async function I(){L++,q(),w.clear(),l.clear();const t=v,e=(async()=>{await t,await Promise.all(y.values()),await D()})();v=e.catch(()=>{}),await e}const l=new Map,y=new Map,w=new Map,E=new Set;function k(){!S&&!E.size&&l.clear()}const T=new WeakMap;function K(t){const e=new TextDecoder().decode(t.subarray(0,256));return/^\s*(?:\uFEFF)?\s*<(?:!doctype\s+html|html|head|body)(?:\s|>)/i.test(e)}function R(t){if(t.byteLength===0)throw new Error("字体文件为空");if(K(t))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件")}function Q(t){const e=T.get(t);if(e)return e;const n=(async()=>{const a=String.fromCharCode(...t.subarray(0,4));if(!["\0\0\0","true","OTTO","wOFF","wOF2","ttcf"].includes(a))throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");const{default:r}=await Promise.resolve().then(()=>require("./pdf-CARdBcuw.cjs")).then(i=>i.fontkit_es),o=r.create(t);if(!Number.isFinite(o.unitsPerEm)||o.unitsPerEm<=0||!o.characterSet?.length||!o.numGlyphs)throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件")})();return T.set(t,n),n}function A(t,e,n=!1){const a=n?"字体加载超时,请检查网络或字体服务":e instanceof Error?e.message:String(e);return Object.assign(new Error(`PDF 字体 ${JSON.stringify(t)} 加载失败:${a}`),{cause:e})}function P(t,e){if(t>e)throw new Error(`字体文件超过单字体下载预算(${e}字节)`)}async function X(t,e,n){const a=Number(t.headers?.get("content-length"));try{Number.isFinite(a)&&P(a,e)}catch(r){throw t.body?.cancel(r).catch(()=>{}),r}if(!t.body){const r=new Uint8Array(await F(t.arrayBuffer(),n));return P(r.byteLength,e),r}return U(t.body,e,n)}async function U(t,e,n){const a=t.getReader(),r=[];let o=0;try{for(;;){const s=await F(a.read(),n);if(s.done)break;o+=s.value.byteLength,P(o,e),r.push(s.value)}const i=new Uint8Array(o);let c=0;for(const s of r)i.set(s,c),c+=s.byteLength;return i}catch(i){throw a.cancel(i).catch(()=>{}),i}finally{a.releaseLock()}}async function Y(t,e,n){if(t[0]!==31||t[1]!==139)return t;if(typeof DecompressionStream>"u")throw new Error("当前环境不支持 gzip 字体解压,请使用未压缩的字体 URL 或支持 DecompressionStream 的浏览器 / Node 环境");const r=new ReadableStream({start(o){o.enqueue(t),o.close()}}).pipeThrough(new DecompressionStream("gzip"));return U(r,e,n)}async function Z(t){const e=new AbortController;let n=!1;const a=setTimeout(()=>{n=!0,e.abort()},15e3);try{const r=await fetch(t,{signal:e.signal});if(!r.ok)throw new Error(`字体请求返回 HTTP ${r.status}`);if(/text\/html|application\/xhtml\+xml/i.test(r.headers?.get("content-type")??""))throw new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");const o=p().maxFontBytes,i=await X(r,o,e.signal),c=await Y(i,o,e.signal);return R(c),{bytes:c,fromCache:!1}}catch(r){throw e.abort(),A(t,r,n)}finally{clearTimeout(a)}}async function tt(t){await v,await g.get(t);const e=await G(t);if(e)try{return R(e),{bytes:e,fromCache:!0}}catch{}return Z(t)}function et(t){const e=w.get(t);if(e)return e;const n=tt(t);w.set(t,n),E.add(n);const a=()=>{w.get(t)===n&&w.delete(t),E.delete(n),k()};return n.then(a,a),n}async function nt(t,e,n,a){if((l.get(t)??0)!==n||L!==a)return;H(t,e);const r=y.get(t);if(r){await r;return}const o=_(t,e);y.set(t,o),await o,y.get(t)===o&&y.delete(t)}function m(t){return t.reason??new DOMException("字体加载已取消","AbortError")}function F(t,e){return e?e.aborted?Promise.reject(m(e)):new Promise((n,a)=>{const r=()=>{e.removeEventListener("abort",r),a(m(e))};e.addEventListener("abort",r,{once:!0}),t.then(o=>{e.removeEventListener("abort",r),n(o)},o=>{e.removeEventListener("abort",r),a(o)})}):t}async function rt(t,e,n,a,r){try{return await F(Q(e.bytes),n.signal),e.bytes}catch(o){if(n.signal?.aborted)throw m(n.signal);if((l.get(t)??0)!==a||L!==r)throw A(t,o);if(await N(t),e.fromCache)return await z(t,n);throw A(t,o)}}async function z(t,e={}){if(e.signal?.aborted)throw m(e.signal);const n=l.get(t)??0,a=L,r=j(t);if(r&&!e.strict)return r;const o=r?void 0:et(t);S++;try{const i=r?{bytes:r,fromCache:!0}:await F(o,e.signal),c=e.strict?await rt(t,i,e,n,a):i.bytes;if(e.signal?.aborted)throw m(e.signal);return r||await F(nt(t,c,n,a),e.signal),c}catch(i){if(e.signal?.aborted)throw m(e.signal);if(e.strict)throw i;return null}finally{S--,k()}}exports.clearFontCache=I;exports.configureFontCache=W;exports.getFontCacheStats=p;exports.invalidateFontCache=N;exports.loadFontWithCache=z;
@@ -139,7 +139,7 @@ function I(t) {
139
139
  const a = String.fromCharCode(...t.subarray(0, 4));
140
140
  if (!["\0\0\0", "true", "OTTO", "wOFF", "wOF2", "ttcf"].includes(a))
141
141
  throw new Error("文件内容不是支持的 TTF/OTF/WOFF 字体(可能返回了 JSON 或文本)");
142
- const { default: r } = await import("./pdf-CKROKygt.js").then((i) => i.f), o = r.create(t);
142
+ const { default: r } = await import("./pdf-DmlnL5eB.js").then((i) => i.f), o = r.create(t);
143
143
  if (!Number.isFinite(o.unitsPerEm) || o.unitsPerEm <= 0 || !o.characterSet?.length || !o.numGlyphs)
144
144
  throw new Error("字体结构无效或不含可嵌入的单字体;请提供有效的 TTF/OTF/WOFF 文件");
145
145
  })();
@@ -0,0 +1,136 @@
1
+ const N = 1.35, v = 10.5, B = '"Microsoft YaHei", sans-serif', U = 0.75, R = "#333333", H = "#000000", k = "1.0.0-mach", $ = 25.4, y = 96;
2
+ function D(t = 96) {
3
+ return t / 25.4;
4
+ }
5
+ function G(t, o = 96) {
6
+ return (t || 0) * D(o);
7
+ }
8
+ function K(t, o = 96) {
9
+ return t / D(o);
10
+ }
11
+ function O(t, o = 96) {
12
+ return t * o / 72;
13
+ }
14
+ function W(t, o) {
15
+ const r = 10 ** o;
16
+ return Math.round(t * r) / r;
17
+ }
18
+ const Y = {
19
+ a3: { widthMm: 297, heightMm: 420 },
20
+ a4: { widthMm: 210, heightMm: 297 },
21
+ a5: { widthMm: 148, heightMm: 210 },
22
+ b4: { widthMm: 250, heightMm: 353 },
23
+ b5: { widthMm: 176, heightMm: 250 }
24
+ };
25
+ function j(t, o = 96, r = 10.5) {
26
+ if (t?.fontSizePx != null)
27
+ return { fontSizePt: t.fontSizePx * 72 / o, fontSizePx: t.fontSizePx };
28
+ const c = t?.fontSize ?? r;
29
+ return { fontSizePt: c, fontSizePx: O(c, o) };
30
+ }
31
+ function V(t, o = R) {
32
+ return {
33
+ color: t?.borderColor ?? t?.lineColor ?? o,
34
+ widthPt: t?.lineWidthPt ?? 0.75
35
+ };
36
+ }
37
+ function X(t, o = H) {
38
+ return t?.color ?? o;
39
+ }
40
+ function Z(t) {
41
+ return t?.lineHeight ?? 1.35;
42
+ }
43
+ function q(t) {
44
+ const o = t?.borderTop !== !1, r = t?.borderRight !== !1, c = t?.borderBottom !== !1, a = t?.borderLeft !== !1;
45
+ return { top: o, right: r, bottom: c, left: a, inner: o || r || c || a };
46
+ }
47
+ function J(t, o) {
48
+ const r = { ...t, ...o };
49
+ return o?.fontSize != null && o.fontSizePx == null && delete r.fontSizePx, o?.fontSizePx != null && o.fontSize == null && delete r.fontSize, r;
50
+ }
51
+ function b(t, o) {
52
+ const r = t.length;
53
+ if (r === 0) return [];
54
+ const c = t.reduce((l, f) => l + f, 0), a = c > 0 && o > 0 ? o / c : 1, i = [];
55
+ let S = 0;
56
+ for (let l = 0; l < r; l++) {
57
+ const f = Math.max(0, t[l] * a);
58
+ i.push({ pos: S, size: f }), S += f;
59
+ }
60
+ return i;
61
+ }
62
+ function L(t, o, r) {
63
+ return t?.length ? b(t, o) : Array.from({ length: r }, (c, a) => ({
64
+ pos: o * a / r,
65
+ size: o / r
66
+ }));
67
+ }
68
+ function Q(t, o, r) {
69
+ const c = t.cells ?? [], a = Math.max(c.length, 1), i = t.colWidthsMm?.length ?? Math.max(1, ...c.map((n) => Array.isArray(n) ? n.length : 0)), S = L(t.colWidthsMm, o, i), l = (n) => n <= 0 ? 0 : n >= i ? S[S.length - 1].pos + S[S.length - 1].size : S[n].pos, f = L(t.rowHeightsMm, r, a), d = (n) => n <= 0 ? 0 : n >= a ? f[f.length - 1].pos + f[f.length - 1].size : f[n].pos, p = /* @__PURE__ */ new Set(), g = (n, s) => `${n}:${s}`, T = [], E = /* @__PURE__ */ new Set(), x = /* @__PURE__ */ new Set(), w = (n, s) => `v${n}:${s}`, C = (n, s) => `h${n}:${s}`;
70
+ c.forEach((n, s) => {
71
+ if (!Array.isArray(n)) return;
72
+ let e = 0;
73
+ for (const m of n) {
74
+ for (; e < i && p.has(g(s, e)); ) e++;
75
+ if (e >= i) break;
76
+ const I = Math.max(1, Math.min(m?.colSpan ?? 1, i - e)), F = Math.max(1, m?.rowSpan ?? 1), M = Math.min(a, s + F), P = Math.min(i, e + I);
77
+ for (let h = s; h < M; h++)
78
+ for (let u = e; u < P; u++)
79
+ p.add(g(h, u));
80
+ for (let h = e + 1; h < P; h++)
81
+ for (let u = s; u < M; u++) E.add(w(h, u));
82
+ for (let h = s + 1; h < M; h++)
83
+ for (let u = e; u < P; u++) x.add(C(h, u));
84
+ const A = l(e), z = d(s);
85
+ T.push({
86
+ ri: s,
87
+ ci: e,
88
+ cell: m ?? {},
89
+ xMm: A,
90
+ yMm: z,
91
+ widthMm: l(P) - A,
92
+ heightMm: d(M) - z
93
+ }), e = P;
94
+ }
95
+ });
96
+ const _ = [];
97
+ for (let n = 1; n < i; n++) {
98
+ let s = -1;
99
+ for (let e = 0; e <= a; e++) {
100
+ const m = e < a && !E.has(w(n, e));
101
+ m && s < 0 && (s = e), !m && s >= 0 && (_.push({ kind: "v", pos: l(n), from: d(s), to: d(e) }), s = -1);
102
+ }
103
+ }
104
+ for (let n = 1; n < a; n++) {
105
+ let s = -1;
106
+ for (let e = 0; e <= i; e++) {
107
+ const m = e < i && !x.has(C(n, e));
108
+ m && s < 0 && (s = e), !m && s >= 0 && (_.push({ kind: "h", pos: d(n), from: l(s), to: l(e) }), s = -1);
109
+ }
110
+ }
111
+ return { columns: S, rows: f, cells: T, edges: _ };
112
+ }
113
+ export {
114
+ y as C,
115
+ B as D,
116
+ N as L,
117
+ $ as M,
118
+ Y as P,
119
+ k as S,
120
+ j as a,
121
+ W as b,
122
+ Z as c,
123
+ H as d,
124
+ V as e,
125
+ q as f,
126
+ J as g,
127
+ X as h,
128
+ U as i,
129
+ v as j,
130
+ R as k,
131
+ D as l,
132
+ G as m,
133
+ K as n,
134
+ O as p,
135
+ Q as r
136
+ };
@@ -0,0 +1 @@
1
+ "use strict";const N='"Microsoft YaHei", sans-serif';const R="#333333",O="#000000",U="1.0.0-mach";function M(o=96){return o/25.4}function v(o,t=96){return(o||0)*M(t)}function B(o,t=96){return o/M(t)}function H(o,t=96){return o*t/72}function b(o,t){const s=10**t;return Math.round(o*s)/s}const k={a3:{widthMm:297,heightMm:420},a4:{widthMm:210,heightMm:297},a5:{widthMm:148,heightMm:210},b4:{widthMm:250,heightMm:353},b5:{widthMm:176,heightMm:250}};function G(o,t=96,s=10.5){if(o?.fontSizePx!=null)return{fontSizePt:o.fontSizePx*72/t,fontSizePx:o.fontSizePx};const c=o?.fontSize??s;return{fontSizePt:c,fontSizePx:H(c,t)}}function $(o,t=R){return{color:o?.borderColor??o?.lineColor??t,widthPt:o?.lineWidthPt??.75}}function y(o,t=O){return o?.color??t}function K(o){return o?.lineHeight??1.35}function W(o){const t=o?.borderTop!==!1,s=o?.borderRight!==!1,c=o?.borderBottom!==!1,l=o?.borderLeft!==!1;return{top:t,right:s,bottom:c,left:l,inner:t||s||c||l}}function Y(o,t){const s={...o,...t};return t?.fontSize!=null&&t.fontSizePx==null&&delete s.fontSizePx,t?.fontSizePx!=null&&t.fontSize==null&&delete s.fontSize,s}function V(o,t){const s=o.length;if(s===0)return[];const c=o.reduce((f,h)=>f+h,0),l=c>0&&t>0?t/c:1,i=[];let S=0;for(let f=0;f<s;f++){const h=Math.max(0,o[f]*l);i.push({pos:S,size:h}),S+=h}return i}function I(o,t,s){return o?.length?V(o,t):Array.from({length:s},(c,l)=>({pos:t*l/s,size:t/s}))}function X(o,t,s){const c=o.cells??[],l=Math.max(c.length,1),i=o.colWidthsMm?.length??Math.max(1,...c.map(n=>Array.isArray(n)?n.length:0)),S=I(o.colWidthsMm,t,i),f=n=>n<=0?0:n>=i?S[S.length-1].pos+S[S.length-1].size:S[n].pos,h=I(o.rowHeightsMm,s,l),T=n=>n<=0?0:n>=l?h[h.length-1].pos+h[h.length-1].size:h[n].pos,d=new Set,L=(n,r)=>`${n}:${r}`,p=[],A=new Set,x=new Set,C=(n,r)=>`v${n}:${r}`,g=(n,r)=>`h${n}:${r}`;c.forEach((n,r)=>{if(!Array.isArray(n))return;let e=0;for(const a of n){for(;e<i&&d.has(L(r,e));)e++;if(e>=i)break;const w=Math.max(1,Math.min(a?.colSpan??1,i-e)),z=Math.max(1,a?.rowSpan??1),m=Math.min(l,r+z),E=Math.min(i,e+w);for(let u=r;u<m;u++)for(let _=e;_<E;_++)d.add(L(u,_));for(let u=e+1;u<E;u++)for(let _=r;_<m;_++)A.add(C(u,_));for(let u=r+1;u<m;u++)for(let _=e;_<E;_++)x.add(g(u,_));const F=f(e),D=T(r);p.push({ri:r,ci:e,cell:a??{},xMm:F,yMm:D,widthMm:f(E)-F,heightMm:T(m)-D}),e=E}});const P=[];for(let n=1;n<i;n++){let r=-1;for(let e=0;e<=l;e++){const a=e<l&&!A.has(C(n,e));a&&r<0&&(r=e),!a&&r>=0&&(P.push({kind:"v",pos:f(n),from:T(r),to:T(e)}),r=-1)}}for(let n=1;n<l;n++){let r=-1;for(let e=0;e<=i;e++){const a=e<i&&!x.has(g(n,e));a&&r<0&&(r=e),!a&&r>=0&&(P.push({kind:"h",pos:T(n),from:f(r),to:f(e)}),r=-1)}}return{columns:S,rows:h,cells:p,edges:P}}exports.CSS_DPI=96;exports.DEFAULT_BORDER_PT=.75;exports.DEFAULT_FONT_FAMILY=N;exports.DEFAULT_FONT_PT=10.5;exports.DEFAULT_STROKE_COLOR=R;exports.DEFAULT_TEXT_COLOR=O;exports.LINE_HEIGHT=1.35;exports.MM_PER_INCH=25.4;exports.PAPER_SIZES=k;exports.SCHEMA_VERSION_MACH=U;exports.mergeComponentStyles=Y;exports.mmToPx=v;exports.mmToPxFactor=M;exports.ptToPx=H;exports.pxToMm=B;exports.resolveBoxBorders=W;exports.resolveFontSize=G;exports.resolveGridLayout=X;exports.resolveLineHeight=K;exports.resolveStroke=$;exports.resolveTextColor=y;exports.round=b;