@agile-team/mach-report 2.20.0 → 2.21.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 +6 -2
- package/dist/{ExcelBindingWizard-B7aeRg46.cjs → ExcelBindingWizard-B2xXBOJu.cjs} +1 -1
- package/dist/{ExcelBindingWizard-Chn6ZC2-.js → ExcelBindingWizard-CixTPQAL.js} +3 -3
- package/dist/{ParamEditor-BdFMa1CX.cjs → ParamEditor-DhHlNxai.cjs} +1 -1
- package/dist/{ParamEditor-o-7E7WZZ.js → ParamEditor-gKhvEsnr.js} +1 -1
- package/dist/{ReportBatchPanel-DVpmB7tG.cjs → ReportBatchPanel-BUdUfTdm.cjs} +1 -1
- package/dist/{ReportBatchPanel-CNJ4Useq.js → ReportBatchPanel-D-lyWKyf.js} +1 -1
- package/dist/ReportLabelStudio-BcjQt73a.cjs +1 -0
- package/dist/ReportLabelStudio-N2w6DdaZ.js +764 -0
- package/dist/{ReportPreview-CGcxwkAn.js → ReportPreview-BBJNlu2U.js} +8 -8
- package/dist/{ReportPreview-hlwvZ1wf.cjs → ReportPreview-nf4Dk1Jc.cjs} +2 -2
- package/dist/{ReportTemplateLibrary-DjjyZnZB.cjs → ReportTemplateLibrary-Cs9WKneQ.cjs} +1 -1
- package/dist/{ReportTemplateLibrary-DyIJhJjX.js → ReportTemplateLibrary-WZl-AK-2.js} +1 -1
- package/dist/{RuleEditor-BeknHHOD.js → RuleEditor-DGpmjCko.js} +3 -3
- package/dist/RuleEditor-Dtcq-7LO.cjs +1 -0
- package/dist/{TemplateOutlinePanel-D6TXg1aV.cjs → TemplateOutlinePanel-CkCh506f.cjs} +1 -1
- package/dist/{TemplateOutlinePanel-Bv8CxbXS.js → TemplateOutlinePanel-cxp95OT9.js} +1 -1
- package/dist/{TemplateReusePanel-CfousvPY.js → TemplateReusePanel-BZ8VTtrO.js} +2 -2
- package/dist/{TemplateReusePanel-wrSbd_mr.cjs → TemplateReusePanel-CwttuSta.cjs} +1 -1
- package/dist/{TemplateReviewPanel-BKFcSbTh.cjs → TemplateReviewPanel-C2YjiaEC.cjs} +1 -1
- package/dist/{TemplateReviewPanel-F2tqWNLO.js → TemplateReviewPanel-C9cTvsRs.js} +1 -1
- package/dist/artifact-integrity.json +90 -92
- package/dist/{assets-2eC3mOcV.js → assets-CxHunY_9.js} +2 -2
- package/dist/{assets-B0Hxn4l6.cjs → assets-vbjAGgk8.cjs} +1 -1
- package/dist/{auto-BlchZ1b8.js → auto-BkdGiNtr.js} +4 -4
- package/dist/{auto-B0EZFIK1.cjs → auto-Tq7ReIC1.cjs} +1 -1
- package/dist/{component-tree-CvW4lzpv.js → component-tree-1_QCiQJX.js} +1 -1
- package/dist/component-tree-BjZIp6w9.cjs +1 -0
- package/dist/{data-bar-PtjXhMgN.js → data-bar-8baGYEZ9.js} +1 -1
- package/dist/{data-bar-Ce38juRZ.cjs → data-bar-YltqGTaC.cjs} +1 -1
- package/dist/designer-CDqok4S5.cjs +2 -0
- package/dist/designer-CIDHt5xz.js +6869 -0
- package/dist/designer.cjs +1 -1
- package/dist/designer.d.cts +25 -3
- package/dist/designer.d.ts +25 -3
- package/dist/designer.js +1 -1
- package/dist/{encoding-B--eZpp1.cjs → encoding-B79hW4zq.cjs} +1 -1
- package/dist/{encoding-mctOLocI.js → encoding-BSeUwrN7.js} +2 -2
- package/dist/{font-loader-DBBJ5KE9.cjs → font-loader-BB372_XN.cjs} +1 -1
- package/dist/{font-loader-DW8tIaNp.js → font-loader-Di0lQKFf.js} +1 -1
- package/dist/grid-geometry-D3SJgWFv.js +136 -0
- package/dist/grid-geometry-D8ReblRV.cjs +1 -0
- package/dist/index.cjs +6 -6
- package/dist/index.js +194 -195
- package/dist/json-snapshot-I5VI84Vp.cjs +2 -0
- package/dist/{json-snapshot-By4ZVVUt.js → json-snapshot-Kgn459Oj.js} +895 -879
- package/dist/{pdf-DqyxJ96U.cjs → pdf-CARdBcuw.cjs} +45 -45
- package/dist/{pdf-CKROKygt.js → pdf-DmlnL5eB.js} +13 -14
- package/dist/pdf.cjs +1 -1
- package/dist/pdf.js +2 -2
- package/dist/{plugin-BMsIIJDh.cjs → plugin-BaRUGORD.cjs} +1 -1
- package/dist/{plugin-Co1oKD7T.js → plugin-D4kAxfLG.js} +1 -1
- package/dist/{prefill-D7EswyTI.cjs → prefill-Bpyn58AZ.cjs} +1 -1
- package/dist/{prefill-B8H9qwE4.js → prefill-CJSazcVY.js} +2 -2
- package/dist/{prepared-CGVphji3.cjs → prepared-BiSz_9vN.cjs} +1 -1
- package/dist/{prepared-BE-4jfX5.js → prepared-BwjwEzFz.js} +1 -1
- package/dist/{protocol-Cr81vFSQ.js → protocol-Bs9-ohHN.js} +3 -3
- package/dist/{protocol-ByRVzzQG.cjs → protocol-C8VWF9An.cjs} +1 -1
- package/dist/record-bindings-Ct1HkPrc.cjs +1 -0
- package/dist/{record-bindings-DEJtmo3p.js → record-bindings-VZGS-Qd8.js} +1 -1
- package/dist/{region-binding-workflow-CBg0l_tj.js → region-binding-workflow-Cy4GIOUo.js} +2 -2
- package/dist/{region-binding-workflow-D05tOYn3.cjs → region-binding-workflow-JNowHd0A.cjs} +1 -1
- package/dist/report-encoding-worker.cjs +1 -1
- package/dist/report-encoding-worker.js +1 -1
- package/dist/rich-text-layout-K48VHUoW.cjs +3 -0
- package/dist/{rich-text-layout-Ct5WrY1g.js → rich-text-layout-wxBhnAS7.js} +1 -1
- package/dist/{runtime-CEMvybO7.js → runtime-BDf5x1i1.js} +5 -5
- package/dist/runtime-DsJt1PIf.cjs +1 -0
- package/dist/sbom.cdx.json +1 -1
- package/dist/server-node.cjs +4 -4
- package/dist/server-node.js +1272 -1274
- package/dist/server.cjs +1 -1
- package/dist/server.js +8 -8
- package/dist/style.css +1 -1
- package/dist/{template-catalog-CmbWOJqy.js → template-catalog-DFwIS9aN.js} +3 -3
- package/dist/{template-catalog-Utu4GP09.cjs → template-catalog-D_2jdnkL.cjs} +1 -1
- package/dist/template-fragments-DZVUBhuB.cjs +1 -0
- package/dist/{template-fragments-DWgo9tlZ.js → template-fragments-Dng-AlHk.js} +11 -11
- package/dist/{template-registry-BIhIHOab.js → template-registry-DhBqoD7W.js} +120 -118
- package/dist/template-registry-DpLUSLwF.cjs +1 -0
- package/dist/{column-visual-BpgQVWwT.js → template-serialization-Cc3h-miv.js} +74 -65
- package/dist/{column-visual-CtYxnBCP.cjs → template-serialization-D1R5oAqh.cjs} +1 -1
- package/dist/{textwrap-BEIg2w8y.js → textwrap-CkGjRFT3.js} +1 -1
- package/dist/textwrap-OTOUMr4f.cjs +4 -0
- 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/{workbook-session-B94EwVa_.cjs → workbook-session-NYv01LHe.cjs} +1 -1
- package/dist/{workbook-session-BoScoOg-.js → workbook-session-oinxX3qo.js} +2 -2
- package/dist/worker.cjs +1 -1
- package/dist/worker.js +4 -4
- package/dist/xlsx.cjs +4 -4
- package/dist/xlsx.js +204 -205
- package/package.json +1 -1
- package/dist/ReportLabelStudio-Drsm9sAS.cjs +0 -1
- package/dist/ReportLabelStudio-r8VFnhGQ.js +0 -589
- package/dist/RuleEditor-BVuRn_OQ.cjs +0 -1
- package/dist/component-tree-6TV7W6Yj.cjs +0 -1
- package/dist/designer-B52ddmHO.js +0 -6676
- package/dist/designer-Dtsw_rh7.cjs +0 -2
- package/dist/grid-geometry-BNptEcMm.js +0 -65
- package/dist/grid-geometry-CZ_cYB6O.cjs +0 -1
- package/dist/json-snapshot-jiXff4lc.cjs +0 -2
- package/dist/record-bindings-ehjnCDHt.cjs +0 -1
- package/dist/rich-text-layout-ALlMoYOG.cjs +0 -3
- package/dist/runtime-CDA6d263.cjs +0 -1
- package/dist/style-67OqfNed.js +0 -73
- package/dist/style-C22Pbv3T.cjs +0 -1
- package/dist/template-fragments-C_zSHJAa.cjs +0 -1
- package/dist/template-registry-DzWswQI5.cjs +0 -1
- 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-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("vue");const E=require("./designer-CDqok4S5.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;
|
package/dist/designer.d.cts
CHANGED
|
@@ -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: "
|
|
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?:
|
|
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.d.ts
CHANGED
|
@@ -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: "
|
|
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?:
|
|
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,
|
|
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-CIDHt5xz.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-
|
|
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-
|
|
2
|
-
import { i, a as p, r as d, R as a, s as R } from "./protocol-
|
|
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-
|
|
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-
|
|
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;
|