@agile-team/mach-report 2.12.0 → 2.14.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.
Files changed (97) hide show
  1. package/README.md +27 -3
  2. package/dist/ExcelBindingWizard-CLT2p7P3.cjs +1 -0
  3. package/dist/ExcelBindingWizard-CvsWR8Ga.js +1485 -0
  4. package/dist/{ParamEditor-BLaE5q5W.js → ParamEditor-CflQV3eQ.js} +191 -187
  5. package/dist/ParamEditor-vIDzvpPV.cjs +1 -0
  6. package/dist/ReportBatchPanel-DkxTzBkD.cjs +1 -0
  7. package/dist/{ReportBatchPanel-B5ClP9tm.js → ReportBatchPanel-LqVgiqp7.js} +3 -3
  8. package/dist/ReportPreview-CvbqLUzM.cjs +6 -0
  9. package/dist/ReportPreview-D_ywJ_-H.js +4533 -0
  10. package/dist/{ReportTemplateLibrary-BZB-XWjj.js → ReportTemplateLibrary-MjWEtc7X.js} +1 -1
  11. package/dist/ReportTemplateLibrary-cQ1sqNYo.cjs +1 -0
  12. package/dist/RuleEditor-BaR6xUiI.cjs +1 -0
  13. package/dist/RuleEditor-ChuXMlei.js +2037 -0
  14. package/dist/TemplateOutlinePanel-BHKP89Xz.cjs +1 -0
  15. package/dist/TemplateOutlinePanel-Dci6aRn1.js +96 -0
  16. package/dist/TemplateReusePanel-B7Gmyc1z.js +388 -0
  17. package/dist/TemplateReusePanel-CY5eO2Sh.cjs +1 -0
  18. package/dist/TemplateReviewPanel-DjlX3xpt.js +592 -0
  19. package/dist/TemplateReviewPanel-JvZe9_4G.cjs +1 -0
  20. package/dist/{batch-mRqhhhjt.js → batch-DzaTNLWI.js} +23 -16
  21. package/dist/batch-xMkqYiTr.cjs +1 -0
  22. package/dist/config-0UIohTS7.cjs +1 -0
  23. package/dist/{config-B612mw0x.js → config-Dt9NtCPl.js} +227 -186
  24. package/dist/data-explanation-BktvER5B.cjs +1 -0
  25. package/dist/data-explanation-C_J6jYNi.js +16 -0
  26. package/dist/designer-Ci1LizA9.js +5020 -0
  27. package/dist/designer-rtmVIIdN.cjs +2 -0
  28. package/dist/designer.cjs +1 -2
  29. package/dist/designer.d.cts +306 -3
  30. package/dist/designer.d.ts +306 -3
  31. package/dist/designer.js +21 -4266
  32. package/dist/font-loader-DHto6Lra.js +297 -0
  33. package/dist/font-loader-vhCT8znW.cjs +1 -0
  34. package/dist/index.cjs +8 -8
  35. package/dist/index.d.cts +182 -1
  36. package/dist/index.d.ts +182 -1
  37. package/dist/index.js +728 -628
  38. package/dist/{template-review-BzpcI-tR.js → json-snapshot-BeFT3Tso.js} +867 -637
  39. package/dist/json-snapshot-D1NTP2oI.cjs +2 -0
  40. package/dist/pdf-8UPQebOE.js +36288 -0
  41. package/dist/pdf-AyJGb22z.cjs +101 -0
  42. package/dist/pdf.cjs +1 -101
  43. package/dist/pdf.js +9 -36579
  44. package/dist/plugin-BGKf-Tqg.js +22 -0
  45. package/dist/{plugin-BDTU4D94.cjs → plugin-CktLH_Iy.cjs} +1 -1
  46. package/dist/{region-binding-workflow-CcUq8W2Q.js → region-binding-workflow-DEJbhpCv.js} +1 -1
  47. package/dist/server/node.d.cts +46 -11
  48. package/dist/server/node.d.ts +46 -11
  49. package/dist/server-node.cjs +1 -1
  50. package/dist/server-node.js +294 -280
  51. package/dist/server.cjs +1 -1
  52. package/dist/server.d.cts +107 -12
  53. package/dist/server.d.ts +107 -12
  54. package/dist/server.js +713 -453
  55. package/dist/style.css +1 -1
  56. package/dist/template-bindings-BJR4k7qZ.cjs +1 -0
  57. package/dist/template-bindings-Daui7hLF.js +252 -0
  58. package/dist/template-fragments-CLkGo6To.js +187 -0
  59. package/dist/template-fragments-DFUpq5QM.cjs +1 -0
  60. package/dist/template-outline-B3xVkzSv.cjs +1 -0
  61. package/dist/template-outline-CFenM1PV.js +88 -0
  62. package/dist/{template-registry-BjE1VS6g.js → template-registry-COXDEJEM.js} +1 -1
  63. package/dist/{useLocalDraft-C07SYRnC.js → useLocalDraft-BnhcxXk_.js} +1 -1
  64. package/dist/{useLocalDraft-Yiw1wFgI.cjs → useLocalDraft-CioIfDb6.cjs} +1 -1
  65. package/dist/{validate-DbgEM1Hh.js → validate-CkQBWCeg.js} +3 -3
  66. package/dist/vue/async.d.cts +72 -2
  67. package/dist/vue/async.d.ts +72 -2
  68. package/dist/vue/index.d.cts +124 -5
  69. package/dist/vue/index.d.ts +124 -5
  70. package/dist/vue-async.cjs +1 -1
  71. package/dist/vue-async.js +5 -5
  72. package/dist/vue.cjs +1 -1
  73. package/dist/vue.js +78 -71
  74. package/dist/{workbook-session-BPb3TMnT.js → workbook-session-BfK1yHOO.js} +1 -1
  75. package/dist/worker.cjs +1 -1
  76. package/dist/worker.d.cts +46 -11
  77. package/dist/worker.d.ts +46 -11
  78. package/dist/worker.js +59 -55
  79. package/dist/xlsx.js +3 -3
  80. package/package.json +1 -1
  81. package/dist/ExcelBindingWizard-CeAf4QSE.js +0 -1465
  82. package/dist/ExcelBindingWizard-y0mT-AHR.cjs +0 -1
  83. package/dist/ParamEditor-MBBC7lUE.cjs +0 -1
  84. package/dist/ReportBatchPanel-Dc-SDkYA.cjs +0 -1
  85. package/dist/ReportPreview-DWXROHBP.cjs +0 -6
  86. package/dist/ReportPreview-DiNXhQI0.js +0 -4138
  87. package/dist/ReportTemplateLibrary-5fk5CQBO.cjs +0 -1
  88. package/dist/RuleEditor-ChRzNQuF.cjs +0 -1
  89. package/dist/RuleEditor-DzAmW5YH.js +0 -2024
  90. package/dist/TemplateReviewPanel-BKofGrV9.js +0 -222
  91. package/dist/TemplateReviewPanel-DwtOcLue.cjs +0 -1
  92. package/dist/batch-Bt3Fd27Z.cjs +0 -1
  93. package/dist/config-BRoLo2oj.cjs +0 -1
  94. package/dist/plugin-Cd5G2QQn.js +0 -22
  95. package/dist/record-bindings-By_UKZ2g.cjs +0 -1
  96. package/dist/record-bindings-D-5jQlTj.js +0 -196
  97. package/dist/template-review-BfCC8Ng9.cjs +0 -2
@@ -43,7 +43,7 @@ async function V(e, t, n) {
43
43
  c !== void 0 && clearTimeout(c), d && r.signal.removeEventListener("abort", d), e?.removeEventListener("abort", s);
44
44
  }
45
45
  }
46
- const B = new Uint32Array([
46
+ const $ = new Uint32Array([
47
47
  1116352408,
48
48
  1899447441,
49
49
  3049323471,
@@ -109,7 +109,7 @@ const B = new Uint32Array([
109
109
  3204031479,
110
110
  3329325298
111
111
  ]), y = (e, t) => e >>> t | e << 32 - t;
112
- function E(e, t, n) {
112
+ function R(e, t, n) {
113
113
  const r = new DataView(e.buffer, e.byteOffset + t, 64);
114
114
  for (let s = 0; s < 16; s++) n[s] = r.getUint32(s * 4);
115
115
  for (let s = 16; s < 64; s++) {
@@ -117,26 +117,32 @@ function E(e, t, n) {
117
117
  n[s] = n[s - 16] + d + n[s - 7] + g;
118
118
  }
119
119
  }
120
- function O(e, t) {
120
+ function B(e, t) {
121
121
  let n = e[0], r = e[1], s = e[2], a = e[3], c = e[4], d = e[5], g = e[6], o = e[7];
122
122
  for (let u = 0; u < 64; u++) {
123
- const i = y(c, 6) ^ y(c, 11) ^ y(c, 25), w = c & d ^ ~c & g, f = o + i + w + B[u] + t[u] >>> 0, b = y(n, 2) ^ y(n, 13) ^ y(n, 22), h = n & r ^ n & s ^ r & s, A = b + h >>> 0;
123
+ const i = y(c, 6) ^ y(c, 11) ^ y(c, 25), w = c & d ^ ~c & g, f = o + i + w + $[u] + t[u] >>> 0, b = y(n, 2) ^ y(n, 13) ^ y(n, 22), h = n & r ^ n & s ^ r & s, A = b + h >>> 0;
124
124
  o = g, g = d, d = c, c = a + f >>> 0, a = s, s = r, r = n, n = f + A >>> 0;
125
125
  }
126
126
  e[0] = e[0] + n, e[1] = e[1] + r, e[2] = e[2] + s, e[3] = e[3] + a, e[4] = e[4] + c, e[5] = e[5] + d, e[6] = e[6] + g, e[7] = e[7] + o;
127
127
  }
128
- function j(e) {
128
+ function E(e) {
129
129
  const t = new Uint8Array(Math.ceil((e.byteLength + 9) / 64) * 64);
130
130
  t.set(e), t[e.byteLength] = 128;
131
131
  const n = new DataView(t.buffer);
132
132
  return n.setUint32(t.length - 8, Math.floor(e.byteLength / 536870912)), n.setUint32(t.length - 4, e.byteLength * 8 >>> 0), t;
133
133
  }
134
- const J = () => new Uint32Array([1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), $ = (e) => Array.from(e, (t) => t.toString(16).padStart(8, "0")).join("");
134
+ const O = () => new Uint32Array([1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225]), j = (e) => Array.from(e, (t) => t.toString(16).padStart(8, "0")).join("");
135
+ function K(e) {
136
+ const t = E(e), n = O(), r = new Uint32Array(64);
137
+ for (let s = 0; s < t.length; s += 64)
138
+ R(t, s, r), B(n, r);
139
+ return j(n);
140
+ }
135
141
  async function I(e) {
136
- const t = j(e), n = J(), r = new Uint32Array(64);
142
+ const t = E(e), n = O(), r = new Uint32Array(64);
137
143
  for (let s = 0; s < t.length; s += 64)
138
- s > 0 && s % 262144 === 0 && await new Promise((a) => setTimeout(a, 0)), E(t, s, r), O(n, r);
139
- return $(n);
144
+ s > 0 && s % 262144 === 0 && await new Promise((a) => setTimeout(a, 0)), R(t, s, r), B(n, r);
145
+ return j(n);
140
146
  }
141
147
  function q(e = {}) {
142
148
  const t = {
@@ -160,7 +166,7 @@ function N(e, t) {
160
166
  if (s > t.maxResultBytes) throw new l("capacity", "任务结果超过独立预算,请保存文件引用");
161
167
  return Math.max(v(n) + t.controlReserveBytes, v(r)) + s;
162
168
  }
163
- function R(e) {
169
+ function J(e) {
164
170
  return e.status !== "queued" && e.status !== "running";
165
171
  }
166
172
  function T(e) {
@@ -176,7 +182,7 @@ async function D(e) {
176
182
  return Array.from(new Uint8Array(r), (s) => s.toString(16).padStart(2, "0")).join("");
177
183
  }
178
184
  async function L(e, t) {
179
- if (!R(e)) throw new l("input", "只能归档终态任务");
185
+ if (!J(e)) throw new l("input", "只能归档终态任务");
180
186
  return { scope: e.scope, id: e.id, revision: e.revision, status: e.status, createdAt: e.createdAt, updatedAt: e.updatedAt, attempt: e.attempt, requestHash: await D(e.request), expiresAt: t };
181
187
  }
182
188
  class l extends Error {
@@ -242,7 +248,7 @@ function z(e, t) {
242
248
  function _(e, t) {
243
249
  return e.status === "queued" || e.status === "running" && (e.lease?.expiresAt ?? 0) <= t;
244
250
  }
245
- function K(e = {}) {
251
+ function W(e = {}) {
246
252
  const t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map(), r = q(e);
247
253
  let s = 0, a = 0, c = Promise.resolve();
248
254
  const d = (o, u) => JSON.stringify([o, u]), g = (o) => {
@@ -282,7 +288,7 @@ function K(e = {}) {
282
288
  for (const [w, f] of n)
283
289
  f.expiresAt > u.now || i.expired >= u.limit || (n.delete(w), a -= v(f), i.expired++);
284
290
  for (const [w, f] of t) {
285
- if (!R(f) || f.updatedAt > u.terminalBefore || i.archived + i.expired >= u.limit) continue;
291
+ if (!J(f) || f.updatedAt > u.terminalBefore || i.archived + i.expired >= u.limit) continue;
286
292
  const b = await L(f, u.now + u.tombstoneRetentionMs), h = v(b);
287
293
  if (n.size >= r.maxTombstones || a + h > r.maxTombstoneBytes) break;
288
294
  n.set(w, b), a += h, t.delete(w), s -= N(f, r), i.archived++;
@@ -312,7 +318,7 @@ function H(e, t) {
312
318
  } catch {
313
319
  }
314
320
  }
315
- async function W(e, t, n = {}) {
321
+ async function G(e, t, n = {}) {
316
322
  const r = n.concurrency ?? 2;
317
323
  if (!Number.isSafeInteger(r) || r < 1 || r > 16) throw new RangeError("批量并发应为 1–16");
318
324
  if (n.failure !== void 0 && n.failure !== "continue" && n.failure !== "stop") throw new TypeError("批量失败策略无效");
@@ -351,13 +357,14 @@ export {
351
357
  P as d,
352
358
  x as e,
353
359
  D as f,
354
- K as g,
360
+ W as g,
355
361
  _ as h,
356
362
  k as i,
357
363
  v as j,
358
364
  U as k,
359
365
  z as l,
360
- W as r,
366
+ K as p,
367
+ G as r,
361
368
  p as s,
362
369
  S as t,
363
370
  F as v
@@ -0,0 +1 @@
1
+ "use strict";class m extends Error{constructor(t,n,r){super(n),this.code=t,this.path=r,this.name="ReportRuntimeError"}}function x(e){if(!e?.aborted)return;if(e.reason instanceof m)throw e.reason;const t=new Error("报表执行已取消");throw t.name="AbortError",Object.defineProperty(t,"cause",{value:e.reason}),t}function M(e,t,n){if(!Number.isFinite(n)||n<0)throw new m("budget",`${t} 的执行统计无效`,`$.budget.${t}`);const r=e[t];if(r!==void 0&&n>r)throw new m("budget",`${t} 超出预算 ${r}(实际 ${n})`,`$.budget.${t}`)}function P(e){for(const[t,n]of Object.entries(e)){if(n!==void 0&&(!Number.isFinite(n)||n<=0))throw new m("budget",`${t} 应为正有限数字`,`$.budget.${t}`);if(t!=="maxDurationMs"&&n!==void 0&&!Number.isSafeInteger(n))throw new m("budget",`${t} 应为正安全整数`,`$.budget.${t}`);if(t==="maxDurationMs"&&n!==void 0&&n>2147483647)throw new m("budget","maxDurationMs 不能超过 2147483647",`$.budget.${t}`)}}async function C(e,t,n){const r=new AbortController,o=()=>r.abort(e?.reason);e?.addEventListener("abort",o,{once:!0}),e?.aborted&&o();const a=Date.now(),c=t===void 0?void 0:setTimeout(()=>r.abort(new m("timeout",`报表执行超过 ${t}ms`)),t);let d;try{x(r.signal);const w=new Promise((u,i)=>{d=()=>{try{x(r.signal)}catch(h){i(h)}},r.signal.addEventListener("abort",d,{once:!0})}),s=await Promise.race([n(r.signal),w]);if(x(r.signal),t!==void 0&&Date.now()-a>t)throw new m("timeout",`报表执行超过 ${t}ms`);return s}finally{c!==void 0&&clearTimeout(c),d&&r.signal.removeEventListener("abort",d),e?.removeEventListener("abort",o)}}const U=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),y=(e,t)=>e>>>t|e<<32-t;function N(e,t,n){const r=new DataView(e.buffer,e.byteOffset+t,64);for(let o=0;o<16;o++)n[o]=r.getUint32(o*4);for(let o=16;o<64;o++){const a=n[o-15],c=n[o-2],d=y(a,7)^y(a,18)^a>>>3,w=y(c,17)^y(c,19)^c>>>10;n[o]=n[o-16]+d+n[o-7]+w}}function B(e,t){let n=e[0],r=e[1],o=e[2],a=e[3],c=e[4],d=e[5],w=e[6],s=e[7];for(let u=0;u<64;u++){const i=y(c,6)^y(c,11)^y(c,25),h=c&d^~c&w,f=s+i+h+U[u]+t[u]>>>0,b=y(n,2)^y(n,13)^y(n,22),g=n&r^n&o^r&o,S=b+g>>>0;s=w,w=d,d=c,c=a+f>>>0,a=o,o=r,r=n,n=f+S>>>0}e[0]=e[0]+n,e[1]=e[1]+r,e[2]=e[2]+o,e[3]=e[3]+a,e[4]=e[4]+c,e[5]=e[5]+d,e[6]=e[6]+w,e[7]=e[7]+s}function J(e){const t=new Uint8Array(Math.ceil((e.byteLength+9)/64)*64);t.set(e),t[e.byteLength]=128;const n=new DataView(t.buffer);return n.setUint32(t.length-8,Math.floor(e.byteLength/536870912)),n.setUint32(t.length-4,e.byteLength*8>>>0),t}const E=()=>new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),O=e=>Array.from(e,t=>t.toString(16).padStart(8,"0")).join("");function z(e){const t=J(e),n=E(),r=new Uint32Array(64);for(let o=0;o<t.length;o+=64)N(t,o,r),B(n,r);return O(n)}async function _(e){const t=J(e),n=E(),r=new Uint32Array(64);for(let o=0;o<t.length;o+=64)o>0&&o%262144===0&&await new Promise(a=>setTimeout(a,0)),N(t,o,r),B(n,r);return O(n)}function H(e={}){const t={maxRecords:e.maxRecords??1e4,maxBytes:e.maxBytes??67108864,maxResultBytes:e.maxResultBytes??262144,controlReserveBytes:e.controlReserveBytes??4096,maxTombstones:e.maxTombstones??1e4,maxTombstoneBytes:e.maxTombstoneBytes??16777216};if(!Object.values(t).every(n=>Number.isSafeInteger(n)&&n>0)||t.controlReserveBytes<4096)throw new l("input","任务容量应为正整数,控制状态预留至少4096字节");return t}function v(e){return new TextEncoder().encode(p(e)).byteLength}function R(e,t){const n={scope:e.scope,id:e.id,revision:1,request:e.request,status:"queued",createdAt:e.createdAt,updatedAt:e.createdAt,attempt:0},r={...e};delete r.result;const o=e.result===void 0?0:v(e.result);if(o>t.maxResultBytes)throw new l("capacity","任务结果超过独立预算,请保存文件引用");return Math.max(v(n)+t.controlReserveBytes,v(r))+o}function j(e){return e.status!=="queued"&&e.status!=="running"}function k(e){const t={...e,tombstoneRetentionMs:e.tombstoneRetentionMs??6048e5,limit:e.limit??100};if(![t.now,t.terminalBefore].every(n=>Number.isSafeInteger(n)&&n>=0)||t.terminalBefore>t.now)throw new l("input","终态清理时间应为不超过当前时间的非负整数");if(![t.tombstoneRetentionMs,t.limit].every(n=>Number.isSafeInteger(n)&&n>0)||!Number.isSafeInteger(t.now+t.tombstoneRetentionMs))throw new l("input","幂等保留期与清理批量应为正整数");return t}async function I(e){const t=new TextEncoder().encode(p(e)),n=globalThis.crypto?.subtle;if(!n)return _(t);const r=await n.digest("SHA-256",t);return Array.from(new Uint8Array(r),o=>o.toString(16).padStart(2,"0")).join("")}async function Z(e,t){if(!j(e))throw new l("input","只能归档终态任务");return{scope:e.scope,id:e.id,revision:e.revision,status:e.status,createdAt:e.createdAt,updatedAt:e.updatedAt,attempt:e.attempt,requestHash:await I(e.request),expiresAt:t}}class l extends Error{constructor(t,n){super(n),this.code=t,this.name="ReportJobError"}}function $(e,t){if(typeof e!="string"||!e.trim()||e.length>256||typeof t!="string"||t!==t.trim()||!/^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/.test(t))throw new l("input","任务范围应非空,ID应为1–128位安全标识")}function F(e){const t=Array.isArray(e),n=Object.getPrototypeOf(e),r=Object.keys(e);if(n!==(t?Array.prototype:Object.prototype)&&!(n===null&&!t))throw new l("input","任务对象应为普通 JSON 对象");if(Object.getOwnPropertySymbols(e).length)throw new l("input","任务不能包含Symbol");if(Object.getOwnPropertyNames(e).filter(a=>!(t&&a==="length")).length!==r.length)throw new l("input","任务不能包含不可枚举属性");if(t&&(r.length!==e.length||r.some(a=>a!==String(Number(a))||!Number.isSafeInteger(Number(a))||Number(a)<0||Number(a)>=e.length)))throw new l("input","任务数组不能稀疏或包含额外属性");return r.sort()}function V(e,t){const n=Object.getOwnPropertyDescriptor(e,t);if(["__proto__","prototype","constructor"].includes(t)||n.get||n.set)throw new l("input","任务不能包含危险键或访问器");return n.value}function p(e,t={}){const n=t.maxNodes??2e4,r=t.maxCharacters??1e6;if(!Number.isSafeInteger(n)||n<1||n>2e4||!Number.isSafeInteger(r)||r<1||r>1e6)throw new l("input","任务JSON预算无效");let o=0,a=0;const c=new Set;function d(s,u){if(++o>n||u>32)throw new l("input","任务数据超过节点或深度预算");if(typeof s=="string"){if(a+=s.length,a>r)throw new l("input","任务文本超过预算");return s}if(s===null||typeof s=="boolean"||typeof s=="number"&&Number.isFinite(s))return s;if(!s||typeof s!="object"||c.has(s))throw new l("input","任务只允许无循环的有限 JSON 值");const i=Array.isArray(s),h=F(s);c.add(s);const f=Object.create(null);for(const b of h){if(a+=b.length,a>r)throw new l("input","任务文本超过预算");f[b]=d(V(s,b),u+1)}return c.delete(s),i?Array.from({length:s.length},(b,g)=>f[String(g)]):f}const w=JSON.stringify(d(e,0));if(w.length>r)throw new l("input","任务序列化数据超过字符预算");return w}function A(e){return JSON.parse(JSON.stringify(e))}function q(e,t,n,r){if($(t,n),e.scope!==t||e.id!==n||e.revision!==(r??0)+1||!Number.isSafeInteger(e.revision))throw new l("input","任务身份或修订不匹配");if(![e.createdAt,e.updatedAt,e.attempt].every(o=>Number.isSafeInteger(o)&&o>=0)||!["queued","running","completed","failed","cancelled"].includes(e.status))throw new l("input","任务状态无效");if(e.lease&&(!e.lease.owner||!Number.isSafeInteger(e.lease.expiresAt)))throw new l("input","任务租约无效");if(!e.request||typeof e.request.kind!="string"||!e.request.kind.trim()||e.request.kind.length>128)throw new l("input","任务类型无效");p(e.request.payload,{maxNodes:19e3,maxCharacters:75e4}),p(e)}function T(e,t){if(e&&(e.createdAt!==t.createdAt||p(e.request)!==p(t.request)))throw new l("input","任务创建时间与请求不可变更,请使用新任务ID")}function L(e,t){return e.status==="queued"||e.status==="running"&&(e.lease?.expiresAt??0)<=t}function K(e={}){const t=new Map,n=new Map,r=H(e);let o=0,a=0,c=Promise.resolve();const d=(s,u)=>JSON.stringify([s,u]),w=s=>{const u=c.then(s);return c=u.then(()=>{},()=>{}),u};return{read:async(s,u)=>{await c;const i=t.get(d(s,u));return i?A(i):void 0},readTombstone:async(s,u)=>{await c;const i=n.get(d(s,u));return i?A(i):void 0},candidates:async(s,u)=>(await c,Array.from(t.values()).filter(i=>L(i,s)).sort((i,h)=>i.createdAt-h.createdAt).slice(0,u).map(A)),compareAndSwap:async(s,u,i,h)=>{q(h,s,u,i);const f=A(h);return w(async()=>{const b=d(s,u),g=t.get(b);if((g?.revision??null)!==i||n.has(b))return!1;T(g,f);const S=o-(g?R(g,r):0)+R(f,r);if(S>r.maxBytes||!g&&t.size>=r.maxRecords)throw new l("capacity","任务容量已满,请清理终态任务或扩大显式预算");return t.set(b,f),o=S,!0})},prune:async s=>{const u=k(s);return w(async()=>{const i={archived:0,expired:0};for(const[h,f]of n)f.expiresAt>u.now||i.expired>=u.limit||(n.delete(h),a-=v(f),i.expired++);for(const[h,f]of t){if(!j(f)||f.updatedAt>u.terminalBefore||i.archived+i.expired>=u.limit)continue;const b=await Z(f,u.now+u.tombstoneRetentionMs),g=v(b);if(n.size>=r.maxTombstones||a+g>r.maxTombstoneBytes)break;n.set(h,b),a+=g,t.delete(h),o-=R(f,r),i.archived++}return i})}}}function D(e,t=100){if(!Number.isSafeInteger(t)||t<1||t>1e3||!Array.isArray(e)||e.length>t)throw new RangeError("批量参数应包含 1–maxCases 条,maxCases 最大为 1000");const n=JSON.parse(p(e)),r=new Set;for(const o of n){if(!o||typeof o.id!="string"||o.id!==o.id.trim()||!/^[a-zA-Z0-9][a-zA-Z0-9_.:-]{0,127}$/.test(o.id)||r.has(o.id))throw new TypeError("批量行 ID 应唯一且为安全标识");if(!o.params||Array.isArray(o.params)||typeof o.params!="object"||Object.values(o.params).some(a=>typeof a!="string"))throw new TypeError("批量参数应为字符串字典");r.add(o.id)}return n}function W(e,t){if(!t)return;const n={completed:0,total:e.length,failed:0,cancelled:0};for(const r of e)r&&(n.completed++,r.status==="failed"&&n.failed++,r.status==="cancelled"&&n.cancelled++);try{t(n)}catch{}}async function G(e,t,n={}){const r=n.concurrency??2;if(!Number.isSafeInteger(r)||r<1||r>16)throw new RangeError("批量并发应为 1–16");if(n.failure!==void 0&&n.failure!=="continue"&&n.failure!=="stop")throw new TypeError("批量失败策略无效");const o=D(e,n.maxCases??100);if(!o.length)throw new RangeError("批量生成至少需要一组参数");const a=Array.from({length:o.length}),c=new AbortController,d=()=>c.abort(n.signal?.reason);n.signal?.addEventListener("abort",d,{once:!0}),n.signal?.aborted&&d();let w=0,s=!1;async function u(){for(;w<o.length;){const i=w++,h=o[i],f={id:h.id,index:i};if(s||c.signal.aborted)a[i]={...f,status:"cancelled"};else try{x(c.signal);const b=await t(h,{index:i,signal:c.signal});a[i]={...f,status:"completed",value:b}}catch(b){c.signal.aborted?a[i]={...f,status:"cancelled"}:(a[i]={...f,status:"failed",error:{name:b instanceof Error?b.name:"Error",message:b instanceof Error?b.message:String(b)}},n.failure==="stop"&&(s=!0))}W(a,n.onProgress)}}try{await Promise.all(Array.from({length:Math.min(r,o.length)},u))}finally{n.signal?.removeEventListener("abort",d)}return a}exports.ReportJobError=l;exports.ReportRuntimeError=m;exports.assertBudget=M;exports.checkJobIdentity=$;exports.cloneJob=A;exports.controlled=C;exports.createMemoryReportJobStore=K;exports.jobByteLength=v;exports.jobRequestHash=I;exports.portableSha256Hex=z;exports.runReportBatch=G;exports.runnableJob=L;exports.serializeJobJson=p;exports.snapshotReportBatchCases=D;exports.throwIfAborted=x;exports.validateBudget=P;exports.validateJobRecord=q;exports.validateJobTransition=T;
@@ -0,0 +1 @@
1
+ "use strict";const t=require("vue"),y=require("@agile-team/mach-report"),q=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),S=require("./injection-keys-Db_DyLkm.cjs"),R={printPrepareTimeout:"打印资源准备超时,请检查字体与图片后重试。",printImageFailed:"第 {index} 张图片未能加载,已停止打印,避免输出缺失内容。",printFontFailed:"打印字体 {family} 未能加载,请检查字体资源后重试。",printPrepareFailed:"打印准备失败,请检查打印配置或改用 PDF。",printCalibration:"打印校准",printOffsetX:"水平偏移(mm)",printOffsetY:"垂直偏移(mm)",printCalibrationTest:"打印校准页",printCalibrationHint:"正值向右/向下移动,负值向左/向上。使用同规格纸张及 100% 比例,先试打一张。系统对话框关闭不代表设备已完成。"};function L(e){const a=e?.calibration?.offsetXmm??0,l=e?.calibration?.offsetYmm??0;if(![a,l].every(n=>Number.isFinite(n)&&Math.abs(n)<=20))throw new RangeError("Print calibration must be within ±20 mm");return{x:a,y:l}}function O(e={}){if(e.fonts&&(!Array.isArray(e.fonts)||e.fonts.length>8))throw new RangeError("At most eight print font faces are allowed");return{...e,...e.fonts?{fonts:e.fonts.map(a=>({...a}))}:{},...e.calibration?{calibration:{...e.calibration}}:{}}}class b extends Error{constructor(a,l,n){super(l),this.name="MachReportError",this.code=a,this.cause=n}}function _(e){return e instanceof b?{code:e.code,cause:e.cause}:{code:"render",cause:e}}function V(e){if(e instanceof b)return e;if(e instanceof y.ReportParamValidationError)return new b("param",e.message,e);if(e instanceof y.ReportSourceError)return new b(e.code,e.message,e.cause);if(e instanceof Error){const a={params:"param",config:"config",validate:"validate",fetch:"fetch"},l=e.code;if(typeof l=="string"&&Object.prototype.hasOwnProperty.call(a,l))return new b(a[l],e.message,e)}return new b("fetch",e instanceof Error?e.message:"预览加载失败",e)}let H=0;function U(){return`mrp-params-${++H}`}function M(e,a,l){const n=(Array.isArray(a)?a.find(i=>i?.field===e.field)?.label:void 0)??e.field;return e.code==="required"?l.paramRequired.replace("{label}",n):(l.paramInvalid??"{label}:{message}").replace("{label}",n).replace("{message}",e.message)}function G(e){const a=t.ref({}),l=t.ref(!1);function n(){const p={};for(const f of Array.isArray(e.defs.value)?e.defs.value:[])typeof f?.field=="string"&&Object.defineProperty(p,f.field,{value:e.params()[f.field]??f.defaultValue??"",writable:!0,enumerable:!0,configurable:!0});a.value=p,l.value=!1}n(),t.watch(e.defs,n),t.watch(e.reportIds,n),t.watch(()=>JSON.stringify(e.params()),n);const i=t.computed(()=>y.validateReportParams(e.defs.value,{...e.params(),...a.value})),s=t.computed(()=>!l.value&&i.value.issues.length>0&&i.value.issues.every(p=>p.code==="required"));function m(){const p=i.value;if(!p.ok){const u=p.issues[0];return{quiet:s.value,error:new b(u.code==="definition"?"config":"param",M(u,e.defs.value,e.messages()),{issues:p.issues})}}const f={...p.values},P=new Set(e.defs.value.filter(u=>u.defaultValue!==void 0).map(u=>u.field));for(const[u,x]of Object.entries(f))x===""&&!P.has(u)&&delete f[u];return{params:f,quiet:!1}}return{values:a,attempted:l,validation:i,pendingRequired:s,reset:n,query:m}}const $={key:0,class:"mrp-params-title"},K={class:"mrp-params-grid"},j=["id"],W={key:0,class:"mrp-param-star"},z=["value","disabled","aria-labelledby","aria-invalid","aria-describedby","aria-required","onChange"],Y=["disabled","hidden"],J=["value"],X=["aria-labelledby"],Q=["value","disabled","min","max","aria-label","aria-invalid","aria-describedby","aria-required","onInput"],Z=["type","inputmode","maxlength","placeholder","value","disabled","min","max","step","aria-labelledby","aria-invalid","aria-describedby","aria-required","onInput"],ee=["id"],te={key:1,class:"mrp-params-actions"},ae=["disabled"],re=["disabled"],ne=t.defineComponent({__name:"ReportParamPanel",props:{defs:{},modelValue:{},messages:{},attempted:{type:Boolean},issues:{default:void 0},showActions:{type:Boolean,default:!0},showTitle:{type:Boolean,default:!0},disabled:{type:Boolean,default:!1}},emits:["update:modelValue","query","reset"],setup(e,{expose:a,emit:l}){const n=e,i=l,s=t.ref({...n.modelValue}),m=t.ref(null),p=U();t.watch(()=>n.modelValue,o=>{s.value={...o}});const f=t.computed(()=>n.issues??y.validateReportParams(n.defs,s.value).issues),P=t.computed(()=>(Array.isArray(n.defs)?n.defs:[]).filter(o=>o&&typeof o.field=="string").map((o,c)=>({def:o,id:`${p}-${c}`,label:o.label??o.field,value:s.value[o.field]??"",error:n.attempted?f.value.find(r=>r.field===o.field):void 0})));function u(o,c){s.value={...s.value,[o]:c},i("update:modelValue",{...s.value})}function x(o){return o.type==="number"?"number":o.type==="date"||o.type==="month"?o.type:"text"}function v(o,c){return o.split("/")[c]??""}function D(o,c,r){return r?!!v(o,0)!=!!v(o,1)?!v(o,c)||void 0:!0:void 0}function I(o,c,r){const d=[v(s.value[o]??"",0),v(s.value[o]??"",1)];d[c]=r,u(o,d.every(h=>!h)?"":d.join("/"))}function w(o){o.isComposing||i("query")}function T(){m.value?.querySelector('[aria-invalid="true"]')?.focus()}return a({focusInvalid:T}),(o,c)=>(t.openBlock(),t.createElementBlock("div",{ref_key:"root",ref:m,class:"mrp-params"},[e.showTitle!==!1?(t.openBlock(),t.createElementBlock("span",$,t.toDisplayString(e.messages.paramsTitle),1)):t.createCommentVNode("",!0),t.createElementVNode("div",K,[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(P.value,r=>(t.openBlock(),t.createElementBlock("label",{key:r.id,class:t.normalizeClass(["mrp-param",{"mrp-param-missing":!!r.error}])},[t.createElementVNode("span",{id:`${r.id}-label`,class:"mrp-param-label"},[t.createTextVNode(t.toDisplayString(r.label),1),r.def.required?(t.openBlock(),t.createElementBlock("i",W,"*")):t.createCommentVNode("",!0)],8,j),(r.def.type??"text")==="select"?(t.openBlock(),t.createElementBlock("select",{key:0,class:"mrp-param-input",value:r.value,disabled:e.disabled,"aria-labelledby":`${r.id}-label`,"aria-invalid":r.error?!0:void 0,"aria-describedby":r.error?`${r.id}-error`:void 0,"aria-required":r.def.required||void 0,onChange:d=>u(r.def.field,d.target.value),onKeydown:t.withKeys(w,["enter"])},[t.createElementVNode("option",{value:"",disabled:r.def.required,hidden:r.def.required},t.toDisplayString(r.def.placeholder??(e.messages.paramSelectPlaceholder??"请选择{label}").replace("{label}",r.label)),9,Y),(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList(r.def.options??[],d=>(t.openBlock(),t.createElementBlock("option",{key:d.value,value:d.value},t.toDisplayString(d.label),9,J))),128))],40,z)):r.def.type==="dateRange"?(t.openBlock(),t.createElementBlock("div",{key:1,class:"mrp-param-range",role:"group","aria-labelledby":`${r.id}-label`},[(t.openBlock(!0),t.createElementBlock(t.Fragment,null,t.renderList([e.messages.paramRangeStart??"开始日期",e.messages.paramRangeEnd??"结束日期"],(d,h)=>(t.openBlock(),t.createElementBlock("input",{key:h,class:"mrp-param-input",type:"date",value:v(r.value,h),disabled:e.disabled,min:r.def.min,max:r.def.max,"aria-label":`${r.label} · ${d}`,"aria-invalid":D(r.value,h,r.error),"aria-describedby":r.error?`${r.id}-error`:void 0,"aria-required":r.def.required||void 0,onInput:N=>I(r.def.field,h,N.target.value),onKeydown:t.withKeys(w,["enter"])},null,40,Q))),128))],8,X)):(t.openBlock(),t.createElementBlock("input",{key:2,class:"mrp-param-input",type:x(r.def),inputmode:r.def.type==="year"?"numeric":void 0,maxlength:r.def.type==="year"?4:void 0,placeholder:r.def.placeholder??(e.messages.paramTextPlaceholder??"请输入{label}").replace("{label}",r.label),value:r.value,disabled:e.disabled,min:r.def.min,max:r.def.max,step:r.def.type==="number"?"any":void 0,"aria-labelledby":`${r.id}-label`,"aria-invalid":r.error?!0:void 0,"aria-describedby":r.error?`${r.id}-error`:void 0,"aria-required":r.def.required||void 0,onInput:d=>u(r.def.field,d.target.value),onKeydown:t.withKeys(w,["enter"])},null,40,Z)),r.error?(t.openBlock(),t.createElementBlock("small",{key:3,id:`${r.id}-error`,class:"mrp-param-error",role:"status"},t.toDisplayString(t.unref(M)(r.error,e.defs,e.messages)),9,ee)):t.createCommentVNode("",!0)],2))),128))]),e.showActions!==!1?(t.openBlock(),t.createElementBlock("div",te,[t.createElementVNode("button",{class:"mrp-nav mrp-param-query",type:"button",disabled:e.disabled,onClick:c[0]||(c[0]=r=>o.$emit("query"))},t.toDisplayString(e.messages.query),9,ae),t.createElementVNode("button",{class:"mrp-nav",type:"button",disabled:e.disabled,onClick:c[1]||(c[1]=r=>o.$emit("reset"))},t.toDisplayString(e.messages.reset),9,re)])):t.createCommentVNode("",!0)],512))}}),oe=q._export_sfc(ne,[["__scopeId","data-v-f64e743f"]]),C={calculationTitle:"选区计算",calculationLocal:"仅本地分析,不写回实绩、不重算原公式。请选取同一单位与量纲的数值。",calculationHint:"点击起点,Shift + 点击终点或方向键扩选。",calculationFormula:"计算方式",calculationExpression:"组合公式",calculationExpressionHint:"支持 SUM、AVERAGE/AVG、MIN、MAX、COUNT、MEDIAN 及 + - * / 和括号,不执行 Excel 公式;采用浮点数,精度仅用于展示。",calculationPrecision:"展示小数位",calculationRun:"计算选区",calculationCancel:"取消计算",calculationResult:"计算结果",calculationIncluded:"参与数值",calculationExcluded:"排除单元格",calculationEmpty:"选区没有可计算数值,计数为 0,其余结果为空。",calculationNoSelection:"先关闭设置并选择数据,再从底部工具栏打开选区计算。",calculationSum:"求和 SUM",calculationAverage:"平均值 AVERAGE",calculationMin:"最小值 MIN",calculationMax:"最大值 MAX",calculationCount:"数值计数 COUNT",calculationMedian:"中位数 MEDIAN",calculationCustom:"组合公式",calculationErrorSelection:"请选择同一明细区域中的数据。",calculationErrorLimit:"选区超过计算预算,请缩小范围后重试。",calculationErrorExpression:"公式无效,请使用支持的摘要名称、运算符与括号。",calculationErrorDivision:"除数不能为 0。",calculationErrorOverflow:"结果超出有效数值范围。",calculationErrorPrecision:"数值超出安全精度,或展示小数位不是 0 至 12 的整数。"};function le(e){const a={...C};for(const l of Object.keys(a)){const n=e[l];typeof n=="string"&&(a[l]=n)}return a}const k={...R,...C,exportMenu:"导出",exportMenuDescription:"选择文件格式",clearSearch:"清除搜索",searchHint:"Enter 下一个 · Shift+Enter 上一个",searchNoMatches:"没有匹配内容",pageJump:"跳至页",pageJumpInvalid:"请输入有效页码",pageJumpHint:"Enter 跳转",pagination:"报表分页",recordNavigation:"标签记录",recordInfo:"记录 {cur} / {total}",prevRecord:"上一条记录",nextRecord:"下一条记录",dataExplanation:"来源数据说明",dataExplanationHint:"按字段查看来源与计算说明",dataExplanationSearch:"搜索说明、字段或记录",dataExplanationEmpty:"没有匹配的数据说明",dataMissingSource:"暂无来源",dataNotApplicable:"业务不适用",dataNotCalculable:"无法计算",columnSearchHint:"输入列名或字段标识",columnSearchShortcut:"↑ ↓ 选择 · Enter 定位",closeColumnDirectory:"关闭字段目录",columnResultsMore:"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围",columnCount:"{count} 个字段",settingsGeneral:"常规",settingsTools:"工具",settingsAdvanced:"高级",settingsAdvancedDescription:"按需开启分析能力,保持日常阅读简洁。",settingsCalculations:"启用选区计算",settingsCalculationsDescription:"选取数值后计算求和、平均值或组合公式,仅用于本地分析。",title:"报表预览",prevPage:"‹ 上一页",nextPage:"下一页 ›",pageInfo:"{cur} / {total}",fitWidth:"适宽",exportHtml:"导出 HTML",exportPdf:"导出 PDF",exportExcel:"导出 Excel",exportImage:"导出图片",exportWord:"导出 Word",exporting:"正在生成 {format}…",print:"打印",pdfWindow:"PDF 窗口",loading:"报表渲染中…",empty:"暂无预览数据",errorPrefix:"",retry:"重试",pdfFontUnavailable:"PDF 字体尚未就绪,请联系管理员检查字体配置;预览及其它导出仍可使用。",searchPlaceholder:"搜索报表内容",matchInfo:"{cur}/{total}",prevMatch:"‹",nextMatch:"›",thumbnails:"缩略图",paramsTitle:"查询条件",query:"查 询",reset:"重 置",paramRequired:"请填写{label}",paramInvalid:"{label}:{message}",paramPrompt:"请先完善查询条件",paramPromptDescription:"填写必填条件后点击查询,即可生成报表。",paramSelectPlaceholder:"请选择{label}",paramTextPlaceholder:"请输入{label}",paramRangeStart:"开始日期",paramRangeEnd:"结束日期",searching:"搜索中…",importExcel:"导入 Excel 模板",importing:"正在导入 Excel…",editCell:"编辑单元格",editingHint:"双击单元格编辑 · Enter 确认 · Esc 取消",saving:"正在保存修改…",editInvalidNumber:"请输入有效数字;清空表示无值",editInvalidBoolean:"请输入 true / false、是 / 否或 1 / 0",editConflict:"该单元格已变化,请重新打开编辑",settings:"设置",settingsDisplay:"阅读工具",settingsExport:"导出与打印",settingsData:"数据操作",settingsUnavailable:"需由接入方配置启用",settingsReset:"恢复默认",settingsClose:"关闭设置",search:"内容搜索",closeSearch:"关闭搜索",prevSearchMatch:"上一个匹配",nextSearchMatch:"下一个匹配",zoom:"缩放工具",settingsLocal:"按需启用工具,仅作用于当前预览。",editingLocal:"修改为本地草稿;不会自动写入业务数据库。",editingSaved:"修改将通过接入方配置的保存回调提交。",importLocal:"导入仅生成本地预览,不自动替换业务数据。",emptyDescription:"当前查询没有明细,请调整查询条件后重试。",undo:"撤销",redo:"重做",restoreChanges:"恢复来源值",changes:"修改明细",changesCount:"{count} 处修改",changesEmpty:"尚无修改",changesBefore:"来源值",changesAfter:"当前值",editAtomicRequired:"批量保存需要接入方提供原子 saveBatch 回调;本次未写入任何单元格。",clipboardLimit:"单次最多粘贴 10000 个单元格,请分批处理。",preferencesError:"偏好存储不可用,设置仍在当前预览中生效。",freezeHeaders:"冻结表头",frozenColumns:"冻结前列",sections:"工作表与章节",locateField:"定位字段",locateFieldPlaceholder:"输入字段标识,Enter 定位",locateFieldMissing:"未找到该字段,请核对字段标识。",importSummary:"Excel 导入摘要",importPreserved:"已导入 {sheets} 个工作表,保留内容、合并和样式。",importWarnings:"兼容性提示",importReadOnly:"公式、日期及受保护单元格保持只读;公式不重算。",conflicts:"保存冲突",editReadOnly:"选区包含只读或无权限单元格,本次修改未应用。",editMissing:"选区超出报表范围或缺少业务来源,请重新选择。",editRecalculationUnavailable:"此报表缺少重算会话或稳定数据来源,暂不支持编辑;请使用 reports/本地数据源重新加载。",editDuplicate:"选区包含同一业务字段的重复单元格,请缩小选区。",clipboardInvalid:"剪贴板内容无法识别,请使用矩形表格文本重新粘贴。",editSaved:"修改已通过保存回调确认",settingsPanes:"冻结窗格",columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",columnGroup:"明细区域",discardTitle:"保留当前修改?",discardDescription:"当前报表有尚未保存的输入或本地草稿,继续操作将替换这些内容。",discardKeep:"继续编辑",discardProceed:"放弃修改并继续",taskQuery:"正在获取数据…",taskValidate:"正在校验数据…",taskLayout:"正在生成版式…",taskAssets:"正在准备图片和字体…",taskEncode:"正在生成文件…",taskDownload:"正在准备下载…",taskPrint:"正在准备打印…",taskCancel:"取消任务",taskCancelled:"任务已取消,可重新操作。",diagnosticsSearch:"搜索提示、错误码或位置",diagnosticsMore:"共 {count} 条匹配,当前展示前 100 条;请搜索缩小范围。",diagnosticsTitle:"输出兼容性提示",diagnosticsLocate:"定位",diagnosticsLocation:"第 {page} 页 · 组件 {component}",diagnosticsStrict:"当前格式存在已知内容降级,请查看兼容性提示或选择其他输出格式。",diagnosticsDetails:"查看技术详情",diagnosticMissingImage:"图片或图表资源尚未准备完成,请重试或联系管理员。",diagnosticUnsupported:"当前输出格式会省略此内容,建议选择 PDF 或图片格式。",diagnosticUnsupportedStyle:"当前格式无法保留部分样式,请查看位置并选择适合的输出格式。",diagnosticImageFormat:"当前图片格式无法直接导出,请转换资源后重试。",diagnosticRichText:"文字内容会保留,部分字体与段落样式将简化。",diagnosticNested:"单元格中的嵌套内容会省略,单元格文字会保留。",diagnosticImageAsync:"图片需要完成加载后才能输出。",diagnosticImageDecode:"图片加载失败,请检查资源后重试。",diagnosticAssetFailed:"图表或图片生成失败,请重试或联系管理员。",diagnosticAssetBudget:"图片资源超出处理范围,请减少资源或缩小报表范围。"},B={emptyAccent:"#79a7e8",shellBg:"#f4f7fc",shellFg:"#334155",toolbarBg:"#ffffff",toolbarBorder:"#e4eaf3",toolbarFg:"#334155",btnFg:"#526078",btnBorder:"#dbe3ef",btnHoverBg:"#edf3ff",btnHoverFg:"#315fba",btnActiveBg:"#3569d4"};function F(e={}){return{...e,defaults:e.defaults??{},presets:e.presets??{}}}function ie(e){return e}const g={showExport:!0,showPrint:!0,showPdfWindow:!0,showSettings:!0,showParams:!0,gapPx:18,pdfFontUrl:"/simhei.ttf",logger:console},se={warn:()=>{},info:()=>{}};function ce(e,a){if(!(!e&&!a))return{...e,...a,calibration:{...e?.calibration,...a?.calibration}}}function E(e,a){return{...e,...a,theme:{...e?.theme,...a?.theme},messages:{...e?.messages,...a?.messages},preview:{...e?.preview,...a?.preview},xlsx:{...e?.xlsx,...a?.xlsx},toolbar:{...e?.toolbar,...a?.toolbar},interaction:{...e?.interaction,...a?.interaction},output:{...e?.output,...a?.output},printOptions:ce(e?.printOptions,a?.printOptions)}}function de(e){return{showExport:e.showExport??g.showExport,showPrint:e.showPrint??g.showPrint,showPdfWindow:e.showPdfWindow??g.showPdfWindow,showSettings:e.showSettings??g.showSettings,showParams:e.showParams??g.showParams,gapPx:e.gapPx??g.gapPx}}function ue(e,a){const l=a?e?.presets?.[a]:e?.defaultPreset?e?.presets?.[e.defaultPreset]:void 0,n=E(e?.defaults,l);return{...de(n),pdfFontUrl:n.pdfFontUrl??g.pdfFontUrl,theme:{...B,...n.theme},messages:{...k,...n.messages},logger:n.logger??g.logger,preview:{overscanPages:A(n.preview?.overscanPages,1,10,!0),searchDebounceMs:A(n.preview?.searchDebounceMs,200,2e3)},xlsx:{...n.xlsx},editable:n.editable??!1,excelImport:n.excelImport??!1,toolbar:{...n.toolbar},interaction:{...n.interaction},preferences:n.preferences,assets:n.assets,guardChanges:n.guardChanges??!0,beforeDiscard:n.beforeDiscard,output:{...n.output},printOptions:n.printOptions}}function A(e,a,l,n=!1){if(e==null||!Number.isFinite(e))return a;const i=Math.max(0,Math.min(l,e));return n?Math.floor(i):i}function pe(e){const a={};return e.emptyAccent!=null&&(a["--mrp-empty-accent"]=e.emptyAccent),e.shellBg!=null&&(a["--mrp-shell-bg"]=e.shellBg),e.shellFg!=null&&(a["--mrp-shell-fg"]=e.shellFg),e.toolbarBg!=null&&(a["--mrp-toolbar-bg"]=e.toolbarBg),e.toolbarBorder!=null&&(a["--mrp-toolbar-border"]=e.toolbarBorder),e.toolbarFg!=null&&(a["--mrp-toolbar-fg"]=e.toolbarFg),e.btnFg!=null&&(a["--mrp-btn-fg"]=e.btnFg),e.btnBorder!=null&&(a["--mrp-btn-border"]=e.btnBorder),e.btnHoverBg!=null&&(a["--mrp-btn-hover-bg"]=e.btnHoverBg),e.btnHoverFg!=null&&(a["--mrp-btn-hover-fg"]=e.btnHoverFg),e.btnActiveBg!=null&&(a["--mrp-btn-active-bg"]=e.btnActiveBg),a}function fe(e){const a=t.inject(S.MACH_REPORT_CONFIG_KEY,null),l=t.computed(()=>{const n=a?.value??null,i="defaults"in e||"presets"in e||"defaultPreset"in e?F(e):{defaults:e,presets:{}};if(!n)return i;const s={...n.presets,...i.presets};for(const m of Object.keys(s))s[m]=E(E(n.presets[m],i.defaults),i.presets[m]);return{defaults:E(n.defaults,i.defaults),presets:s,defaultPreset:i.defaultPreset??n.defaultPreset}});t.provide(S.MACH_REPORT_CONFIG_KEY,l)}function me(){return t.inject(S.MACH_REPORT_CONFIG_KEY,t.computed(()=>null))}exports.DEFAULT_CALCULATION_MESSAGES=C;exports.DEFAULT_MESSAGES=k;exports.DEFAULT_PRINT_MESSAGES=R;exports.DEFAULT_THEME=B;exports.MachReportError=b;exports.ReportParamPanel=oe;exports.SILENT_LOGGER=se;exports.defineMachReportConfig=F;exports.defineMachReportPreset=ie;exports.normalizeReportLoadError=V;exports.printCalibration=L;exports.provideMachReportConfig=fe;exports.resolveCalculationMessages=le;exports.resolveConfig=ue;exports.snapshotPrintOptions=O;exports.themeToCssVars=pe;exports.toErrorDetail=_;exports.useMachReportConfig=me;exports.useReportParams=G;