@agile-team/mach-report 2.9.1 → 2.11.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 +11 -7
- package/dist/ExcelBindingWizard-CjIiVox-.cjs +1 -0
- package/dist/ExcelBindingWizard-Dxm-K5HL.js +1240 -0
- package/dist/ParamEditor-D-Hf5xfO.cjs +1 -0
- package/dist/ParamEditor-DRGxzxeO.js +381 -0
- package/dist/ReportBatchPanel-BYgg0EDB.cjs +1 -0
- package/dist/ReportBatchPanel-Bby5yLzU.js +287 -0
- package/dist/ReportPreview-DWXROHBP.cjs +6 -0
- package/dist/ReportPreview-DiNXhQI0.js +4138 -0
- package/dist/ReportTemplateLibrary-C6CO7YCT.cjs +1 -0
- package/dist/ReportTemplateLibrary-DfzDXRvr.js +260 -0
- package/dist/RuleEditor-C2QsOHOs.cjs +1 -0
- package/dist/RuleEditor-D9wQHrkf.js +2024 -0
- package/dist/TemplateReviewPanel-BKofGrV9.js +222 -0
- package/dist/TemplateReviewPanel-DwtOcLue.cjs +1 -0
- package/dist/analytics.cjs +1 -1
- package/dist/analytics.d.cts +4 -0
- package/dist/analytics.d.ts +4 -0
- package/dist/analytics.js +40 -39
- package/dist/{assets-ahTRUXRk.cjs → assets-Bu6UohJx.cjs} +1 -1
- package/dist/{assets-DDsfEi8R.js → assets-DegqDNqY.js} +1 -1
- package/dist/batch-Bt3Fd27Z.cjs +1 -0
- package/dist/batch-mRqhhhjt.js +364 -0
- package/dist/{capabilities-Cm9hZ3uV.js → capabilities-CK_7hizc.js} +16 -16
- package/dist/capabilities-CsZ-pNHR.cjs +1 -0
- package/dist/computed-Bvk0W15F.js +521 -0
- package/dist/computed-CGV2a809.cjs +1 -0
- package/dist/config-B612mw0x.js +525 -0
- package/dist/config-BRoLo2oj.cjs +1 -0
- package/dist/designer.cjs +2 -2
- package/dist/designer.d.cts +695 -50
- package/dist/designer.d.ts +695 -50
- package/dist/designer.js +2213 -1748
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +205 -6
- package/dist/index.d.ts +205 -6
- package/dist/index.js +808 -1033
- package/dist/injection-keys-Db_DyLkm.cjs +1 -0
- package/dist/injection-keys-e85udZCp.js +7 -0
- package/dist/list-cell-BuYn4tGF.cjs +1 -0
- package/dist/list-cell-ClFra1zS.js +173 -0
- package/dist/matrix-DVyWiYsd.cjs +1 -0
- package/dist/matrix-yZsGnldA.js +227 -0
- package/dist/param-validation-BlHHXs6u.js +153 -0
- package/dist/param-validation-DCK039V1.cjs +1 -0
- package/dist/pdf.cjs +49 -49
- package/dist/pdf.d.cts +31 -1
- package/dist/pdf.d.ts +31 -1
- package/dist/pdf.js +4797 -4650
- package/dist/plugin-BDTU4D94.cjs +1 -0
- package/dist/plugin-Cd5G2QQn.js +22 -0
- package/dist/region-binding-workflow-CXDmt9Bs.js +977 -0
- package/dist/region-binding-workflow-DhQvu1co.cjs +3 -0
- package/dist/{report-params-B_VCihAh.js → report-params-B44imUd4.js} +1 -1
- package/dist/{report-params-CjWrjPl6.cjs → report-params-SJfhKgaX.cjs} +1 -1
- package/dist/server/node.d.cts +48 -5
- package/dist/server/node.d.ts +48 -5
- package/dist/server-node.cjs +1 -1
- package/dist/server-node.js +503 -317
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +252 -4
- package/dist/server.d.ts +252 -4
- package/dist/server.js +567 -469
- package/dist/style.css +1 -1
- package/dist/template-registry-WNXdkiET.js +506 -0
- package/dist/template-registry-ukBGlm8N.cjs +1 -0
- package/dist/template-review-BXp2oyqg.cjs +1 -0
- package/dist/template-review-BdcXSYbx.js +1616 -0
- package/dist/tree-BX380Rr7.cjs +1 -0
- package/dist/tree-CqcQ99NM.js +172 -0
- package/dist/useLocalDraft-C07SYRnC.js +11 -0
- package/dist/useLocalDraft-Yiw1wFgI.cjs +1 -0
- package/dist/{validate-DWPF7icl.js → validate-7s0yn6ii.js} +26 -26
- package/dist/validate-DsRiNw8h.cjs +1 -0
- package/dist/vue/async.d.cts +118 -6
- package/dist/vue/async.d.ts +118 -6
- package/dist/vue/index.d.cts +177 -11
- package/dist/vue/index.d.ts +177 -11
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +5 -5
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +116 -113
- package/dist/{import-template-CNMLJSQw.js → workbook-session-BKOTwcoq.js} +4290 -4227
- package/dist/{import-template-CpxunKVp.cjs → workbook-session-CLYLhZWu.cjs} +17 -17
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +9 -2
- package/dist/worker.d.ts +9 -2
- package/dist/worker.js +1 -1
- package/dist/xlsx.cjs +4 -2
- package/dist/xlsx.d.cts +159 -3
- package/dist/xlsx.d.ts +159 -3
- package/dist/xlsx.js +354 -192
- package/package.json +1 -1
- package/dist/ExcelBindingWizard-DiaxvWpQ.cjs +0 -1
- package/dist/ExcelBindingWizard-RLJIXKKG.js +0 -816
- package/dist/ReportPreview-B5ZNEasW.js +0 -4439
- package/dist/ReportPreview-DRtVPUYo.cjs +0 -6
- package/dist/RuleEditor-CskN5Fr3.cjs +0 -1
- package/dist/RuleEditor-CtJFzKuY.js +0 -1578
- package/dist/TemplateReviewPanel-C_Lmzis6.cjs +0 -1
- package/dist/TemplateReviewPanel-Cn32OY4_.js +0 -173
- package/dist/binding-preview-B5834rml.cjs +0 -2
- package/dist/binding-preview-ChXjN5L5.js +0 -649
- package/dist/capabilities-DYzWL7KS.cjs +0 -1
- package/dist/matrix-CNPDJxED.js +0 -745
- package/dist/matrix-Div9Ilh3.cjs +0 -1
- package/dist/param-validation-BWNjLcN0.js +0 -116
- package/dist/param-validation-CiTxFeZ8.cjs +0 -1
- package/dist/plugin-BWwIgZXV.js +0 -25
- package/dist/plugin-Dg-J1Rbm.cjs +0 -1
- package/dist/template-registry-CHMYZ7SD.cjs +0 -1
- package/dist/template-registry-R61AMCr0.js +0 -433
- package/dist/template-review-hvWWQFsi.js +0 -1027
- package/dist/template-review-jEcOfmGr.cjs +0 -1
- package/dist/validate-BDiMqkJC.cjs +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),S=require("@agile-team/mach-report"),V=require("./designer.cjs"),N=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),h=["aria-label","aria-busy"],B=["disabled"],D={class:"mr-review-controls"},b=["aria-label","disabled"],f={value:"0"},w={value:"20"},C={value:"100"},T={value:"-1"},x={key:0,class:"mr-review-note"},F={class:"mr-review-summary",role:"status"},R={key:0,class:"mr-review-note"},I={key:1,class:"mr-review-note"},M={key:2,class:"mr-review-list"},q={key:0},L=["onClick"],P={key:3,class:"mr-review-note"},$={key:4,class:"mr-review-ack"},j={key:0,class:"mr-review-note"},z={key:1,class:"mr-review-list"},O=["onClick"],U={key:0},A={class:"mr-review-note"},G=e.defineComponent({__name:"TemplateReviewPanel",props:{document:{},previous:{},datasets:{},dataSchemas:{},formats:{},messages:{}},emits:["locate"],setup(p,{emit:g}){const r=p,v=g,t=e.computed(()=>({...V.TEMPLATE_REVIEW_MESSAGES,...r.messages})),o=e.shallowRef(),m=e.ref("20"),c=e.ref(!1),s=e.ref(!1),d=e.computed(()=>o.value?.issues.filter(a=>a.severity==="error").length??0);let u;function k(){clearTimeout(u),s.value=!1,o.value=void 0,c.value=!1}e.watch(()=>r.document,k),e.onBeforeUnmount(()=>clearTimeout(u));function y(){clearTimeout(u),s.value=!0,u=setTimeout(()=>{const a=Number(m.value),n=Object.fromEntries(Object.entries(r.datasets??{}).map(([l,i])=>[l,a<0?i:i.slice(0,a)]));o.value=S.reviewReportTemplate(r.document,{previous:r.previous,dataSchemas:r.dataSchemas,formats:r.formats,allowBreakingChanges:c.value,fixtures:a===0?[]:[{name:a<0?t.value.all:`${a} ${t.value.rows} / dataset`,datasets:n}]}),s.value=!1},0)}function E(a){const n=/\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(a);v("locate",{path:a,...n?{pageIndex:Number(n[1]),componentIndex:Number(n[2])}:{}})}return(a,n)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-template-review","aria-label":t.value.title,"aria-busy":s.value},[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(t.value.title),1),e.createElementVNode("button",{type:"button",disabled:s.value,onClick:y},e.toDisplayString(s.value?t.value.running:t.value.run),9,B)]),e.createElementVNode("div",D,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(t.value.samples),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":n[0]||(n[0]=l=>m.value=l),"aria-label":t.value.samples,disabled:s.value},[e.createElementVNode("option",f,e.toDisplayString(t.value.none),1),e.createElementVNode("option",w,e.toDisplayString(t.value.first20),1),e.createElementVNode("option",C,e.toDisplayString(t.value.first100),1),e.createElementVNode("option",T,e.toDisplayString(t.value.all),1)],8,b),[[e.vModelSelect,m.value]])])]),o.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("div",F,[e.createElementVNode("span",{class:e.normalizeClass({"is-error":d.value})},e.toDisplayString(d.value)+" "+e.toDisplayString(t.value.errors),3),e.createElementVNode("span",null,e.toDisplayString(o.value.issues.length-d.value)+" "+e.toDisplayString(t.value.warnings),1)]),e.createElementVNode("section",null,[e.createElementVNode("h3",null,[e.createTextVNode(e.toDisplayString(t.value.changes)+" ",1),e.createElementVNode("small",null,e.toDisplayString(o.value.changes?.totalChanges??0),1)]),p.previous?o.value.changes?.totalChanges?(e.openBlock(),e.createElementBlock("ol",M,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value.changes?.changes,(l,i)=>(e.openBlock(),e.createElementBlock("li",{key:i},[e.createElementVNode("div",null,[e.createElementVNode("span",null,e.toDisplayString(t.value.categories[l.category])+" · "+e.toDisplayString(t.value.kinds[l.kind]),1),l.breaking?(e.openBlock(),e.createElementBlock("b",q,e.toDisplayString(t.value.breaking),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",onClick:_=>E(l.path)},e.toDisplayString(t.value.locate),9,L)]),e.createElementVNode("code",null,e.toDisplayString(l.path),1),e.createElementVNode("dl",null,[l.before!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("dt",null,e.toDisplayString(t.value.before),1),e.createElementVNode("dd",null,e.toDisplayString(l.before),1)],64)):e.createCommentVNode("",!0),l.after!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("dt",null,e.toDisplayString(t.value.after),1),e.createElementVNode("dd",null,e.toDisplayString(l.after),1)],64)):e.createCommentVNode("",!0)])]))),128))])):(e.openBlock(),e.createElementBlock("p",I,e.toDisplayString(t.value.noChanges),1)):(e.openBlock(),e.createElementBlock("p",R,e.toDisplayString(t.value.baseline),1)),o.value.changes?.truncated?(e.openBlock(),e.createElementBlock("p",P,e.toDisplayString(t.value.truncated),1)):e.createCommentVNode("",!0),o.value.changes?.breakingChanges?(e.openBlock(),e.createElementBlock("label",$,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[1]||(n[1]=l=>c.value=l),type:"checkbox"},null,512),[[e.vModelCheckbox,c.value]]),e.createTextVNode(e.toDisplayString(t.value.acknowledge),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("section",null,[e.createElementVNode("h3",null,e.toDisplayString(t.value.issues),1),o.value.issues.length?(e.openBlock(),e.createElementBlock("ol",z,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value.issues,(l,i)=>(e.openBlock(),e.createElementBlock("li",{key:i},[e.createElementVNode("div",null,[e.createElementVNode("span",{class:e.normalizeClass({"is-error":l.severity==="error"})},e.toDisplayString(l.severity==="error"?t.value.errors:t.value.warnings),3),e.createElementVNode("button",{type:"button",onClick:_=>v("locate",l)},e.toDisplayString(t.value.locate),9,O)]),e.createElementVNode("p",null,e.toDisplayString(l.message),1),e.createElementVNode("code",null,e.toDisplayString(l.path),1)]))),128))])):(e.openBlock(),e.createElementBlock("p",j,e.toDisplayString(t.value.noIssues),1))]),o.value.samples.length?(e.openBlock(),e.createElementBlock("section",U,[e.createElementVNode("h3",null,e.toDisplayString(t.value.results),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value.samples,l=>(e.openBlock(),e.createElementBlock("p",{key:l.name},e.toDisplayString(l.name)+" · "+e.toDisplayString(l.rows)+" "+e.toDisplayString(t.value.rows)+" · "+e.toDisplayString(l.pages)+" "+e.toDisplayString(t.value.pages),1))),128))])):e.createCommentVNode("",!0),e.createElementVNode("p",A,e.toDisplayString(t.value.checked),1)],64)):(e.openBlock(),e.createElementBlock("p",x,e.toDisplayString(t.value.empty),1))],8,h))}}),H=N._export_sfc(G,[["__scopeId","data-v-57cb15cb"]]);exports.default=H;
|
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
import { defineComponent as R, computed as C, shallowRef as B, ref as k, watch as M, onBeforeUnmount as $, openBlock as s, createElementBlock as o, createElementVNode as t, toDisplayString as e, createTextVNode as f, withDirectives as x, vModelSelect as P, Fragment as d, normalizeClass as T, renderList as g, createCommentVNode as m, vModelCheckbox as U } from "vue";
|
|
2
|
-
import { reviewReportTemplate as j } from "@agile-team/mach-report";
|
|
3
|
-
import { TEMPLATE_REVIEW_MESSAGES as z } from "./designer.js";
|
|
4
|
-
import { _ as A } from "./_plugin-vue_export-helper-8SL1F89S.js";
|
|
5
|
-
const D = ["aria-label", "aria-busy"], L = ["disabled"], O = { class: "mr-review-controls" }, F = ["aria-label", "disabled"], G = { value: "0" }, W = { value: "20" }, q = { value: "100" }, H = { value: "-1" }, J = {
|
|
6
|
-
key: 0,
|
|
7
|
-
class: "mr-review-note"
|
|
8
|
-
}, K = {
|
|
9
|
-
class: "mr-review-summary",
|
|
10
|
-
role: "status"
|
|
11
|
-
}, Q = {
|
|
12
|
-
key: 0,
|
|
13
|
-
class: "mr-review-note"
|
|
14
|
-
}, X = {
|
|
15
|
-
key: 1,
|
|
16
|
-
class: "mr-review-note"
|
|
17
|
-
}, Y = {
|
|
18
|
-
key: 2,
|
|
19
|
-
class: "mr-review-list"
|
|
20
|
-
}, Z = { key: 0 }, ee = ["onClick"], le = {
|
|
21
|
-
key: 3,
|
|
22
|
-
class: "mr-review-note"
|
|
23
|
-
}, te = {
|
|
24
|
-
key: 4,
|
|
25
|
-
class: "mr-review-ack"
|
|
26
|
-
}, ae = {
|
|
27
|
-
key: 0,
|
|
28
|
-
class: "mr-review-note"
|
|
29
|
-
}, se = {
|
|
30
|
-
key: 1,
|
|
31
|
-
class: "mr-review-list"
|
|
32
|
-
}, oe = ["onClick"], ne = { key: 0 }, re = { class: "mr-review-note" }, ue = /* @__PURE__ */ R({
|
|
33
|
-
__name: "TemplateReviewPanel",
|
|
34
|
-
props: {
|
|
35
|
-
document: {},
|
|
36
|
-
previous: {},
|
|
37
|
-
datasets: {},
|
|
38
|
-
dataSchemas: {},
|
|
39
|
-
formats: {},
|
|
40
|
-
messages: {}
|
|
41
|
-
},
|
|
42
|
-
emits: ["locate"],
|
|
43
|
-
setup(y, { emit: E }) {
|
|
44
|
-
const i = y, w = E, l = C(() => ({ ...z, ...i.messages })), n = B(), h = k("20"), p = k(!1), c = k(!1), b = C(() => n.value?.issues.filter((r) => r.severity === "error").length ?? 0);
|
|
45
|
-
let _;
|
|
46
|
-
function S() {
|
|
47
|
-
clearTimeout(_), c.value = !1, n.value = void 0, p.value = !1;
|
|
48
|
-
}
|
|
49
|
-
M(() => i.document, S), $(() => clearTimeout(_));
|
|
50
|
-
function N() {
|
|
51
|
-
clearTimeout(_), c.value = !0, _ = setTimeout(() => {
|
|
52
|
-
const r = Number(h.value), u = Object.fromEntries(Object.entries(i.datasets ?? {}).map(([a, v]) => [a, r < 0 ? v : v.slice(0, r)]));
|
|
53
|
-
n.value = j(i.document, {
|
|
54
|
-
previous: i.previous,
|
|
55
|
-
dataSchemas: i.dataSchemas,
|
|
56
|
-
formats: i.formats,
|
|
57
|
-
allowBreakingChanges: p.value,
|
|
58
|
-
fixtures: r === 0 ? [] : [{ name: r < 0 ? l.value.all : `${r} ${l.value.rows} / dataset`, datasets: u }]
|
|
59
|
-
}), c.value = !1;
|
|
60
|
-
}, 0);
|
|
61
|
-
}
|
|
62
|
-
function V(r) {
|
|
63
|
-
const u = /\.pages\[(\d+)\]\.components\[(\d+)\]/.exec(r);
|
|
64
|
-
w("locate", { path: r, ...u ? { pageIndex: Number(u[1]), componentIndex: Number(u[2]) } : {} });
|
|
65
|
-
}
|
|
66
|
-
return (r, u) => (s(), o("section", {
|
|
67
|
-
class: "mr-template-review",
|
|
68
|
-
"aria-label": l.value.title,
|
|
69
|
-
"aria-busy": c.value
|
|
70
|
-
}, [
|
|
71
|
-
t("header", null, [
|
|
72
|
-
t("strong", null, e(l.value.title), 1),
|
|
73
|
-
t("button", {
|
|
74
|
-
type: "button",
|
|
75
|
-
disabled: c.value,
|
|
76
|
-
onClick: N
|
|
77
|
-
}, e(c.value ? l.value.running : l.value.run), 9, L)
|
|
78
|
-
]),
|
|
79
|
-
t("div", O, [
|
|
80
|
-
t("label", null, [
|
|
81
|
-
f(e(l.value.samples), 1),
|
|
82
|
-
x(t("select", {
|
|
83
|
-
"onUpdate:modelValue": u[0] || (u[0] = (a) => h.value = a),
|
|
84
|
-
"aria-label": l.value.samples,
|
|
85
|
-
disabled: c.value
|
|
86
|
-
}, [
|
|
87
|
-
t("option", G, e(l.value.none), 1),
|
|
88
|
-
t("option", W, e(l.value.first20), 1),
|
|
89
|
-
t("option", q, e(l.value.first100), 1),
|
|
90
|
-
t("option", H, e(l.value.all), 1)
|
|
91
|
-
], 8, F), [
|
|
92
|
-
[P, h.value]
|
|
93
|
-
])
|
|
94
|
-
])
|
|
95
|
-
]),
|
|
96
|
-
n.value ? (s(), o(d, { key: 1 }, [
|
|
97
|
-
t("div", K, [
|
|
98
|
-
t("span", {
|
|
99
|
-
class: T({ "is-error": b.value })
|
|
100
|
-
}, e(b.value) + " " + e(l.value.errors), 3),
|
|
101
|
-
t("span", null, e(n.value.issues.length - b.value) + " " + e(l.value.warnings), 1)
|
|
102
|
-
]),
|
|
103
|
-
t("section", null, [
|
|
104
|
-
t("h3", null, [
|
|
105
|
-
f(e(l.value.changes) + " ", 1),
|
|
106
|
-
t("small", null, e(n.value.changes?.totalChanges ?? 0), 1)
|
|
107
|
-
]),
|
|
108
|
-
y.previous ? n.value.changes?.totalChanges ? (s(), o("ol", Y, [
|
|
109
|
-
(s(!0), o(d, null, g(n.value.changes?.changes, (a, v) => (s(), o("li", { key: v }, [
|
|
110
|
-
t("div", null, [
|
|
111
|
-
t("span", null, e(l.value.categories[a.category]) + " · " + e(l.value.kinds[a.kind]), 1),
|
|
112
|
-
a.breaking ? (s(), o("b", Z, e(l.value.breaking), 1)) : m("", !0),
|
|
113
|
-
t("button", {
|
|
114
|
-
type: "button",
|
|
115
|
-
onClick: (I) => V(a.path)
|
|
116
|
-
}, e(l.value.locate), 9, ee)
|
|
117
|
-
]),
|
|
118
|
-
t("code", null, e(a.path), 1),
|
|
119
|
-
t("dl", null, [
|
|
120
|
-
a.before !== void 0 ? (s(), o(d, { key: 0 }, [
|
|
121
|
-
t("dt", null, e(l.value.before), 1),
|
|
122
|
-
t("dd", null, e(a.before), 1)
|
|
123
|
-
], 64)) : m("", !0),
|
|
124
|
-
a.after !== void 0 ? (s(), o(d, { key: 1 }, [
|
|
125
|
-
t("dt", null, e(l.value.after), 1),
|
|
126
|
-
t("dd", null, e(a.after), 1)
|
|
127
|
-
], 64)) : m("", !0)
|
|
128
|
-
])
|
|
129
|
-
]))), 128))
|
|
130
|
-
])) : (s(), o("p", X, e(l.value.noChanges), 1)) : (s(), o("p", Q, e(l.value.baseline), 1)),
|
|
131
|
-
n.value.changes?.truncated ? (s(), o("p", le, e(l.value.truncated), 1)) : m("", !0),
|
|
132
|
-
n.value.changes?.breakingChanges ? (s(), o("label", te, [
|
|
133
|
-
x(t("input", {
|
|
134
|
-
"onUpdate:modelValue": u[1] || (u[1] = (a) => p.value = a),
|
|
135
|
-
type: "checkbox"
|
|
136
|
-
}, null, 512), [
|
|
137
|
-
[U, p.value]
|
|
138
|
-
]),
|
|
139
|
-
f(e(l.value.acknowledge), 1)
|
|
140
|
-
])) : m("", !0)
|
|
141
|
-
]),
|
|
142
|
-
t("section", null, [
|
|
143
|
-
t("h3", null, e(l.value.issues), 1),
|
|
144
|
-
n.value.issues.length ? (s(), o("ol", se, [
|
|
145
|
-
(s(!0), o(d, null, g(n.value.issues, (a, v) => (s(), o("li", { key: v }, [
|
|
146
|
-
t("div", null, [
|
|
147
|
-
t("span", {
|
|
148
|
-
class: T({ "is-error": a.severity === "error" })
|
|
149
|
-
}, e(a.severity === "error" ? l.value.errors : l.value.warnings), 3),
|
|
150
|
-
t("button", {
|
|
151
|
-
type: "button",
|
|
152
|
-
onClick: (I) => w("locate", a)
|
|
153
|
-
}, e(l.value.locate), 9, oe)
|
|
154
|
-
]),
|
|
155
|
-
t("p", null, e(a.message), 1),
|
|
156
|
-
t("code", null, e(a.path), 1)
|
|
157
|
-
]))), 128))
|
|
158
|
-
])) : (s(), o("p", ae, e(l.value.noIssues), 1))
|
|
159
|
-
]),
|
|
160
|
-
n.value.samples.length ? (s(), o("section", ne, [
|
|
161
|
-
t("h3", null, e(l.value.results), 1),
|
|
162
|
-
(s(!0), o(d, null, g(n.value.samples, (a) => (s(), o("p", {
|
|
163
|
-
key: a.name
|
|
164
|
-
}, e(a.name) + " · " + e(a.rows) + " " + e(l.value.rows) + " · " + e(a.pages) + " " + e(l.value.pages), 1))), 128))
|
|
165
|
-
])) : m("", !0),
|
|
166
|
-
t("p", re, e(l.value.checked), 1)
|
|
167
|
-
], 64)) : (s(), o("p", J, e(l.value.empty), 1))
|
|
168
|
-
], 8, D));
|
|
169
|
-
}
|
|
170
|
-
}), me = /* @__PURE__ */ A(ue, [["__scopeId", "data-v-57cb15cb"]]);
|
|
171
|
-
export {
|
|
172
|
-
me as default
|
|
173
|
-
};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";const F=require("./dataset-BkRmwgeJ.cjs"),S=require("./template-registry-CHMYZ7SD.cjs"),A=require("./grid-geometry-CZ_cYB6O.cjs");function x(e){let t="";for(let o=e;o>0;o=Math.floor((o-1)/26))t=String.fromCharCode(65+(o-1)%26)+t;return t}function v(e){return`${x(e.left)}${e.top}:${x(e.right)}${e.bottom}`}function O(e){let t=0;for(const o of e.toUpperCase())t=t*26+o.charCodeAt(0)-64;return t}function u(e){if(typeof e!="string")throw new Error("Excel 范围应为 A1:B20 格式的字符串");const t=/^\$?([A-Z]{1,3})\$?([1-9]\d{0,6})(?::\$?([A-Z]{1,3})\$?([1-9]\d{0,6}))?$/i.exec(e.trim());if(!t)throw new Error(`Excel 范围无效:${e}`);const o={left:O(t[1]),top:Number(t[2]),right:O(t[3]??t[1]),bottom:Number(t[4]??t[2])};if(o.right<o.left||o.bottom<o.top||o.right>16384||o.bottom>1048576)throw new Error(`Excel 范围超出边界或顺序无效:${e}`);return o}function _(e,t){if(t!==void 0)return u(t);const o=e.model.rows??[];if(!o.length)return{top:1,left:1,bottom:1,right:1};const n={top:1/0,left:1/0,bottom:1,right:1};for(const r of o)n.top=Math.min(n.top,r.number),n.bottom=Math.max(n.bottom,r.number),n.left=Math.min(n.left,r.min||1),n.right=Math.max(n.right,r.max||1);return n}function W(e,t,o){const n=e.bottom-e.top+1,r=e.right-e.left+1;if(n>t.limits.maxRows||r>t.limits.maxColumns||n*r>o)throw new Error(`Excel 范围 ${v(e)} 超过导入行、列或单元格上限;请用 sheets/range 缩小范围`);return n*r}function Y(e,t){return e.top<=t.bottom&&e.bottom>=t.top&&e.left<=t.right&&e.right>=t.left}function q(e,t){const o=[];for(const n of e.model.merges){const r=u(n);if(Y(t,r)){if(r.left<t.left||r.right>t.right||r.top<t.top||r.bottom>t.bottom)throw new Error(`${e.name}: 范围 ${v(t)} 截断合并单元格 ${n},请包含完整合并区域`);o.push(r)}}return o}function Z(e,t){const o=new Map;for(const r of t)o.set(r.top,Math.max(o.get(r.top)??r.top,r.bottom));const n=[];for(let r=e.top;r<=e.bottom;){let s=o.get(r)??r;for(let i=r;i<=s;i++)s=Math.max(s,o.get(i)??i);n.push({top:r,bottom:s}),r=s+1}return n}function z(e,t,o,n){const r=[];let s,i=0;for(const a of e){const l=a.bottom-a.top+1;if(l>200)throw new Error("合并单元格跨越超过 200 行,无法安全分段;请先缩小或拆分该合并区域");let c=0;for(let d=a.top;d<=a.bottom;d++)c+=n(d);if(c>o&&Number.isFinite(o))throw new Error("合并区域或单行高度超过标准纸张可用高度;请使用 wide 或调整原模板行高");const m=s?a.bottom-s.top+1:l;s&&(m>t||i+c>o)&&(r.push(s),s=void 0,i=0),s?s.bottom=a.bottom:s={...a},i+=c}return s&&r.push(s),r}function U(e){const t=new Map,o=new Set;for(const n of e){t.set(`${n.top}:${n.left}`,n);for(let r=n.top;r<=n.bottom;r++)for(let s=n.left;s<=n.right;s++)(r!==n.top||s!==n.left)&&o.add(`${r}:${s}`)}return{masters:t,covered:o}}function $(e){return JSON.parse(JSON.stringify(e))}function V(e,t){const o=e.template.pages.slice(t.pageStart,t.pageStart+t.pageCount),n=o[0];if(!n)throw new Error(`工作表 ${t.name} 没有可绑定页面`);const r=new Map;let s=[];for(const i of o)for(const a of i.components){if(a.kind==="list"||!a.grid||a.meta?.xlsxSheet!==t.name)continue;const l=u(String(a.meta.xlsxRange)),c=a.grid;s=c.colWidthsMm??[],c.cells.forEach((m,d)=>r.set(l.top+d,{cells:$(m),height:c.rowHeightsMm?.[d]??6}))}if(!s.length||!r.size)throw new Error(`工作表 ${t.name} 缺少导入几何元数据`);return{rows:r,widths:[...s],page:n,range:u(t.range)}}function C(e,t,o){const n=[],r=[];for(let s=t;s<=o;s++){const i=e.rows.get(s);if(!i)throw new Error(`导入模板缺少第 ${s} 行`);for(const a of i.cells)if(a&&s+(a.rowSpan??1)-1>o)throw new Error(`第 ${s} 行合并区域跨越绑定边界,请调整 header/detail 范围`);n.push($(i.cells)),r.push(i.height)}return{cells:n,rowHeightsMm:r,colWidthsMm:e.widths,paddingMm:.25}}function Q(e,t){const o=u(e.header),n=e.detail?u(e.detail):{...t.range,top:o.bottom+1};for(const r of[o,n])if(r.left!==t.range.left||r.right!==t.range.right||r.top<t.range.top||r.bottom>t.range.bottom||r.top>r.bottom)throw new Error("绑定区域必须位于导入选区内并覆盖其完整列宽");if(n.top!==o.bottom+1)throw new Error("detail 应紧接 header,避免静态内容被隐式删除");if(e.columns.length!==t.widths.length)throw new Error("columns 应逐列映射整个选区;不能自动猜测业务字段");return X(t,[o.top,o.bottom+1,n.bottom+1]),{header:o,detail:n}}function X(e,t){for(const[o,n]of e.rows)for(const r of n.cells){const s=o+(r?.rowSpan??1);if(t.some(i=>o<i&&s>i))throw new Error(`第 ${o} 行合并区域跨越绑定边界,请调整 header/detail 范围`)}}function ee(e,t){const o=[];for(const n of A.resolveGridLayout(e,t.reduce((r,s)=>r+s,0),100).cells)for(let r=n.ci;r<Math.min(t.length,n.ci+(n.cell.colSpan??1));r++)o[r]=n.cell;return o}function te(e,t,o,n){if(t)return t;const r=e?.numberFormat;if(!r||r==="General")return;const s=/^(#,##)?0(?:\.(0+))?(%)?$/.exec(r);if(s){const i=s[2]?.length??0;if(i<=100)return s[3]?{kind:"percent",digits:i}:{kind:"number",digits:i,...s[1]?{thousands:!0}:{}}}n.push(`${o}: Excel 数字格式 ${r} 未自动套用到动态数据,请在 columns 中显式声明 format`)}function oe(e,t,o,n,r){const s=ee(t,n),i=A.resolveGridLayout(o,n.reduce((m,d)=>m+d,0),20).cells;if(i.some(({cell:m})=>(m.colSpan??1)!==1||(m.rowSpan??1)!==1))throw new Error("动态明细样例行不能包含合并格;合并表头可以保留");const a=new Map(i.map(m=>[m.ci,m.cell])),l=new Set,c=e.columns.map((m,d)=>{const f=typeof m=="string"?{field:m}:m;if(!f||typeof f.field!="string"||!f.field.trim()||l.has(f.field))throw new Error(`columns[${d}] 需要唯一的非空 field`);l.add(f.field);const g=s[d]?.text??f.field,h=a.get(d),w=e.inferSampleFormats===!1?f.format:te(h,f.format,f.field,r);return{...f,...w?{format:w}:{},header:f.header??g,widthMm:n[d],style:{...h?.style,...f.style},...f.semanticRole&&!f.align?{align:"auto"}:{},...f.editable===void 0&&h?.editable===!1?{editable:!1}:{}}});return re(e,s,c),c}function re(e,t,o){const n=new Map;e.columns.forEach((r,s)=>{const i=t[s];if(!i||typeof r=="string")return;const a=n.get(i)??{style:{}};if(r.header!==void 0){if(a.text!==void 0&&a.text!==r.header)throw new Error("同一合并表头不能配置不同 header");a.text=r.header}ne(a.style,{...r.headerAlign?{align:r.headerAlign}:{},...r.headerStyle}),n.set(i,a)});for(const[r,s]of n)s.text!==void 0&&Object.assign(r,{text:s.text,rawText:s.text,value:s.text}),r.style={...r.style,...s.style},t.forEach((i,a)=>{i===r&&(s.text!==void 0&&(o[a].header=s.text),s.style.align!==void 0&&(o[a].headerAlign=s.style.align))})}function ne(e,t){for(const o of Object.keys(t))if(t[o]!==void 0){if(e[o]!==void 0&&e[o]!==t[o])throw new Error(`同一合并表头不能配置不同 ${o}`);Object.assign(e,{[o]:t[o]})}}function se(e,t){const o=e.page,n=t.rowHeightsMm.reduce((r,s)=>r+s,0);return{...o,heightMm:Math.max(o.heightMm,n+(o.marginTopMm??0)+(o.marginBottomMm??0)),components:[{kind:"rect",leftMm:o.marginLeftMm??0,topMm:o.marginTopMm??0,widthMm:e.widths.reduce((r,s)=>r+s,0),heightMm:n,grid:t}]}}function ae(e,t,o,n){const r=V(e,t),{header:s,detail:i}=Q(o,r),a=C(r,r.range.top,s.bottom),l=C(r,i.top,i.top),c={...r.page,components:[]},m={kind:"list",id:`bound:${t.name}`,dataset:o.dataset??"detail",title:t.name,leftMm:c.marginLeftMm??0,topMm:c.marginTopMm??0,widthMm:r.widths.reduce((d,f)=>d+f,0),layout:c.layout??"page",headerGrid:a,columns:oe(o,a,l,r.widths,n),rowHeightMm:l.rowHeightsMm[0],headerEveryPage:!0,align:"auto",paddingMm:.25,...o.rowKey?{rowKey:o.rowKey}:{},...o.revisionField?{revisionField:o.revisionField}:{},...o.sourceTokenField?{sourceTokenField:o.sourceTokenField}:{},...o.groupBy?{groupBy:o.groupBy}:{},...o.grandTotal===void 0?{}:{grandTotal:o.grandTotal}};return c.components.push(m),i.bottom===r.range.bottom?[c]:(n.push(`${t.name}: 明细区域后的静态内容保留为后续独立页面,不推断动态页脚定位`),[c,se(r,C(r,i.bottom+1,r.range.bottom))])}function j(e,t){const o=S.validateReportTemplate(e.template);if(!o.ok)throw new Error(`导入模板无效:${o.errors[0]?.message}`);if(!t.length)throw new Error("至少需要一个 Excel 业务绑定");const n=new Map;for(const l of t){if(!e.sheets.some(c=>c.name===l.sheet)||n.has(l.sheet))throw new Error(`绑定工作表不存在或重复:${l.sheet}`);n.set(l.sheet,l)}const r=[...e.warnings],s=e.sheets.flatMap(l=>{const c=n.get(l.name);return c?ae(e,l,c,r):$(e.template.pages.slice(l.pageStart,l.pageStart+l.pageCount))}),i={...$(e.template),pages:s},a=S.validateReportTemplate(i);if(!a.ok)throw new Error(`业务模板无效:${a.errors[0]?.path} ${a.errors[0]?.message}`);return{template:i,warnings:r}}function ie(e,t){return ce(e,t)}function ce(e,t){const o=e.sheets.find(l=>l.name===t.sheet);if(!o)return[];const n=u(t.regions.header),r=u(t.regions.detail),s=[n.top,n.bottom+1,r.bottom+1],i=[],a=new Set;for(const l of e.template.pages.slice(o.pageStart,o.pageStart+o.pageCount))for(const c of l.components){if(c.kind==="list"||!c.grid||c.meta?.xlsxSheet!==t.sheet)continue;const m=u(String(c.meta.xlsxRange));c.grid.cells.forEach((d,f)=>{const g=m.top+f;for(const h of d){const w=s.some(b=>g<b&&g+(h?.rowSpan??1)>b),E=g===r.top&&((h?.rowSpan??1)>1||(h?.colSpan??1)>1);if(!w&&!E)continue;const y=w?"$.recipe.regions":"$.recipe.regions.detail";a.has(y)||(a.add(y),i.push({path:y,code:"region",message:w?`第 ${g} 行合并区域跨越绑定边界,请选择完整合并区域`:"动态明细原型行不能包含合并格"}))}})}return i}function G(e){return JSON.parse(JSON.stringify(e))}function M(e){return e instanceof Error?e.message:String(e)}function p(e,t,o,n){e.push({path:t,code:o,message:n})}function K(e,t){return{fields:e.fields,...t?{rowKey:t}:{}}}function le(e,t){const o=new Set;for(const[n,r]of e.entries()){const s=`$.datasets[${n}]`;if(!r||typeof r.id!="string"||!r.id.trim()||o.has(r.id)){p(t,s,"schema","数据集标识应非空且唯一");continue}o.add(r.id);try{F.validateDatasetRows([],K(r,r.rowKey));for(const[i,a]of r.fields.entries())a.digits!==void 0&&(!Number.isInteger(a.digits)||a.digits<0||a.digits>100)&&p(t,`${s}.fields[${i}].digits`,"schema","显示精度应为 0–100 的整数")}catch(i){p(t,s,"schema",M(i))}}}function fe(e,t,o){const n=e.sheets.find(a=>a.name===t.sheet);if(!n){p(o,"$.recipe.sheet","source","指定的工作表不存在");return}let r;try{r=u(n.range)}catch(a){p(o,"$.source.sheets","source",M(a));return}const s=new Map;for(const a of["title","header","detail","footer"]){const l=t.regions?.[a];if(!(!l&&(a==="title"||a==="footer")))try{const c=u(l??"");if(c.left!==r.left||c.right!==r.right||c.top<r.top||c.bottom>r.bottom)throw new Error("区域必须覆盖选区完整列宽,并位于原始工作表内");s.set(a,c)}catch(c){p(o,`$.recipe.regions.${a}`,"region",M(c))}}const i=[...s.values()];i.length&&(i[0].top!==r.top||i[i.length-1].bottom!==r.bottom)&&p(o,"$.recipe.regions","region","标题、表头、明细、页脚应完整覆盖来源,不能隐式删除静态内容");for(let a=1;a<i.length;a++)i[a].top!==i[a-1].bottom+1&&p(o,"$.recipe.regions","region","各区域应顺序相邻且不重叠")}function me(e,t,o,n){if(!Array.isArray(e.fields)||e.fields.length!==o)return p(n,"$.recipe.fields","mapping","每个物理 Excel 列必须显式绑定一个业务字段"),0;const r=new Set(t.fields.map(a=>a.field)),s=new Set;let i=0;e.fields.forEach((a,l)=>{typeof a!="string"||!r.has(a)?p(n,`$.recipe.fields[${l}]`,"mapping","请选择契约中已声明的字段"):s.has(a)?p(n,`$.recipe.fields[${l}]`,"mapping","同一业务字段不能重复绑定物理列"):(i++,s.add(a))});try{if(!e.rowKey)throw new Error("请明确选择稳定业务主键,不能使用展示行号");const a=K(t,e.rowKey),l=F.validateDatasetRows(t.samples??[],a,{path:`$.datasets.${t.id}.samples`,maxRows:100,maxCells:2e5,maxIssues:30});for(const c of l.issues)p(n,c.path,c.code==="row-key"?"row-key":"schema",c.message)}catch(a){p(n,"$.recipe.rowKey","row-key",M(a))}return i}function D(e,t){const o=[];return!t||t.version!=="1.0"?[{path:"$.recipe.version",code:"schema",message:"不支持的 Excel 绑定配置版本"}]:(fe(e,t,o),o.length||o.push(...ie(e,t)),o)}function L(e,t,o){const n=[];if(!t||t.version!=="1.0")return{ok:!1,issues:[{path:"$.recipe.version",code:"schema",message:"不支持的 Excel 绑定配置版本"}],mapped:0,total:0};le(o,n);const r=e.sheets.find(a=>a.name===t.sheet)?.columnCount??0,s=o.find(a=>a.id===t.dataset);let i=0;return s?n.some(a=>a.code==="schema")||(i=me(t,s,r,n)):p(n,"$.recipe.dataset","schema","请明确选择宿主提供的数据集契约"),{ok:n.length===0,issues:n,mapped:i,total:r}}function J(e,t,o){const n=L(e,t,o);if(!t||t.version!=="1.0")return n;const r=[...D(e,t),...n.issues];return{...n,ok:r.length===0,issues:r}}function ge(e){const t=e.semanticRole??(e.type==="number"||e.type==="decimal"?"measure":e.type==="date"?"date":"text");return{field:e.field,semanticRole:t,editable:!1,...e.type==="number"&&e.digits!==void 0?{format:{kind:"number",digits:e.digits}}:{},...e.type==="date"?{format:{kind:"date",pattern:"YYYY-MM-DD"}}:{}}}function he(e,t,o,n){const r=J(e,t,o);if(!r.ok)throw new Error(r.issues.map(m=>`${m.path}: ${m.message}`).join(`
|
|
2
|
-
`));const s=e.sheets.find(m=>m.name===t.sheet),i={...e,sheets:[{...s,pageStart:0}],template:{...e.template,pages:e.template.pages.slice(s.pageStart,s.pageStart+s.pageCount)}},a=new Map(o.find(m=>m.id===t.dataset).fields.map(m=>[m.field,m])),l={sheet:t.sheet,dataset:t.dataset,header:t.regions.header,detail:t.regions.detail,rowKey:t.rowKey,inferSampleFormats:!1,columns:t.fields.map(m=>ge(a.get(m)))},c=j(i,[l]);return{document:S.defineReportTemplate({...n,template:c.template}),recipe:G(t),warnings:c.warnings}}function de(e){return e===null||typeof e=="string"||typeof e=="boolean"||typeof e=="number"&&Number.isFinite(e)}function H(e,t=0){if(de(e))return;if(!e||typeof e!="object"||t>16)throw new Error("绑定会话元数据只允许有限深度的普通 JSON 值");const o=Object.getPrototypeOf(e);if(Array.isArray(e)?o!==Array.prototype:o!==Object.prototype&&o!==null)throw new Error("绑定会话不能包含特殊对象原型");if(Object.getOwnPropertySymbols(e).length)throw new Error("绑定会话不能包含 Symbol");if(Array.isArray(e)&&Object.keys(e).length!==e.length)throw new Error("绑定会话数组不能包含空位或额外属性");for(const[n,r]of Object.entries(Object.getOwnPropertyDescriptors(e)))if(!(Array.isArray(e)&&n==="length")){if(["__proto__","prototype","constructor"].includes(n)||r.get||r.set||!r.enumerable)throw new Error("绑定会话包含不安全元数据");H(r.value,t+1)}}function ue(e,t){if(e?.version!=="1.0"||!Array.isArray(e.fields)||e.fields.length>16384||e.fields.some(o=>typeof o!="string"))throw new Error("Excel 绑定配置无效");if(typeof e.dataset!="string"||typeof e.rowKey!="string"||!e.regions||typeof t?.id!="string"||typeof t.name!="string")throw new Error("Excel 绑定参数或标识无效");for(const o of Object.values(e.regions))o!==""&&u(o)}function pe(e){for(const t of e.sheets)if(u(t.range),typeof t.name!="string"||![t.index,t.rowCount,t.columnCount,t.pageCount].every(o=>Number.isInteger(o)&&o>0)||!Number.isInteger(t.pageStart)||t.pageStart<0||t.pageStart+t.pageCount>e.template.pages.length)throw new Error("Excel 绑定工作表几何元数据无效")}function we(e,t,o){if(H({sheets:e.sheets,warnings:e.warnings,recipe:t,identity:o}),!Array.isArray(e.sheets)||!e.sheets.length||e.sheets.length>32||!Array.isArray(e.warnings)||e.warnings.some(n=>typeof n!="string"))throw new Error("Excel 绑定来源元数据无效");if(ue(t,o),!e.sheets.some(n=>n.name===t.sheet))throw new Error("Excel 绑定工作表不存在");pe(e)}function P(e,t,o){return we(e,t,o),S.parseReportTemplate({schemaVersion:"1.0",id:o.id,name:o.name,template:e.template}),G({version:"1.0",source:e,recipe:t,identity:o})}function ye(e){if(typeof e=="string"&&e.length>1e7)throw new Error("Excel 绑定会话超过 1000 万字符上限");const t=typeof e=="string"?JSON.parse(e):e;if(!t||t.version!=="1.0"||t.recipe?.version!=="1.0"||!Array.isArray(t.source?.sheets))throw new Error("Excel 绑定会话结构或版本无效");return P(t.source,t.recipe,t.identity)}function Ee(e,t,o,n){const r=e.sheets.find(l=>l.name===t);if(!r)throw new Error("工作表不存在");const s=u(r.range),i=Math.min(o,n),a=Math.max(o,n);if(!Number.isInteger(i)||!Number.isInteger(a)||i<s.top||a>s.bottom)throw new Error("选中行超出来源区域");return v({...s,top:i,bottom:a})}function I(e,t,o){const n=e??t;if(!Number.isInteger(n)||n<1||n>o)throw new Error(`预览窗口大小应为 1–${o} 的整数`);return n}function T(e,t,o){const n=e??t;if(!Number.isInteger(n))throw new Error("预览起点应为整数");return Math.max(t,Math.min(o,n))}function be(e,t,o={}){const n=e.sheets.find(f=>f.name===t);if(!n)throw new Error("指定的工作表不存在");const r=u(n.range),s=T(o.row,r.top,r.bottom),i=T(o.column,r.left,r.right),a=Math.min(r.bottom,s+I(o.rows,24,100)-1),l=Math.min(r.right,i+I(o.columns,12,32)-1),c=Array.from({length:a-s+1},(f,g)=>({row:s+g,cells:[]})),m=new Set;for(const f of e.template.pages.slice(n.pageStart,n.pageStart+n.pageCount))for(const g of f.components){if(g.kind==="list"||!g.grid||g.meta?.xlsxSheet!==t)continue;const h=u(String(g.meta.xlsxRange));if(h.bottom<s||h.top>a)continue;const w=A.resolveGridLayout(g.grid,g.widthMm,g.heightMm);for(const E of w.cells)d(E.cell,h.top+E.ri,h.left+E.ci)}for(const f of c){for(let g=i;g<=l;g++)m.has(`${f.row}:${g}`)||f.cells.push({address:`${x(g)}${f.row}`,row:f.row,column:g,text:"",rowSpan:1,colSpan:1,continued:!1});f.cells.sort((g,h)=>g.column-h.column)}return{top:s,bottom:a,left:i,right:l,source:r,rows:c,columns:Array.from({length:l-i+1},(f,g)=>({column:i+g,name:x(i+g)}))};function d(f,g,h){const w=g+(f.rowSpan??1)-1,E=h+(f.colSpan??1)-1;if(w<s||g>a||E<i||h>l)return;const y=Math.max(s,g),b=Math.max(i,h),B=Math.min(a,w)-y+1,N=Math.min(l,E)-b+1;c[y-s].cells.push({address:`${x(h)}${g}`,row:y,column:b,text:f.text??f.rawText??String(f.value??""),rowSpan:B,colSpan:N,continued:y!==g||b!==h,style:f.style});for(let R=y;R<y+B;R++)for(let k=b;k<b+N;k++)m.add(`${R}:${k}`)}}exports.bindExcelTemplate=j;exports.checkedRange=W;exports.columnName=x;exports.createExcelBindingDocument=he;exports.createExcelBindingSession=P;exports.excelBindingRowRange=Ee;exports.getExcelSheetWindow=be;exports.mergeLookup=U;exports.mergeRowGroups=Z;exports.parseExcelBindingSession=ye;exports.parseImportRange=u;exports.rangeName=v;exports.rowSegments=z;exports.selectedMerges=q;exports.selectedRange=_;exports.validateExcelBindingFields=L;exports.validateExcelBindingRecipe=J;exports.validateExcelBindingRegions=D;
|