@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.
- package/README.md +27 -3
- package/dist/ExcelBindingWizard-CLT2p7P3.cjs +1 -0
- package/dist/ExcelBindingWizard-CvsWR8Ga.js +1485 -0
- package/dist/{ParamEditor-BLaE5q5W.js → ParamEditor-CflQV3eQ.js} +191 -187
- package/dist/ParamEditor-vIDzvpPV.cjs +1 -0
- package/dist/ReportBatchPanel-DkxTzBkD.cjs +1 -0
- package/dist/{ReportBatchPanel-B5ClP9tm.js → ReportBatchPanel-LqVgiqp7.js} +3 -3
- package/dist/ReportPreview-CvbqLUzM.cjs +6 -0
- package/dist/ReportPreview-D_ywJ_-H.js +4533 -0
- package/dist/{ReportTemplateLibrary-BZB-XWjj.js → ReportTemplateLibrary-MjWEtc7X.js} +1 -1
- package/dist/ReportTemplateLibrary-cQ1sqNYo.cjs +1 -0
- package/dist/RuleEditor-BaR6xUiI.cjs +1 -0
- package/dist/RuleEditor-ChuXMlei.js +2037 -0
- package/dist/TemplateOutlinePanel-BHKP89Xz.cjs +1 -0
- package/dist/TemplateOutlinePanel-Dci6aRn1.js +96 -0
- package/dist/TemplateReusePanel-B7Gmyc1z.js +388 -0
- package/dist/TemplateReusePanel-CY5eO2Sh.cjs +1 -0
- package/dist/TemplateReviewPanel-DjlX3xpt.js +592 -0
- package/dist/TemplateReviewPanel-JvZe9_4G.cjs +1 -0
- package/dist/{batch-mRqhhhjt.js → batch-DzaTNLWI.js} +23 -16
- package/dist/batch-xMkqYiTr.cjs +1 -0
- package/dist/config-0UIohTS7.cjs +1 -0
- package/dist/{config-B612mw0x.js → config-Dt9NtCPl.js} +227 -186
- package/dist/data-explanation-BktvER5B.cjs +1 -0
- package/dist/data-explanation-C_J6jYNi.js +16 -0
- package/dist/designer-Ci1LizA9.js +5020 -0
- package/dist/designer-rtmVIIdN.cjs +2 -0
- package/dist/designer.cjs +1 -2
- package/dist/designer.d.cts +306 -3
- package/dist/designer.d.ts +306 -3
- package/dist/designer.js +21 -4266
- package/dist/font-loader-DHto6Lra.js +297 -0
- package/dist/font-loader-vhCT8znW.cjs +1 -0
- package/dist/index.cjs +8 -8
- package/dist/index.d.cts +182 -1
- package/dist/index.d.ts +182 -1
- package/dist/index.js +728 -628
- package/dist/{template-review-BzpcI-tR.js → json-snapshot-BeFT3Tso.js} +867 -637
- package/dist/json-snapshot-D1NTP2oI.cjs +2 -0
- package/dist/pdf-8UPQebOE.js +36288 -0
- package/dist/pdf-AyJGb22z.cjs +101 -0
- package/dist/pdf.cjs +1 -101
- package/dist/pdf.js +9 -36579
- package/dist/plugin-BGKf-Tqg.js +22 -0
- package/dist/{plugin-BDTU4D94.cjs → plugin-CktLH_Iy.cjs} +1 -1
- package/dist/{region-binding-workflow-CcUq8W2Q.js → region-binding-workflow-DEJbhpCv.js} +1 -1
- package/dist/server/node.d.cts +46 -11
- package/dist/server/node.d.ts +46 -11
- package/dist/server-node.cjs +1 -1
- package/dist/server-node.js +294 -280
- package/dist/server.cjs +1 -1
- package/dist/server.d.cts +107 -12
- package/dist/server.d.ts +107 -12
- package/dist/server.js +713 -453
- package/dist/style.css +1 -1
- package/dist/template-bindings-BJR4k7qZ.cjs +1 -0
- package/dist/template-bindings-Daui7hLF.js +252 -0
- package/dist/template-fragments-CLkGo6To.js +187 -0
- package/dist/template-fragments-DFUpq5QM.cjs +1 -0
- package/dist/template-outline-B3xVkzSv.cjs +1 -0
- package/dist/template-outline-CFenM1PV.js +88 -0
- package/dist/{template-registry-BjE1VS6g.js → template-registry-COXDEJEM.js} +1 -1
- package/dist/{useLocalDraft-C07SYRnC.js → useLocalDraft-BnhcxXk_.js} +1 -1
- package/dist/{useLocalDraft-Yiw1wFgI.cjs → useLocalDraft-CioIfDb6.cjs} +1 -1
- package/dist/{validate-DbgEM1Hh.js → validate-CkQBWCeg.js} +3 -3
- package/dist/vue/async.d.cts +72 -2
- package/dist/vue/async.d.ts +72 -2
- package/dist/vue/index.d.cts +124 -5
- package/dist/vue/index.d.ts +124 -5
- package/dist/vue-async.cjs +1 -1
- package/dist/vue-async.js +5 -5
- package/dist/vue.cjs +1 -1
- package/dist/vue.js +78 -71
- package/dist/{workbook-session-BPb3TMnT.js → workbook-session-BfK1yHOO.js} +1 -1
- package/dist/worker.cjs +1 -1
- package/dist/worker.d.cts +46 -11
- package/dist/worker.d.ts +46 -11
- package/dist/worker.js +59 -55
- package/dist/xlsx.js +3 -3
- package/package.json +1 -1
- package/dist/ExcelBindingWizard-CeAf4QSE.js +0 -1465
- package/dist/ExcelBindingWizard-y0mT-AHR.cjs +0 -1
- package/dist/ParamEditor-MBBC7lUE.cjs +0 -1
- package/dist/ReportBatchPanel-Dc-SDkYA.cjs +0 -1
- package/dist/ReportPreview-DWXROHBP.cjs +0 -6
- package/dist/ReportPreview-DiNXhQI0.js +0 -4138
- package/dist/ReportTemplateLibrary-5fk5CQBO.cjs +0 -1
- package/dist/RuleEditor-ChRzNQuF.cjs +0 -1
- package/dist/RuleEditor-DzAmW5YH.js +0 -2024
- package/dist/TemplateReviewPanel-BKofGrV9.js +0 -222
- package/dist/TemplateReviewPanel-DwtOcLue.cjs +0 -1
- package/dist/batch-Bt3Fd27Z.cjs +0 -1
- package/dist/config-BRoLo2oj.cjs +0 -1
- package/dist/plugin-Cd5G2QQn.js +0 -22
- package/dist/record-bindings-By_UKZ2g.cjs +0 -1
- package/dist/record-bindings-D-5jQlTj.js +0 -196
- package/dist/template-review-BfCC8Ng9.cjs +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),O=require("@agile-team/mach-report"),T=require("./designer-rtmVIIdN.cjs"),w=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Y=["text","number","date","month","year","dateRange","select"],P={text:"string",number:"string → number",date:"YYYY-MM-DD",month:"YYYY-MM",year:"YYYY",dateRange:"YYYY-MM-DD/YYYY-MM-DD",select:"option.value"};function A(t){if(/^(默认值|必填参数的默认值)/.test(t))return["defaultValue"];if(t.includes("参数名"))return["field"];if(t.includes("选项"))return["options"];if(t.startsWith("最小边界"))return["min","max"];if(t.startsWith("最小长度"))return["minLength","maxLength"];const c=/^(minLength|maxLength|min|max) /.exec(t)?.[1];return c?[c]:["type"]}function F(t){return JSON.parse(JSON.stringify(t))}function R(t){return{field:t.field,label:t.label??"",type:t.type??"text",required:t.required===!0,placeholder:t.placeholder??"",defaultEnabled:t.defaultValue!==void 0,defaultValue:t.defaultValue??"",min:t.min===void 0?"":String(t.min),max:t.max===void 0?"":String(t.max),minLength:t.minLength===void 0?"":String(t.minLength),maxLength:t.maxLength===void 0?"":String(t.maxLength),options:t.options?t.options.map(c=>({...c})):[]}}function U(t){const c={field:t.field,type:t.type};t.label&&(c.label=t.label),t.placeholder&&(c.placeholder=t.placeholder),t.required&&(c.required=!0),t.defaultEnabled&&(c.defaultValue=t.defaultValue);for(const f of["min","max"])t[f]!==""&&(c[f]=t.type==="number"?Number(t[f]):t[f]);for(const f of["minLength","maxLength"])t[f]!==""&&(c[f]=Number(t[f]));return t.type==="select"&&(c.options=t.options.map(f=>({...f}))),c}function q(t){const c=()=>JSON.stringify(t.document.template.params??[]),f=e.ref(c()),u=e.ref((t.document.template.params??[]).map(R)),g=e.ref(0),o=e.ref(""),n=e.computed(()=>({...T.PARAM_EDITOR_MESSAGES,...t.messages})),h=e.computed(()=>u.value.map(U)),y=e.ref(JSON.stringify(u.value)),r=e.computed(()=>JSON.stringify(u.value)!==y.value),E=e.computed(()=>c()!==f.value),b=e.computed(()=>O.validateReportParamDefinitions(h.value)),N=e.computed(()=>{const i=new Map;for(const d of b.value){const m=Number(d.path.split(".").at(-1)),S=i.get(m)??[];S.push({message:d.message,controls:A(d.message)}),i.set(m,S)}return i}),x=e.computed(()=>N.value.keys().next().value),v=e.computed(()=>u.value[g.value]),_=e.computed(()=>b.value.filter(i=>i.path===`$.paramDefs.${g.value}`));function C(i){return(N.value.get(g.value)??[]).filter(d=>d.controls.includes(i)).map(d=>d.message)}const k=e.computed(()=>{const i=JSON.parse(f.value).map(m=>m.field),d=h.value.map(m=>m.field);return{added:d.filter(m=>m&&!i.includes(m)),removed:i.filter(m=>!d.includes(m))}});function D(){f.value=c(),u.value=(t.document.template.params??[]).map(R),g.value=Math.min(g.value,Math.max(0,u.value.length-1)),y.value=JSON.stringify(u.value),o.value=""}e.watch(c,()=>{r.value||D()});function $(){if(t.readonly)return;let i=u.value.length+1;for(;u.value.some(d=>d.field===`param${i}`);)i++;u.value.push(R({field:`param${i}`,type:"text"})),g.value=u.value.length-1}function L(){t.readonly||!v.value||(u.value.splice(g.value,1),g.value=Math.min(g.value,Math.max(0,u.value.length-1)))}function V(i){const d=g.value+i;if(t.readonly||d<0||d>=u.value.length)return;const m=u.value.splice(g.value,1)[0];u.value.splice(d,0,m),g.value=d}function M(i){t.readonly||!v.value||(v.value.type=i,v.value.min="",v.value.max="",v.value.minLength="",v.value.maxLength="")}function I(){if(t.readonly||E.value||b.value.length)return!1;try{return t.accept(F(h.value))?(f.value=JSON.stringify(h.value),y.value=JSON.stringify(u.value),o.value="",!0):(o.value=n.value.paramApplyFailed,!1)}catch(i){return o.value=i instanceof Error?i.message:String(i),!1}}return T.useTemplateToolDraft({key:()=>"params",baseline:()=>f.value,pending:()=>r.value,snapshot:()=>JSON.stringify({rows:u.value,selected:g.value,initial:y.value}),restore(i,d){const m=JSON.parse(i);if(!Array.isArray(m.rows)||m.rows.length>1e3||typeof m.initial!="string")throw new Error("Invalid parameter draft");u.value=m.rows,g.value=Math.max(0,Math.min(m.selected,m.rows.length-1)),y.value=m.initial,f.value=d}}),{m:n,rows:u,selected:g,current:v,definitions:h,issues:b,issuesByRow:N,firstIssueIndex:x,controlIssues:C,currentIssues:_,changes:k,pending:r,conflicted:E,error:o,reset:D,add:$,remove:L,move:V,setType:M,apply:I}}const J=["aria-label"],j={class:"mr-param-editor__directory"},H=["aria-label"],W=["aria-pressed","aria-label","onClick"],z={class:"mr-param-editor__directory-title"},G={key:0,class:"mr-param-editor__error-count","aria-hidden":"true"},K={key:0},Q=["disabled"],X={key:0,class:"mr-param-editor__validation",role:"status"},Z={class:"mr-param-editor__heading"},ee={class:"mr-param-editor__grid"},te=["aria-label","disabled"],ae=["id"],ne=["aria-label","disabled"],re=["value","aria-label","disabled"],le=["value"],oe=["id"],ie=["aria-label","disabled"],ue={class:"mr-param-editor__checks"},se=["disabled"],de=["disabled"],me={class:"mr-param-editor__default-label"},ce={class:"mr-param-editor__range"},pe=["value","aria-label","disabled"],fe=["value","aria-label","disabled"],ye={key:1},ge=["aria-label","disabled"],ve=["value"],be=["value","aria-label","type","min","max","step","disabled"],Ve=["id"],he=["value","aria-label","type","min","max","step","disabled","onInput"],Ee=["id"],ke=["value","aria-label","disabled","onInput"],Ne=["id"],_e={key:0,class:"mr-param-editor__hint"},De={key:1,class:"mr-param-editor__options"},Se={class:"mr-param-editor__option-head"},Be=["onUpdate:modelValue","aria-label","disabled"],xe=["onUpdate:modelValue","aria-label","disabled"],Ce=["aria-label","disabled","onClick"],Me=["id"],Ie=["disabled"],$e={class:"mr-param-editor__row-actions"},Le=["disabled"],Re=["disabled"],Te=["disabled"],Oe={class:"mr-param-editor__technical"},we={key:2,class:"mr-param-editor__empty"},Ye=["disabled"],Pe={key:3,class:"mr-param-editor__impact"},Ae={key:0},Fe={key:1},Ue={key:4,class:"mr-param-editor__errors",role:"alert"},qe=["disabled"],Je=["disabled"],je=e.defineComponent({__name:"ParamEditor",props:{document:{},readonly:{type:Boolean},messages:{},accept:{type:Function}},emits:["dirty"],setup(t,{expose:c,emit:f}){const u=t,g=f,o=q(u),{m:n,rows:h,selected:y,current:r,changes:E,pending:b,conflicted:N,error:x,issues:v,issuesByRow:_}=o,C=e.ref(),k=`mr-param-${e.getCurrentInstance()?.uid??0}`;e.watch(b,s=>g("dirty",s),{immediate:!0});function D(s){return{text:n.value.paramText,number:n.value.paramNumber,date:n.value.paramDate,month:n.value.paramMonth,year:n.value.paramYear,dateRange:n.value.paramDateRange,select:n.value.paramSelect}[s]}function $(){r.value&&!u.readonly&&r.value.options.push({value:"",label:""})}function L(s){u.readonly||r.value?.options.splice(s,1)}function V(s){const l=o.controlIssues(s).length>0;return{"aria-invalid":l?"true":void 0,"aria-describedby":l?`${k}-${y.value}-${s}`:void 0}}function M(s){return s==="year"?"number":s==="dateRange"?"date":["date","month","number"].includes(s)?s:"text"}function I(s){return s.target.value}function i(s,l){r.value&&!u.readonly&&(r.value[s]=I(l))}function d(s){return r.value?.defaultValue.split("/")[s]??""}function m(s,l){if(!r.value||u.readonly)return;const a=[d(0),d(1)];a[s]=I(l),r.value.defaultValue=a.some(Boolean)?a.join("/"):""}async function S(){const s=o.firstIssueIndex.value;if(s===void 0)return;y.value=s,await e.nextTick();const l=C.value?.querySelector('[aria-invalid="true"]');l?.focus({preventScroll:!0}),l?.scrollIntoView?.({block:"nearest"})}return c({pending:b,reset:o.reset,apply:o.apply,locateIssue:S}),(s,l)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-param-editor","aria-label":e.unref(n).paramsTool},[e.createElementVNode("aside",j,[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).paramsDirectory),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(h).length),1)]),e.createElementVNode("nav",{"aria-label":e.unref(n).paramsDirectory},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),(a,p)=>(e.openBlock(),e.createElementBlock("button",{key:p,type:"button","aria-pressed":e.unref(y)===p,"aria-label":`${a.label||a.field||e.unref(n).paramUnnamed}${e.unref(_).get(p)?.length?` · ${e.unref(n).paramIssueCount} ${e.unref(_).get(p)?.length}`:""}`,class:e.normalizeClass({"has-errors":e.unref(_).has(p)}),onClick:B=>y.value=p},[e.createElementVNode("span",z,[e.createElementVNode("strong",null,e.toDisplayString(a.label||a.field||e.unref(n).paramUnnamed),1),e.unref(_).has(p)?(e.openBlock(),e.createElementBlock("span",G,e.toDisplayString(e.unref(_).get(p)?.length),1)):e.createCommentVNode("",!0)]),e.createElementVNode("small",null,[e.createTextVNode(e.toDisplayString(a.field)+" · "+e.toDisplayString(D(a.type)),1),a.required?(e.openBlock(),e.createElementBlock("span",K," *")):e.createCommentVNode("",!0)])],10,W))),128))],8,H),e.createElementVNode("button",{type:"button",class:"mr-param-editor__add",disabled:t.readonly,onClick:l[0]||(l[0]=(...a)=>e.unref(o).add&&e.unref(o).add(...a))},"+ "+e.toDisplayString(e.unref(n).paramAdd),9,Q),e.createElementVNode("p",null,e.toDisplayString(e.unref(n).paramsDescription),1)]),e.createElementVNode("div",{ref_key:"main",ref:C,class:"mr-param-editor__main"},[e.unref(v).length?(e.openBlock(),e.createElementBlock("div",X,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramIssueCount)+" ",1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(v).length),1)]),e.createElementVNode("button",{type:"button",onClick:S},e.toDisplayString(e.unref(n).paramLocateFirst),1)])):e.createCommentVNode("",!0),e.unref(r)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("header",Z,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(r).label||e.unref(r).field||e.unref(n).paramUnnamed),1),e.createElementVNode("small",null,e.toDisplayString(D(e.unref(r).type)),1)]),e.createElementVNode("span",{class:e.normalizeClass({"is-pending":e.unref(b)||e.unref(v).length>0})},e.toDisplayString(e.unref(v).length?e.unref(n).paramInvalid:e.unref(b)?e.unref(n).paramPending:e.unref(n).paramReady),3)]),e.createElementVNode("div",ee,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramField),1),e.withDirectives(e.createElementVNode("input",e.mergeProps({"onUpdate:modelValue":l[1]||(l[1]=a=>e.unref(r).field=a),"aria-label":e.unref(n).paramField,disabled:t.readonly,autocomplete:"off"},V("field")),null,16,te),[[e.vModelDynamic,e.unref(r).field]]),e.unref(o).controlIssues("field").length?(e.openBlock(),e.createElementBlock("small",{key:0,id:`${k}-${e.unref(y)}-field`,class:"mr-param-editor__field-error"},e.toDisplayString(e.unref(o).controlIssues("field").join(";")),9,ae)):e.createCommentVNode("",!0)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramLabel),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":l[2]||(l[2]=a=>e.unref(r).label=a),"aria-label":e.unref(n).paramLabel,disabled:t.readonly},null,8,ne),[[e.vModelText,e.unref(r).label]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramType),1),e.createElementVNode("select",e.mergeProps({value:e.unref(r).type,"aria-label":e.unref(n).paramType,disabled:t.readonly},V("type"),{onChange:l[3]||(l[3]=a=>e.unref(o).setType(a.target.value))}),[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Y),a=>(e.openBlock(),e.createElementBlock("option",{key:a,value:a},e.toDisplayString(D(a)),9,le))),128))],16,re),e.unref(o).controlIssues("type").length?(e.openBlock(),e.createElementBlock("small",{key:0,id:`${k}-${e.unref(y)}-type`,class:"mr-param-editor__field-error"},e.toDisplayString(e.unref(o).controlIssues("type").join(";")),9,oe)):e.createCommentVNode("",!0)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramPlaceholder),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":l[4]||(l[4]=a=>e.unref(r).placeholder=a),"aria-label":e.unref(n).paramPlaceholder,disabled:t.readonly},null,8,ie),[[e.vModelText,e.unref(r).placeholder]])]),e.createElementVNode("div",ue,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":l[5]||(l[5]=a=>e.unref(r).required=a),type:"checkbox",disabled:t.readonly},null,8,se),[[e.vModelCheckbox,e.unref(r).required]]),e.createTextVNode(e.toDisplayString(e.unref(n).paramRequired),1)]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":l[6]||(l[6]=a=>e.unref(r).defaultEnabled=a),type:"checkbox",disabled:t.readonly},null,8,de),[[e.vModelCheckbox,e.unref(r).defaultEnabled]]),e.createTextVNode(e.toDisplayString(e.unref(n).paramDefaultEnabled),1)])]),e.unref(r).defaultEnabled?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["mr-param-editor__default",{"is-range":e.unref(r).type==="dateRange"}])},[e.unref(r).type==="dateRange"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("span",me,e.toDisplayString(e.unref(n).paramDefault),1),e.createElementVNode("div",ce,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramRangeStart),1),e.createElementVNode("input",e.mergeProps({value:d(0),type:"date","aria-label":e.unref(n).paramRangeStart,disabled:t.readonly},V("defaultValue"),{onInput:l[7]||(l[7]=a=>m(0,a))}),null,16,pe)]),l[17]||(l[17]=e.createElementVNode("span",{"aria-hidden":"true"},"—",-1)),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramRangeEnd),1),e.createElementVNode("input",e.mergeProps({value:d(1),type:"date","aria-label":e.unref(n).paramRangeEnd,disabled:t.readonly},V("defaultValue"),{onInput:l[8]||(l[8]=a=>m(1,a))}),null,16,fe)])])],64)):(e.openBlock(),e.createElementBlock("label",ye,[e.createTextVNode(e.toDisplayString(e.unref(n).paramDefault),1),e.unref(r).type==="select"?e.withDirectives((e.openBlock(),e.createElementBlock("select",e.mergeProps({key:0,"onUpdate:modelValue":l[9]||(l[9]=a=>e.unref(r).defaultValue=a),"aria-label":e.unref(n).paramDefault,disabled:t.readonly},V("defaultValue")),[l[18]||(l[18]=e.createElementVNode("option",{value:""},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).options,(a,p)=>(e.openBlock(),e.createElementBlock("option",{key:p,value:a.value},e.toDisplayString(a.label||a.value),9,ve))),128))],16,ge)),[[e.vModelSelect,e.unref(r).defaultValue]]):(e.openBlock(),e.createElementBlock("input",e.mergeProps({key:1,value:e.unref(r).defaultValue,"aria-label":e.unref(n).paramDefault,type:M(e.unref(r).type),min:e.unref(r).type==="year"?1:void 0,max:e.unref(r).type==="year"?9999:void 0,step:e.unref(r).type==="year"?1:"any",disabled:t.readonly},V("defaultValue"),{onInput:l[10]||(l[10]=a=>i("defaultValue",a))}),null,16,be))])),e.unref(o).controlIssues("defaultValue").length?(e.openBlock(),e.createElementBlock("small",{key:2,id:`${k}-${e.unref(y)}-defaultValue`,class:"mr-param-editor__field-error mr-param-editor__errors",role:"alert"},e.toDisplayString(e.unref(o).controlIssues("defaultValue").join(";")),9,Ve)):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0),["number","date","month","year","dateRange"].includes(e.unref(r).type)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},e.renderList(["min","max"],a=>e.createElementVNode("label",{key:a},[e.createTextVNode(e.toDisplayString(a==="min"?e.unref(n).paramMinimum:e.unref(n).paramMaximum),1),e.createElementVNode("input",e.mergeProps({value:e.unref(r)[a],"aria-label":a==="min"?e.unref(n).paramMinimum:e.unref(n).paramMaximum,type:M(e.unref(r).type),min:e.unref(r).type==="year"?1:void 0,max:e.unref(r).type==="year"?9999:void 0,step:e.unref(r).type==="year"?1:"any",disabled:t.readonly},{ref_for:!0},V(a),{onInput:p=>i(a,p)}),null,16,he),e.unref(o).controlIssues(a).length?(e.openBlock(),e.createElementBlock("small",{key:0,id:`${k}-${e.unref(y)}-${a}`,class:"mr-param-editor__field-error"},e.toDisplayString(e.unref(o).controlIssues(a).join(";")),9,Ee)):e.createCommentVNode("",!0)])),64)):e.createCommentVNode("",!0),e.unref(r).type==="text"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},e.renderList(["minLength","maxLength"],a=>e.createElementVNode("label",{key:a},[e.createTextVNode(e.toDisplayString(a==="minLength"?e.unref(n).paramMinLength:e.unref(n).paramMaxLength),1),e.createElementVNode("input",e.mergeProps({value:e.unref(r)[a],type:"number",min:"0",step:"1","aria-label":a==="minLength"?e.unref(n).paramMinLength:e.unref(n).paramMaxLength,disabled:t.readonly},{ref_for:!0},V(a),{onInput:p=>i(a,p)}),null,16,ke),e.unref(o).controlIssues(a).length?(e.openBlock(),e.createElementBlock("small",{key:0,id:`${k}-${e.unref(y)}-${a}`,class:"mr-param-editor__field-error"},e.toDisplayString(e.unref(o).controlIssues(a).join(";")),9,Ne)):e.createCommentVNode("",!0)])),64)):e.createCommentVNode("",!0)]),e.unref(r).type==="dateRange"?(e.openBlock(),e.createElementBlock("p",_e,e.toDisplayString(e.unref(n).paramRangeHint),1)):e.createCommentVNode("",!0),e.unref(r).type==="select"?(e.openBlock(),e.createElementBlock("fieldset",De,[e.createElementVNode("legend",null,e.toDisplayString(e.unref(n).paramOptions),1),e.createElementVNode("div",Se,[e.createElementVNode("span",null,e.toDisplayString(e.unref(n).paramOptionValue),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(n).paramOptionLabel),1)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(r).options,(a,p)=>(e.openBlock(),e.createElementBlock("div",{key:p,class:"mr-param-editor__option"},[e.withDirectives(e.createElementVNode("input",e.mergeProps({"onUpdate:modelValue":B=>a.value=B,"aria-label":`${e.unref(n).paramOptionValue} ${p+1}`,disabled:t.readonly},{ref_for:!0},V("options")),null,16,Be),[[e.vModelDynamic,a.value]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":B=>a.label=B,"aria-label":`${e.unref(n).paramOptionLabel} ${p+1}`,disabled:t.readonly},null,8,xe),[[e.vModelText,a.label]]),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(n).paramOptionRemove} ${p+1}`,disabled:t.readonly,onClick:B=>L(p)},"×",8,Ce)]))),128)),e.unref(o).controlIssues("options").length?(e.openBlock(),e.createElementBlock("small",{key:0,id:`${k}-${e.unref(y)}-options`,class:"mr-param-editor__field-error"},e.toDisplayString(e.unref(o).controlIssues("options").join(";")),9,Me)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:$},"+ "+e.toDisplayString(e.unref(n).paramOptionAdd),9,Ie)])):e.createCommentVNode("",!0),e.createElementVNode("div",$e,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(y)===0,onClick:l[11]||(l[11]=a=>e.unref(o).move(-1))},"↑ "+e.toDisplayString(e.unref(n).paramMoveUp),9,Le),e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(y)===e.unref(h).length-1,onClick:l[12]||(l[12]=a=>e.unref(o).move(1))},"↓ "+e.toDisplayString(e.unref(n).paramMoveDown),9,Re),e.createElementVNode("button",{type:"button",class:"is-danger",disabled:t.readonly,onClick:l[13]||(l[13]=(...a)=>e.unref(o).remove&&e.unref(o).remove(...a))},e.toDisplayString(e.unref(n).paramRemove),9,Te)]),e.createElementVNode("details",Oe,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(n).paramWire),1),e.createElementVNode("code",null,e.toDisplayString(e.unref(P)[e.unref(r).type]),1)])],64)):(e.openBlock(),e.createElementBlock("div",we,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).paramEmpty),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(n).paramEmptyHint),1),e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:l[14]||(l[14]=(...a)=>e.unref(o).add&&e.unref(o).add(...a))},"+ "+e.toDisplayString(e.unref(n).paramAdd),9,Ye)])),e.unref(E).added.length||e.unref(E).removed.length?(e.openBlock(),e.createElementBlock("aside",Pe,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).paramChanges),1),e.unref(E).added.length?(e.openBlock(),e.createElementBlock("p",Ae,[e.createTextVNode(e.toDisplayString(e.unref(n).paramAdded)+":",1),e.createElementVNode("code",null,e.toDisplayString(e.unref(E).added.join(", ")),1)])):e.createCommentVNode("",!0),e.unref(E).removed.length?(e.openBlock(),e.createElementBlock("p",Fe,[e.createTextVNode(e.toDisplayString(e.unref(n).paramRemoved)+":",1),e.createElementVNode("code",null,e.toDisplayString(e.unref(E).removed.join(", ")),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(e.unref(n).paramRenameHint),1)])):e.createCommentVNode("",!0),e.unref(N)||e.unref(x)?(e.openBlock(),e.createElementBlock("p",Ue,e.toDisplayString(e.unref(N)?e.unref(n).paramConflict:e.unref(x)),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:!e.unref(b)&&!e.unref(N),onClick:l[15]||(l[15]=(...a)=>e.unref(o).reset&&e.unref(o).reset(...a))},e.toDisplayString(e.unref(n).paramRestore),9,qe),e.createElementVNode("button",{type:"button",class:"is-primary",disabled:t.readonly||!e.unref(b)||e.unref(N)||!!e.unref(v).length,onClick:l[16]||(l[16]=(...a)=>e.unref(o).apply&&e.unref(o).apply(...a))},e.toDisplayString(e.unref(n).paramApply),9,Je)])],512)],8,J))}}),He=w._export_sfc(je,[["__scopeId","data-v-d8a0f18a"]]);exports.default=He;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),j=require("./config-0UIohTS7.cjs"),H=require("@agile-team/mach-report"),J=require("./batch-xMkqYiTr.cjs"),z=require("./designer-rtmVIIdN.cjs"),G=require("./_plugin-vue_export-helper-BLmdZLlg.cjs");function Q(a){const f={};return!a||typeof a!="object"||(typeof a.instanceId=="string"&&a.instanceId.length>0&&a.instanceId.length<=512&&(f.instanceId=a.instanceId),typeof a.label=="string"&&(f.label=a.label.slice(0,512))),f}function W(a){return Object.fromEntries((Array.isArray(a)?a:[]).filter(f=>f&&typeof f.field=="string").map(f=>[f.field,f.defaultValue??""]))}function U(a){return(a instanceof Error?a.message:String(a)).slice(0,1e3)}function X(a){try{return{cases:J.snapshotReportBatchCases(a.initialCases??[],a.maxCases??100),error:""}}catch(f){return{cases:[],error:U(f)}}}function Y(a){let f=0;const D=n=>({key:++f,item:{id:n.id,params:{...n.params}},status:"pending"}),N=X(a),y=new Set(N.cases.map(n=>n.id));let r=N.cases.length+1;const i=e.ref(N.cases.map(D)),h=e.ref(!1),b=e.ref(!1),x=e.ref(!1),_=e.ref(N.error),V=e.ref(),g=e.ref({completed:0,total:0,failed:0,cancelled:0}),E=e.computed(()=>({...z.REPORT_BATCH_MESSAGES,...a.messages})),R=e.computed(()=>i.value.map(n=>H.validateReportParams(a.paramDefs,n.item.params))),q=e.computed(()=>i.value.filter(n=>n.status==="failed").length),$=e.computed(()=>i.value.filter(n=>n.status==="pending"||n.status==="cancelled").length),P=e.computed(()=>i.value.filter(n=>n.status==="cancelled").length),p=e.computed(()=>a.maxCases??100);let k,d=0;function I(n=W(a.paramDefs)){for(;y.has(`case-${r}`);)r++;return{id:`case-${r++}`,params:{...n}}}function M(n){if(a.readonly||h.value)return;if(i.value.length>=p.value){_.value=E.value.batchLimit.replace("{count}",String(p.value));return}const s=D(I(n?.item.params));return i.value.push(s),_.value="",s}function A(n){!h.value&&!a.readonly&&(i.value=i.value.filter(s=>s.key!==n))}function S(n,s){if(h.value||a.readonly)return;const o=i.value.find(u=>u.key===n);!o||o.status==="completed"||JSON.stringify(o.item.params)===JSON.stringify(s)||(o.item=o.submitted?I(s):{...o.item,params:{...s}},o.submitted=!1,o.status="pending",delete o.receipt,delete o.error)}function B(){h.value&&(b.value=!0,k?.abort())}function O(n){return i.value.filter(s=>n?s.status==="failed":s.status==="pending"||s.status==="cancelled")}function K(n){const s=n.map(u=>H.validateReportParams(a.paramDefs,u.item.params)),o=s.findIndex(u=>!u.ok);if(o>=0){V.value=n[o].key,_.value=E.value.batchInvalid;return}return n.map((u,C)=>({id:u.item.id,params:{...s[C].values}}))}function L(n,s){n.status=s.status,s.status==="completed"&&(n.receipt=s.value),s.status==="failed"&&(n.error=s.error.message.slice(0,1e3))}async function T(n,s,o,u,C){u===d&&(n.status="running");try{const m=Q(await C(s,o));return u===d&&(n.receipt=m,n.status="completed"),m}catch(m){throw u===d&&(n.status=o.signal.aborted?"cancelled":"failed",n.error=U(m)),m}}async function w(n=!1){if(a.readonly||h.value)return;const s=O(n);if(!s.length)return;x.value=!0,_.value="",V.value=void 0;const o=K(s);if(!o)return;const u=++d,C=a.execute;k=new AbortController,h.value=!0,b.value=!1,g.value={completed:0,total:s.length,failed:0,cancelled:0};for(const m of s)m.status="pending",m.submitted=!0,delete m.receipt,delete m.error;try{const m=await J.runReportBatch(o,(c,l)=>T(s[l.index],c,l,u,C),{concurrency:a.concurrency,maxCases:p.value,signal:k.signal,onProgress:c=>{u===d&&(g.value=c)}});u===d&&m.forEach((c,l)=>L(s[l],c))}catch(m){u===d&&(_.value=U(m))}finally{u===d&&(h.value=!1,b.value=!1,k=void 0)}}return e.watch(()=>[JSON.stringify(a.paramDefs),a.execute,a.readonly,a.concurrency,a.maxCases],()=>{h.value&&(B(),_.value=E.value.batchChanged)}),e.onBeforeUnmount(()=>{d++,k?.abort()}),{m:E,rows:i,validations:R,running:h,cancelling:b,attempted:x,error:_,progress:g,failures:q,unfinished:$,cancelled:P,maximum:p,invalidKey:V,add:M,remove:A,setParams:S,cancel:B,run:w}}const Z=["aria-label","aria-busy"],ee={class:"mr-batch__heading"},te=["disabled"],ae={key:0,class:"mr-batch__toolbar"},ne=["aria-label"],le=["aria-pressed","onClick"],re=["disabled"],se={key:1,class:"mr-batch__empty"},ce={key:2,class:"mr-batch__empty"},oe={key:3,class:"mr-batch__rows"},ie=["data-batch-key","aria-label"],ue={class:"mr-batch__status",role:"status"},de={class:"mr-batch__row-actions"},me=["aria-label","disabled","onClick"],fe=["aria-label","disabled","onClick"],pe={key:0,class:"mr-batch__hint"},be={key:1,class:"mr-batch__row-error",role:"alert"},ve={key:2,class:"mr-batch__receipt"},ye=["title"],he=["onClick"],ge={key:4,class:"mr-batch__error",role:"alert"},ke={class:"mr-batch__progress","aria-live":"polite"},_e=["value","max","aria-label"],Ee={key:1},Se={class:"mr-batch__actions"},Be=["disabled"],Ce=["disabled"],Ne=["disabled"],Ve=["aria-label"],De=["disabled"],xe=["disabled"],Re=e.defineComponent({__name:"ReportBatchPanel",props:{paramDefs:{},execute:{type:Function},initialCases:{},readonly:{type:Boolean},concurrency:{},maxCases:{},messages:{},paramMessages:{}},emits:["open-instance"],setup(a,{emit:f}){const D=a,N=f,y=Y(D),{m:r,rows:i,validations:h,running:b,cancelling:x,attempted:_,error:V,progress:g,failures:E,unfinished:R,cancelled:q,maximum:$}=y,P=e.ref(),p=e.ref(1),k=10,d=e.ref("all"),I=e.ref(),M=e.ref(),A=e.computed(()=>i.value.map((c,l)=>({row:c,index:l}))),S=e.computed(()=>A.value.filter(({row:c})=>d.value==="all"||c.status===d.value)),B=e.computed(()=>Math.max(1,Math.ceil(S.value.length/k))),O=e.computed(()=>S.value.slice((p.value-1)*k,p.value*k)),K=e.computed(()=>r.value.batchPage.replace("{page}",String(p.value)).replace("{pages}",String(B.value)).replace("{total}",String(S.value.length)));e.watch(B,c=>{p.value=Math.min(p.value,c)}),e.watch(d,()=>{p.value=1});const L=e.computed(()=>({...j.DEFAULT_MESSAGES,...D.paramMessages})),T=e.computed(()=>r.value.batchProgress.replace("{completed}",String(g.value.completed)).replace("{total}",String(g.value.total)).replace("{failed}",String(g.value.failed)).replace("{cancelled}",String(g.value.cancelled))),w=e.computed(()=>{const c={all:i.value.length,pending:0,running:0,completed:0,failed:0,cancelled:0};for(const l of i.value)c[l.status]++;return Object.keys(c).filter(l=>l!=="running"||b.value||c.running>0||d.value==="running").map(l=>({value:l,count:c[l],label:l==="all"?r.value.batchAll:n({status:l})}))});function n(c){return{pending:r.value.batchPending,running:r.value.batchRunning,completed:r.value.batchCompleted,failed:r.value.batchFailed,cancelled:r.value.batchCancelled}[c.status]}async function s(c){const l=y.add(c);l&&(await u(l.key,"all"),o(l.key)?.querySelector(".mrp-param-input")?.focus())}function o(c){return P.value?.querySelector(`[data-batch-key="${c}"]`)}async function u(c,l){d.value=l,await e.nextTick();const t=S.value.findIndex(({row:v})=>v.key===c);t<0||(p.value=Math.floor(t/k)+1,I.value=c,await e.nextTick())}async function C(){const c=i.value.filter(v=>v.status==="failed"),l=c.findIndex(v=>v.key===M.value),t=c[(l+1)%c.length];t&&(M.value=t.key,await u(t.key,"failed"),o(t.key)?.focus())}async function m(c=!1){const l=y.run(c);if(y.invalidKey.value!==void 0){const t=y.invalidKey.value;await u(t,"all"),o(t)?.querySelector('[aria-invalid="true"]')?.focus()}await l}return(c,l)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"root",ref:P,class:"mr-batch","aria-label":e.unref(r).batchTitle,"aria-busy":e.unref(b)},[e.createElementVNode("header",ee,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(r).batchTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(r).batchDescription),1)]),e.createElementVNode("button",{type:"button",disabled:a.readonly||e.unref(b)||e.unref(i).length>=e.unref($),onClick:l[0]||(l[0]=t=>s())},"+ "+e.toDisplayString(e.unref(r).batchAdd),9,te)]),e.unref(i).length?(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("div",{class:"mr-batch__filters",role:"group","aria-label":e.unref(r).batchFilter},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value,t=>(e.openBlock(),e.createElementBlock("button",{key:t.value,type:"button","aria-pressed":d.value===t.value,onClick:v=>d.value=t.value},[e.createTextVNode(e.toDisplayString(t.label)+" ",1),e.createElementVNode("span",null,e.toDisplayString(t.count),1)],8,le))),128))],8,ne),e.unref(E)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"mr-batch__next-failure",disabled:e.unref(b),onClick:C},e.toDisplayString(e.unref(r).batchNextFailure)+" ↓",9,re)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(i).length?S.value.length?(e.openBlock(),e.createElementBlock("div",oe,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(O.value,({row:t,index:v})=>(e.openBlock(),e.createElementBlock("article",{key:t.key,class:e.normalizeClass(["mr-batch__row",[`is-${t.status}`,{"is-located":t.key===I.value}]]),"data-batch-key":t.key,tabindex:"-1","aria-label":`${e.unref(r).batchCase} ${v+1} · ${n(t)}`},[e.createElementVNode("header",null,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(r).batchCase)+" "+e.toDisplayString(v+1),1),e.createElementVNode("span",ue,e.toDisplayString(n(t)),1)]),e.createElementVNode("div",de,[e.createElementVNode("button",{type:"button","aria-label":`${t.status==="completed"?e.unref(r).batchDuplicateCompleted:e.unref(r).batchDuplicate} ${v+1}`,disabled:a.readonly||e.unref(b)||e.unref(i).length>=e.unref($),onClick:F=>s(t)},e.toDisplayString(t.status==="completed"?e.unref(r).batchDuplicateCompleted:e.unref(r).batchDuplicate),9,me),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(r).batchRemove} ${v+1}`,disabled:a.readonly||e.unref(b),onClick:F=>e.unref(y).remove(t.key)},"×",8,fe)])]),e.createVNode(j.ReportParamPanel,{defs:a.paramDefs,"model-value":t.item.params,messages:L.value,attempted:e.unref(_),issues:e.unref(h)[v]?.issues,"show-actions":!1,"show-title":!1,disabled:a.readonly||e.unref(b)||t.status==="completed","onUpdate:modelValue":F=>e.unref(y).setParams(t.key,F)},null,8,["defs","model-value","messages","attempted","issues","disabled","onUpdate:modelValue"]),t.status==="completed"?(e.openBlock(),e.createElementBlock("p",pe,e.toDisplayString(e.unref(r).batchCompletedHint),1)):e.createCommentVNode("",!0),t.status==="failed"&&t.error?(e.openBlock(),e.createElementBlock("p",be,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0),t.status==="completed"?(e.openBlock(),e.createElementBlock("div",ve,[e.createElementVNode("span",{title:t.receipt?.label||t.receipt?.instanceId},e.toDisplayString(t.receipt?.label||(t.receipt?.instanceId?t.receipt.instanceId:e.unref(r).batchNoInstance)),9,ye),t.receipt?.instanceId?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:F=>N("open-instance",{...t.receipt})},e.toDisplayString(e.unref(r).batchOpen)+" ↗",9,he)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],10,ie))),128))])):(e.openBlock(),e.createElementBlock("div",ce,e.toDisplayString(e.unref(r).batchNoMatches),1)):(e.openBlock(),e.createElementBlock("div",se,e.toDisplayString(e.unref(r).batchEmpty),1)),e.unref(V)?(e.openBlock(),e.createElementBlock("p",ge,e.toDisplayString(e.unref(V)),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",null,[e.createElementVNode("div",ke,[e.unref(g).total?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("progress",{value:e.unref(g).completed,max:e.unref(g).total,"aria-label":T.value},null,8,_e),e.createElementVNode("span",null,e.toDisplayString(T.value),1)],64)):(e.openBlock(),e.createElementBlock("span",Ee,e.toDisplayString(e.unref(i).length)+" / "+e.toDisplayString(e.unref($)),1))]),e.createElementVNode("div",Se,[e.unref(E)&&!e.unref(b)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:a.readonly,onClick:l[1]||(l[1]=t=>m(!0))},e.toDisplayString(e.unref(r).batchRetry)+" ("+e.toDisplayString(e.unref(E))+")",9,Be)):e.createCommentVNode("",!0),e.unref(b)?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:e.unref(x),onClick:l[2]||(l[2]=(...t)=>e.unref(y).cancel&&e.unref(y).cancel(...t))},e.toDisplayString(e.unref(x)?e.unref(r).batchCancelling:e.unref(r).batchCancel),9,Ce)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"is-primary",disabled:a.readonly||!e.unref(R),onClick:l[3]||(l[3]=t=>m())},[e.createTextVNode(e.toDisplayString(e.unref(q)?e.unref(r).batchContinue:e.unref(r).batchRun),1),e.unref(R)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" ("+e.toDisplayString(e.unref(R))+")",1)],64)):e.createCommentVNode("",!0)],8,Ne))]),B.value>1?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mr-batch__pagination","aria-label":e.unref(r).batchPages},[e.createElementVNode("span",null,e.toDisplayString(K.value),1),e.createElementVNode("button",{type:"button",disabled:p.value<=1,onClick:l[4]||(l[4]=t=>p.value--)},e.toDisplayString(e.unref(r).batchPrevious),9,De),e.createElementVNode("button",{type:"button",disabled:p.value>=B.value,onClick:l[5]||(l[5]=t=>p.value++)},e.toDisplayString(e.unref(r).batchNext),9,xe)],8,Ve)):e.createCommentVNode("",!0)])],8,Z))}}),$e=G._export_sfc(Re,[["__scopeId","data-v-45980136"]]);exports.default=$e;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { ref as C, computed as _, watch as Y, onBeforeUnmount as ne, defineComponent as le, openBlock as d, createElementBlock as m, unref as e, createElementVNode as u, toDisplayString as r, Fragment as j, renderList as ee, createTextVNode as X, createCommentVNode as I, normalizeClass as se, createVNode as ie, nextTick as te } from "vue";
|
|
2
|
-
import { a as ce, R as re } from "./config-
|
|
2
|
+
import { a as ce, R as re } from "./config-Dt9NtCPl.js";
|
|
3
3
|
import { validateReportParams as ae } from "@agile-team/mach-report";
|
|
4
|
-
import { i as oe, r as ue } from "./batch-
|
|
5
|
-
import {
|
|
4
|
+
import { i as oe, r as ue } from "./batch-DzaTNLWI.js";
|
|
5
|
+
import { R as de } from "./designer-Ci1LizA9.js";
|
|
6
6
|
import { _ as me } from "./_plugin-vue_export-helper-8SL1F89S.js";
|
|
7
7
|
function be(a) {
|
|
8
8
|
const p = {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";var da=Object.create;var ln=Object.defineProperty;var ma=Object.getOwnPropertyDescriptor;var fa=Object.getOwnPropertyNames;var pa=Object.getPrototypeOf,ga=Object.prototype.hasOwnProperty;var va=(t,n,a,r)=>{if(n&&typeof n=="object"||typeof n=="function")for(let l of fa(n))!ga.call(t,l)&&l!==a&&ln(t,l,{get:()=>n[l],enumerable:!(r=ma(n,l))||r.enumerable});return t};var xt=(t,n,a)=>(a=t!=null?da(pa(t)):{},va(n||!t||!t.__esModule?ln(a,"default",{value:t,enumerable:!0}):a,t));const e=require("vue"),K=require("@agile-team/mach-report"),pn=require("./page-window-index-DEjnM6IB.cjs"),Q=require("./progress-BnLiS5eH.cjs"),ie=require("./config-0UIohTS7.cjs"),gn=require("./render-plan-7xpGrCEl.cjs"),j=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),Rt=require("./grid-geometry-CZ_cYB6O.cjs"),kt=require("./injection-keys-Db_DyLkm.cjs");function Dt(t){return t==null?[]:Array.isArray(t)?t.map(String).filter(n=>n!==""):String(t).split(",").map(n=>n.trim()).filter(n=>n!=="")}function ha(t){return Dt(t).join(",")}class Xe extends Error{constructor(n){super(n),this.name="PlanLoadError"}}function ya(t={}){const{baseUrl:n="",headers:a,credentials:r,timeoutMs:l=3e4}=t,o=n.replace(/\/+$/,"");return async({url:s,method:i,params:c,signal:f})=>{let g=`${o}${s}`;if(c&&Object.keys(c).length>0){const m=g.indexOf("#"),S=m>=0?g.slice(m):"",v=m>=0?g.slice(0,m):g,C=v.indexOf("?"),P=C>=0?v.slice(0,C):v,I=new URLSearchParams(C>=0?v.slice(C+1):"");for(const[T,L]of Object.entries(c))I.set(T,L);g=`${P}?${I}${S}`}const d=(m,S)=>{const v=new Xe(m);return Object.defineProperty(v,"cause",{value:S,configurable:!0,writable:!0}),v};if(f?.aborted)throw d(`请求已取消: ${s}`,f.reason);const p=new AbortController;let E;const b=()=>{p.signal.aborted||(E="external",p.abort(f?.reason))};f?.addEventListener("abort",b,{once:!0});const h=setTimeout(()=>{p.signal.aborted||(E="timeout",p.abort())},l);try{const m=await fetch(g,{method:i.toUpperCase(),headers:{Accept:"application/json",...a},credentials:r,signal:p.signal});if(!m.ok)throw new Xe(`HTTP ${m.status} ${s}`);return await m.json()}catch(m){throw E==="timeout"?d(`请求超时(${l}ms): ${s}`,m):E==="external"?d(`请求已取消: ${s}`,m):m instanceof Xe?m:d(`请求失败(${s}): ${m instanceof Error?m.message:String(m)}`,m)}finally{clearTimeout(h),f?.removeEventListener("abort",b)}}}function vn(t,n,a={}){const r=a.pxPerMm??3.7795275590551185,l=e.computed(()=>Math.max(0,e.unref(a.gapPx)??18)),o=e.ref(0),s=e.ref(800),i=e.computed(()=>{const v=t.value?.pages??[];return pn.createPageWindowIndex(v.map(C=>C.pageHeightMm*r),l.value)}),c=e.computed(()=>{let v=0;for(const C of t.value?.pages??[])v=Math.max(v,C.pageWidthMm*r);return{w:v,h:i.value.totalHeightPx}}),f=e.computed(()=>i.value.window(s.value/n.value,o.value/n.value,e.unref(a.overscan)??1)),g=e.computed(()=>{const v=t.value;if(!v)return[];const{start:C,end:P}=f.value;return v.pages.slice(C,P+1).map((I,T)=>({page:I,index:C+T}))});let d=0,p=!1,E;function b(v){v&&(o.value=v.scrollTop,s.value=v.clientHeight||800)}function h(v,C){v.scrollTop=i.value.offsetAt(C)*n.value,E={top:v.scrollTop,index:C,zoom:n.value,geometry:i.value},b(v)}function m(v,C){return P=>{d||p||(d=requestAnimationFrame(()=>{if(d=0,p||(b(P),C.value<=0))return;if(E&&E.top===P.scrollTop&&E.zoom===n.value&&E.geometry===i.value){v.value=Math.min(C.value,E.index+1);return}E=void 0;const I=Math.max(0,P.scrollTop+32)/n.value;v.value=Math.min(C.value,i.value.pageAt(I)+1)}))}}function S(){p=!0,d&&cancelAnimationFrame(d),d=0}return e.onScopeDispose(S),{contentSize:c,windowRange:f,visiblePages:g,makeScrollHandler:m,refreshViewport:b,scrollToPage:h,pageOffsetPx:v=>i.value.offsetAt(v),destroy:S}}const sn=96/25.4;function ba(t){const n=new WeakMap,a=e.ref(0);let r,l=0,o=0,s=!1;function i(){l++,o&&cancelAnimationFrame(o),o=0}function c(h,m,S,v){return!s&&m===l&&t.plan.value===S&&t.root.value===v&&v.contains(h.holder)&&Number(h.holder.dataset.page)===h.index+1}function f(h){const{holder:m,page:S}=h;n.delete(m),m.style.width=`${S.pageWidthMm*sn}px`,m.style.height=`${S.pageHeightMm*sn}px`,m.setAttribute("aria-busy","true");const v=m.ownerDocument.createElement("div");v.className="mrp-page-loading";const C=m.ownerDocument.createElement("span");C.textContent=t.loading(),C.style.transform=`scale(${1/Math.max(1e-4,t.zoom())})`,v.append(C),m.replaceChildren(v)}function g(h){const m=n.get(h.holder);return!m||m.page!==h.page||m.element.parentElement!==h.holder?!1:(m.query!==t.query()&&(t.clear(m.element),t.highlight(m.element),m.query=t.query()),!0)}function d(h,m,S,v){if(c(h,m,S,v))try{const C=K.renderPage(h.page,96,{},h.holder.ownerDocument);if(t.highlight(C),!c(h,m,S,v))return;h.holder.replaceChildren(C),h.holder.removeAttribute("aria-busy"),n.set(h.holder,{page:h.page,element:C,query:t.query()}),t.mounted(h.holder),t.ready()}catch(C){if(!c(h,m,S,v))return;h.holder.removeAttribute("aria-busy");const P=h.holder.ownerDocument.createElement("div");P.className="mrp-page-render-error",P.setAttribute("role","alert"),P.textContent=C instanceof Error?C.message:String(C),h.holder.replaceChildren(P),t.error(C)}}function p(h,m,S,v){h.length&&(o=requestAnimationFrame(()=>{if(m!==l||s)return;o=0;const C=h.shift();C&&d(C,m,S,v),m===l&&t.plan.value===S&&t.root.value===v&&p(h,m,S,v)}))}function E(){i();const h=t.plan.value,m=t.root.value;if(s||!h||!m){r=void 0;return}const S=l,v=r?.plan===h?r.index:t.priority();r=void 0;const C=[];m.querySelectorAll(".mrp-page-holder").forEach(T=>{const L=Number(T.dataset.page)-1,J=h.pages[L];if(!J)return;const H={holder:T,page:J,index:L};g(H)||(f(H),C.push(H))});const P=C.findIndex(T=>T.index===v),I=P<0?void 0:C.splice(P,1)[0];I&&d(I,S,h,m),t.ready(),p(C,S,h,m)}function b(h){s||!t.plan.value||(r={plan:t.plan.value,index:h},a.value++)}return e.watch([t.plan,t.root,t.pages,t.priority,t.focusToken,t.query,t.zoom,t.loading,a],E,{flush:"post",immediate:!0}),e.onScopeDispose(()=>{s=!0,r=void 0,i()}),{prioritize:b,cancel:i}}function hn(t){const n=e.ref(1),a=e.ref("fit");let r=0;function l(){r&&cancelAnimationFrame(r),r=0}function o(){l(),r=requestAnimationFrame(()=>{if(r=0,a.value!=="fit")return;const i=t();!i?.viewport||i.viewport.clientWidth<=48||!Number.isFinite(i.pageWidthPx)||(n.value=Math.min(1,(i.viewport.clientWidth-48)/Math.max(1,i.pageWidthPx)))})}function s(i){if(i==="fit")a.value="fit",o();else{if(!Number.isFinite(i))return;l(),a.value="raw",n.value=Math.min(3,Math.max(.3,i/100))}}return e.getCurrentScope()&&e.onScopeDispose(l),{zoom:n,zoomMode:a,applyFitZoom:o,setZoom:s}}let wa=0;function cn(t,n){const a=new AbortController;let r={taskId:`mr-output-${Date.now().toString(36)}-${++wa}`,kind:t,stage:t==="print"?"print":"encode",status:"running",cancellable:!0};function l(){try{n?.(Object.freeze({...r}))}catch{}}return{controller:a,get task(){return r},start:l,update(o,s,i){a.signal.aborted||r.status!=="running"||(r={...r,stage:o,completed:s,total:i},l())},finish(o="completed"){r.status==="running"&&(r={...r,status:o,cancellable:!1},l(),o==="cancelled"&&a.abort())}}}class ue extends Error{constructor(n,a=""){super(`Print preparation failed: ${n} ${a}`),this.kind=n,this.resource=a,this.code="print-resource",this.name="ReportPrintResourceError"}}function yn(t,n){const a={...ie.DEFAULT_PRINT_MESSAGES,...n};return t instanceof ue?t.kind==="timeout"?a.printPrepareTimeout:t.kind==="image"?a.printImageFailed.replace("{index}",String(t.resource)):t.kind==="font"?a.printFontFailed.replace("{family}",String(t.resource)):a.printPrepareFailed:a.printPrepareFailed}function xa(t,n){let a;try{a=new URL(t,n)}catch{throw new ue("config")}if(!["http:","https:"].includes(a.protocol)||t.length>16384)throw new ue("config");return a.href}async function ka(t,n,a,r){const l=n.fonts??[];if(l.length>8)throw new ue("config");for(const o of l){if(Q.assertOutputActive(a),typeof o.family!="string"||!o.family.trim()||o.family.length>256||typeof o.source!="string")throw new ue("config");const s=t.defaultView?.FontFace;if(!s||!t.fonts)throw new ue("font",o.family);try{const{loadFontWithCache:i}=await Promise.resolve().then(()=>require("./font-loader-vhCT8znW.cjs")),c=await i(xa(o.source,r),{signal:a});if(!c)throw new ue("font",o.family);const f=new s(o.family,c,{weight:o.weight,style:o.style});await Q.waitForOutput(f.load(),a),t.fonts.add(f)}catch(i){throw Q.assertOutputActive(a),i instanceof ue?i:new ue("font",o.family)}}t.documentElement.getBoundingClientRect(),t.fonts&&await Q.waitForOutput(t.fonts.ready,a)}async function Ea(t,n,a){Q.assertOutputActive(a);try{if(typeof t.decode=="function"?await Q.waitForOutput(t.decode(),a):t.complete||await new Promise((r,l)=>{const o=()=>{t.removeEventListener("load",s),t.removeEventListener("error",i),a.removeEventListener("abort",c)},s=()=>{o(),r()},i=()=>{o(),l(new ue("image",n))},c=()=>{o(),l(a.reason)};t.addEventListener("load",s,{once:!0}),t.addEventListener("error",i,{once:!0}),a.addEventListener("abort",c,{once:!0}),a.aborted?c():t.complete&&s()}),Q.assertOutputActive(a),t.naturalWidth<=0||t.naturalHeight<=0)throw new ue("image",n)}catch{throw Q.assertOutputActive(a),new ue("image",n)}}async function Mt(t,n={},a,r=document.baseURI){const l=n.resourceTimeoutMs??15e3;if(!Number.isSafeInteger(l)||l<1||l>12e4)throw new ue("config");const o=new AbortController,s=Q.forwardOutputAbort(a,o),i=setTimeout(()=>o.abort(new ue("timeout")),l);try{Q.assertOutputActive(o.signal),await ka(t,n,o.signal,r);const c=t.querySelectorAll("img");let f=0;const g=async()=>{for(;f<c.length;){const d=f++;await Ea(c[d],d+1,o.signal)}};await Promise.all(Array.from({length:Math.min(c.length,4)},g)),Q.assertOutputActive(o.signal)}finally{clearTimeout(i),s(),o.abort()}}const Oe=8;function Ue(){return new Promise(t=>setTimeout(t,0))}function Qe(t){return`p${t.pageWidthMm}x${t.pageHeightMm}`.replace(/[.+]/g,"_")}function et(t){const n=new Map;return t.pages.forEach(l=>{n.has(Qe(l))||n.set(Qe(l),l)}),`<!doctype html><html><head><meta charset="utf-8"><style>${`.mr-page{margin:0 auto;page-break-after:always;}
|
|
2
|
+
.mr-page tr{break-inside:avoid;page-break-inside:avoid;}
|
|
3
|
+
.mr-comp{break-inside:avoid;page-break-inside:avoid;}
|
|
4
|
+
${[...n.values()].map(l=>`@page ${Qe(l)}{size:${l.pageWidthMm}mm ${l.pageHeightMm}mm;margin:0;}`).join(`
|
|
5
|
+
`)}
|
|
6
|
+
body{margin:0;background:#fff;}`}</style></head><body>`}function tt(t,n){const a=K.renderPage(t,96,{},document);a.style.page=Qe(t);const r=ie.printCalibration(n);if(r.x||r.y){const l=document.createElement("div");for(l.style.cssText=`position:absolute;inset:0;transform:translate(${r.x}mm,${r.y}mm);transform-origin:top left`;a.firstChild;)l.appendChild(a.firstChild);a.appendChild(l)}return a.outerHTML}function bn(t,n){return{head:et(t),pageChunks:t.pages.map(a=>tt(a,n))}}async function wn(t,n={}){const a={schemaVersion:"mach-report-batch-print",pages:t.flatMap(i=>i.pages)};if(a.pages.length===0)return;const r=ie.snapshotPrintOptions(n.printOptions),l=et(a),o=document.createElement("iframe");o.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(o);let s=!1;try{const i=o.contentDocument;i.open(),i.write(l);for(let c=0;c<a.pages.length;c++)Q.assertOutputActive(n.signal),i.write(tt(a.pages[c],r)),c%Oe===Oe-1&&(Q.notifyOutputProgress(n,c+1,a.pages.length),await Ue());i.write("</body></html>"),i.close(),await Ue(),await Mt(i,r,n.signal),Q.notifyOutputProgress(n,a.pages.length,a.pages.length),s=!0,o.contentWindow?.focus(),o.contentWindow?.print()}catch(i){if(n.signal?.aborted)throw i;n.onError?.(yn(i,n.messages))}finally{s?setTimeout(()=>o.remove(),6e4):o.remove()}}function xn(t){return`<!doctype html><html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"><!--[if gte mso 9]><xml><w:WordDocument><w:View>Print</w:View><w:Zoom>100</w:Zoom></w:WordDocument></xml><![endif]-->${t.replace(/^<!doctype html><html><head>/,"")}`}function Ca(t){const{head:n,pageChunks:a}=bn(t);return{html:`${xn(n)}${a.join("")}</body></html>`,filename:"mach-report.doc"}}function kn(t,n){let a=null,r=!1,l=!1,o=0,s=0;const i=new Set,c=new Map;let f=null;const g=new Map;let d=null,p=null,E=null,b=null,h=null;function m(w,B){return!l&&t.value===w&&o===B}function S(){if(l)return;const w=[...c.values()].reverse().find(B=>m(B.plan,B.epoch))?.format??null;w!==d&&(d=w,n.onBusy?.(w))}function v(w,B,F){const O={};return c.set(O,{plan:w,epoch:B,format:F,run:cn("export",n.onTask)}),c.get(O).run.start(),S(),O}function C(w){c.get(w)?.run.finish(),c.delete(w),S()}function P(){for(const[w,B]of g)m(B.plan,B.epoch)||(w.close(),g.delete(w))}function I(w=!0){if(w){s++;for(const B of i)B.close();i.clear()}for(const B of c.values())B.run.finish("cancelled");f?.finish("cancelled"),o++,L(),S(),P()}const T=e.watch(t,()=>I(!1),{flush:"sync"});function L(){a?.remove(),a=null}function J(){I(),l=!0,o++,T(),L(),P(),c.clear(),n.onPrinting?.(!1)}function H(w,B){const F=URL.createObjectURL(w);setTimeout(()=>URL.revokeObjectURL(F),1e4);const O=document.createElement("a");O.href=F,O.download=B,O.click()}function Z(w,B,F,O,G){F.update("download"),m(w,B)&&!F.controller.signal.aborted&&H(O,G)}async function ae(w,B,F,O,G){const _=w.contentDocument;_.open(),_.write(et(B));for(let Y=0;Y<B.pages.length;Y++)if(O.controller.signal.aborted||(_.write(tt(B.pages[Y],G)),O.update("print",Y+1,B.pages.length),Y%Oe===Oe-1&&await Ue(),w!==a))return!1;return _.write("</body></html>"),_.close(),await Ue(),await Mt(_,G,O.controller.signal),!(!m(B,F)||w!==a)}function ge(){const w=s,B=O=>O&&!l&&w===s,F=O=>(!l&&w===s&&n.onError(O instanceof Error?O.message:"报表修改尚未完成","export"),!1);try{const O=n.beforeOutput?.()??!0;return typeof O=="boolean"?B(O):O.then(B,F)}catch(O){return F(O)}}function re(w){const B=ge();return typeof B=="boolean"?B?w():Promise.resolve():B.then(F=>F?w():void 0)}function x(w,B,F,O,G){O.finish(O.controller.signal.aborted?"cancelled":"failed"),G===a&&L(),m(B,F)&&!O.controller.signal.aborted&&n.onError(yn(w,n.getPrintMessages?.()),"print")}async function $(){if(r)return;const w=t.value;if(l||!w||w.pages.length===0)return;const B=o;r=!0;const F=cn("print",n.onTask);f=F,F.start(),n.onPrinting?.(!0),L(),a=document.createElement("iframe"),a.style.cssText="position:fixed;right:0;bottom:0;width:0;height:0;border:0;visibility:hidden;",document.body.appendChild(a);const O=a;try{if(!m(w,B)||F.controller.signal.aborted){L();return}const G=ie.snapshotPrintOptions(n.getPrintOptions?.());if(!await ae(O,w,B,F,G))return;O.contentWindow?.focus(),O.contentWindow?.print()}catch(G){x(G,w,B,F,O)}finally{F.finish(),f===F&&(f=null),r=!1,l||n.onPrinting?.(!1)}}function y(w,B,F){return{signal:F.controller.signal,onDiagnostic:O=>{m(w,B)&&!F.controller.signal.aborted&&n.onDiagnostic?.(O)},onProgress:(O,G)=>F.update("encode",O,G)}}function N(w,B,F){if(p?.plan===w&&p.epoch===B)return p.promise;const O=Promise.resolve().then(()=>{if(!m(w,B))throw new Error("报表已切换或卸载");return Q.waitForOutput(n.getPdfExporter()(w,G=>{m(w,B)&&n.onWarning?.(G)},F?y(w,B,F):void 0),F?.controller.signal)}).finally(()=>{p?.promise===O&&(p=null)});return p={plan:w,epoch:B,promise:O},O}async function V(){const w=t.value;if(l||!w||w.pages.length===0)return;const B=o;if(E?.plan===w&&E.epoch===B)return E.promise;const F=v(w,B,"PDF"),O=(async()=>{try{const G=c.get(F).run,_=await N(w,B,G);if(!m(w,B))return;Z(w,B,G,new Blob([_],{type:"application/pdf"}),"mach-report.pdf")}catch(G){c.get(F)?.run.finish("failed"),m(w,B)&&n.onError(G instanceof Error?`PDF 导出失败: ${G.message}`:"PDF 导出失败","pdf")}finally{C(F),E?.token===F&&(E=null)}})();return E={plan:w,epoch:B,promise:O,token:F},O}async function D(){const w=t.value;if(l||!w||w.pages.length===0)return;const B=o;if(b?.plan===w&&b.epoch===B)return b.promise;const F={...n.getXlsxOptions?.()},O=v(w,B,"Excel"),G=(async()=>{try{const{renderPlanToXlsx:_}=await import("@agile-team/mach-report/xlsx");if(!m(w,B))return;const Y=c.get(O).run,{buffer:ve,warnings:he}=await Q.waitForOutput(_(w,{...F,...y(w,B,Y)}),Y.controller.signal);if(!m(w,B)||(he.length>0&&n.onWarning?.(`Excel 导出有 ${he.length} 条提示:${he.slice(0,2).join(";")}`),!m(w,B)))return;Z(w,B,Y,new Blob([ve],{type:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}),"mach-report.xlsx")}catch(_){c.get(O)?.run.finish("failed"),m(w,B)&&n.onError(_ instanceof Error?`Excel 导出失败: ${_.message}`:"Excel 导出失败","export")}finally{C(O),b?.token===O&&(b=null)}})();return b={plan:w,epoch:B,promise:G,token:O},G}async function q(){const w=t.value;if(l||!w||w.pages.length===0)return;const B=o;if(h?.plan===w&&h.epoch===B)return h.promise;const F=v(w,B,"图片"),O=(async()=>{try{const G=c.get(F).run,{blobs:_}=await Q.waitForOutput(K.renderPlanToImages(w,{...y(w,B,G),dpr:Math.min(2,typeof devicePixelRatio=="number"?devicePixelRatio:1)}),G.controller.signal);if(!m(w,B))return;_.forEach((Y,ve)=>{Z(w,B,G,Y,_.length>1?`mach-report-page-${ve+1}.png`:"mach-report.png")})}catch(G){c.get(F)?.run.finish("failed"),m(w,B)&&n.onError(G instanceof Error?`图片导出失败: ${G.message}`:"图片导出失败","export")}finally{C(F),h?.token===F&&(h=null)}})();return h={plan:w,epoch:B,promise:O,token:F},O}async function A(w){const B=t.value;if(l||!B||!B.pages.length)return;const F=o,O=v(B,F,w==="word"?"Word":"HTML"),G=c.get(O).run;try{const _=[];for(const[he,$e]of B.pages.entries()){if(!m(B,F))return;_.push(tt($e)),G.update("encode",he+1,B.pages.length),he%Oe===Oe-1&&await Ue()}if(!m(B,F))return;const Y=et(B),ve=`${w==="word"?xn(Y):Y}${_.join("")}</body></html>`;Z(B,F,G,new Blob([ve],{type:w==="word"?"application/msword;charset=utf-8":"text/html;charset=utf-8"}),w==="word"?"mach-report.doc":"mach-report.html")}catch(_){G.finish("failed"),m(B,F)&&n.onError(_ instanceof Error?`导出失败: ${_.message}`:"导出失败","export")}finally{C(O)}}async function U(){await A("word")}function W(){return re($)}function X(){return re(q)}function M(){return re(U)}async function ce(w){const B=t.value;if(!(l||!B||B.pages.length===0)){if(w==="pdf"){await V();return}if(w==="xlsx"||w==="excel"){await D();return}if(w==="png"||w==="image"){await q();return}if(w==="word"||w==="doc"){await U();return}if(w!=="html"){n.onError(`不支持的导出格式:${w}`,"export");return}await A("html")}}function Ce(w){return re(()=>ce(w))}function be(w){const B=t.value;if(l||!B||!B.pages.length){w.close();return}const F=o;g.set(w,{plan:B,epoch:F});const O=v(B,F,"PDF");N(B,F,c.get(O).run).then(G=>{if(!m(B,F)||w.closed){g.delete(w)&&w.close();return}const _=URL.createObjectURL(new Blob([G],{type:"application/pdf"}));setTimeout(()=>URL.revokeObjectURL(_),6e4);const Y=w.document;Y.title="PDF 预览",Y.documentElement.style.height="100%",Y.body.style.cssText="margin:0;height:100%;";const ve=Y.createElement("iframe");ve.title="PDF 预览",ve.style.cssText="display:block;width:100%;height:100%;border:0;",ve.src=_,Y.body.replaceChildren(ve),g.delete(w)}).catch(G=>{c.get(O)?.run.finish("failed"),w.close(),g.delete(w),m(B,F)&&n.onError(G instanceof Error?`PDF 预览失败: ${G.message}`:"PDF 预览失败","pdf")}).finally(()=>C(O))}function Ne(){if(l||!t.value?.pages.length)return;const w=globalThis.window.open("","_blank");if(!w){n.onError("浏览器拦截了弹窗,请允许弹窗后重试","pdf");return}const B=ge();if(typeof B=="boolean"){B?be(w):w.close();return}i.add(w),B.then(F=>{const O=i.delete(w);if(!F||!O||w.closed){w.close();return}be(w)})}return{print:W,exportAs:Ce,exportImages:X,exportWord:M,openPdfWindow:Ne,invalidatePending:I,cancel:I,releasePrintFrame:L,dispose:J}}const En="mrp-hit";function Sa(t){t.querySelectorAll(`mark.${En}`).forEach(a=>{const r=a.parentNode;if(r){for(;a.firstChild;)r.insertBefore(a.firstChild,a);a.remove(),r.normalize()}})}function Na(t,n){const a=n.trim();if(!a)return 0;const r=a.toLowerCase(),l=document.createTreeWalker(t,NodeFilter.SHOW_TEXT,{acceptNode(i){const c=i.parentElement;return!c||c.closest("mark")||/^(SCRIPT|STYLE)$/.test(c.tagName)?NodeFilter.FILTER_REJECT:(i.nodeValue??"").toLowerCase().includes(r)?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}}),o=[];for(let i=l.nextNode();i;i=l.nextNode())o.push(i);let s=0;for(const i of o){const c=i.nodeValue??"",f=c.toLowerCase(),g=i.parentElement;if(!g)continue;const d=document.createDocumentFragment();let p=0,E=f.indexOf(r);for(;E>=0;){E>p&&d.appendChild(document.createTextNode(c.slice(p,E)));const b=document.createElement("mark");b.className=En,b.textContent=c.slice(E,E+a.length),d.appendChild(b),s++,p=E+a.length,E=f.indexOf(r,p)}p<c.length&&d.appendChild(document.createTextNode(c.slice(p))),g.replaceChild(d,i)}return s}const Ba=new Set(["line","rect","ellipse","chart"]);function*$a(t){for(const n of t.cells??[])for(const a of n??[])yield a?.text??"",yield*a?.children??[]}function*Va(t){if(gn.isRichText(t))for(const n of t.richParagraphs)for(const a of n.segments??[])yield(a.kind==="field"?a.field:a.text)??"";else t.lines?.length?yield*t.lines:yield t.text??""}function*Ia(t){const n=[t.values()];for(;n.length>0;){const a=n[n.length-1].next();if(a.done){n.pop();continue}const r=a.value;if(typeof r=="string"){yield r;continue}yield"",!gn.isImageBackedComponent(r)&&(r.kind==="text"?n.push(Va(r)):r.grid?n.push($a(r.grid)):Ba.has(r.kind)||(yield r.fallbackText??""))}}function*Pa(t){for(let n=0;n<t.pages.length;n++){for(const a of Ia(t.pages[n].components))yield{text:a,pageIndex:n};yield{text:"",pageIndex:n}}}function Ra(t,n){const a=t.toLowerCase();let r=0;for(let l=a.indexOf(n);l>=0;l=a.indexOf(n,l+n.length))r++;return r}function Da(t){const{plan:n,gotoPage:a,highlight:r,clearHighlights:l}=t,o=e.ref(!1),s=e.ref(""),i=e.ref(0),c=e.ref(0),f=e.ref(!1);let g=[];const d=e.computed(()=>{if(c.value===0)return null;const P=i.value;let I=0,T=g.length-1;for(;I<T;){const J=I+T>>>1;g[J].cumulative<=P?I=J+1:T=J}const L=g[I];return L?{pageIndex:L.pageIndex,occurrence:P-(g[I-1]?.cumulative??0)}:null});let p=null,E=null,b=0;function h(){b++,p&&clearTimeout(p),E&&clearTimeout(E),p=E=null,f.value=!1}function m(P){s.value=P,i.value=0,c.value=0,g=[],f.value=!1;const I=P.trim().toLowerCase(),T=n.value;if(!I||!T)return;f.value=!0;const L=b,J=Pa(T),H=[];let Z=0;function ae(){if(E=null,L!==b||T!==n.value)return;const ge=performance.now();let re=0;for(;re<5e3&&performance.now()-ge<4;){const x=J.next();if(x.done){g=H,c.value=Z,f.value=!1,g[0]&&a(g[0].pageIndex+1);return}const $=Ra(x.value.text,I);if($>0){Z+=$;const y=H[H.length-1];y?.pageIndex===x.value.pageIndex?y.cumulative=Z:H.push({pageIndex:x.value.pageIndex,cumulative:Z})}re++}E=setTimeout(ae,0)}ae()}function S(P){if(h(),s.value=P,i.value=c.value=0,g=[],!P.trim()){m("");return}f.value=!0,p=setTimeout(()=>{p=null,m(P)},Math.max(0,e.unref(t.debounceMs)??200))}function v(P){const I=c.value;if(I===0||f.value)return;i.value=(i.value+P+I)%I;const T=d.value;T&&a(T.pageIndex+1)}function C(){h(),s.value="",i.value=c.value=0,g=[]}return e.watch(n,C,{flush:"sync"}),e.onScopeDispose(C),{visible:o,query:s,matchIndex:i,matchCount:c,activeMatch:d,searching:f,toggle:()=>{o.value=!o.value},onInput:S,onNav:v,apply:P=>{s.value.trim()&&r(P,s.value.trim())},clear:P=>{l(P)},reset:C}}function Ma(t,n){const a=e.computed(()=>{if(t.value)return!0;if(typeof location>"u")return!1;try{return new URLSearchParams(location.search).get("mrp-debug")==="1"}catch{return!1}}),r=e.computed(()=>!a.value||!n.plan.value?0:Math.round(JSON.stringify(n.plan.value).length/1024)),l=e.computed(()=>!a.value||!n.plan.value?null:{pages:n.pageCount.value,window:`${n.windowRange.value.start}-${n.windowRange.value.end}`,zoom:`${Math.round(n.zoom.value*100)}%`,loadMs:`${n.loadMs.value}ms`,planKB:r.value});return{enabled:a,debugStats:l}}function Ta(t,n){const{thumbsRoot:a,visible:r,renderThumbCanvas:l}=n,o=e.ref(0),s=e.ref(800),i=e.computed(()=>(t.value?.pages??[]).map(v=>Math.round(v.pageHeightMm/v.pageWidthMm*116))),c=e.computed(()=>pn.createPageWindowIndex(i.value.map(v=>v+20),8)),f=e.computed(()=>c.value.window(s.value,o.value,1)),g=e.computed(()=>{if(!r.value)return[];const{start:v,end:C}=f.value;return i.value.slice(v,C+1).map((P,I)=>({index:v+I,height:P}))});let d=0,p=0,E=!1;function b(){const v=a.value;v&&(o.value=v.scrollTop,s.value=v.clientHeight||800)}function h(){E||p||(p=requestAnimationFrame(()=>{p=0,b()}))}function m(){if(g.value,d&&cancelAnimationFrame(d),d=0,E||!r.value||!t.value||!a.value)return;b();const v=g.value,C=t.value,P=a.value;let I=0;function T(){if(d=0,!(E||!r.value||t.value!==C||a.value!==P)){for(let L=0;I<v.length&&L<2;L++,I++){const J=v[I].index,H=P.querySelector(`[data-thumb="${J+1}"]`);if(!H||H.childElementCount>0)continue;const Z=l(J);Z&&(Z.style.width="100%",Z.style.height="100%",Z.style.display="block",H.appendChild(Z))}I<v.length&&(d=requestAnimationFrame(T))}}d=requestAnimationFrame(T)}function S(){E=!0,d&&cancelAnimationFrame(d),p&&cancelAnimationFrame(p),d=p=0}return e.onScopeDispose(S),{schedule:m,destroy:S,onScroll:h,windowRange:f,visibleThumbs:g}}function Oa(){const t=e.shallowRef(0);return{loadMs:t,start(){return typeof performance<"u"?performance.now():0},end(n){t.value=n?Math.round(performance.now()-n):0}}}function Fa(t){const n=e.ref(null),a=e.ref(null);function r(){n.value?.focus(),n.value?.select()}e.watch(t.visible,s=>{s&&e.nextTick(r)});function l(){t.close(),e.nextTick(()=>a.value?.focus())}function o(s){s.isComposing||s.keyCode===229||s.key!=="Enter"&&s.key!=="Escape"||(s.preventDefault(),s.stopPropagation(),s.key==="Escape"?l():t.navigate(s.shiftKey?-1:1))}return{input:n,toggle:a,focus:r,close:l,onKeydown:o}}function Cn(){const t=e.ref(!1),n=e.ref(null),a=e.ref(null),r=e.ref(null);function l(i=!1){t.value=!1,i&&e.nextTick(()=>a.value?.focus())}function o(i){i.target instanceof Node&&!n.value?.contains(i.target)&&l()}function s(i){i.key!=="Escape"||!t.value||i.isComposing||(i.preventDefault(),i.stopPropagation(),l(!0))}return e.watch(t,i=>{i&&e.nextTick(()=>(r.value?.querySelector("input")??r.value?.querySelector("button:not(:disabled)"))?.focus())}),e.onMounted(()=>{document.addEventListener("pointerdown",o),document.addEventListener("focusin",o)}),e.onBeforeUnmount(()=>{document.removeEventListener("pointerdown",o),document.removeEventListener("focusin",o)}),{opened:t,root:n,trigger:a,panel:r,close:l,onKeydown:s}}const Aa=["disabled","aria-expanded"],za=["aria-label"],La=["aria-label","disabled","onClick"],qa={"aria-hidden":"true"},Ka=e.defineComponent({__name:"ReportExportMenu",props:{messages:{},formats:{},busy:{type:Boolean}},emits:["export"],setup(t,{emit:n}){const a=t,r=n,{opened:l,root:o,trigger:s,panel:i,close:c,onKeydown:f}=Cn(),g=e.computed(()=>[{format:"xlsx",label:a.messages.exportExcel,extension:".xlsx"},{format:"pdf",label:a.messages.exportPdf,extension:".pdf"},{format:"png",label:a.messages.exportImage,extension:".png"},{format:"word",label:a.messages.exportWord,extension:".doc"},{format:"html",label:a.messages.exportHtml,extension:".html"}].filter(b=>!a.formats||a.formats.includes(b.format)));e.watch(()=>a.busy,b=>{b&&c()});function d(b){a.busy||(r("export",b),c(!0))}function p(b){b.key!=="ArrowDown"&&b.key!=="ArrowUp"||(b.preventDefault(),l.value=!0,b.key==="ArrowUp"&&e.nextTick(()=>i.value?.querySelector("button:last-child")?.focus()))}function E(b){if(b.key==="Tab"){c();return}if(!["ArrowDown","ArrowUp","Home","End"].includes(b.key))return;b.preventDefault(),b.stopPropagation();const m=[...i.value?.querySelectorAll("button:not(:disabled)")??[]],S=m.indexOf(document.activeElement),v=b.key==="Home"?0:b.key==="End"?m.length-1:(S+(b.key==="ArrowDown"?1:-1)+m.length)%m.length;m[v]?.focus()}return(b,h)=>g.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"root",ref:o,class:"mrp-export-menu",onKeydown:h[1]||(h[1]=(...m)=>e.unref(f)&&e.unref(f)(...m))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:"mrp-nav mrp-export-trigger",disabled:t.busy,"aria-haspopup":"menu","aria-expanded":e.unref(l),onClick:h[0]||(h[0]=m=>l.value=!e.unref(l)),onKeydown:p},[e.createVNode(j._sfc_main,{name:"download"}),e.createTextVNode(e.toDisplayString(t.messages.exportMenu??"导出"),1),e.createVNode(j._sfc_main,{name:"chevron-down",size:12})],40,Aa),e.unref(l)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-export-panel",role:"menu","aria-label":t.messages.exportMenu??"导出",onKeydown:E},[e.createElementVNode("p",null,e.toDisplayString(t.messages.exportMenuDescription??"选择文件格式"),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,m=>(e.openBlock(),e.createElementBlock("button",{key:m.format,type:"button",role:"menuitem",tabindex:"-1","aria-label":m.label,disabled:t.busy,onClick:S=>d(m.format)},[e.createVNode(j._sfc_main,{name:"file"}),e.createElementVNode("span",null,e.toDisplayString(m.label),1),e.createElementVNode("small",qa,e.toDisplayString(m.extension),1)],8,La))),128))],40,za)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)}}),ja=j._export_sfc(Ka,[["__scopeId","data-v-83a57a3c"]]),Wa=["aria-label"],Ha={class:"mrp-pageinfo","aria-live":"polite"},Ua={class:"mrp-page-buttons"},Ga=["aria-label","title","disabled"],Ja=["aria-label","title","disabled"],Ya=["aria-label","title","aria-invalid","disabled"],Za=["aria-label","disabled"],Xa={key:1,class:"mrp-page-error",role:"alert"},Qa=e.defineComponent({__name:"ReportPagination",props:{pageCount:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,r=n,l=e.ref(String(a.currentPage)),o=e.ref(!1),s=e.computed(()=>a.messages.pageInfo.replace("{cur}",String(a.currentPage)).replace("{total}",String(a.pageCount)));e.watch(()=>[a.currentPage,a.pageCount],()=>{l.value=String(a.currentPage),o.value=!1});function i(){if(a.busy)return;const c=l.value.trim(),f=Number(c);o.value=!/^\d+$/.test(c)||!Number.isSafeInteger(f)||f<1||f>a.pageCount,!o.value&&f!==a.currentPage&&r("goto",f)}return(c,f)=>t.pageCount>0?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-pagination",role:"navigation","aria-label":t.messages.pagination??"报表分页"},[e.createElementVNode("span",Ha,e.toDisplayString(s.value),1),e.createElementVNode("div",Ua,[e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.prevPage,title:t.messages.prevPage,disabled:t.busy||t.currentPage<=1,onClick:f[0]||(f[0]=g=>r("goto",t.currentPage-1))},[e.createVNode(j._sfc_main,{name:"chevron-left"})],8,Ga),e.createElementVNode("button",{class:"mrp-nav",type:"button","aria-label":t.messages.nextPage,title:t.messages.nextPage,disabled:t.busy||t.currentPage>=t.pageCount,onClick:f[1]||(f[1]=g=>r("goto",t.currentPage+1))},[e.createVNode(j._sfc_main,{name:"chevron-right"})],8,Ja)]),t.pageCount>1?(e.openBlock(),e.createElementBlock("form",{key:0,class:"mrp-page-jump",onSubmit:e.withModifiers(i,["prevent"])},[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.pageJump??"跳至页"),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[2]||(f[2]=g=>l.value=g),type:"text",inputmode:"numeric",autocomplete:"off","aria-label":t.messages.pageJump??"跳至页",title:t.messages.pageJumpHint??"Enter 跳转","aria-invalid":o.value,disabled:t.busy,onInput:f[3]||(f[3]=g=>o.value=!1),onKeydown:f[4]||(f[4]=e.withKeys(g=>{l.value=String(t.currentPage),o.value=!1},["esc"]))},null,40,Ya),[[e.vModelText,l.value]])]),e.createElementVNode("button",{class:"mrp-nav",type:"submit","aria-label":t.messages.pageJump??"跳至页",disabled:t.busy},[e.createVNode(j._sfc_main,{name:"arrow-right",size:14})],8,Za)],32)):e.createCommentVNode("",!0),o.value?(e.openBlock(),e.createElementBlock("span",Xa,e.toDisplayString(t.messages.pageJumpInvalid??"请输入有效页码"),1)):e.createCommentVNode("",!0)],8,Wa)):e.createCommentVNode("",!0)}}),Tt=j._export_sfc(Qa,[["__scopeId","data-v-0db4fbd3"]]),_a=["aria-label"],eo={class:"mrp-title"},to=["aria-label"],no=["aria-label","aria-pressed"],ao=["aria-pressed"],oo=["aria-pressed"],ro=["aria-label"],lo=["aria-pressed"],so=["aria-pressed","onClick"],io=["aria-label"],co=["disabled"],uo=["disabled"],mo=["disabled"],fo=["aria-label","aria-expanded"],po=["aria-label"],go=["placeholder","aria-label","value"],vo=["aria-label"],ho={key:1,class:"mrp-search-count",role:"status","aria-live":"polite"},yo=["disabled","aria-label"],bo=["disabled","aria-label"],wo=["aria-label"],xo={class:"mrp-search-hint",role:"status"},ko=e.defineComponent({__name:"ReportToolbar",props:{pageCount:{},currentPage:{},zoomMode:{},zoom:{},showExport:{type:Boolean},showPrint:{type:Boolean},showPdfWindow:{type:Boolean},messages:{},search:{},thumbsVisible:{type:Boolean},showImport:{type:Boolean},showSearch:{type:Boolean,default:!0},showThumbnails:{type:Boolean,default:!0},showZoom:{type:Boolean,default:!0},exportFormats:{default:void 0},showSettings:{type:Boolean},settingsOpen:{type:Boolean},busy:{type:Boolean},showPagination:{type:Boolean}},emits:["goto","zoom","export","print","pdf-window","search-input","search-nav","search-toggle","thumbs-toggle","import-excel","settings-toggle"],setup(t,{expose:n,emit:a}){const r=t,l=a,o=Fa({visible:()=>r.search.visible,navigate:g=>{!r.search.searching&&r.search.matchCount>0&&l("search-nav",g)},close:()=>{r.search.visible&&l("search-toggle")}}),{input:s,toggle:i}=o;n({focusSearch:o.focus});function c(){const g=r.search.matchCount>0?r.search.matchIndex+1:0;return r.messages.matchInfo.replace("{cur}",String(g)).replace("{total}",String(r.search.matchCount))}function f(){l("search-input",""),o.focus()}return(g,d)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-toolbar",role:"toolbar","aria-label":t.messages.title},[e.createElementVNode("span",eo,[e.createVNode(j._sfc_main,{name:"file"}),e.createTextVNode(e.toDisplayString(t.messages.title),1)]),t.showPagination?(e.openBlock(),e.createBlock(Tt,{key:0,"page-count":t.pageCount,"current-page":t.currentPage,messages:t.messages,busy:t.busy,onGoto:d[0]||(d[0]=p=>l("goto",p))},null,8,["page-count","current-page","messages","busy"])):e.createCommentVNode("",!0),d[15]||(d[15]=e.createElementVNode("span",{class:"mrp-spacer"},null,-1)),t.showSearch!==!1?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-read-tools",role:"group","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("button",{ref_key:"searchToggleRef",ref:i,class:e.normalizeClass(["mrp-nav mrp-search-toggle mrp-icon-button",{"mrp-active":t.search.visible}]),type:"button",title:"Ctrl+F","aria-label":t.messages.search??t.messages.searchPlaceholder,"aria-pressed":t.search.visible,onClick:d[1]||(d[1]=p=>l("search-toggle"))},[e.createVNode(j._sfc_main,{name:"search"})],10,no),t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:0,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:d[2]||(d[2]=p=>l("thumbs-toggle"))},[e.createVNode(j._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,ao)):e.createCommentVNode("",!0)],8,to)):t.showThumbnails!==!1?(e.openBlock(),e.createElementBlock("button",{key:2,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.thumbsVisible}]),type:"button","aria-pressed":t.thumbsVisible,onClick:d[3]||(d[3]=p=>l("thumbs-toggle"))},[e.createVNode(j._sfc_main,{name:"grid"}),e.createTextVNode(e.toDisplayString(t.messages.thumbnails),1)],10,oo)):e.createCommentVNode("",!0),e.renderSlot(g.$slots,"navigation",{},void 0,!0),t.showZoom!==!1?(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-zoom-tools",role:"group","aria-label":t.messages.zoom??"缩放工具"},[e.createElementVNode("button",{class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="fit"}]),"aria-pressed":t.zoomMode==="fit",type:"button",onClick:d[4]||(d[4]=p=>l("zoom","fit"))},[e.createVNode(j._sfc_main,{name:"fit"}),e.createTextVNode(e.toDisplayString(t.messages.fitWidth),1)],10,lo),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList([100,150],p=>e.createElementVNode("button",{key:p,class:e.normalizeClass(["mrp-nav",{"mrp-active":t.zoomMode==="raw"&&Math.round(t.zoom*100)===p}]),"aria-pressed":t.zoomMode==="raw"&&Math.round(t.zoom*100)===p,type:"button",onClick:E=>l("zoom",p)},e.toDisplayString(p)+"%",11,so)),64))],8,ro)):e.createCommentVNode("",!0),t.showImport||t.showExport||t.showPrint||t.showPdfWindow?(e.openBlock(),e.createElementBlock("div",{key:4,class:"mrp-output-tools",role:"group","aria-label":t.messages.settingsExport??"导出与打印"},[t.showImport?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-import-excel",type:"button",disabled:t.busy,onClick:d[5]||(d[5]=p=>l("import-excel"))},[e.createVNode(j._sfc_main,{name:"upload"}),e.createTextVNode(e.toDisplayString(t.messages.importExcel??"导入 Excel 模板"),1)],8,co)):e.createCommentVNode("",!0),t.showExport?(e.openBlock(),e.createBlock(ja,{key:1,messages:t.messages,formats:t.exportFormats,busy:t.busy,onExport:d[6]||(d[6]=p=>l("export",p))},null,8,["messages","formats","busy"])):e.createCommentVNode("",!0),t.showPrint?(e.openBlock(),e.createElementBlock("button",{key:2,class:"mrp-nav",type:"button",disabled:t.busy,onClick:d[7]||(d[7]=p=>l("print"))},[e.createVNode(j._sfc_main,{name:"print"}),e.createTextVNode(e.toDisplayString(t.messages.print),1)],8,uo)):e.createCommentVNode("",!0),t.showPdfWindow?(e.openBlock(),e.createElementBlock("button",{key:3,class:"mrp-nav",type:"button",disabled:t.busy,onClick:d[8]||(d[8]=p=>l("pdf-window"))},[e.createVNode(j._sfc_main,{name:"external"}),e.createTextVNode(e.toDisplayString(t.messages.pdfWindow),1)],8,mo)):e.createCommentVNode("",!0)],8,io)):e.createCommentVNode("",!0),t.showSettings?(e.openBlock(),e.createElementBlock("button",{key:5,class:e.normalizeClass(["mrp-nav mrp-settings-toggle",{"mrp-active":t.settingsOpen}]),type:"button","aria-label":t.messages.settings??"设置","aria-haspopup":"dialog","aria-expanded":!!t.settingsOpen,onClick:d[9]||(d[9]=p=>l("settings-toggle"))},[e.createVNode(j._sfc_main,{name:"settings"}),e.createTextVNode(e.toDisplayString(t.messages.settings??"设置"),1)],10,fo)):e.createCommentVNode("",!0),t.showSearch!==!1&&t.search.visible?(e.openBlock(),e.createElementBlock("div",{key:6,class:"mrp-search-panel",role:"search","aria-label":t.messages.search??"内容搜索"},[e.createElementVNode("div",{class:e.normalizeClass(["mrp-search",{"mrp-search-no-results":t.search.query&&!t.search.searching&&!t.search.matchCount}])},[e.createVNode(j._sfc_main,{name:"search"}),e.createElementVNode("input",{ref_key:"searchInputRef",ref:s,class:"mrp-search-input",type:"text",autocomplete:"off",spellcheck:"false",placeholder:t.messages.searchPlaceholder,"aria-label":t.messages.search??t.messages.searchPlaceholder,value:t.search.query,onInput:d[10]||(d[10]=p=>l("search-input",p.target.value)),onKeydown:d[11]||(d[11]=(...p)=>e.unref(o).onKeydown&&e.unref(o).onKeydown(...p))},null,40,go),t.search.query?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-nav mrp-search-clear mrp-icon-button",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:f},[e.createVNode(j._sfc_main,{name:"close",size:13})],8,vo)):e.createCommentVNode("",!0),t.search.query?(e.openBlock(),e.createElementBlock("span",ho,e.toDisplayString(t.search.searching?t.messages.searching??"搜索中…":c()),1)):e.createCommentVNode("",!0),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.prevSearchMatch??"上一个匹配",onClick:d[12]||(d[12]=p=>l("search-nav",-1))},[e.createVNode(j._sfc_main,{name:"chevron-up",size:14})],8,yo),e.createElementVNode("button",{class:"mrp-nav mrp-icon-button",type:"button",disabled:t.search.matchCount===0||t.search.searching,"aria-label":t.messages.nextSearchMatch??"下一个匹配",onClick:d[13]||(d[13]=p=>l("search-nav",1))},[e.createVNode(j._sfc_main,{name:"chevron-down",size:14})],8,bo),e.createElementVNode("button",{class:"mrp-nav mrp-search-close mrp-icon-button",type:"button","aria-label":t.messages.closeSearch??"关闭搜索",onClick:d[14]||(d[14]=(...p)=>e.unref(o).close&&e.unref(o).close(...p))},[e.createVNode(j._sfc_main,{name:"close",size:14})],8,wo)],2),e.createElementVNode("span",xo,e.toDisplayString(t.search.query&&!t.search.searching&&!t.search.matchCount?t.messages.searchNoMatches??"没有匹配内容":t.messages.searchHint??"Enter 下一个 · Shift+Enter 上一个"),1)],8,po)):e.createCommentVNode("",!0)],8,_a))}}),Sn=j._export_sfc(ko,[["__scopeId","data-v-5f4b04d8"]]);function Eo(t){const n=t.meta?.record;if(!(!n||typeof n!="object"||typeof n.dataset!="string")&&[n.rowIndex,n.copyIndex,n.templatePageIndex].every(a=>Number.isSafeInteger(a)&&Number(a)>=0)&&!(n.rowKey!==void 0&&typeof n.rowKey!="string"&&typeof n.rowKey!="number"))return n}function Co(t){const n=[],a=[];let r;for(const[l,o]of(t?.pages??[]).entries()){const s=Eo(o);if(!s){a.push(-1),r=void 0;continue}(!r||s.dataset!==r.dataset||s.rowIndex!==r.rowIndex||s.rowKey!==r.rowKey||s.copyIndex===0&&s.templatePageIndex===0)&&n.push({page:l+1,...s.rowKey===void 0?{}:{rowKey:s.rowKey}}),a.push(n.length-1),r=s}return{entries:n,pageRecords:a}}const So=["aria-label"],No={key:0,class:"mrp-record-arrows"},Bo=["aria-label","title","disabled"],$o=["aria-label","title","disabled"],Vo={class:"mrp-record-info","aria-live":"polite"},Io=["title"],Po=["title"],Ro=e.defineComponent({__name:"ReportRecordNavigation",props:{plan:{},currentPage:{},messages:{},busy:{type:Boolean}},emits:["goto"],setup(t,{emit:n}){const a=t,r=n,l=e.computed(()=>Co(a.plan)),o=e.computed(()=>l.value.pageRecords[a.currentPage-1]??-1),s=e.computed(()=>o.value>=0?l.value.entries[o.value]:void 0),i=e.computed(()=>(a.messages.recordInfo??"记录 {cur} / {total}").replace("{cur}",String(o.value+1)).replace("{total}",String(l.value.entries.length))),c=e.computed(()=>{const g=a.plan?.pages[a.currentPage-1]?.meta?.title;return typeof g=="string"?g:""});function f(g){const d=l.value.entries[o.value+g];!a.busy&&o.value>=0&&d&&r("goto",d.page)}return(g,d)=>s.value?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mrp-record-navigation","aria-label":t.messages.recordNavigation??"标签记录"},[l.value.entries.length>1?(e.openBlock(),e.createElementBlock("div",No,[e.createElementVNode("button",{type:"button","aria-label":t.messages.prevRecord??"上一条记录",title:t.messages.prevRecord??"上一条记录",disabled:t.busy||o.value<=0,onClick:d[0]||(d[0]=p=>f(-1))},[e.createVNode(j._sfc_main,{name:"chevron-left",size:13})],8,Bo),e.createElementVNode("button",{type:"button","aria-label":t.messages.nextRecord??"下一条记录",title:t.messages.nextRecord??"下一条记录",disabled:t.busy||o.value>=l.value.entries.length-1,onClick:d[1]||(d[1]=p=>f(1))},[e.createVNode(j._sfc_main,{name:"chevron-right",size:13})],8,$o)])):e.createCommentVNode("",!0),e.createElementVNode("span",Vo,e.toDisplayString(i.value),1),s.value.rowKey!==void 0?(e.openBlock(),e.createElementBlock("code",{key:1,title:String(s.value.rowKey)},e.toDisplayString(s.value.rowKey),9,Io)):e.createCommentVNode("",!0),c.value?(e.openBlock(),e.createElementBlock("span",{key:2,class:"mrp-record-face",title:c.value},e.toDisplayString(c.value),9,Po)):e.createCommentVNode("",!0)],8,So)):e.createCommentVNode("",!0)}}),Do=j._export_sfc(Ro,[["__scopeId","data-v-aa94fa14"]]),Mo=["aria-label","aria-busy"],To={class:"mrp-calculation-heading"},Oo={class:"mrp-calculation-controls"},Fo=["aria-label","value","disabled"],Ao=["value"],zo={class:"mrp-calculation-precision"},Lo=["aria-label","value","disabled"],qo={key:0,class:"mrp-calculation-expression"},Ko=["aria-label","value","disabled"],jo={class:"mrp-calculation-actions"},Wo={key:1,class:"mrp-calculation-diagnostic",role:"alert"},Ho={key:2,class:"mrp-calculation-result",role:"status","aria-live":"polite"},Uo={key:0},Go={key:3,class:"mrp-calculation-empty"},Jo={class:"mrp-calculation-local"},Yo=e.defineComponent({__name:"ReportCalculationPanel",props:{state:{},messages:{}},setup(t){const n=t,a=`mrp-calculation-expression-hint-${e.getCurrentInstance()?.uid??0}`,r=e.computed(()=>[["sum",n.messages.calculationSum],["average",n.messages.calculationAverage],["min",n.messages.calculationMin],["max",n.messages.calculationMax],["count",n.messages.calculationCount],["median",n.messages.calculationMedian],["expression",n.messages.calculationCustom]]),l=e.computed(()=>{const o=n.state.error.value;if(!o)return"";const s=n.messages;return{selection:s.calculationErrorSelection,limit:s.calculationErrorLimit,expression:s.calculationErrorExpression,division:s.calculationErrorDivision,overflow:s.calculationErrorOverflow,precision:s.calculationErrorPrecision}[o]});return(o,s)=>(e.openBlock(),e.createElementBlock("section",{class:"mrp-calculation","aria-label":t.messages.calculationTitle,"aria-busy":t.state.busy.value},[e.createElementVNode("header",To,[s[5]||(s[5]=e.createElementVNode("span",{class:"mrp-calculation-symbol","aria-hidden":"true"},"∑",-1)),e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(t.messages.calculationTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.calculationHint),1)])]),e.createElementVNode("div",Oo,[e.createElementVNode("label",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationFormula),1),e.createElementVNode("select",{"aria-label":t.messages.calculationFormula,value:t.state.operation.value,onChange:s[0]||(s[0]=i=>t.state.setOperation(i.target.value)),disabled:t.state.busy.value},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(r.value,([i,c])=>(e.openBlock(),e.createElementBlock("option",{key:i,value:i},e.toDisplayString(c),9,Ao))),128))],40,Fo)]),e.createElementVNode("label",zo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationPrecision),1),e.createElementVNode("input",{"aria-label":t.messages.calculationPrecision,value:t.state.precision.value,onChange:s[1]||(s[1]=i=>t.state.setPrecision(Number(i.target.value))),type:"number",min:"0",max:"12",step:"1",disabled:t.state.busy.value},null,40,Lo)])]),t.state.operation.value==="expression"?(e.openBlock(),e.createElementBlock("label",qo,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExpression),1),e.createElementVNode("input",{"aria-label":t.messages.calculationExpression,"aria-describedby":a,value:t.state.expression.value,onInput:s[2]||(s[2]=i=>t.state.setExpression(i.target.value)),type:"text",maxlength:"256",spellcheck:"false",disabled:t.state.busy.value,placeholder:"SUM / COUNT"},null,40,Ko),e.createElementVNode("small",{id:a},e.toDisplayString(t.messages.calculationExpressionHint),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",jo,[t.state.busy.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:s[3]||(s[3]=i=>t.state.cancel())},e.toDisplayString(t.messages.calculationCancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-run",type:"button",onClick:s[4]||(s[4]=i=>t.state.run())},e.toDisplayString(t.messages.calculationRun),1))]),l.value?(e.openBlock(),e.createElementBlock("p",Wo,e.toDisplayString(l.value),1)):t.state.result.value?(e.openBlock(),e.createElementBlock("div",Ho,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationResult),1),e.createElementVNode("output",null,e.toDisplayString(t.state.result.value.formatted),1),e.createElementVNode("small",null,[e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationIncluded)+" "+e.toDisplayString(t.state.result.value.numericCells),1),e.createElementVNode("span",null,e.toDisplayString(t.messages.calculationExcluded)+" "+e.toDisplayString(t.state.result.value.excludedCells),1)]),t.state.result.value.numericCells===0?(e.openBlock(),e.createElementBlock("p",Uo,e.toDisplayString(t.messages.calculationEmpty),1)):e.createCommentVNode("",!0)])):(e.openBlock(),e.createElementBlock("p",Go,e.toDisplayString(t.messages.calculationNoSelection),1)),e.createElementVNode("p",Jo,e.toDisplayString(t.messages.calculationLocal),1)],8,Mo))}}),Zo=j._export_sfc(Yo,[["__scopeId","data-v-ee359251"]]);function Xo(t){const n=e.ref("sum"),a=e.ref("SUM / COUNT"),r=e.ref(2),l=e.ref(!1),o=e.shallowRef(null),s=e.ref(null);let i=null,c=0;function f(){c++,i?.abort(),i=null,l.value=!1}function g(){f(),o.value=null,s.value=null}async function d(){if(g(),!t.enabled())return;const h=t.plan.value,m=t.selection.value;if(!h||!m){s.value="selection";return}const S=++c,v=new AbortController;i=v,l.value=!0;try{const C=await K.calculateReportSelection(h,m,{operation:n.value,expression:a.value,precision:r.value,signal:v.signal});S===c&&t.plan.value===h&&t.selection.value===m&&t.enabled()&&(o.value=C)}catch(C){S===c&&!v.signal.aborted&&(s.value=C instanceof K.ReportCalculationError?C.code:"expression")}finally{S===c&&(l.value=!1,i=null)}}e.watch([t.plan,t.selection,()=>t.enabled(),n,a,r],g,{flush:"sync"}),e.onScopeDispose(g);function p(h){n.value=h}function E(h){a.value=h}function b(h){r.value=h}return{operation:n,expression:a,precision:r,busy:l,result:o,error:s,run:d,cancel:f,clear:g,setOperation:p,setExpression:E,setPrecision:b}}const Qo=["aria-label"],_o={class:"mrp-settings-header"},er=["aria-label"],tr=["aria-label"],nr=["id","aria-selected","aria-controls","tabindex","onClick","onKeydown"],ar={class:"mrp-settings-content"},or=["id","aria-labelledby","hidden"],rr={key:0},lr={class:"mrp-settings-option"},sr=["checked","disabled"],ir={class:"mrp-settings-option"},cr=["value","disabled"],ur=["id","aria-labelledby","hidden"],dr={key:0},mr=["checked","disabled","onChange"],fr={key:0,class:"mrp-settings-note"},pr={key:1,class:"mrp-settings-note"},gr=["id","aria-labelledby","hidden"],vr={class:"mrp-settings-intro"},hr={class:"mrp-settings-option mrp-settings-feature"},yr=["id"],br=["aria-label","aria-describedby","checked","disabled"],wr=["disabled"],xr=e.defineComponent({__name:"ReportSettings",props:{available:{},enabled:{},messages:{},persistedEditing:{type:Boolean},busy:{type:Boolean},interaction:{},section:{}},emits:["change","reset","close","interaction","section"],setup(t,{emit:n}){const a=t,r=n,l=e.ref(null),o=e.computed(()=>a.section??"general"),s="mrp-settings-"+e.getCurrentInstance()?.uid,i=e.computed(()=>[{key:"general",label:a.messages.settingsGeneral??"常规"},{key:"tools",label:a.messages.settingsTools??"工具"},{key:"advanced",label:a.messages.settingsAdvanced??"高级"}]);function c(h,m){const v={ArrowRight:(m+1)%3,ArrowLeft:(m+2)%3,Home:0,End:2}[h.key];v!==void 0&&(h.preventDefault(),r("section",i.value[v].key),l.value?.querySelector("#"+s+"-tab-"+i.value[v].key)?.focus())}const f=e.ref(null);let g=null;const d=e.computed(()=>[{label:a.messages.settingsDisplay,tools:[["search",a.messages.search],["thumbnails",a.messages.thumbnails],["zoom",a.messages.zoom]]},{label:a.messages.settingsExport,tools:[["html",a.messages.exportHtml],["pdf",a.messages.exportPdf],["xlsx",a.messages.exportExcel],["png",a.messages.exportImage],["word",a.messages.exportWord],["print",a.messages.print],["pdfWindow",a.messages.pdfWindow]]},{label:a.messages.settingsData,tools:[["editing",a.messages.editCell],["import",a.messages.importExcel]]}].map(h=>({...h,tools:h.tools.map(([m,S])=>({key:m,label:S}))})));function p(h,m){const S=h.target,v=S.checked;S.checked=a.enabled[m],r("change",m,v)}function E(h){return!l.value||h.defaultPrevented?!1:h.target instanceof Node&&l.value.contains(h.target)?!0:h.target instanceof Element&&h.target.closest('[role="dialog"],dialog[open]')?!1:!Array.from(document.querySelectorAll('[aria-modal="true"],dialog[open]')).some(m=>m!==l.value&&!l.value.contains(m))}function b(h){if(!E(h))return;if(h.key==="Escape"){h.preventDefault(),h.stopPropagation(),r("close");return}if(h.key!=="Tab")return;const m=Array.from(l.value?.querySelectorAll("a[href],button:not(:disabled),input:not(:disabled),textarea:not(:disabled),select:not(:disabled),[tabindex='0']")??[]).filter(P=>!P.closest("[hidden]")&&P.tabIndex!==-1),S=m?.[0],v=m?.[m.length-1];(!l.value?.contains(document.activeElement)||h.shiftKey&&document.activeElement===S||!h.shiftKey&&document.activeElement===v)&&(h.preventDefault(),h.stopPropagation(),(h.shiftKey?v:S)?.focus())}return e.onMounted(()=>{const h=l.value?.closest(".mach-report-preview")?.querySelector(".mrp-settings-toggle"),m=document.activeElement;g=m instanceof HTMLElement&&m!==document.body&&!l.value?.contains(m)?m:h??null,f.value?.focus(),document.addEventListener("keydown",b)}),e.onUnmounted(()=>{document.removeEventListener("keydown",b),g?.isConnected&&g.focus()}),(h,m)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-settings-backdrop",onClick:m[5]||(m[5]=e.withModifiers(S=>h.$emit("close"),["self"]))},[e.createElementVNode("section",{ref_key:"panel",ref:l,class:"mrp-settings-panel",role:"dialog","aria-modal":"true","aria-label":t.messages.settings},[e.createElementVNode("header",_o,[e.createElementVNode("div",null,[m[6]||(m[6]=e.createElementVNode("span",{class:"mrp-settings-eyebrow"},"MACH REPORT",-1)),e.createElementVNode("strong",null,e.toDisplayString(t.messages.settings),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.settingsLocal),1)]),e.createElementVNode("button",{ref_key:"closeButton",ref:f,class:"mrp-settings-close",type:"button","aria-label":t.messages.settingsClose,onClick:m[0]||(m[0]=S=>h.$emit("close"))},[...m[7]||(m[7]=[e.createElementVNode("svg",{width:"16",height:"16",viewBox:"0 0 20 20",fill:"none","aria-hidden":"true"},[e.createElementVNode("path",{d:"m5 5 10 10M15 5 5 15",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)])],8,er)]),e.createElementVNode("div",{class:"mrp-settings-tabs",role:"tablist","aria-label":t.messages.settings},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(S,v)=>(e.openBlock(),e.createElementBlock("button",{id:s+"-tab-"+S.key,key:S.key,type:"button",role:"tab","aria-selected":o.value===S.key,"aria-controls":s+"-panel-"+S.key,tabindex:o.value===S.key?0:-1,onClick:C=>h.$emit("section",S.key),onKeydown:C=>c(C,v)},e.toDisplayString(S.label),41,nr))),128))],8,tr),e.createElementVNode("div",ar,[e.createElementVNode("section",{id:s+"-panel-general",role:"tabpanel","aria-labelledby":s+"-tab-general",hidden:o.value!=="general"},[e.renderSlot(h.$slots,"default",{},void 0,!0),t.interaction?(e.openBlock(),e.createElementBlock("fieldset",rr,[e.createElementVNode("legend",null,e.toDisplayString(t.messages.settingsPanes),1),e.createElementVNode("label",lr,[e.createElementVNode("span",null,e.toDisplayString(t.messages.freezeHeaders),1),e.createElementVNode("input",{type:"checkbox",checked:t.interaction.freezeHeaders,disabled:t.busy,onChange:m[1]||(m[1]=S=>h.$emit("interaction",{freezeHeaders:S.target.checked}))},null,40,sr)]),e.createElementVNode("label",ir,[e.createElementVNode("span",null,e.toDisplayString(t.messages.frozenColumns),1),e.createElementVNode("input",{class:"mrp-frozen-count",type:"number",min:"0",max:"20",value:t.interaction.frozenColumns??0,disabled:t.busy,onChange:m[2]||(m[2]=S=>h.$emit("interaction",{frozenColumns:Math.max(0,Math.min(20,Number(S.target.value)||0))}))},null,40,cr)])])):e.createCommentVNode("",!0)],8,or),e.createElementVNode("section",{id:s+"-panel-tools",role:"tabpanel","aria-labelledby":s+"-tab-tools",hidden:o.value!=="tools"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,S=>(e.openBlock(),e.createElementBlock("fieldset",{key:S.label},[e.createElementVNode("legend",null,e.toDisplayString(S.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.tools,v=>(e.openBlock(),e.createElementBlock("label",{key:v.key,class:e.normalizeClass(["mrp-settings-option",{"mrp-settings-unavailable":!t.available[v.key]}])},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(v.label),1),t.available[v.key]?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("small",dr,e.toDisplayString(t.messages.settingsUnavailable),1))]),e.createElementVNode("input",{type:"checkbox",checked:t.enabled[v.key],disabled:t.busy||!t.available[v.key],onChange:C=>p(C,v.key)},null,40,mr)],2))),128))]))),128)),t.available.editing?(e.openBlock(),e.createElementBlock("p",fr,e.toDisplayString(t.persistedEditing?t.messages.editingSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.available.import?(e.openBlock(),e.createElementBlock("p",pr,e.toDisplayString(t.messages.importLocal),1)):e.createCommentVNode("",!0)],8,ur),e.createElementVNode("section",{id:s+"-panel-advanced",role:"tabpanel","aria-labelledby":s+"-tab-advanced",hidden:o.value!=="advanced"},[e.createElementVNode("p",vr,e.toDisplayString(t.messages.settingsAdvancedDescription),1),e.createElementVNode("label",hr,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.messages.settingsCalculations),1),e.createElementVNode("small",{id:s+"-calculation-description"},e.toDisplayString(t.messages.settingsCalculationsDescription),9,yr)]),e.createElementVNode("input",{type:"checkbox","aria-label":t.messages.settingsCalculations,"aria-describedby":s+"-calculation-description",checked:t.interaction?.calculations===!0,disabled:t.busy,onChange:m[3]||(m[3]=S=>h.$emit("interaction",{calculations:S.target.checked}))},null,40,br)]),t.interaction?.calculations?e.renderSlot(h.$slots,"advanced",{},void 0,!0,0):e.createCommentVNode("",!0)],8,gr)]),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:t.busy,onClick:m[4]||(m[4]=S=>h.$emit("reset"))},e.toDisplayString(t.messages.settingsReset),9,wr),e.createElementVNode("span",null,e.toDisplayString(t.messages.settingsLocal),1)])],8,Qo)]))}}),kr=j._export_sfc(xr,[["__scopeId","data-v-36723612"]]),Er={class:"mrp-empty",role:"status"},Cr={key:0},Sr=e.defineComponent({__name:"ReportEmpty",props:{title:{},description:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("div",Er,[a[0]||(a[0]=e.createStaticVNode('<svg class="mrp-empty-art" viewBox="0 0 160 112" fill="none" aria-hidden="true" data-v-3e16b87e><ellipse cx="80" cy="100" rx="54" ry="7" fill="currentColor" opacity=".05" data-v-3e16b87e></ellipse><rect x="34" y="15" width="92" height="78" rx="9" fill="currentColor" opacity=".10" data-v-3e16b87e></rect><rect x="42" y="9" width="76" height="78" rx="7" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".2" stroke-width="1.5" data-v-3e16b87e></rect><path d="M55 27H105M55 42H105M55 57H85M55 72H76M71 27V72M89 27V57" stroke="currentColor" stroke-opacity=".4" stroke-width="1.5" stroke-linecap="round" data-v-3e16b87e></path><circle cx="112" cy="76" r="16" fill="var(--mrp-toolbar-bg, #fff)" stroke="currentColor" stroke-opacity=".35" stroke-width="2" data-v-3e16b87e></circle><path d="M124 88L137 101M106 76H118" stroke="currentColor" stroke-opacity=".45" stroke-width="3" stroke-linecap="round" data-v-3e16b87e></path><circle cx="27" cy="38" r="3" fill="currentColor" opacity=".12" data-v-3e16b87e></circle><circle cx="132" cy="24" r="2" fill="currentColor" opacity=".2" data-v-3e16b87e></circle></svg>',1)),e.createElementVNode("strong",null,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("p",Cr,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)]))}}),un=j._export_sfc(Sr,[["__scopeId","data-v-3e16b87e"]]),Nr=["aria-label"],Br=e.defineComponent({__name:"ReportDiscardDialog",props:{messages:{}},emits:["answer"],setup(t,{emit:n}){const a=n,r=e.ref(null),l=e.ref(null);let o=null;function s(i){i.key==="Escape"&&(i.preventDefault(),a("answer",!1)),i.key==="Tab"&&(i.preventDefault(),document.activeElement===r.value?l.value?.focus():r.value?.focus())}return e.onMounted(()=>{o=document.activeElement instanceof HTMLElement?document.activeElement:null,r.value?.focus()}),e.onUnmounted(()=>{o?.isConnected&&o.focus()}),(i,c)=>(e.openBlock(),e.createElementBlock("div",{class:"mrp-discard-backdrop",onKeydown:s,onClick:c[2]||(c[2]=e.withModifiers(f=>a("answer",!1),["self"]))},[e.createElementVNode("section",{class:"mrp-discard-dialog",role:"alertdialog","aria-modal":"true","aria-label":t.messages.discardTitle},[e.createElementVNode("strong",null,e.toDisplayString(t.messages.discardTitle),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.discardDescription),1),e.createElementVNode("footer",null,[e.createElementVNode("button",{ref_key:"keep",ref:r,type:"button",onClick:c[0]||(c[0]=f=>a("answer",!1))},e.toDisplayString(t.messages.discardKeep),513),e.createElementVNode("button",{ref_key:"discard",ref:l,type:"button",onClick:c[1]||(c[1]=f=>a("answer",!0))},e.toDisplayString(t.messages.discardProceed),513)])],8,Nr)],32))}}),$r=j._export_sfc(Br,[["__scopeId","data-v-f7590294"]]),Vr={key:0,class:"mrp-task-status",role:"status","aria-live":"polite"},Ir={key:0},Pr=["value","max","aria-label"],Rr=e.defineComponent({__name:"ReportTaskStatus",props:{task:{},messages:{}},emits:["cancel"],setup(t){const n=t,a=e.computed(()=>({query:n.messages.taskQuery,validate:n.messages.taskValidate,layout:n.messages.taskLayout,assets:n.messages.taskAssets,import:n.messages.importing,encode:n.messages.taskEncode,download:n.messages.taskDownload,print:n.messages.taskPrint})),r=e.computed(()=>n.task?.total===void 0?"":`${n.task.completed??0} / ${n.task.total}`);return(l,o)=>t.task&&(t.task.status==="running"||t.task.status==="cancelled")?(e.openBlock(),e.createElementBlock("div",Vr,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(t.task.status==="cancelled"?t.messages.taskCancelled:a.value[t.task.stage])+" ",1),t.task.status==="running"?(e.openBlock(),e.createElementBlock("small",Ir,e.toDisplayString(r.value),1)):e.createCommentVNode("",!0)]),t.task.status==="running"&&t.task.total!==void 0?(e.openBlock(),e.createElementBlock("progress",{key:0,value:t.task.completed??0,max:t.task.total,"aria-label":a.value[t.task.stage]},null,8,Pr)):e.createCommentVNode("",!0),t.task.status==="running"&&t.task.cancellable?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",onClick:o[0]||(o[0]=s=>l.$emit("cancel"))},e.toDisplayString(t.messages.taskCancel),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Dr=j._export_sfc(Rr,[["__scopeId","data-v-657ac599"]]),Mr={key:0,class:"mrp-diagnostics"},Tr=["aria-label","placeholder"],Or={key:0},Fr=["onClick"],Ar={key:0},zr=e.defineComponent({__name:"ReportDiagnostics",props:{entries:{},messages:{}},emits:["locate"],setup(t){const n=t,a=e.ref(""),r=e.computed(()=>({"unsupported-style":n.messages.diagnosticUnsupportedStyle,"missing-image":n.messages.diagnosticMissingImage,"unsupported-component":n.messages.diagnosticUnsupported,"unsupported-image-format":n.messages.diagnosticImageFormat,"rich-text-flattened":n.messages.diagnosticRichText,"nested-components-omitted":n.messages.diagnosticNested,"async-image-required":n.messages.diagnosticImageAsync,"image-decode-failed":n.messages.diagnosticImageDecode,"asset-render-failed":n.messages.diagnosticAssetFailed,"asset-budget-exceeded":n.messages.diagnosticAssetBudget})),l=e.computed(()=>{const i=a.value.trim().toLocaleLowerCase();return i?n.entries.filter(c=>`${c.code} ${c.message} ${r.value[c.code]??""} ${c.path??""} ${s(c)} ${c.format??""}`.toLocaleLowerCase().includes(i)):n.entries}),o=e.computed(()=>l.value.slice(0,100));function s(i){return i.pageIndex===void 0?i.path??"":(n.messages.diagnosticsLocation??"").replace("{page}",String(i.pageIndex+1)).replace("{component}",String((i.componentIndex??0)+1))}return(i,c)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",Mr,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.diagnosticsTitle)+" ",1),e.createElementVNode("span",null,e.toDisplayString(t.entries.length),1)]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c[0]||(c[0]=f=>a.value=f),type:"search","aria-label":t.messages.diagnosticsSearch,placeholder:t.messages.diagnosticsSearch},null,8,Tr),[[e.vModelText,a.value]]),e.createElementVNode("ol",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.value,(f,g)=>(e.openBlock(),e.createElementBlock("li",{key:g},[e.createElementVNode("div",null,[e.createElementVNode("b",null,e.toDisplayString(f.format?.toUpperCase()??f.severity)+" · "+e.toDisplayString(f.code),1),e.createElementVNode("p",null,e.toDisplayString(r.value[f.code]??f.message),1),r.value[f.code]?(e.openBlock(),e.createElementBlock("details",Or,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.diagnosticsDetails),1),e.createTextVNode(e.toDisplayString(f.message),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(s(f)),1)]),f.pageIndex!==void 0?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:d=>i.$emit("locate",f)},e.toDisplayString(t.messages.diagnosticsLocate),9,Fr)):e.createCommentVNode("",!0)]))),128))]),l.value.length>o.value.length?(e.openBlock(),e.createElementBlock("small",Ar,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(l.value.length))),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)}}),Lr=j._export_sfc(zr,[["__scopeId","data-v-3b7804ce"]]),qr={key:0,class:"mrp-data-explanation"},Kr={class:"mrp-data-content"},jr=["aria-label","placeholder"],Wr={class:"mrp-data-state"},Hr=["disabled","onClick"],Ur={key:0,role:"status"},Gr={key:1},Jr=e.defineComponent({__name:"ReportDataExplanation",props:{entries:{},messages:{},busy:{type:Boolean}},emits:["locate"],setup(t,{emit:n}){const a=t,r=n,l=e.ref(""),o=e.computed(()=>({"missing-source":a.messages.dataMissingSource,"not-applicable":a.messages.dataNotApplicable,"not-calculable":a.messages.dataNotCalculable})),s=e.computed(()=>{const c=l.value.toLocaleLowerCase().trim().split(/\s+/).filter(Boolean);return a.entries.filter(f=>c.every(g=>`${f.message} ${f.target?.datasetId} ${f.target?.rowKey??""} ${f.target?.field} ${o.value[f.valueState]??""}`.toLocaleLowerCase().includes(g)))}),i=e.computed(()=>s.value.slice(0,100));return(c,f)=>t.entries.length?(e.openBlock(),e.createElementBlock("details",qr,[e.createElementVNode("summary",null,[e.createVNode(j._sfc_main,{name:"file",size:14}),e.createElementVNode("span",null,e.toDisplayString(t.messages.dataExplanation),1),e.createElementVNode("b",null,e.toDisplayString(t.entries.length),1),e.createElementVNode("small",null,e.toDisplayString(t.messages.dataExplanationHint),1),e.createVNode(j._sfc_main,{name:"chevron-down",size:12})]),e.createElementVNode("div",Kr,[e.createElementVNode("label",null,[e.createVNode(j._sfc_main,{name:"search",size:15}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[0]||(f[0]=g=>l.value=g),type:"search","aria-label":t.messages.dataExplanationSearch,placeholder:t.messages.dataExplanationSearch},null,8,jr),[[e.vModelText,l.value]])]),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,(g,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("div",null,[e.createElementVNode("span",Wr,e.toDisplayString(o.value[g.valueState]),1),e.createElementVNode("code",null,[e.createTextVNode(e.toDisplayString(g.target?.datasetId)+" · "+e.toDisplayString(g.target?.field)+" ",1),g.target?.rowKey!==void 0?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createTextVNode(" · "+e.toDisplayString(g.target.rowKey),1)],64)):e.createCommentVNode("",!0)]),e.createElementVNode("p",null,e.toDisplayString(g.message),1)]),g.target?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:t.busy,onClick:p=>r("locate",g.target)},[e.createTextVNode(e.toDisplayString(t.messages.diagnosticsLocate),1),e.createVNode(j._sfc_main,{name:"arrow-right",size:13})],8,Hr)):e.createCommentVNode("",!0)]))),128))]),s.value.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",Ur,e.toDisplayString(t.messages.dataExplanationEmpty),1)),s.value.length>i.value.length?(e.openBlock(),e.createElementBlock("small",Gr,e.toDisplayString((t.messages.diagnosticsMore??"").replace("{count}",String(s.value.length))),1)):e.createCommentVNode("",!0)])])):e.createCommentVNode("",!0)}}),Yr=j._export_sfc(Jr,[["__scopeId","data-v-cb0adb4c"]]),Zr={class:"mrp-print-settings"},Xr=["value","disabled"],Qr=["value","disabled"],_r=["disabled"],el=e.defineComponent({__name:"ReportPrintSettings",props:{value:{},messages:{},busy:{type:Boolean},canTest:{type:Boolean}},emits:["change","test"],setup(t,{emit:n}){const a=t,r=n;function l(o,s){const i=s.target,c=Number(i.value);if(!i.value.trim()||!Number.isFinite(c)||Math.abs(c)>20){i.value=String(a.value[o]??0);return}r("change",{...a.value,[o]:c})}return(o,s)=>(e.openBlock(),e.createElementBlock("details",Zr,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.printCalibration),1),e.createElementVNode("p",null,e.toDisplayString(t.messages.printCalibrationHint),1),e.createElementVNode("div",null,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(t.messages.printOffsetX)+" ",1),e.createElementVNode("input",{type:"number",min:"-20",max:"20",step:".1",value:t.value.offsetXmm??0,disabled:t.busy,onChange:s[0]||(s[0]=i=>l("offsetXmm",i))},null,40,Xr)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(t.messages.printOffsetY)+" ",1),e.createElementVNode("input",{type:"number",min:"-20",max:"20",step:".1",value:t.value.offsetYmm??0,disabled:t.busy,onChange:s[1]||(s[1]=i=>l("offsetYmm",i))},null,40,Qr)])]),e.createElementVNode("button",{type:"button",disabled:t.busy||!t.canTest,onClick:s[2]||(s[2]=i=>r("test"))},e.toDisplayString(t.messages.printCalibrationTest),9,_r)]))}}),tl=j._export_sfc(el,[["__scopeId","data-v-35a0f5ec"]]);function Nn(t,n){if(![t,n].every(s=>Number.isFinite(s)&&s>=25&&s<=600))throw new RangeError("Calibration paper must be between 25 and 600 mm");const a=[],r=Math.min(10,t/5),l=Math.min(10,n/5),o=Math.min(50,t-r*2,n-l*2);a.push({kind:"rect",leftMm:r,topMm:l,widthMm:o,heightMm:o,style:{borderColor:"#255c8c",lineWidthPt:.5}});for(let s=0;s<=o;s+=5)a.push({kind:"line",leftMm:r+s,topMm:l,widthMm:0,heightMm:s%10?2:3,style:{lineColor:"#255c8c",lineWidthPt:.5}}),a.push({kind:"line",leftMm:r,topMm:l+s,widthMm:s%10?2:3,heightMm:0,style:{lineColor:"#255c8c",lineWidthPt:.5}});return a.push({kind:"text",text:`${o} x ${o} mm`,leftMm:r+4,topMm:l+o/2-2,widthMm:o-8,heightMm:4,style:{fontSize:7,align:"center",color:"#255c8c"}}),{schemaVersion:"print-calibration",pages:[{pageWidthMm:t,pageHeightMm:n,components:a}]}}const dn=new Map,Te=new Map,nl=15e3;function $t(t,n){return Object.assign(new Error(t),{cause:n})}function He(t,n){return`PDF 字体 ${JSON.stringify(t)}:${n}。请部署支持报表文字的字体文件,并将 pdfFontUrl 配置为可访问的字体 URL;西文报表可设为空串`}function nt(t){if(t?.reason instanceof Error&&t.reason.name==="AbortError")return t.reason;const n=$t("PDF 字体检查已取消",t?.reason);return n.name="AbortError",n}async function al(t,n){let a=!1;const r=setTimeout(()=>{a=!0,n.abort()},nl);try{const l=await fetch(t,{method:"HEAD",signal:n.signal});if(n.signal.aborted)throw nt(n.signal);if(l.status===405||l.status===501||l.type==="opaque")return{status:"unverified",fontUrl:t,message:`PDF 字体 ${JSON.stringify(t)} 无法通过 HEAD 检查验证;仍可尝试导出,届时会加载并校验字体`};if(!l.ok){const s=new Error(`字体请求返回 HTTP ${l.status}`);return{status:"error",fontUrl:t,message:He(t,s.message),cause:s}}const o=l.headers.get("content-type")??"";if(/text\/html|application\/xhtml\+xml/i.test(o)){const s=new Error("字体 URL 返回 HTML 页面(可能是 SPA 路由回退),不是字体文件");return{status:"error",fontUrl:t,message:He(t,s.message),cause:s}}if(/^text\//i.test(o)||/(?:\/|\+)json(?:\s*;|$)/i.test(o)){const s=new Error(`字体 URL 返回 ${o} 文本响应,不是字体文件`);return{status:"error",fontUrl:t,message:He(t,s.message),cause:s}}return{status:"available",fontUrl:t,message:"PDF 字体资源可达;文字覆盖范围将在实际导出时校验"}}catch(l){if(n.signal.aborted&&!a)throw nt(n.signal);return{status:"error",fontUrl:t,message:He(t,a?"字体检查超时,请检查网络或字体服务":"字体检查失败,请检查网络、字体服务或跨域访问配置"),cause:l}}finally{clearTimeout(r)}}function ol(t,n){if(n?.aborted)return Promise.reject(nt(n));if(!t)return Promise.resolve({status:"disabled",fontUrl:t,message:"已停用自定义 PDF 字体;内置字体用于西文,其他文字会在导出时校验"});const a=dn.get(t);if(a)return Promise.resolve(a);let r=Te.get(t);if(!r){const o=new AbortController;r={controller:o,promise:al(t,o),subscribers:0};const s=r;Te.set(t,s),s.promise=s.promise.then(i=>(!o.signal.aborted&&i.status==="available"&&dn.set(t,i),i)).finally(()=>{Te.get(t)===s&&Te.delete(t)})}const l=r;return l.subscribers++,new Promise((o,s)=>{let i=!1;const c=()=>i?!1:(i=!0,l.subscribers--,n?.removeEventListener("abort",f),!0),f=()=>{c()&&(l.subscribers===0&&(Te.get(t)===l&&Te.delete(t),l.controller.abort()),s(nt(n)))};n?.addEventListener("abort",f,{once:!0}),l.promise.then(g=>{c()&&o(g)},g=>{c()&&s(g)}),n?.aborted&&f()})}function Bn(t={fontUrl:"/simhei.ttf"}){let n=null;const a=async(r,l,o={})=>{Q.assertOutputActive(o.signal),n||(n=await import("@agile-team/mach-report/pdf")),Q.assertOutputActive(o.signal);let s=null;if(t.fontUrl)try{if(s=await Q.waitForOutput(n.loadFontWithCache(t.fontUrl,{strict:!0,signal:o.signal}),o.signal),!s?.byteLength)throw new Error("字体文件为空或加载失败")}catch(p){const E=p instanceof Error?p.message:String(p);throw $t(He(t.fontUrl,E),p)}let i;try{Q.assertOutputActive(o.signal),i=await n.renderPlanToPdf(r,{...o,...s?{customFontBytes:s}:{}})}catch(p){if(!s)throw p;const E=p instanceof Error?p.message:String(p);throw $t(`PDF 生成失败:${E}。当前字体 URL 为 ${JSON.stringify(t.fontUrl)};请确认该文件是有效字体,或重新配置 pdfFontUrl`,p)}Q.assertOutputActive(o.signal),i.diagnostics?.forEach(p=>{try{o.onDiagnostic?.(p)}catch{}});const{bytes:c,unsupportedTextCount:f,pageErrors:g,fidelityWarnings:d}=i;if(f>0)throw new Error(`PDF 中有 ${f} 行文字无法编码;请部署支持所用文字的字体并配置 pdfFontUrl`);if(g.length>0)throw new Error(`PDF 有 ${g.length} 页渲染失败:${g[0]}`);return d.length>0&&l?.(`PDF 有 ${d.length} 处版式降级:${d.slice(0,2).join(";")}`),c};return a.checkFont=r=>ol(t.fontUrl,r),a}function rl(t){const n=e.shallowRef(Object.freeze({status:"unchecked",fontUrl:""}));let a=null,r=null,l=0,o=null;function s(){if(t.injectedExporter)return t.injectedExporter;const g=t.fontUrl();return(!r||a!==g)&&(a=g,r=Bn({fontUrl:g})),r}function i(){l++,o?.abort(),o=null}async function c(){if(t.destroyed())throw new ie.MachReportError("config","报表预览已卸载");i();const g=l,d=new AbortController;o=d;const p=t.fontUrl();n.value=Object.freeze({status:"checking",fontUrl:p});try{const E=s(),b=E.checkFont?await E.checkFont(d.signal):{status:"unverified",fontUrl:"",message:"自定义 PDF 导出器未提供字体预检查;字体由宿主确认"};return!t.destroyed()&&g===l&&!d.signal.aborted&&(n.value=Object.freeze({...b})),b}catch(E){if(d.signal.aborted)throw E;const b={status:"error",fontUrl:p,message:E instanceof Error?E.message:"PDF 字体检查失败",cause:E};return!t.destroyed()&&g===l&&(n.value=Object.freeze(b)),b}finally{o===d&&(o=null)}}function f(){c().catch(()=>{})}return e.watch([t.plan,e.computed(t.fontUrl),e.computed(t.enabled)],()=>{const g=n.value.fontUrl===t.fontUrl();g&&n.value.status==="available"||(i(),(!g||n.value.status==="checking")&&(n.value=Object.freeze({status:"unchecked",fontUrl:t.fontUrl()})),!t.destroyed()&&t.plan.value?.pages.length&&t.enabled()&&f())},{immediate:!0}),{pdfFont:n,getPdfExporter:s,checkPdfFont:c,retryPdfFont:f,cancelFontCheck:i}}function ll(t){const n=e.shallowRef(null),a=e.shallowRef(!1);let r=0,l=null;function o(c){const f=l;l=null,n.value=null,a.value=!1,f?.(c)}function s(){r++,o(!1)}async function i(c){if(s(),!t.enabled()||!t.pending())return!0;const f=r,g=[...t.snapshot?.()??[]];a.value=!0;const d=Object.freeze({reason:c,reportIds:Object.freeze([...t.reportIds()]),pendingLocalChanges:!0});try{const p=t.hook(),E=await new Promise(h=>{if(l=h,!p){n.value=d;return}Promise.resolve().then(()=>p(d)).then(m=>{f===r&&o(m===!0)},m=>{if(f===r){try{t.error(m)}catch{}o(!1)}})}),b=t.snapshot?.()??[];return f===r&&E===!0&&b.length===g.length&&g.every((h,m)=>Object.is(h,b[m]))}catch(p){if(f===r){try{t.error(p)}catch{}o(!1)}return!1}}return{request:n,pending:a,check:i,settle:o,cancel:s}}let sl=0;function il(t){const n=e.shallowRef(null),a=new Set;let r=null;function l(c){n.value=Object.freeze(c);try{t(n.value)}catch{}}function o(c,f,g){const d=`mr-task-${Date.now().toString(36)}-${++sl}`;a.add(d),r=g,l({taskId:d,kind:c,stage:f,status:"running",cancellable:!0});function p(b,h,m){n.value?.taskId!==d||n.value.status!=="running"||l({...n.value,stage:b,completed:h,total:m})}function E(b="completed"){n.value?.taskId!==d||n.value.status!=="running"||(r=null,l({...n.value,status:b,cancellable:!1}))}return{taskId:d,update:p,finish:E}}function s(){if(n.value?.status!=="running")return;const c=r;r=null,l({...n.value,status:"cancelled",cancellable:!1}),c?.()}function i(c,f){n.value?.taskId!==c.taskId&&(c.status!=="running"||a.has(c.taskId))||(a.add(c.taskId),a.size>100&&a.delete(a.values().next().value),r=c.status==="running"?f:null,l({...c}))}return{state:n,start:o,cancel:s,receive:i}}function cl(t){const n=e.shallowRef(Object.freeze([])),a=new Set;let r=0;function l(){r++,n.value=Object.freeze([]),a.clear()}function o(c){const f=r,g=[];for(const d of c){const p=JSON.stringify([d.code,d.format,d.pageIndex,d.componentIndex,d.componentPath,d.path,d.message,d.valueState,d.target]);if(a.has(p))continue;a.add(p);const E=Object.freeze({...d,...d.target?{target:Object.freeze({...d.target})}:{},...d.componentPath?{componentPath:Object.freeze([...d.componentPath])}:{}});g.push(E)}g.length&&(n.value=Object.freeze([...n.value,...g]));for(const d of g){if(f!==r)break;try{t(d)}catch{}}}function s(c){o([c])}function i(c,f){const g=K.inspectOutputCapabilities(c,f);return o(g),g}return{entries:n,reset:l,add:s,addMany:o,inspect:i}}const ul={class:"mrp-edit-bar"},dl=["disabled"],ml=["disabled"],fl={class:"mrp-changes"},pl=["aria-label"],gl={key:0},vl={key:1},hl=["onClick"],yl=["title"],bl=["title"],wl=["disabled"],xl={key:0,role:"status"},kl={key:1,role:"status"},El={key:2,class:"mrp-conflicts",open:""},Cl=e.defineComponent({__name:"ReportEditBar",props:{differences:{},conflicts:{},messages:{},saving:{type:Boolean},canUndo:{type:Boolean},canRedo:{type:Boolean},busy:{type:Boolean},persisted:{type:Boolean}},emits:["undo","redo","restore","locate"],setup(t){function n(a){return a.source?`${a.source.rowKey} · ${a.source.field}`:`${a.address.pageIndex+1} / ${a.address.rowIndex+1}:${a.address.columnIndex+1}`}return(a,r)=>(e.openBlock(),e.createElementBlock("div",ul,[e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canUndo,onClick:r[0]||(r[0]=l=>a.$emit("undo"))},e.toDisplayString(t.messages.undo),9,dl),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.canRedo,onClick:r[1]||(r[1]=l=>a.$emit("redo"))},e.toDisplayString(t.messages.redo),9,ml),e.createElementVNode("details",fl,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.changes)+" · "+e.toDisplayString(t.messages.changesCount?.replace("{count}",String(t.differences.length))),1),e.createElementVNode("section",{"aria-label":t.messages.changes},[t.differences.length?(e.openBlock(),e.createElementBlock("ol",vl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.differences,(l,o)=>(e.openBlock(),e.createElementBlock("li",{key:o},[e.createElementVNode("button",{type:"button",onClick:s=>a.$emit("locate",l)},e.toDisplayString(n(l)),9,hl),e.createElementVNode("span",null,[e.createElementVNode("s",{title:t.messages.changesBefore},e.toDisplayString(l.previousText||"∅"),9,yl),r[3]||(r[3]=e.createTextVNode(" → ",-1)),e.createElementVNode("strong",{title:t.messages.changesAfter},e.toDisplayString(l.text||"∅"),9,bl)])]))),128))])):(e.openBlock(),e.createElementBlock("p",gl,e.toDisplayString(t.messages.changesEmpty),1))],8,pl)]),e.createElementVNode("button",{type:"button",disabled:t.busy||t.saving||!t.differences.length,onClick:r[2]||(r[2]=l=>a.$emit("restore"))},e.toDisplayString(t.messages.restoreChanges),9,wl),t.saving?(e.openBlock(),e.createElementBlock("span",xl,e.toDisplayString(t.messages.saving),1)):t.differences.length&&!t.conflicts.length?(e.openBlock(),e.createElementBlock("span",kl,e.toDisplayString(t.persisted?t.messages.editSaved:t.messages.editingLocal),1)):e.createCommentVNode("",!0),t.conflicts.length?(e.openBlock(),e.createElementBlock("details",El,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.conflicts)+" · "+e.toDisplayString(t.conflicts.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.conflicts,(l,o)=>(e.openBlock(),e.createElementBlock("li",{key:o},e.toDisplayString(l.message),1))),128))])])):e.createCommentVNode("",!0)]))}}),Sl=j._export_sfc(Cl,[["__scopeId","data-v-df1c7b86"]]);function Nl(t){const n=t.table?.columnKeys??[],a=n.map(()=>[]);if(!t.grid)return n;for(const{ci:r,cell:l}of Rt.resolveGridLayout(t.grid,t.widthMm,t.heightMm).cells){const o=(l.text??l.rawText??"").trim();if(o)for(let s=r;s<Math.min(n.length,r+(l.colSpan??1));s++)a[s].includes(o)||a[s].push(o)}return n.map((r,l)=>a[l].join(" / ")||r)}function Bl(t,n=[]){const a=new Set,r=[];for(const[l,o]of(t?.pages??[]).entries())for(const s of o.components){const i=s.table;if(!i||i.role!=="header"||a.has(i.id))continue;a.add(i.id);const c=Nl(s),f=n.filter(E=>E.pageIndex<=l),g=f[f.length-1]?.label,d=i.source?.datasetId,p=[...new Set([g,i.title,d].filter(Boolean))].join(" · ")||i.id;i.columnKeys.forEach((E,b)=>{E&&r.push({key:JSON.stringify([i.id,b]),field:E,label:c[b],group:p,pageIndex:l,tableId:i.id,...d?{datasetId:d}:{}})})}return r}function $l(t,n){const a=n.trim().toLocaleLowerCase().split(/\s+/).filter(Boolean);return t.filter(r=>{const l=`${r.label} ${r.field} ${r.group}`.toLocaleLowerCase();return a.every(o=>l.includes(o))})}function Vl(t){const n=Cn(),a=e.ref(""),r=e.ref(0),l=`mrp-column-list-${e.getCurrentInstance()?.uid??0}`,o=e.computed(()=>Bl(t.plan(),t.sections())),s=e.computed(()=>$l(o.value,a.value)),i=e.computed(()=>s.value.slice(0,100)),c=e.computed(()=>[...new Set(i.value.map(b=>b.group))].map(b=>({label:b,items:i.value.filter(h=>h.group===b)})));e.watch(a,()=>{r.value=0}),e.watch(t.busy,b=>{b&&n.close()}),e.watch(o,()=>{r.value=0});function f(b){t.busy()||(t.locate(b),n.close(!0))}function g(){if(t.busy())return;const b=i.value[r.value];b?f(b):a.value.trim()&&(t.locateField(a.value.trim()),n.close(!0))}function d(){a.value="",n.panel.value?.querySelector("input")?.focus()}function p(b){if(!(b.isComposing||b.keyCode===229||!["ArrowDown","ArrowUp","Enter"].includes(b.key))){if(b.preventDefault(),b.stopPropagation(),b.key==="Enter"){g();return}i.value.length&&(r.value=(r.value+(b.key==="ArrowDown"?1:-1)+i.value.length)%i.value.length,e.nextTick(()=>n.panel.value?.querySelector(`[id="${l}-${r.value}"]`)?.scrollIntoView?.({block:"nearest"})))}}function E(b){return i.value.findIndex(h=>h.key===b)}return{...n,field:a,active:r,listId:l,directory:o,matches:s,candidates:i,groups:c,choose:f,submit:g,clear:d,onSearchKeydown:p,candidateIndex:E}}const Il=["aria-label"],Pl={key:0,class:"mrp-section-tabs"},Rl=["aria-current","disabled","onClick"],Dl=["aria-expanded","disabled"],Ml={key:0,class:"mrp-column-count"},Tl=["aria-label"],Ol={class:"mrp-column-heading"},Fl=["aria-label"],Al=["aria-label","placeholder","aria-controls","aria-activedescendant","disabled"],zl=["aria-label"],Ll=["id","aria-label"],ql={key:0,class:"mrp-column-empty",role:"status"},Kl=["aria-label"],jl=["id","aria-selected","disabled","onPointermove","onClick"],Wl=["title"],Hl={class:"mrp-column-help",role:"status"},Ul=e.defineComponent({__name:"ReportNavigation",props:{sections:{},currentPage:{},messages:{},busy:{type:Boolean},plan:{},compact:{type:Boolean}},emits:["goto","locate","locate-target"],setup(t,{emit:n}){const a=t,r=n,l=Vl({plan:()=>a.plan,sections:()=>a.sections,busy:()=>a.busy,locate:P=>r("locate-target",P),locateField:P=>r("locate",P)}),{root:o,trigger:s,panel:i,opened:c,field:f,active:g,directory:d,matches:p,candidates:E,groups:b,listId:h}=l,m=e.computed(()=>d.value.length>0||!a.plan||a.plan.pages.some(P=>P.components.some(I=>I.table?.columnKeys.length))),S=e.computed(()=>({columnDirectory:"字段目录",columnSearch:"搜索列名或字段",columnNoMatches:"未找到匹配字段",columnResults:"匹配字段",...a.messages})),v=e.computed(()=>(a.messages.columnResultsMore??"{count} 个匹配字段,显示前 {limit} 个;继续输入可缩小范围").replace("{count}",String(p.value.length)).replace("{limit}",String(E.value.length)));function C(P){const I=a.sections[P];return!!I&&a.currentPage>=I.pageIndex+1&&(!a.sections[P+1]||a.currentPage<=a.sections[P+1].pageIndex)}return(P,I)=>t.sections.length>1||m.value?(e.openBlock(),e.createElementBlock("nav",{key:0,class:e.normalizeClass(["mrp-section-nav",{"mrp-compact":t.compact}]),"aria-label":t.messages.sections??"工作表与章节"},[t.sections.length>1?(e.openBlock(),e.createElementBlock("div",Pl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.sections,(T,L)=>(e.openBlock(),e.createElementBlock("button",{key:L,type:"button",class:e.normalizeClass({active:C(L)}),"aria-current":C(L)?"page":void 0,disabled:t.busy,onClick:J=>r("goto",T.pageIndex+1)},e.toDisplayString(T.label),11,Rl))),128))])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("div",{key:1,ref_key:"root",ref:o,class:"mrp-column-locator",onKeydown:I[7]||(I[7]=(...T)=>e.unref(l).onKeydown&&e.unref(l).onKeydown(...T))},[e.createElementVNode("button",{ref_key:"trigger",ref:s,type:"button",class:e.normalizeClass(["mrp-directory-trigger",{active:e.unref(c)}]),"aria-expanded":e.unref(c),"aria-haspopup":"dialog",disabled:t.busy,onClick:I[0]||(I[0]=T=>c.value=!e.unref(c))},[e.createVNode(j._sfc_main,{name:"columns"}),e.createElementVNode("span",null,e.toDisplayString(S.value.columnDirectory),1),e.unref(d).length?(e.openBlock(),e.createElementBlock("span",Ml,e.toDisplayString(e.unref(d).length),1)):e.createCommentVNode("",!0),e.createVNode(j._sfc_main,{name:"chevron-down",size:12})],10,Dl),e.unref(c)?(e.openBlock(),e.createElementBlock("div",{key:0,ref_key:"panel",ref:i,class:"mrp-column-directory",role:"dialog","aria-label":S.value.columnDirectory},[e.createElementVNode("div",Ol,[e.createElementVNode("span",null,[e.createVNode(j._sfc_main,{name:"columns"}),e.createTextVNode(e.toDisplayString(S.value.columnDirectory),1)]),e.createElementVNode("button",{type:"button",class:"mrp-column-close","aria-label":t.messages.closeColumnDirectory??"关闭字段目录",onClick:I[1]||(I[1]=T=>e.unref(l).close(!0))},[e.createVNode(j._sfc_main,{name:"close",size:15})],8,Fl)]),e.createElementVNode("form",{class:"mrp-column-search",onSubmit:I[5]||(I[5]=e.withModifiers((...T)=>e.unref(l).submit&&e.unref(l).submit(...T),["prevent"]))},[e.createVNode(j._sfc_main,{name:"search"}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":I[2]||(I[2]=T=>e.isRef(f)?f.value=T:null),type:"search",autocomplete:"off",spellcheck:"false",role:"combobox","aria-label":S.value.columnSearch,placeholder:S.value.columnSearch,"aria-autocomplete":"list","aria-expanded":"true","aria-controls":e.unref(h),"aria-activedescendant":e.unref(E).length?`${e.unref(h)}-${e.unref(g)}`:void 0,disabled:t.busy,onKeydown:I[3]||(I[3]=(...T)=>e.unref(l).onSearchKeydown&&e.unref(l).onSearchKeydown(...T))},null,40,Al),[[e.vModelText,e.unref(f)]]),e.unref(f)?(e.openBlock(),e.createElementBlock("button",{key:0,class:"mrp-column-clear",type:"button","aria-label":t.messages.clearSearch??"清除搜索",onClick:I[4]||(I[4]=(...T)=>e.unref(l).clear&&e.unref(l).clear(...T))},[e.createVNode(j._sfc_main,{name:"close",size:13})],8,zl)):e.createCommentVNode("",!0)],32),e.createElementVNode("div",{id:e.unref(h),class:"mrp-column-results",role:"listbox","aria-label":S.value.columnResults},[e.unref(E).length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",ql,[e.createVNode(j._sfc_main,{name:"search",size:22}),e.createTextVNode(e.toDisplayString(S.value.columnNoMatches),1)])),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(b),T=>(e.openBlock(),e.createElementBlock("section",{key:T.label,role:"group","aria-label":T.label},[e.createElementVNode("strong",null,e.toDisplayString(T.label),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.items,L=>(e.openBlock(),e.createElementBlock("button",{id:`${e.unref(h)}-${e.unref(l).candidateIndex(L.key)}`,key:L.key,type:"button",role:"option",tabindex:"-1",class:e.normalizeClass({"mrp-column-active":e.unref(l).candidateIndex(L.key)===e.unref(g)}),"aria-selected":e.unref(l).candidateIndex(L.key)===e.unref(g),disabled:t.busy,onPointermove:J=>g.value=e.unref(l).candidateIndex(L.key),onMousedown:I[6]||(I[6]=e.withModifiers(()=>{},["prevent"])),onClick:J=>e.unref(l).choose(L)},[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(L.label),1),e.createElementVNode("code",{title:L.field},e.toDisplayString(L.field),9,Wl)]),e.createVNode(j._sfc_main,{name:"arrow-right",size:14})],42,jl))),128))],8,Kl))),128))],8,Ll),e.createElementVNode("p",Hl,e.toDisplayString(e.unref(p).length>e.unref(E).length?v.value:t.messages.columnSearchShortcut??"↑ ↓ 选择 · Enter 定位"),1)],8,Tl)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)],10,Il)):e.createCommentVNode("",!0)}}),mn=j._export_sfc(Ul,[["__scopeId","data-v-b772ba8c"]]),Gl={class:"mrp-import-summary"},Jl={key:0},Yl={key:0},Zl=e.defineComponent({__name:"ReportImportSummary",props:{result:{},messages:{}},setup(t){return(n,a)=>(e.openBlock(),e.createElementBlock("details",Gl,[e.createElementVNode("summary",null,[e.createTextVNode(e.toDisplayString(t.messages.importSummary)+" · "+e.toDisplayString(t.messages.importPreserved?.replace("{sheets}",String(t.result.sheets.length)))+" ",1),t.result.warnings.length?(e.openBlock(),e.createElementBlock("span",Jl," · "+e.toDisplayString(t.result.warnings.length)+" "+e.toDisplayString(t.messages.importWarnings),1)):e.createCommentVNode("",!0)]),e.createElementVNode("p",null,e.toDisplayString(t.messages.importReadOnly),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.sheets,r=>(e.openBlock(),e.createElementBlock("li",{key:r.index},e.toDisplayString(r.name)+" · "+e.toDisplayString(r.range)+" · "+e.toDisplayString(r.rowCount)+" × "+e.toDisplayString(r.columnCount),1))),128))]),t.result.warnings.length?(e.openBlock(),e.createElementBlock("ul",Yl,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.result.warnings,(r,l)=>(e.openBlock(),e.createElementBlock("li",{key:l},e.toDisplayString(r),1))),128))])):e.createCommentVNode("",!0)]))}}),Xl=j._export_sfc(Zl,[["__scopeId","data-v-54f275e8"]]);function pe(t){return JSON.parse(JSON.stringify(t))}function $n(t,n){const a=n.fields;if(typeof a=="function")return a(t);const r=t.source?.field??t.table?.columnKey;return r===void 0||!a||!Object.prototype.hasOwnProperty.call(a,r)?void 0:a[r]}function ot(t,n){if(t.requiresRecalculation&&(!n||!K.getReportEditSession(t)))throw new K.ReportCellEditError("recalculation")}async function Ql(t,n,a,r){const l=n.edits.every(i=>!!i.source);ot(t,l);const o=K.getReportEditSession(t);if(o&&l)return o.prepareHistory(t,n.edits,n.value,a,{signal:r});const s=Fe(t);return n.edits.map(i=>{const c=s(i);if(!c)throw new K.ReportCellEditError("missing");return{address:c,value:i[n.value]}})}function _l(t,n,a){const r=n.edits.every(l=>!!l.source);return ot(t,r),r?K.getReportEditSession(t)?.prepare(t,n,{signal:a}):void 0}function es(t,n){const a=new Map;return t.pages.forEach((r,l)=>r.components.forEach((o,s)=>{if(o.grid)for(const i of Rt.resolveGridLayout(o.grid,o.widthMm,o.heightMm).cells){const c=n({pageIndex:l,componentIndex:s,rowIndex:i.ri,columnIndex:i.ci});if(!c?.source)continue;const f=K.reportCellEditKey(c),g=a.get(f)??[];g.push(c),a.set(f,g)}})),a}function Fe(t){const n=K.createReportCellResolver(t),a=es(t,n);function r(o){if(o.source)return a.get(K.reportCellEditKey(o))??[];const s=n(o.address);return s?!o.table||K.reportCellEditKey(s)===K.reportCellEditKey(o)?[s]:[]:[]}const l=o=>{const s=r(o),i=s.find(c=>c.table?.id===o.table?.id)??s[0];return i?{...i.address}:null};return l.all=o=>r(o).map(s=>({...s.address})),l}class ts extends Error{constructor(n){super(n.map(a=>a.message).join(";")),this.conflicts=n,this.name="ReportEditConflictError"}}function ns(){return globalThis.crypto?.randomUUID?.()??`mr-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`}function as(t,n,a,r){return Array.isArray(n)?{batch:K.createReportCellEditBatch(t,n,a)}:Ql(t,n,a,r).then(l=>Array.isArray(l)?{batch:K.createReportCellEditBatch(t,l,a)}:l)}function os(t){const n=e.shallowRef([]),a=e.shallowRef([]),r=e.shallowRef([]),l=e.shallowRef([]),o=e.shallowRef(!1),s=e.shallowRef(null),i=e.shallowRef([]),c=e.computed(()=>i.value.length>0),f=e.computed(()=>{const y=K.summarizeReportCellEdits(n.value),N=t.plan.value;if(!N||!y.length)return y;const V=Fe(N);return y.map(D=>{const q=V(D);return q?{...D,address:q}:D})}),g=e.computed(()=>!!t.options.value&&!o.value&&!t.blocked()&&a.value.length>0),d=e.computed(()=>!!t.options.value&&!o.value&&!t.blocked()&&r.value.length>0);let p=null,E=null,b=0,h=null;function m(){p?.abort(),p=null,o.value=!1,E=null}function S(){b++,m(),h=null,n.value=[],a.value=[],r.value=[],l.value=[],i.value=[],s.value=null}function v(){const y=t.options.value;return y?typeof y=="object"?y:{}:null}function C(y,N,V,D){if(!t.options.value||t.blocked())throw new K.ReportCellEditError("readonly");ot(y,N.edits.every(U=>!!U.source));const q=K.createReportCellResolver(y),A=new Map(D?.map(U=>[K.reportCellEditKey(U),U]));for(const U of N.edits){const W=D?A.get(K.reportCellEditKey(U)):q(U.address);if(!W?.editable||V.canEdit?.(W)===!1)throw new K.ReportCellEditError("readonly");if(V.requireSource&&!W.source)throw new K.ReportCellEditError("missing");const X=$n(W,V);X&&K.parseReportCellFieldInput(W,U.value,X)}}async function P(y,N,V){if(N.saveBatch)return N.saveBatch(pe(y),V);if(N.save&&y.edits.length>1)throw new K.ReportCellEditError("atomic");if(y.edits[0])return N.save?.(pe(y.edits[0]),V)}async function I(y,N,V){for(const D of y.edits){const q=await N.validate?.(pe(D),V);if(q)throw new Error(q);if(V.signal.aborted)return}}function T(y,N,V,D,q,A){if(t.plan.value=A?A.commit(V):K.applyReportEditResult(K.applyReportCellEditBatch(y,N),N,V),n.value=[...n.value,...N.edits],q){const W=new Set(N.edits.map(K.reportCellEditKey));i.value=i.value.filter(X=>!W.has(K.reportCellEditKey(X)))}else i.value=K.summarizeReportCellEdits([...i.value,...N.edits]);D==="edit"&&(a.value=[...a.value,N.edits],r.value=[]),l.value=[],h=null;const U=b;for(const W of N.edits){if(b!==U)break;t.onChange(pe(W))}}function L(y,N,V){const D=JSON.stringify([V,N.edits]);h?.plan===y&&h.signature===D?N.requestId=h.requestId:h={plan:y,signature:D,requestId:N.requestId}}function J(y){s.value=t.errorMessage?.(y)??(y instanceof Error?y.message:"Cell edit failed"),t.onError(s.value,y)}async function H(y,N){const V=t.plan.value,D=v();if(!V||!D||t.blocked())return!1;const q=new AbortController,A=b;p=q,o.value=!0,s.value=null;const U=()=>p===q&&!q.signal.aborted&&t.plan.value===V&&t.options.value!==!1;try{const W=as(V,y,ns(),q.signal),X=W instanceof Promise?await W:W;if(!U())return!1;const{batch:M,contexts:ce}=X;if(C(V,M,D,ce),M.edits=M.edits.filter(w=>!Object.is(w.previousValue,w.value)),!M.edits.length)return!0;L(V,M,N),C(V,M,D,ce);const Ce={signal:q.signal,requestId:M.requestId,action:N};if(await I(M,D,Ce),!U())return!1;C(V,M,D,ce);const be=X.prepared?void 0:_l(V,M,q.signal);if(be&&(X.prepared=await be),!U())return!1;C(V,M,D,ce);const Ne=await P(M,D,Ce);if(!U())return!1;if(Ne?.conflicts?.length)throw l.value=pe(Ne.conflicts),new ts(Ne.conflicts);return C(V,M,D,ce),T(V,M,Ne,N,!!(D.save||D.saveBatch),X.prepared),A===b}catch(W){return U()&&J(W),!1}finally{p===q&&(p=null,o.value=!1)}}async function Z(y,N="edit"){if(E)return E;const V=H(y,N);E=V;const D=await V;return E===V&&(E=null),D}async function ae(){const y=b,N=a.value[a.value.length-1];return!N||o.value||!await Z({edits:N,value:"previousValue"},"undo")||y!==b?!1:(a.value=a.value.slice(0,-1),r.value=[...r.value,N],!0)}async function ge(){const y=b,N=r.value[r.value.length-1];return!N||o.value||!await Z({edits:N,value:"value"},"redo")||y!==b?!1:(r.value=r.value.slice(0,-1),a.value=[...a.value,N],!0)}async function re(){const y=b;return!f.value.length||o.value||!await Z({edits:f.value,value:"previousValue"},"restore")||y!==b?!1:(a.value=[],r.value=[],!0)}function x(){if(!E)return!o.value;const y=b;return E.then(N=>N&&y===b&&!o.value)}function $(y){return t.plan.value?Fe(t.plan.value)(y):null}return{settle:x,resolveAddress:$,changes:n,differences:f,localDifferences:i,hasLocalDrafts:c,lastError:s,conflicts:l,saving:o,canUndo:g,canRedo:d,apply:Z,undo:ae,redo:ge,restore:re,cancel:m,reset:S}}let rs=0;const ls="position:absolute;inset:0;width:100%;height:100%;min-height:20px;box-sizing:border-box;z-index:10;resize:none;margin:0;padding:2px 4px;border:2px solid var(--mrp-btn-active-bg,#2563eb);outline:none;background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font:inherit;line-height:1.25;white-space:pre-wrap;";function ss(t){return t.type==="boolean"?[{value:!0,label:t.trueLabel??"是"},{value:!1,label:t.falseLabel??"否"}]:t.type==="enum"?t.options.map(n=>({value:n.value,label:n.label??String(n.value)})):[]}function is(t,n,a){const r=t.createElement("select"),l=[{value:null,label:"—"},...ss(n)];if(l.forEach((o,s)=>{const i=t.createElement("option");i.value=String(s),i.textContent=o.label,(Object.is(a.value,o.value)||a.value===""&&o.value===null)&&(i.selected=!0),r.append(i)}),!l.some(o=>Object.is(a.value,o.value)||a.value===""&&o.value===null)){const o=t.createElement("option");o.value="unknown",o.textContent=a.cell.text??String(a.value),o.selected=!0,r.append(o)}return{input:r,value:()=>r.value==="unknown"?a.value:l[Number(r.value)]?.value??null}}function cs(t,n,a){const r=n?.type==="number"||n?.type==="date"?t.createElement("input"):t.createElement("textarea");return r.value=a.value==null?"":String(a.value),r instanceof HTMLInputElement&&(r.type=n?.type==="date"?"date":"text",n?.type==="number"&&(r.inputMode="decimal"),n?.type==="date"&&(n.min&&(r.min=n.min),n.max&&(r.max=n.max))),{input:r,value:()=>n?.type==="date"&&r instanceof HTMLInputElement&&r.validity.badInput?"invalid-date":r.value}}function us(t){if(!t)return"";const n=[t.hint,t.unit];return(t.type==="number"||t.type==="date")&&(t.min!==void 0&&n.push(`≥ ${t.min}`),t.max!==void 0&&n.push(`≤ ${t.max}`)),t.type==="number"&&t.precision!==void 0&&n.push(`最多 ${t.precision} 位小数`),t.type==="text"&&t.maxLength!==void 0&&n.push(`最多 ${t.maxLength} 字符`),n.filter(Boolean).join(" · ")}function ds(t,n,a,r){const l=t.ownerDocument,o=r?.type==="boolean"||r?.type==="enum"?is(l,r,a):cs(l,r,a),s=o.input,i=l.createElement("span");i.className="mrp-cell-editor-host",i.style.cssText="position:absolute;inset:0;z-index:10;",s.className="mrp-cell-editor",s.style.cssText=ls,s.setAttribute("aria-label",r?.label??n),r?.required&&s.setAttribute("aria-required","true");const c=l.createElement("span");c.id=`mrp-cell-hint-${++rs}`,c.className="mrp-cell-editor-hint",c.style.cssText="position:absolute;top:100%;left:0;min-width:100%;width:max-content;max-width:320px;box-sizing:border-box;padding:4px 8px;white-space:normal;border:1px solid var(--mrp-toolbar-border,#ddd);background:var(--mrp-toolbar-bg,#fff);color:var(--mrp-toolbar-fg,#111);font-size:12px;line-height:1.4;box-shadow:0 3px 10px #0002;z-index:11;";const f=us(r);return c.textContent=f,c.hidden=!f,s.setAttribute("aria-describedby",c.id),i.append(s,c),t.append(i),{input:s,root:i,initialInput:s.value,value:o.value,focus:()=>{s.focus(),(s instanceof HTMLTextAreaElement||s instanceof HTMLInputElement&&s.type!=="date")&&s.select()},feedback:g=>{c.textContent=g??f,c.hidden=!c.textContent,s.setAttribute("aria-invalid",g?"true":"false")}}}function Vt(t){const n=t.closest(".mrp-page-holder"),a=t.closest("[data-mr-component-index]");if(!n||!a)return null;const r={pageIndex:Number(n.dataset.page)-1,componentIndex:Number(a.dataset.mrComponentIndex),rowIndex:Number(t.dataset.mrRowIndex),columnIndex:Number(t.dataset.mrColumnIndex)};return Object.values(r).every(l=>Number.isInteger(l)&&l>=0)?r:null}function ms(t){const n=e.shallowRef(null),a=os(t),{saving:r,changes:l}=a,o=e.shallowRef(!1),s=e.computed(()=>o.value||a.hasLocalDrafts.value);let i=null;function c(){const v=n.value;n.value=null,o.value=!1,a.cancel(),i=null,v?.editor.root.remove()}function f(){c(),a.reset()}function g(v){return n.value===v&&t.plan.value===v.plan}async function d(v){return await a.apply([{address:v.address,value:v.editor.value()}])?(n.value=null,o.value=!1,v.editor.root.remove(),!0):(n.value===v&&(v.editor.input.disabled=!1,v.editor.feedback(a.lastError.value??void 0),v.editor.input.focus()),!1)}async function p(){if(i)return i;const v=n.value;if(!v)return a.settle();if(!g(v))return c(),!1;o.value=v.editor.input.value!==v.editor.initialInput,v.editor.input.disabled=!0;const C=d(v);i=C;const P=await C;return i===C&&(i=null),P}function E(){return n.value||i?p():a.settle()}function b(v){if(v.stopPropagation(),!v.isComposing&&(v.key==="Escape"&&(v.preventDefault(),c()),v.key==="Enter"&&!v.shiftKey||v.key==="Tab")){v.preventDefault();const C=n.value,P=C&&K.getReportCellContext(C.plan,C.address),I=C&&P?K.createReportCellEditBatch(C.plan,[{address:C.address,value:P.value}],"navigation").edits[0]:void 0;p().then(T=>{if(!T||!C||!t.plan.value)return;const L=t.plan.value===C.plan?C.address:I&&Fe(t.plan.value)(I);L&&t.onNavigate?.(L,v.key,v.shiftKey)})}}function h(v){t.onError(t.errorMessage?.(v)??(v instanceof Error?v.message:"无法编辑单元格"),v)}async function m(v){if(!t.options.value||t.blocked()||!await p()||!v.isConnected)return;const C=t.plan.value,P=Vt(v);if(!C||!P||!t.options.value||t.blocked())return;const I=typeof t.options.value=="object"?t.options.value:{};try{const T=K.getReportCellContext(C,P);if(!T?.editable||I.canEdit?.(T)===!1)return;if(ot(C,!!T.source),I.requireSource&&!T.source)throw new K.ReportCellEditError("missing");const L=$n(T,I);L&&K.validateReportCellFieldDefinition(T,L);const J=ds(v,t.label(),T,L),H=J.input;n.value={plan:C,address:P,editor:J},o.value=!1,H.addEventListener("keydown",Z=>b(Z)),H.addEventListener("input",()=>{o.value=H.value!==J.initialInput,J.feedback()}),H.addEventListener("change",()=>{o.value=H.value!==J.initialInput}),H.addEventListener("blur",()=>{!r.value&&!t.suspendBlur?.()&&p()}),J.focus()}catch(T){h(T)}}async function S(v){const C=v.target;if(!(C instanceof Element)||C.closest(".mrp-cell-editor"))return;const P=C.closest("td[data-mr-row-index]");P&&await m(P)}return e.watch(t.options,(v,C)=>{(!v||v!==C)&&c()},{flush:"sync"}),e.watch(t.plan,()=>{n.value&&t.plan.value!==n.value.plan&&(n.value.editor.root.remove(),n.value=null,o.value=!1)},{flush:"sync"}),e.onScopeDispose(f),{...a,active:n,saving:r,changes:l,pendingLocalChanges:s,cancel:c,reset:f,commit:p,settle:E,onDoubleClick:S,editCell:m,getChanges:()=>pe(l.value)}}const at=["html","pdf","xlsx","png","word"],It=["search","thumbnails","zoom",...at,"print","pdfWindow","editing","import"];function fs(t){return{load:n=>JSON.parse(t.getItem(n)??"null"),save:(n,a)=>t.setItem(n,JSON.stringify(a)),remove:n=>t.removeItem(n)}}function ps(t,n,a,r){const l=e.ref({});let o=0,s=0,i=Promise.resolve();const c=e.computed(()=>Object.fromEntries(It.map(p=>[p,t.value[p]&&(l.value[p]??n.value[p]??!0)])));function f(p,E){t.value[p]&&(s++,l.value={...l.value,[p]:E},g())}function g(){const p=a?.value;if(!p)return;const E={...l.value};i=i.then(()=>p.adapter.save(p.key,E)).catch(b=>{r?.(b)})}function d(){s++,l.value={},g()}return a&&e.watch(a,async p=>{const E=++o,b=s;if(l.value={},!!p)try{const h=await p.adapter.load(p.key);if(E!==o||b!==s||!h||typeof h!="object")return;l.value=Object.fromEntries(It.flatMap(m=>typeof h[m]=="boolean"?[[m,h[m]]]:[]))}catch(h){E===o&&r?.(h)}},{immediate:!0}),e.onScopeDispose(()=>{o++}),{enabled:c,setEnabled:f,reset:d}}function gs(t,n,a){const r=e.ref({}),l=ie.useMachReportConfig(),o=e.computed(()=>ie.resolveConfig(l.value,t.preset)),s=e.computed(()=>({...o.value.messages,...t.messages})),i=e.computed(()=>t.showExport??o.value.showExport),c=e.computed(()=>t.showPrint??o.value.showPrint),f=e.computed(()=>t.showPdfWindow??o.value.showPdfWindow),g=e.computed(()=>t.showSettings??o.value.showSettings),d=e.computed(()=>t.guardChanges??o.value.guardChanges),p=e.computed(()=>({...o.value.output,...t.output})),E=e.computed(()=>({...o.value.toolbar,...t.toolbar})),b=e.computed(()=>({...o.value.interaction,...t.interaction,...r.value})),h=e.computed(()=>t.preferences??o.value.preferences),m=e.computed(()=>t.assets??o.value.assets),S=e.computed(()=>t.gapPx??(n.value?0:o.value.gapPx)),v=e.computed(()=>t.showParams??o.value.showParams),C=e.computed(()=>t.editable??o.value.editable),P=e.computed(()=>t.excelImport??o.value.excelImport),I=e.computed(()=>({search:E.value.search!==!1,thumbnails:E.value.thumbnails!==!1,zoom:E.value.zoom!==!1,...Object.fromEntries(at.map(re=>[re,i.value&&(E.value.exportFormats?.includes(re)??!0)])),print:c.value,pdfWindow:f.value,editing:!!C.value,import:!!P.value})),T=ps(I,e.computed(()=>({editing:E.value.editing,import:E.value.excelImport})),h,()=>a(s.value.preferencesError??"Preferences storage unavailable")),L=T.enabled,J=e.computed(()=>at.filter(re=>L.value[re])),H=e.computed(()=>L.value.editing?C.value:!1),Z=e.computed(()=>L.value.import?P.value:!1),ae=e.computed(()=>typeof C.value=="object"&&(typeof C.value.save=="function"||typeof C.value.saveBatch=="function")),ge=e.computed(()=>typeof t.emptyState=="object"?t.emptyState:{});return{resolved:o,resolvedMessages:s,effectiveShowExport:i,effectiveShowPrint:c,effectiveShowPdfWindow:f,effectiveShowSettings:g,effectiveGuardChanges:d,effectiveOutput:p,effectiveInteraction:b,effectiveAssets:m,effectiveGapPx:S,effectiveShowParams:v,availableTools:I,tools:T,toolState:L,visibleExportFormats:J,effectiveEditable:H,effectiveExcelImport:Z,persistedEditing:ae,emptyStateContent:ge,sessionInteraction:r}}function vs(t,n,a,r){const l=r??(t.indexOf(n)===t.lastIndexOf(n)?t.indexOf(n):-1),o=l>=0&&t[l]===n?l:-1,s=JSON.stringify([o,n]);return a.map(i=>({...i,...i.target?{target:{...i.target,reportScope:s,...i.target.tableId?{tableId:JSON.stringify([o,n,i.target.tableId])}:{}}}:{}}))}function Vn(t){return t.table.role==="header"?-Math.max(1,t.grid?.cells.length??1):t.table.rowIndex}function Ee(t,n,a=n){const r=t.pages[n.pageIndex]?.components[n.componentIndex],l=r?.table,o=t.pages[a.pageIndex]?.components[a.componentIndex]?.table;return l&&o&&l.id===o.id?{grid:l.id,row:Vn(r)+n.rowIndex,column:o.columnKeys.indexOf(l.columnKeys[n.columnIndex]??"")}:{grid:`${n.pageIndex}:${n.componentIndex}`,row:n.rowIndex,column:n.columnIndex}}function fn(t,n){const a=t.pages[n.pageIndex]?.components[n.componentIndex]?.table;if(!a)return(l,o)=>({...n,rowIndex:l,columnIndex:o});const r=new Map;return t.pages.forEach((l,o)=>l.components.forEach((s,i)=>{s.table?.id!==a.id||!s.grid||s.grid.cells.forEach((c,f)=>{const g=Vn(s)+f;r.set(g,[...r.get(g)??[],{address:{pageIndex:o,componentIndex:i,rowIndex:f,columnIndex:0},keys:s.table.columnKeys}])})})),(l,o)=>{const s=a.columnKeys[o];if(s===void 0)return null;const i=r.get(l)?.find(c=>c.keys.includes(s));return i?{...i.address,columnIndex:i.keys.indexOf(s)}:null}}function hs(t,n){const a=[...t.ownerDocument.querySelectorAll("a[href],button,input,textarea,select,[tabindex]:not([tabindex='-1'])")].filter(o=>o.tabIndex>=0&&!o.matches(":disabled,[hidden],input[type='hidden']")&&!o.closest("[inert],[aria-hidden='true']")&&o.getClientRects().length>0).map((o,s)=>({element:o,order:s})).sort((o,s)=>(o.element.tabIndex||1/0)-(s.element.tabIndex||1/0)||o.order-s.order),r=a.findIndex(({element:o})=>o===t);if(r<0)return!1;const l=a[r+(n?-1:1)]?.element;return l?(l.focus(),t.ownerDocument.activeElement===l):!1}function ys(t,n){const a=t?.source;return!bs(t,n.field)||n.tableId!==void 0&&t?.table?.id!==n.tableId||n.datasetId!==void 0&&(a?.datasetId??t?.component.table?.source?.datasetId)!==n.datasetId?!1:n.rowKey===void 0||a?.rowKey===n.rowKey}function bs(t,n){if((t?.source?.field??t?.table?.columnKey)===n)return!0;if(!t||t.table?.role!=="header")return!1;const a=t.address.columnIndex;return t.component.table?.columnKeys.slice(a,a+(t.cell.colSpan??1)).includes(n)??!1}function ws(t,n){return t.pageIndex===n.pageIndex&&t.componentIndex===n.componentIndex}function xs(t,n){return ws(t,n)&&t.rowIndex===n.rowIndex&&t.columnIndex===n.columnIndex}function Et(t){return`[data-page="${t.pageIndex+1}"] [data-mr-component-index="${t.componentIndex}"] td[data-mr-row-index="${t.rowIndex}"][data-mr-column-index="${t.columnIndex}"]`}function Pt(t){return`${t.pageIndex}:${t.componentIndex}:${t.rowIndex}:${t.columnIndex}`}function ks(t,n){const a=Ee(t,n.anchor),r=Ee(t,n.focus,n.anchor);return{grid:a.grid,minRow:Math.min(a.row,r.row),maxRow:Math.max(a.row,r.row),minColumn:Math.min(a.column,r.column),maxColumn:Math.max(a.column,r.column),focusKey:Pt(n.focus),origin:t.pages[n.anchor.pageIndex]?.components[n.anchor.componentIndex]?.table}}function Es(t,n,a){const r=n?.table;if(!r||!a.origin||r.id!==a.origin.id)return{grid:`${t.pageIndex}:${t.componentIndex}`,rowOffset:0,missingColumn:-1};const l=new Map;return a.origin.columnKeys.forEach((o,s)=>{l.has(o)||l.set(o,s)}),{grid:r.id,rowOffset:r.role==="header"?-Math.max(1,n.grid?.cells.length??1):r.rowIndex,columns:r.columnKeys.map(o=>l.get(o)??-1),missingColumn:l.get("")??-1}}function Cs(t,n,a){if(!a||!n||n.grid!==a.grid)return!1;const r=n.rowOffset+t.row,l=n.columns?n.columns[t.column]??n.missingColumn:t.column;return r>=a.minRow&&r<=a.maxRow&&l>=a.minColumn&&l<=a.maxColumn}function _e(t,n,a){t.getAttribute(n)!==a&&t.setAttribute(n,a)}function Ct(t,n,a){t.classList.contains(n)!==a&&t.classList.toggle(n,a)}function Ss(t,n,a,r,l,o){n.role!==a&&(_e(t,"role",a),n.role=a),n.selected!==r&&(Ct(t,"mrp-cell-selected",r),_e(t,"aria-selected",String(r)),n.selected=r),n.focused!==l&&(Ct(t,"mrp-cell-focus",l),_e(t,"tabindex",l?"0":"-1"),n.focused=l),n.modified!==o&&(Ct(t,"mrp-cell-modified",o),n.modified=o)}function Ns(t){const n=()=>t.editable?.()??t.enabled(),a=e.shallowRef(null),r=new WeakMap,l=new WeakMap;let o=null,s=null,i=new Set;function c(x,$){const y=K.getReportCellContext(x,$);return!y||x.requiresRecalculation&&!y.source?null:{address:y.address,source:y.source,table:y.table,value:y.value,previousValue:y.value,text:y.cell.text??"",previousText:y.cell.text??""}}e.watch(t.plan,(x,$)=>{const y=a.value;if(!y)return;if(!x||!$){a.value=null;return}const N=c($,y.anchor),V=c($,y.focus),D=Fe(x),q=N&&D(N),A=V&&D(V);a.value=q&&A?{anchor:q,focus:A}:null},{flush:"sync"});function f(x=t.root.value??void 0){if(!x)return;const $=a.value,y=t.plan.value,N=t.differences();if(N!==o||y!==s){o=N,s=y;const D=y&&N.length?Fe(y):null;i=new Set(N.flatMap(q=>D?D.all(q).map(Pt):[]))}const V=$&&y?ks(y,$):null;x instanceof HTMLTableElement&&p(x,y,V);for(const D of x.querySelectorAll("table"))p(D,y,V)}function g(x){const $=r.get(x);if($)return $;const y=x.closest("[data-mr-component-index]"),N=y?.closest(".mrp-page-holder"),V={pageIndex:Number(N?.dataset.page)-1,componentIndex:Number(y?.dataset.mrComponentIndex)};return Object.values(V).every(D=>Number.isInteger(D)&&D>=0)?(r.set(x,V),V):null}function d(x,$){const y=l.get(x);if(y)return y;const N=Number(x.dataset.mrRowIndex),V=Number(x.dataset.mrColumnIndex);if(![N,V].every(q=>Number.isInteger(q)&&q>=0))return null;const D={row:N,column:V,key:Pt({...$,rowIndex:N,columnIndex:V})};return l.set(x,D),D}function p(x,$,y){const N=g(x);if(!N)return;const V=$?.pages[N.pageIndex]?.components[N.componentIndex],D=V?.table?.role==="header"?"columnheader":"gridcell",q=y?Es(N,V,y):null;_e(x,"role","grid");for(const A of x.rows)for(const U of A.cells){const W=d(U,N);W&&Ss(U,W,D,Cs(W,q,y),y?.focusKey===W.key,i.size>0&&i.has(W.key))}}async function E(x,$=!1){if(!t.plan.value||!K.getReportCellContext(t.plan.value,x))return!1;const y=a.value,N=$&&y&&Ee(t.plan.value,y.anchor).grid===Ee(t.plan.value,x,y.anchor).grid;a.value={anchor:N?y.anchor:{...x},focus:{...x}},t.root.value?.querySelector(Et(x))||t.gotoPage(x.pageIndex+1),await e.nextTick(),f();const V=t.root.value?.querySelector(Et(x));return V?.focus({preventScroll:!0}),V?.scrollIntoView?.({block:"nearest",inline:"nearest"}),!!V}function b(x){const $=x.target;if(!($ instanceof Element)||$.closest("textarea,input,button,select"))return;const y=$.closest("td[data-mr-row-index]"),N=y&&Vt(y);if(!N||t.busy()||!t.plan.value||!K.getReportCellContext(t.plan.value,N))return;const V=a.value,D=x.shiftKey&&V&&Ee(t.plan.value,V.anchor).grid===Ee(t.plan.value,N,V.anchor).grid;a.value={anchor:D?V.anchor:{...N},focus:{...N}},f(),y.focus({preventScroll:!0})}function h(x){const $=t.plan.value?.pages[x.pageIndex]?.components[x.componentIndex];return $?.grid?Rt.resolveGridLayout($.grid,$.widthMm,$.heightMm).cells.map(y=>({...x,rowIndex:y.ri,columnIndex:y.ci})):[]}function m(x,$,y){const N=h(x),V=y?-1:1;if($==="Tab")return N[N.findIndex(A=>xs(A,x))+V];const D=$==="ArrowUp"||$==="ArrowDown"||$==="Enter",q=$==="ArrowUp"||$==="ArrowLeft"?-1:V;return N.filter(A=>D?A.columnIndex===x.columnIndex&&(A.rowIndex-x.rowIndex)*q>0:A.rowIndex===x.rowIndex&&(A.columnIndex-x.columnIndex)*q>0).sort((A,U)=>D?(A.rowIndex-U.rowIndex)*q:(A.columnIndex-U.columnIndex)*q)[0]}function S(x,$,y){if($==="ArrowLeft"||$==="ArrowRight")return;const N=t.plan.value;if(!N.pages[x.pageIndex]?.components[x.componentIndex]?.table)return;const D=$==="ArrowUp"||y?-1:1;for(let q=x.pageIndex;q>=0&&q<N.pages.length;q+=D){const A=N.pages[q].components,U=q===x.pageIndex?x.componentIndex+D:D===1?0:A.length-1;for(let W=U;W>=0&&W<A.length;W+=D){const X=v(x,{...x,pageIndex:q,componentIndex:W},$,D);if(X)return X}}}function v(x,$,y,N){const V=t.plan.value,D=V.pages[x.pageIndex].components[x.componentIndex].table,q=V.pages[$.pageIndex].components[$.componentIndex]?.table;if(q?.id!==D.id||q.role==="header"&&D.role!=="header"&&(N>0||D.rowIndex+x.rowIndex>0))return;const A=h($),U=y==="Tab"?A:A.filter(W=>W.columnIndex===x.columnIndex);return N===1?U[0]:U[U.length-1]}function C(x,$,y=!1,N=!1,V=!1){const D=m(x,$,y)??S(x,$,y);return D?(E(D,N),!0):(($!=="Tab"||!V)&&E(x),!1)}function P(x){const $=a.value;if(t.busy()||x.target instanceof Element&&x.target.closest("textarea,input,select,button,a[href],[contenteditable]"))return!1;if(!$)return L(x);const y=x.key;if(I(x)||T(x,$.focus))return!0;if(!["ArrowUp","ArrowDown","ArrowLeft","ArrowRight","Tab","Enter"].includes(y))return!1;const N=C($.focus,y,y==="Tab"&&x.shiftKey,x.shiftKey&&y!=="Tab",!0);if(y==="Tab"&&!N){const V=t.root.value?.ownerDocument.activeElement;if(!(V instanceof HTMLElement)||!hs(V,x.shiftKey))return!1}return x.preventDefault(),!0}function I(x){if(!n()||!(x.ctrlKey||x.metaKey))return!1;const $=x.key.toLowerCase();return $!=="z"&&$!=="y"?!1:(x.preventDefault(),$==="y"||x.shiftKey?t.redo():t.undo(),!0)}function T(x,$){if(!n()||!t.plan.value||x.key!=="F2"&&!(x.key==="Enter"&&K.getReportCellContext(t.plan.value,$)?.editable))return!1;const y=t.root.value?.querySelector(Et($));return y&&(x.preventDefault(),t.edit(y)),!0}function L(x){if(!["ArrowDown","ArrowRight","ArrowUp","ArrowLeft","Enter"].includes(x.key))return!1;const $=t.root.value?.querySelector("td[data-mr-row-index]"),y=$&&Vt($);return y?(x.preventDefault(),E(y),!0):!1}function J(){const x=a.value,$=t.plan.value;if(!x||!$)return"";const y=[],N=Ee($,x.anchor),V=Ee($,x.focus,x.anchor),D=fn($,x.anchor),q=K.createReportCellResolver($),A=Math.min(N.column,V.column),U=Math.max(N.column,V.column);if((Math.abs(N.row-V.row)+1)*(U-A+1)>1e4)return t.error(new K.ReportCellEditError("limit")),"";for(let W=Math.min(N.row,V.row);W<=Math.max(N.row,V.row);W++){const X=[];for(let M=A;M<=U;M++){const ce=D(W,M);X.push(ce?q(ce)?.cell.text??"":"")}y.push(X)}return K.formatReportClipboard(y)}function H(x){!a.value||x.target instanceof Element&&x.target.closest("textarea,input,select")||(x.clipboardData?.setData("text/plain",J()),x.preventDefault())}async function Z(x){const $=a.value;if(!$||!n()||t.busy())return!1;try{let y;try{y=K.parseReportClipboard(x)}catch(U){throw new K.ReportCellEditError(U instanceof Error&&U.message.includes("limit")?"limit":"clipboard")}const N=t.plan.value,V=Ee(N,$.anchor),D=Ee(N,$.focus,$.anchor),q=fn(N,$.anchor),A=y.flatMap((U,W)=>U.map((X,M)=>{const ce=q(Math.min(V.row,D.row)+W,Math.min(V.column,D.column)+M);if(!ce)throw new K.ReportCellEditError("missing");return{address:ce,value:X}}));return await t.apply(A)}catch(y){return t.error(y),!1}}function ae(x){if(!a.value||!n()||x.target instanceof Element&&x.target.closest("textarea,input,select,button,a[href],[contenteditable]")||!x.clipboardData?.types.includes("text/plain"))return;const $=x.clipboardData?.getData("text/plain");$&&(x.preventDefault(),Z($))}async function ge(x){const $=t.plan.value;if(!$)return!1;const y=K.createReportCellResolver($);for(let N=0;N<$.pages.length;N++){const V=$.pages[N];if(!(x.reportScope!==void 0&&V.meta?.reportScope!==x.reportScope))for(let D=0;D<V.components.length;D++)for(const q of h({pageIndex:N,componentIndex:D,rowIndex:0,columnIndex:0})){const A=y(q);if(ys(A,x))return E(q)}}return!1}function re(){a.value=null,f()}return{selection:a,refresh:f,reset:re,focusCell:E,focusField:ge,navigate:C,onClick:b,onKeydown:P,onCopy:H,onPaste:ae,copySelection:J,pasteSelection:Z}}function Bs(t){let n=0,a=!1;function r(){const o=t.viewport.value,s=t.root.value,i=t.plan.value;if(!o||!s||!i)return;const c=t.options(),f=Math.max(0,Math.min(20,Math.floor(c.frozenColumns??0)));if(!c.freezeHeaders&&f===0&&!a)return;const g=t.zoom.value||1,d=o.getBoundingClientRect();s.querySelectorAll("[data-mr-component-index]").forEach(p=>{const E=p.closest("[data-page]"),b=Number(E?.dataset.page)-1,h=i.pages[b]?.components[Number(p.dataset.mrComponentIndex)];if(!h?.grid||!E)return;p.style.transform="",p.style.zIndex="";const m=p.getBoundingClientRect(),S=E.getBoundingClientRect().bottom,v=Math.max(0,(d.left-m.left)/g),C=c.freezeHeaders?Math.max(0,Math.min((d.top-m.top)/g,(S-m.bottom)/g)):0;v>0&&f>0&&(p.style.zIndex="1"),h.table?.role==="header"&&C>0&&(p.style.transform=`translateY(${C}px)`,p.style.zIndex="5"),p.querySelectorAll(".mrp-cell-frozen").forEach(I=>{I.style.transform="",I.style.zIndex="",I.classList.remove("mrp-cell-frozen")});const P=Array.from({length:f},(I,T)=>`td[data-mr-column-index="${T}"]`);!h.table&&c.freezeHeaders&&P.push('td[data-mr-row-index="0"]'),P.length&&p.querySelectorAll(P.join(",")).forEach(I=>{const T=Number(I.dataset.mrColumnIndex)<f,L=!h.table&&Number(I.dataset.mrRowIndex)===0&&!!c.freezeHeaders,J=T?v:0,H=L?C:0;I.style.transform=J||H?`translate(${J}px, ${H}px)`:"",I.classList.toggle("mrp-cell-frozen",!!(J||H)),I.style.zIndex=J||H?L?"7":"6":""})}),a=!!c.freezeHeaders||f>0}function l(){n||(n=requestAnimationFrame(()=>{n=0,r()}))}return e.onScopeDispose(()=>{n&&cancelAnimationFrame(n)}),{refresh:r,schedule:l}}async function In(t,n,a,r){if(!n?.assetRenderers||!Object.keys(n.assetRenderers).length)return t;try{return(await K.resolvePlanAssets(t,{...n,signal:a,format:"dom",onDiagnostic:o=>{a.aborted||(n.onDiagnostic?.(o),r(o.message))}})).plan}catch(l){throw a.aborted?l:new ie.MachReportError("render",l instanceof Error?l.message:"Report asset preparation failed",l)}}function Pn(t,n){const a=K.validateRenderPlan(t);if(!a.ok)throw new ie.MachReportError("validate",`渲染计划校验失败(${a.errors.length} 处): ${a.errors.slice(0,3).map(r=>`${r.path}: ${r.message}`).join("; ")}`);a.warnings.forEach(r=>n(`${r.path}: ${r.message}`))}async function $s(t,n,a,r){const l=await Q.waitForOutput(t(n),n.signal);return Q.assertOutputActive(n.signal),r("validate"),Pn(l,n.onWarning??(()=>{})),Q.assertOutputActive(n.signal),r("assets"),In(l,a,n.signal,n.onWarning??(()=>{}))}async function Vs(t,n,a,r,l,o){const{importExcelTemplate:s}=await import("@agile-team/mach-report/xlsx");Q.assertOutputActive(r);const i=await Q.waitForOutput(s(t,{...n,signal:r}),r);o("layout");const c=K.paginateTemplate(pe(i.template),{}).plan;Pn(c,l),Q.assertOutputActive(r),o("assets");const f=await In(c,a,r,l);return{result:i,plan:f}}const Is={key:7,class:"mrp-edit-hint",role:"status"},Ps={key:9,class:"mrp-export-notice mrp-export-warning",role:"status"},Rs={class:"mrp-main"},Ds={key:0,class:"mrp-state"},Ms={key:1,class:"mrp-state mrp-error"},Ts=["data-page"],Os=["aria-label","aria-current","onClick"],Fs=["data-thumb"],As={class:"mrp-thumb-no"},zs={key:10,class:"mrp-footer"},Ls={class:"mrp-footer-context"},qs=["aria-label"],Ks={key:0},js={class:"mrp-overlay"},Ws={key:11,class:"mrp-debug","aria-hidden":"true"},St=96/25.4,Nt="mach-report:ui",Bt="mach-report:ui:wide",Hs=e.defineComponent({__name:"ReportPreview",props:{reportId:{type:[String,Array],default:null},params:{type:Object,default:()=>({})},height:{type:String,default:"100vh"},autoLoad:{type:Boolean,default:!0},showExport:{type:Boolean,default:void 0},showPrint:{type:Boolean,default:void 0},showPdfWindow:{type:Boolean,default:void 0},showSettings:{type:Boolean,default:void 0},toolbar:{type:Object,default:void 0},interaction:{type:Object,default:void 0},preferences:{type:Object,default:void 0},guardChanges:{type:Boolean,default:void 0},beforeDiscard:{type:Function,default:void 0},output:{type:Object,default:void 0},assets:{type:Object,default:void 0},printOptions:{type:Object,default:void 0},emptyState:{type:[Boolean,Object],default:!1},gapPx:{type:Number,default:void 0},messages:{type:Object,default:void 0},preset:{type:String,default:void 0},debug:{type:Boolean,default:!1},paramDefs:{type:Array,default:void 0},showParams:{type:Boolean,default:void 0},editable:{type:[Boolean,Object],default:void 0},excelImport:{type:[Boolean,Object],default:void 0},fetcher:{type:Function,default:null}},emits:["loaded","task","diagnostic","error","warning","cell-edit","template-import","preferences-change"],setup(t,{expose:n,emit:a}){const r=t,l=a,o=e.shallowRef(null),s=e.ref(!1),i=e.ref(""),c=e.shallowRef(null),f=e.ref(null),g=e.ref(!1),d=e.ref(null),p=e.ref(1),E=e.ref(null),b=e.ref(null),h=e.ref(null),m=e.ref(!1),S=e.ref(!1),v=e.ref(!1),C=e.ref("general"),P=e.shallowRef(null),I=e.ref(null),T=e.ref(null),L=Oa();let J=null,H=!1;const Z=il(u=>l("task",u)),ae=cl(u=>l("diagnostic",u)),ge=e.computed(()=>ae.entries.value.filter(u=>u.valueState&&u.target)),re=e.computed(()=>ae.entries.value.filter(u=>!u.valueState)),x=e.shallowRef(null),$=e.computed(()=>!!o.value?.pages.length&&o.value.pages.every(u=>u.layout==="wide"));let y=Nt;const N=e.inject(kt.MACH_REPORT_FETCHER_KEY,null),V=e.inject(kt.MACH_REPORT_PDF_EXPORTER_KEY,null),D=e.computed(()=>Dt(r.reportId)),q=e.computed(()=>r.fetcher??N),A=e.computed(()=>o.value?.pages.length??0),U=e.computed(()=>Object.freeze({loading:s.value,hasPlan:A.value>0,pageCount:A.value,currentPage:p.value,exporting:f.value,printing:g.value,canExport:!s.value&&!S.value&&!z.saving.value&&A.value>0&&f.value===null,canPrint:!s.value&&!S.value&&!z.saving.value&&A.value>0&&!g.value,error:c.value,pdfFont:At.value,editing:z.active.value!==null,saving:z.saving.value,importing:S.value,dirty:z.differences.value.length>0,pendingLocalChanges:z.pendingLocalChanges.value,task:Z.state.value,diagnostics:ae.entries.value,reportIds:x.value?.reportIds??[],params:x.value?.params??{},canUndo:z.canUndo.value,canRedo:z.canRedo.value,changeCount:z.differences.value.length,selection:te.selection.value?pe(te.selection.value):null}));function W(u,k,R){c.value=Object.freeze({message:u,code:k,cause:R}),l("error",u,{code:k,cause:R})}const{resolved:X,resolvedMessages:M,effectiveShowExport:ce,effectiveShowSettings:Ce,effectiveGuardChanges:be,effectiveOutput:Ne,effectiveInteraction:w,effectiveAssets:B,effectiveGapPx:F,effectiveShowParams:O,availableTools:G,tools:_,toolState:Y,visibleExportFormats:ve,effectiveEditable:he,effectiveExcelImport:$e,persistedEditing:Ot,emptyStateContent:rt,sessionInteraction:lt}=gs(r,$,u=>l("warning",u)),Ge=e.ref(),st=e.computed(()=>({...X.value.printOptions,...r.printOptions,calibration:Ge.value??{...X.value.printOptions?.calibration,...r.printOptions?.calibration}}));e.watch([()=>r.printOptions,()=>X.value.printOptions],()=>{Ge.value=void 0});let Ae;const Ft=e.computed(()=>Y.value.pdf||Y.value.pdfWindow),it=e.computed(()=>w.value.calculations===!0),ct=e.computed(()=>ie.resolveCalculationMessages(M.value)),{pdfFont:At,getPdfExporter:Dn,checkPdfFont:Mn,retryPdfFont:zt,cancelFontCheck:Tn}=rl({plan:o,fontUrl:()=>X.value.pdfFontUrl,enabled:()=>Ft.value,injectedExporter:V,destroyed:()=>H});async function On(u,k){u==="editing"&&!k&&!await z.settle()||(_.setEnabled(u,k),l("preferences-change",Object.freeze({...Y.value})))}async function Fn(){await z.settle()&&(_.reset(),lt.value={},Ge.value=void 0,l("preferences-change",Object.freeze({...Y.value})))}async function Lt(u="general"){if(v.value){v.value=!1;return}const k=z.settle();!(typeof k=="boolean"?k:await k)||H||!Ce.value||(C.value=u,v.value=!0)}function qt(u){return u instanceof K.ReportCellEditError?{number:M.value.editInvalidNumber,boolean:M.value.editInvalidBoolean,conflict:M.value.editConflict,atomic:M.value.editAtomicRequired,limit:M.value.clipboardLimit,readonly:M.value.editReadOnly,missing:M.value.editMissing,recalculation:M.value.editRecalculationUnavailable,duplicate:M.value.editDuplicate,clipboard:M.value.clipboardInvalid}[u.code]??u.message:u instanceof Error?u.message:"单元格保存失败"}const z=ms({plan:o,options:he,blocked:()=>s.value||S.value||f.value!==null||g.value||we.pending.value,label:()=>M.value.editCell??"编辑单元格",errorMessage:qt,suspendBlur:()=>we.request.value!==null,onChange:u=>{c.value=null,d.value=null,l("cell-edit",u)},onError:(u,k)=>{d.value={kind:"error",message:u},W(u,"edit",k)},onNavigate:(u,k,R)=>te.navigate(u,k,R)}),te=Ns({plan:o,root:E,enabled:()=>!!he.value||it.value,editable:()=>!!he.value,busy:()=>s.value||S.value||z.saving.value||!!f.value||g.value||we.pending.value,differences:()=>z.differences.value,gotoPage:me,edit:z.editCell,apply:z.apply,undo:z.undo,redo:z.redo,error:u=>{const k=qt(u);d.value={kind:"error",message:k},W(k,"edit",u)}}),ut=Xo({plan:o,selection:te.selection,enabled:()=>it.value});function An(){Lt("advanced")}const we=ll({pending:()=>z.pendingLocalChanges.value,reportIds:()=>x.value?.reportIds??D.value,hook:()=>r.beforeDiscard??X.value.beforeDiscard,enabled:()=>be.value,snapshot:()=>[o.value,z.active.value?.editor.input.value],error:u=>W(u instanceof Error?u.message:"修改保护回调失败","config",u)});async function zn(u="leave"){return we.check(u)}function Kt(u){!be.value||!z.pendingLocalChanges.value||(u.preventDefault(),u.returnValue="")}function jt(){Z.cancel()}function Ln(u){const k=z.resolveAddress(u);k&&te.focusCell(k)}async function Wt(u){await te.focusField(u)||(d.value={kind:"warning",message:M.value.locateFieldMissing??"Field not found"})}function qn(u){if(u.pageIndex===void 0)return;me(u.pageIndex+1);const k=u.componentPath;u.componentIndex!==void 0&&k&&k.length===2&&te.focusCell({pageIndex:u.pageIndex,componentIndex:u.componentIndex,rowIndex:k[0],columnIndex:k[1]})}function dt(u){const k=o.value;if(!k)return!1;const R={excel:"xlsx",image:"png",doc:"word"}[u]??u,oe=R==="pdf"?"pdf":R==="xlsx"?"xlsx":R==="png"?"canvas":"dom",ee=ae.inspect(k,oe);return o.value!==k?!1:ee.length&&Ne.value.fidelity==="strict"?(d.value={kind:"error",message:M.value.diagnosticsStrict??"输出存在已知降级"},W(d.value.message,"export",{diagnostics:ee}),!1):!0}function Kn(u){return o.value?ae.inspect(o.value,u):[]}const Je=e.computed(()=>{if(P.value)return P.value.sheets.map(k=>({label:k.name,pageIndex:k.pageStart}));const u=new Set;return o.value?.pages.flatMap((k,R)=>k.components.flatMap(oe=>{const ee=oe.table;return!ee?.title||u.has(ee.id)?[]:(u.add(ee.id),[{label:ee.title,pageIndex:R}])}))??[]});async function Ht(u){u&&!await te.focusField({field:u})&&(d.value={kind:"warning",message:M.value.locateFieldMissing??"Field not found"})}async function jn(u){await te.focusField(u)||(d.value={kind:"warning",message:M.value.locateFieldMissing??"Field not found"})}const mt=e.computed(()=>{try{return{defs:r.paramDefs??q.value?.getParamDefs?.(D.value)??[],error:null}}catch(u){return{defs:[],error:new ie.MachReportError("config",u instanceof Error?u.message:"查询参数配置无效",u)}}}),ft=e.computed(()=>mt.value.defs),ze=ie.useReportParams({defs:ft,reportIds:D,params:()=>r.params,messages:()=>M.value}),{values:Le,attempted:Ye,pendingRequired:Ut}=ze,Gt=e.ref(null);function Wn(){Ye.value=!0,ze.validation.value.ok||e.nextTick(()=>Gt.value?.focusInvalid()),Ie()}function Hn(){ze.reset(),i.value="",c.value=null}const Un=e.computed(()=>({height:r.height,"--mrp-page-gap":`${Math.max(0,F.value)}px`,...ie.themeToCssVars(X.value.theme)})),{zoom:de,zoomMode:qe,applyFitZoom:Jt,setZoom:Ke}=hn(()=>({viewport:b.value,pageWidthPx:pt.contentSize.value.w||210*St})),pt=vn(o,de,{pxPerMm:St,gapPx:F,overscan:e.computed(()=>X.value.preview.overscanPages)}),{contentSize:gt,windowRange:je,visiblePages:Yt,makeScrollHandler:Gn,refreshViewport:Zt}=pt,Jn=Gn(p,A),vt=Bs({root:E,viewport:b,plan:o,zoom:de,options:()=>w.value});e.watch([w,de],()=>vt.schedule(),{flush:"post"});function ht(u){Ke(u*100)}function Ve(){Ae?.abort(),S.value=!1,z.reset(),te.reset(),P.value=null,Qt(),o.value=null,x.value=null,ae.reset(),p.value=1,ne.reset()}let le=0,se=null;function Ze(u,k){return u===le&&!k.signal.aborted&&!H}function Xt(){b.value&&(b.value.scrollTop=0,b.value.scrollLeft=0)}function Yn(u,k){for(const R of u){if(k!==le)return!1;l("warning",R)}return k===le}function Zn(){if(mt.value.error){const k=mt.value.error;return Ve(),i.value=k.message,W(k.message,k.code,k.cause),null}const u=ze.query();return u.params?u.params:(Ve(),i.value=u.quiet?"":u.error.message,u.quiet||(Ye.value=!0,W(u.error.message,u.error.code,u.error.cause)),null)}async function Ie(){if(H||be.value&&z.pendingLocalChanges.value&&!await we.check("reload")||H)return;const u=++le;S.value=!1,se?.abort(),se=null;const k=q.value;if(s.value=!1,c.value=null,D.value.length===0){i.value="缺少报表 ID",Ve(),W(i.value,"param");return}if(!k){i.value="未提供渲染数据源 fetcher",Ve(),W(i.value,"config");return}const R=Zn();if(!R)return;s.value=!0,i.value="",d.value=null,Ve();const oe=L.start(),ee=new AbortController;se=ee;const ke=Z.start("query","query",()=>{se===ee&&(ee.abort(),le++,se=null,s.value=!1)}),We=[...D.value],ye=Object.freeze({...R}),Se=new Set;function De(fe){u!==le||ee.signal.aborted||Se.has(fe)||(Se.add(fe),X.value.logger.warn("[mach-report] 报表告警:",fe),ae.add({code:"layout",severity:"warning",message:fe}),l("warning",fe))}try{const fe=await $s(k,{reportIds:We,params:R,taskId:ke.taskId,onEvent:Be=>{u===le&&!ee.signal.aborted&&ke.update(Be.stage,Be.completed,Be.total)},onQueryResult:(Be,ca,ua)=>{u===le&&!ee.signal.aborted&&ae.addMany(vs(We,Be,ca.diagnostics??[],ua))},signal:ee.signal,onWarning:De},B.value,ke.update);if(!Ze(u,ee)||(o.value=fe,x.value=Object.freeze({reportIds:Object.freeze(We),params:ye}),ae.inspect(fe,"dom"),!Ze(u,ee)))return;ke.finish(),p.value=1,L.end(oe),Xt();const Me=$.value?Bt:Nt;Me!==y&&(y=Me,wt()),qe.value==="fit"&&Jt(),l("loaded",fe.pages.length)}catch(fe){if(u!==le)return;if(ee.signal.aborted){ke.finish("cancelled");return}ke.finish("failed");const Me=ie.normalizeReportLoadError(fe);i.value=Me.message;const Be=ie.toErrorDetail(Me);W(Me.message,Be.code,Be.cause)}finally{u===le&&(s.value=!1),se===ee&&(se=null)}}function me(u){if(H||A.value<=0)return;const k=Math.max(1,Math.min(A.value,u));p.value=k;const R=b.value;R&&(pt.scrollToPage(R,k-1),sa.prioritize(k-1))}const Pe=kn(o,{getPdfExporter:Dn,beforeOutput:()=>z.settle(),onTask:u=>Z.receive(u,()=>Pe.cancel()),onDiagnostic:ae.add,getXlsxOptions:()=>X.value.xlsx,getPrintOptions:()=>st.value,getPrintMessages:()=>M.value,onError:(u,k)=>{d.value={kind:"error",message:u},W(u,k??"print")},onWarning:u=>{d.value={kind:"warning",message:u},ae.add({code:"output",severity:"warning",message:u}),l("warning",u)},onBusy:u=>{f.value=u,u?d.value={kind:"progress",message:M.value.exporting.replace("{format}",u)}:d.value?.kind==="progress"&&(d.value=null)},onPrinting:u=>{g.value=u}}),{releasePrintFrame:Qt,dispose:Xn}=Pe,_t=e.computed(()=>{const u=o.value?.pages[0];return!!u&&!$.value&&[u.pageWidthMm,u.pageHeightMm].every(k=>k>=25&&k<=600)});async function Qn(){if(!_t.value||g.value||s.value||S.value)return;const u=o.value.pages[0];g.value=!0;const k=new AbortController;Ae=k;try{await wn([Nn(u.pageWidthMm,u.pageHeightMm)],{printOptions:st.value,signal:k.signal,messages:M.value,onError:R=>{d.value={kind:"error",message:R}}})}catch{}finally{Ae===k&&(g.value=!1,Ae=void 0)}}async function en(){if(s.value||S.value)return;const u=z.settle();(typeof u=="boolean"?u:await u)&&(c.value=null,dt("html")&&await Pe.print())}async function tn(u){if(s.value||S.value)return;const k=z.settle();(typeof k=="boolean"?k:await k)&&(c.value=null,dt(u)&&await Pe.exportAs(u))}function nn(){if(s.value||S.value||z.active.value||z.saving.value){d.value={kind:"warning",message:M.value.editingHint??"请先确认单元格修改"};return}c.value=null,dt("pdf")&&Pe.openPdfWindow()}async function _n(u,k={}){H||(Le.value={...Le.value,...u},k.reload!==!1&&(Ye.value=!0,await Ie()))}const an={reload:Ie,print:en,exportAs:tn,openPdfWindow:nn,gotoPage:me,setParams:_n,checkPdfFont:Mn,importExcel:on,getPlan:ea,cancelTask:jt,confirmDiscard:zn,getOutputDiagnostics:Kn,getChanges:z.getChanges,undo:z.undo,redo:z.redo,restoreChanges:z.restore,getDifferences:()=>pe(z.differences.value),getSelection:()=>te.selection.value?pe(te.selection.value):null,focusCell:te.focusCell,focusField:te.focusField,copySelection:te.copySelection,pasteSelection:te.pasteSelection,get state(){return U.value}};e.provide(kt.MACH_REPORT_CONTROLLER_KEY,an);function ea(){return o.value?pe(o.value):null}function ta(u){const k=typeof $e.value=="object"?$e.value:{};return{...k,...u,limits:{...k.limits,...u?.limits}}}function na(u,k){z.reset(),te.reset(),Qt(),ne.reset(),o.value=u,x.value=null,ae.reset(),P.value={sheets:pe(k.sheets),warnings:[...k.warnings]},p.value=1,i.value="",d.value=k.warnings.length?{kind:"warning",message:k.warnings.join(";")}:null,Xt(),y=$.value?Bt:Nt,wt(),ae.addMany(k.warnings.map(R=>({code:"excel-import",severity:"warning",message:R}))),o.value===u&&ae.inspect(u,"dom")}async function on(u,k){if(H)throw new ie.MachReportError("config","报表预览已卸载");if(be.value&&z.pendingLocalChanges.value&&!await we.check("import")||H)return null;const R=++le;se?.abort(),se=null,s.value=!1,z.cancel(),Pe.invalidatePending(),S.value=!0;const oe=new AbortController;se=oe,c.value=null,d.value={kind:"progress",message:M.value.importing??"正在导入 Excel…"};const ee=Z.start("import","import",()=>{se===oe&&(oe.abort(),le++,se=null,S.value=!1,d.value=null)}),ke=ta(k),We=Q.forwardOutputAbort(ke.signal,oe);try{const{result:ye,plan:Se}=await Vs(u,{...ke,onProgress:(De,fe)=>{ee.update("import",De,fe),ke.onProgress?.(De,fe)}},B.value,oe.signal,De=>{R===le&&l("warning",De)},ee.update);return!Ze(R,oe)||!Yn(ye.warnings,R)||(na(Se,ye),!Ze(R,oe))?null:(ee.finish(),l("template-import",ye),R===le&&l("loaded",Se.pages.length),ye)}catch(ye){if(R!==le)return null;if(oe.signal.aborted)return ee.finish("cancelled"),null;ee.finish("failed");const Se=new ie.MachReportError("import",ye instanceof Error?ye.message:"Excel 模板导入失败",ye);throw d.value={kind:"error",message:Se.message},W(Se.message,"import",ye),Se}finally{We(),R===le&&(S.value=!1),se===oe&&(se=null)}}function aa(u){const k=u.target,R=k.files?.[0];k.value="",R&&on(R).catch(()=>{})}const ne=Da({plan:o,gotoPage:me,debounceMs:e.computed(()=>X.value.preview.searchDebounceMs),highlight:Na,clearHighlights:Sa});e.watch(()=>Y.value.search,u=>{u||(ne.reset(),ne.visible.value=!1)});function oa(u){!u.ctrlKey||!Y.value.zoom||(u.preventDefault(),ht(de.value*(u.deltaY<0?1.1:1/1.1)))}function ra(u){if(!te.onKeydown(u)&&!(u.target instanceof Element&&u.target.closest("input,textarea,select,[contenteditable='true']"))){if(Y.value.search&&(u.ctrlKey||u.metaKey)&&u.key.toLowerCase()==="f"){u.preventDefault(),ne.visible.value||ne.toggle(),e.nextTick(()=>T.value?.focusSearch());return}switch(u.key){case"PageDown":u.preventDefault(),me(p.value+1);break;case"PageUp":u.preventDefault(),me(p.value-1);break;case"Home":u.preventDefault(),me(1);break;case"End":u.preventDefault(),me(A.value);break;case"+":case"=":u.preventDefault(),Y.value.zoom&&ht(de.value*1.1);break;case"-":u.preventDefault(),Y.value.zoom&&ht(de.value/1.1);break}}}function la(){try{localStorage.setItem(y,JSON.stringify({zoomMode:qe.value==="fit"?"fit":Math.round(de.value*100)}))}catch{}}e.watch([qe,de],la);let yt="";function rn(u=!1){const k=ne.activeMatch.value;if(!$.value||!k)return;const R=`${ne.query.value}:${ne.matchIndex.value}:${k.pageIndex}`;if(!u&&R===yt)return;const ee=E.value?.querySelector(`[data-page="${k.pageIndex+1}"]`)?.querySelectorAll("mark.mrp-hit")[k.occurrence];ee&&(ee.scrollIntoView?.({block:"nearest",inline:"nearest"}),yt=R)}const sa=ba({plan:o,root:E,pages:()=>Yt.value,priority:()=>ne.activeMatch.value?.pageIndex??p.value-1,focusToken:()=>ne.activeMatch.value,query:()=>ne.query.value,zoom:()=>de.value,loading:()=>M.value.loading,clear:ne.clear,highlight:ne.apply,mounted:u=>{te.refresh(u),vt.schedule()},ready:()=>{ne.activeMatch.value||(yt=""),rn()},error:u=>{i.value=u instanceof Error?u.message:String(u),W(i.value,"render",u)}});e.watch(()=>te.selection.value,()=>{te.refresh()},{flush:"post"}),e.watch(()=>ne.query.value,u=>{u||E.value?.querySelectorAll(".mrp-page-holder").forEach(k=>{ne.clear(k)})});const xe=Ta(o,{thumbsRoot:h,visible:m,renderThumbCanvas:u=>{try{const k=o.value.pages[u],R=Math.min(.2,116/Math.max(1,k.pageWidthMm*St)),{canvases:oe}=K.renderPlanToCanvas(o.value,{start:u,end:u,dpr:R});return oe[0]??null}catch{return null}}});e.watchEffect(()=>{xe.schedule()},{flush:"post"});const ia=e.computed(()=>r.debug),{debugStats:Re}=Ma(ia,{plan:o,pageCount:A,windowRange:je,zoom:de,loadMs:L.loadMs});function bt(){Zt(b.value),xe.schedule(),qe.value==="fit"&&Jt(),rn(!0)}function wt(){Ke(y===Bt?100:"fit");try{const u=JSON.parse(localStorage.getItem(y)??"{}");u.zoomMode==="fit"?Ke("fit"):typeof u.zoomMode=="number"&&Ke(u.zoomMode)}catch{}}return e.onMounted(()=>{window.addEventListener("resize",bt),window.addEventListener("beforeunload",Kt),typeof ResizeObserver<"u"&&b.value&&(J=new ResizeObserver(bt),J.observe(b.value)),Zt(b.value),wt(),r.autoLoad&&Ie()}),e.onUnmounted(()=>{H=!0,Ae?.abort(),we.cancel(),Z.cancel(),z.reset(),S.value=!1,Tn(),le++,se?.abort(),se=null,window.removeEventListener("resize",bt),window.removeEventListener("beforeunload",Kt),J?.disconnect(),J=null,xe.destroy(),ne.reset(),Xn()}),e.watch(()=>[JSON.stringify(D.value),JSON.stringify(r.params),q.value],async()=>{if(r.autoLoad){Ie();return}!await we.check("replace")||H||(le++,se?.abort(),se=null,s.value=!1,i.value="",c.value=null,d.value=null,Ve())}),n({...an,state:U}),(u,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["mach-report-preview",{"mrp-wide-report":$.value}]),style:e.normalizeStyle(Un.value)},[e.unref(O)&&ft.value.length>0?(e.openBlock(),e.createBlock(ie.ReportParamPanel,{key:0,ref_key:"paramPanelRef",ref:Gt,defs:ft.value,modelValue:e.unref(Le),"onUpdate:modelValue":k[0]||(k[0]=R=>e.isRef(Le)?Le.value=R:null),messages:e.unref(M),attempted:e.unref(Ye),issues:e.unref(ze).validation.value.issues,onQuery:Wn,onReset:Hn},null,8,["defs","modelValue","messages","attempted","issues"])):e.createCommentVNode("",!0),e.createVNode(Sn,{ref_key:"toolbarRef",ref:T,"page-count":A.value,"current-page":p.value,"zoom-mode":e.unref(qe),zoom:e.unref(de),"show-export":e.unref(ce),"show-print":e.unref(Y).print,"show-pdf-window":e.unref(Y).pdfWindow,"show-search":e.unref(Y).search,"show-thumbnails":e.unref(Y).thumbnails,"show-zoom":e.unref(Y).zoom,"export-formats":e.unref(ve),"show-settings":e.unref(Ce),"settings-open":v.value,messages:e.unref(M),search:{visible:e.unref(ne).visible.value,query:e.unref(ne).query.value,matchIndex:e.unref(ne).matchIndex.value,matchCount:e.unref(ne).matchCount.value,searching:e.unref(ne).searching.value},"thumbs-visible":m.value,"show-import":!!e.unref($e),busy:s.value||S.value||e.unref(z).saving.value,onGoto:me,onZoom:e.unref(Ke),onExport:k[1]||(k[1]=R=>tn(R)),onPrint:en,onPdfWindow:nn,onSearchInput:e.unref(ne).onInput,onSearchNav:e.unref(ne).onNav,onSearchToggle:e.unref(ne).toggle,onThumbsToggle:k[2]||(k[2]=R=>m.value=!m.value),onImportExcel:k[3]||(k[3]=R=>I.value?.click()),onSettingsToggle:Lt},e.createSlots({_:2},[Je.value.length<=1?{name:"navigation",fn:e.withCtx(()=>[A.value>0&&e.unref(w).navigation!==!1?(e.openBlock(),e.createBlock(mn,{key:0,plan:o.value,compact:"",sections:Je.value,"current-page":p.value,messages:e.unref(M),busy:s.value||S.value||e.unref(z).saving.value,onLocateTarget:Wt,onGoto:me,onLocate:Ht},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0)]),key:"0"}:void 0]),1032,["page-count","current-page","zoom-mode","zoom","show-export","show-print","show-pdf-window","show-search","show-thumbnails","show-zoom","export-formats","show-settings","settings-open","messages","search","thumbs-visible","show-import","busy","onZoom","onSearchInput","onSearchNav","onSearchToggle"]),e.unref(we).request.value?(e.openBlock(),e.createBlock($r,{key:1,messages:e.unref(M),onAnswer:e.unref(we).settle},null,8,["messages","onAnswer"])):e.createCommentVNode("",!0),e.createVNode(Dr,{task:e.unref(Z).state.value,messages:e.unref(M),onCancel:jt},null,8,["task","messages"]),e.createVNode(Lr,{entries:re.value,messages:e.unref(M),onLocate:qn},null,8,["entries","messages"]),e.createVNode(Yr,{entries:ge.value,messages:e.unref(M),busy:s.value||S.value||e.unref(z).saving.value,onLocate:jn},null,8,["entries","messages","busy"]),v.value&&e.unref(Ce)?(e.openBlock(),e.createBlock(kr,{key:2,available:e.unref(G),enabled:e.unref(Y),messages:e.unref(M),"persisted-editing":e.unref(Ot),interaction:e.unref(w),section:C.value,busy:s.value||S.value||e.unref(z).saving.value||!!f.value||g.value,onSection:k[5]||(k[5]=R=>C.value=R),onInteraction:k[6]||(k[6]=R=>lt.value={...e.unref(lt),...R}),onChange:On,onReset:Fn,onClose:k[7]||(k[7]=R=>v.value=!1)},{advanced:e.withCtx(()=>[e.createVNode(Zo,{state:e.unref(ut),messages:ct.value},null,8,["state","messages"])]),default:e.withCtx(()=>[e.renderSlot(u.$slots,"settings",{},void 0,!0),e.unref(Y).print?(e.openBlock(),e.createBlock(tl,{key:0,value:st.value.calibration??{},messages:e.unref(M),busy:g.value||s.value||S.value||e.unref(z).saving.value,"can-test":_t.value,onChange:k[4]||(k[4]=R=>Ge.value=R),onTest:Qn},null,8,["value","messages","busy","can-test"])):e.createCommentVNode("",!0)]),_:3},8,["available","enabled","messages","persisted-editing","interaction","section","busy"])):e.createCommentVNode("",!0),Je.value.length>1&&A.value>0&&e.unref(w).navigation!==!1?(e.openBlock(),e.createBlock(mn,{key:3,plan:o.value,onLocateTarget:Wt,sections:Je.value,"current-page":p.value,messages:e.unref(M),busy:s.value||S.value||e.unref(z).saving.value,onGoto:me,onLocate:Ht},null,8,["plan","sections","current-page","messages","busy"])):e.createCommentVNode("",!0),P.value?(e.openBlock(),e.createBlock(Xl,{key:4,result:P.value,messages:e.unref(M)},null,8,["result","messages"])):e.createCommentVNode("",!0),e.unref(he)&&A.value>0?(e.openBlock(),e.createBlock(Sl,{key:5,differences:e.unref(z).differences.value,conflicts:e.unref(z).conflicts.value,messages:e.unref(M),saving:e.unref(z).saving.value,"can-undo":e.unref(z).canUndo.value,"can-redo":e.unref(z).canRedo.value,persisted:e.unref(Ot),busy:!!f.value||g.value,onUndo:e.unref(z).undo,onRedo:e.unref(z).redo,onRestore:e.unref(z).restore,onLocate:Ln},null,8,["differences","conflicts","messages","saving","can-undo","can-redo","persisted","busy","onUndo","onRedo","onRestore"])):e.createCommentVNode("",!0),e.unref($e)?(e.openBlock(),e.createElementBlock("input",{key:6,ref_key:"importInputRef",ref:I,class:"mrp-import-input",type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",hidden:"",onChange:aa},null,544)):e.createCommentVNode("",!0),e.unref(he)&&A.value>0?(e.openBlock(),e.createElementBlock("div",Is,e.toDisplayString(e.unref(z).saving.value?e.unref(M).saving:e.unref(M).editingHint),1)):e.createCommentVNode("",!0),d.value?(e.openBlock(),e.createElementBlock("div",{key:8,class:e.normalizeClass(["mrp-export-notice",`mrp-export-${d.value.kind}`]),role:"alert"},e.toDisplayString(d.value.message),3)):e.createCommentVNode("",!0),e.unref(At).status==="error"&&Ft.value?(e.openBlock(),e.createElementBlock("div",Ps,[e.createTextVNode(e.toDisplayString(e.unref(M).pdfFontUnavailable)+" ",1),e.createElementVNode("button",{type:"button",onClick:k[8]||(k[8]=(...R)=>e.unref(zt)&&e.unref(zt)(...R))},e.toDisplayString(e.unref(M).retry),1)])):e.createCommentVNode("",!0),e.createElementVNode("div",Rs,[e.createElementVNode("div",{ref_key:"viewportRef",ref:b,class:"mrp-body",tabindex:"0",onWheel:oa,onKeydown:ra,onDblclick:k[9]||(k[9]=(...R)=>e.unref(z).onDoubleClick&&e.unref(z).onDoubleClick(...R)),onClick:k[10]||(k[10]=(...R)=>e.unref(te).onClick&&e.unref(te).onClick(...R)),onCopy:k[11]||(k[11]=(...R)=>e.unref(te).onCopy&&e.unref(te).onCopy(...R)),onPaste:k[12]||(k[12]=(...R)=>e.unref(te).onPaste&&e.unref(te).onPaste(...R)),onScrollPassive:k[13]||(k[13]=R=>{e.unref(Jn)(R.target),e.unref(vt).schedule()})},[s.value?(e.openBlock(),e.createElementBlock("div",Ds,e.toDisplayString(e.unref(M).loading),1)):i.value?(e.openBlock(),e.createElementBlock("div",Ms,[e.createTextVNode(e.toDisplayString(i.value)+" ",1),e.createElementVNode("button",{class:"mrp-retry",type:"button",onClick:Ie},e.toDisplayString(e.unref(M).retry),1)])):!o.value||A.value===0?(e.openBlock(),e.createBlock(un,{key:2,title:e.unref(Ut)?e.unref(M).paramPrompt??e.unref(M).paramsTitle:e.unref(M).empty,description:e.unref(Ut)?e.unref(M).paramPromptDescription:e.unref(rt).description??e.unref(M).emptyDescription},null,8,["title","description"])):(e.openBlock(),e.createElementBlock("div",{key:3,class:"mrp-scale",style:e.normalizeStyle({width:`${e.unref(gt).w*e.unref(de)}px`,height:`${e.unref(gt).h*e.unref(de)}px`})},[e.createElementVNode("div",{ref_key:"containerRef",ref:E,class:"mrp-scale-inner",style:e.normalizeStyle({transform:`scale(${e.unref(de)})`,transformOrigin:"top left",width:`${e.unref(gt).w}px`})},[e.unref(je).padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-spacer-top",style:e.normalizeStyle({height:`${e.unref(je).padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(Yt),R=>(e.openBlock(),e.createElementBlock("div",{key:R.index,class:"mrp-page-holder","data-page":R.index+1},null,8,Ts))),128)),e.unref(je).padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-spacer-bottom",style:e.normalizeStyle({height:`${e.unref(je).padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],4)],4)),!s.value&&!i.value&&o.value&&A.value>0&&t.emptyState?(e.openBlock(),e.createBlock(un,{key:4,title:e.unref(rt).title??e.unref(M).empty,description:e.unref(rt).description??e.unref(M).emptyDescription},null,8,["title","description"])):e.createCommentVNode("",!0)],544),e.unref(Y).thumbnails&&m.value&&A.value>0?(e.openBlock(),e.createElementBlock("aside",{key:0,ref_key:"thumbsRef",ref:h,class:"mrp-thumbs",onScrollPassive:k[14]||(k[14]=(...R)=>e.unref(xe).onScroll&&e.unref(xe).onScroll(...R))},[e.unref(xe).windowRange.value.padTopPx>0?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(xe).windowRange.value.padTopPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(xe).visibleThumbs.value,R=>(e.openBlock(),e.createElementBlock("button",{key:R.index,class:e.normalizeClass(["mrp-thumb",{"mrp-thumb-active":R.index+1===p.value}]),type:"button","aria-label":`${e.unref(M).thumbnails} · ${e.unref(M).pageInfo.replace("{cur}",String(R.index+1)).replace("{total}",String(A.value))}`,"aria-current":R.index+1===p.value?"page":void 0,style:e.normalizeStyle({height:`${R.height+20}px`}),onClick:oe=>me(R.index+1)},[e.createElementVNode("span",{class:"mrp-thumb-box","data-thumb":R.index+1,style:e.normalizeStyle({height:`${R.height}px`})},null,12,Fs),e.createElementVNode("span",As,e.toDisplayString(R.index+1),1)],14,Os))),128)),e.unref(xe).windowRange.value.padBottomPx>0?(e.openBlock(),e.createElementBlock("div",{key:1,class:"mrp-thumb-spacer",style:e.normalizeStyle({height:`${e.unref(xe).windowRange.value.padBottomPx}px`}),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0)],544)):e.createCommentVNode("",!0)]),A.value>0?(e.openBlock(),e.createElementBlock("footer",zs,[e.createElementVNode("div",Ls,[e.unref(w).navigation!==!1?(e.openBlock(),e.createBlock(Do,{key:0,plan:o.value,"current-page":p.value,messages:e.unref(M),busy:s.value||S.value||e.unref(z).saving.value,onGoto:me},null,8,["plan","current-page","messages","busy"])):e.createCommentVNode("",!0),it.value&&e.unref(Ce)?(e.openBlock(),e.createElementBlock("button",{key:1,class:"mrp-calculation-toggle",type:"button","aria-label":ct.value.calculationTitle,onClick:An},[k[15]||(k[15]=e.createElementVNode("span",{"aria-hidden":"true"},"∑",-1)),e.createTextVNode(e.toDisplayString(ct.value.calculationTitle),1),e.unref(ut).result.value?(e.openBlock(),e.createElementBlock("strong",Ks,e.toDisplayString(e.unref(ut).result.value.formatted),1)):e.createCommentVNode("",!0)],8,qs)):e.createCommentVNode("",!0)]),e.createVNode(Tt,{"page-count":A.value,"current-page":p.value,messages:e.unref(M),busy:s.value||S.value||e.unref(z).saving.value,onGoto:me},null,8,["page-count","current-page","messages","busy"])])):e.createCommentVNode("",!0),e.createElementVNode("div",js,[e.renderSlot(u.$slots,"default",{},void 0,!0)]),e.unref(Re)?(e.openBlock(),e.createElementBlock("div",Ws,[k[16]||(k[16]=e.createElementVNode("div",null,"mach-report debug",-1)),e.createElementVNode("div",null,"pages: "+e.toDisplayString(e.unref(Re).pages)+" | window: ["+e.toDisplayString(e.unref(Re).window)+"]",1),e.createElementVNode("div",null,"zoom: "+e.toDisplayString(e.unref(Re).zoom)+" | load: "+e.toDisplayString(e.unref(Re).loadMs),1),e.createElementVNode("div",null,"plan: "+e.toDisplayString(e.unref(Re).planKB)+"KB",1)])):e.createCommentVNode("",!0)],6))}}),Rn=j._export_sfc(Hs,[["__scopeId","data-v-4d1cb297"]]),Us=Object.freeze(Object.defineProperty({__proto__:null,default:Rn},Symbol.toStringTag,{value:"Module"}));exports.PlanLoadError=Xe;exports.REPORT_EXPORT_FORMATS=at;exports.REPORT_PREVIEW_TOOLS=It;exports.ReportPagination=Tt;exports.ReportPreview=Rn;exports.ReportPreview$1=Us;exports.ReportPrintResourceError=ue;exports.ReportToolbar=Sn;exports.buildPrintDocument=bn;exports.buildWordHtml=Ca;exports.cloneReportSnapshot=pe;exports.createDefaultPdfExporter=Bn;exports.createFetchRequest=ya;exports.createPrintCalibrationPlan=Nn;exports.createReportStoragePreferences=fs;exports.joinReportIds=ha;exports.normalizeReportIds=Dt;exports.preparePrintResources=Mt;exports.printPlans=wn;exports.usePageWindow=vn;exports.usePrintExport=kn;exports.useZoom=hn;
|