@agile-team/mach-report 2.9.1 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/README.md +11 -7
  2. package/dist/ExcelBindingWizard-CjIiVox-.cjs +1 -0
  3. package/dist/ExcelBindingWizard-Dxm-K5HL.js +1240 -0
  4. package/dist/ParamEditor-D-Hf5xfO.cjs +1 -0
  5. package/dist/ParamEditor-DRGxzxeO.js +381 -0
  6. package/dist/ReportBatchPanel-BYgg0EDB.cjs +1 -0
  7. package/dist/ReportBatchPanel-Bby5yLzU.js +287 -0
  8. package/dist/ReportPreview-DWXROHBP.cjs +6 -0
  9. package/dist/ReportPreview-DiNXhQI0.js +4138 -0
  10. package/dist/ReportTemplateLibrary-C6CO7YCT.cjs +1 -0
  11. package/dist/ReportTemplateLibrary-DfzDXRvr.js +260 -0
  12. package/dist/RuleEditor-C2QsOHOs.cjs +1 -0
  13. package/dist/RuleEditor-D9wQHrkf.js +2024 -0
  14. package/dist/TemplateReviewPanel-BKofGrV9.js +222 -0
  15. package/dist/TemplateReviewPanel-DwtOcLue.cjs +1 -0
  16. package/dist/analytics.cjs +1 -1
  17. package/dist/analytics.d.cts +4 -0
  18. package/dist/analytics.d.ts +4 -0
  19. package/dist/analytics.js +40 -39
  20. package/dist/{assets-ahTRUXRk.cjs → assets-Bu6UohJx.cjs} +1 -1
  21. package/dist/{assets-DDsfEi8R.js → assets-DegqDNqY.js} +1 -1
  22. package/dist/batch-Bt3Fd27Z.cjs +1 -0
  23. package/dist/batch-mRqhhhjt.js +364 -0
  24. package/dist/{capabilities-Cm9hZ3uV.js → capabilities-CK_7hizc.js} +16 -16
  25. package/dist/capabilities-CsZ-pNHR.cjs +1 -0
  26. package/dist/computed-Bvk0W15F.js +521 -0
  27. package/dist/computed-CGV2a809.cjs +1 -0
  28. package/dist/config-B612mw0x.js +525 -0
  29. package/dist/config-BRoLo2oj.cjs +1 -0
  30. package/dist/designer.cjs +2 -2
  31. package/dist/designer.d.cts +695 -50
  32. package/dist/designer.d.ts +695 -50
  33. package/dist/designer.js +2213 -1748
  34. package/dist/index.cjs +8 -8
  35. package/dist/index.d.cts +205 -6
  36. package/dist/index.d.ts +205 -6
  37. package/dist/index.js +808 -1033
  38. package/dist/injection-keys-Db_DyLkm.cjs +1 -0
  39. package/dist/injection-keys-e85udZCp.js +7 -0
  40. package/dist/list-cell-BuYn4tGF.cjs +1 -0
  41. package/dist/list-cell-ClFra1zS.js +173 -0
  42. package/dist/matrix-DVyWiYsd.cjs +1 -0
  43. package/dist/matrix-yZsGnldA.js +227 -0
  44. package/dist/param-validation-BlHHXs6u.js +153 -0
  45. package/dist/param-validation-DCK039V1.cjs +1 -0
  46. package/dist/pdf.cjs +49 -49
  47. package/dist/pdf.d.cts +31 -1
  48. package/dist/pdf.d.ts +31 -1
  49. package/dist/pdf.js +4797 -4650
  50. package/dist/plugin-BDTU4D94.cjs +1 -0
  51. package/dist/plugin-Cd5G2QQn.js +22 -0
  52. package/dist/region-binding-workflow-CXDmt9Bs.js +977 -0
  53. package/dist/region-binding-workflow-DhQvu1co.cjs +3 -0
  54. package/dist/{report-params-B_VCihAh.js → report-params-B44imUd4.js} +1 -1
  55. package/dist/{report-params-CjWrjPl6.cjs → report-params-SJfhKgaX.cjs} +1 -1
  56. package/dist/server/node.d.cts +48 -5
  57. package/dist/server/node.d.ts +48 -5
  58. package/dist/server-node.cjs +1 -1
  59. package/dist/server-node.js +503 -317
  60. package/dist/server.cjs +1 -1
  61. package/dist/server.d.cts +252 -4
  62. package/dist/server.d.ts +252 -4
  63. package/dist/server.js +567 -469
  64. package/dist/style.css +1 -1
  65. package/dist/template-registry-WNXdkiET.js +506 -0
  66. package/dist/template-registry-ukBGlm8N.cjs +1 -0
  67. package/dist/template-review-BXp2oyqg.cjs +1 -0
  68. package/dist/template-review-BdcXSYbx.js +1616 -0
  69. package/dist/tree-BX380Rr7.cjs +1 -0
  70. package/dist/tree-CqcQ99NM.js +172 -0
  71. package/dist/useLocalDraft-C07SYRnC.js +11 -0
  72. package/dist/useLocalDraft-Yiw1wFgI.cjs +1 -0
  73. package/dist/{validate-DWPF7icl.js → validate-7s0yn6ii.js} +26 -26
  74. package/dist/validate-DsRiNw8h.cjs +1 -0
  75. package/dist/vue/async.d.cts +118 -6
  76. package/dist/vue/async.d.ts +118 -6
  77. package/dist/vue/index.d.cts +177 -11
  78. package/dist/vue/index.d.ts +177 -11
  79. package/dist/vue-async.cjs +1 -1
  80. package/dist/vue-async.js +5 -5
  81. package/dist/vue.cjs +1 -1
  82. package/dist/vue.js +116 -113
  83. package/dist/{import-template-CNMLJSQw.js → workbook-session-BKOTwcoq.js} +4290 -4227
  84. package/dist/{import-template-CpxunKVp.cjs → workbook-session-CLYLhZWu.cjs} +17 -17
  85. package/dist/worker.cjs +1 -1
  86. package/dist/worker.d.cts +9 -2
  87. package/dist/worker.d.ts +9 -2
  88. package/dist/worker.js +1 -1
  89. package/dist/xlsx.cjs +4 -2
  90. package/dist/xlsx.d.cts +159 -3
  91. package/dist/xlsx.d.ts +159 -3
  92. package/dist/xlsx.js +354 -192
  93. package/package.json +1 -1
  94. package/dist/ExcelBindingWizard-DiaxvWpQ.cjs +0 -1
  95. package/dist/ExcelBindingWizard-RLJIXKKG.js +0 -816
  96. package/dist/ReportPreview-B5ZNEasW.js +0 -4439
  97. package/dist/ReportPreview-DRtVPUYo.cjs +0 -6
  98. package/dist/RuleEditor-CskN5Fr3.cjs +0 -1
  99. package/dist/RuleEditor-CtJFzKuY.js +0 -1578
  100. package/dist/TemplateReviewPanel-C_Lmzis6.cjs +0 -1
  101. package/dist/TemplateReviewPanel-Cn32OY4_.js +0 -173
  102. package/dist/binding-preview-B5834rml.cjs +0 -2
  103. package/dist/binding-preview-ChXjN5L5.js +0 -649
  104. package/dist/capabilities-DYzWL7KS.cjs +0 -1
  105. package/dist/matrix-CNPDJxED.js +0 -745
  106. package/dist/matrix-Div9Ilh3.cjs +0 -1
  107. package/dist/param-validation-BWNjLcN0.js +0 -116
  108. package/dist/param-validation-CiTxFeZ8.cjs +0 -1
  109. package/dist/plugin-BWwIgZXV.js +0 -25
  110. package/dist/plugin-Dg-J1Rbm.cjs +0 -1
  111. package/dist/template-registry-CHMYZ7SD.cjs +0 -1
  112. package/dist/template-registry-R61AMCr0.js +0 -433
  113. package/dist/template-review-hvWWQFsi.js +0 -1027
  114. package/dist/template-review-jEcOfmGr.cjs +0 -1
  115. package/dist/validate-BDiMqkJC.cjs +0 -1
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),B=require("@agile-team/mach-report"),x=require("./designer.cjs"),M=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),C=["text","number","date","month","year","dateRange","select"],_={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 L(t){return JSON.parse(JSON.stringify(t))}function S(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(d=>({...d})):[]}}function T(t){const d={field:t.field,type:t.type};t.label&&(d.label=t.label),t.placeholder&&(d.placeholder=t.placeholder),t.required&&(d.required=!0),t.defaultEnabled&&(d.defaultValue=t.defaultValue);for(const s of["min","max"])t[s]!==""&&(d[s]=t.type==="number"?Number(t[s]):t[s]);for(const s of["minLength","maxLength"])t[s]!==""&&(d[s]=Number(t[s]));return t.type==="select"&&(d.options=t.options.map(s=>({...s}))),d}function R(t){const d=()=>JSON.stringify(t.document.template.params??[]),s=e.ref(d()),u=e.ref((t.document.template.params??[]).map(S)),p=e.ref(0),i=e.ref(""),n=e.computed(()=>({...x.PARAM_EDITOR_MESSAGES,...t.messages})),v=e.computed(()=>u.value.map(T)),b=e.ref(JSON.stringify(u.value)),l=e.computed(()=>JSON.stringify(u.value)!==b.value),h=e.computed(()=>d()!==s.value),f=e.computed(()=>B.validateReportParamDefinitions(v.value)),m=e.computed(()=>u.value[p.value]),V=e.computed(()=>f.value.filter(o=>o.path===`$.paramDefs.${p.value}`)),k=e.computed(()=>{const o=JSON.parse(s.value).map(y=>y.field),c=v.value.map(y=>y.field);return{added:c.filter(y=>y&&!o.includes(y)),removed:o.filter(y=>!c.includes(y))}});function E(){s.value=d(),u.value=(t.document.template.params??[]).map(S),p.value=Math.min(p.value,Math.max(0,u.value.length-1)),b.value=JSON.stringify(u.value),i.value=""}e.watch(d,()=>{l.value||E()});function N(){if(t.readonly)return;let o=u.value.length+1;for(;u.value.some(c=>c.field===`param${o}`);)o++;u.value.push(S({field:`param${o}`,type:"text"})),p.value=u.value.length-1}function D(){t.readonly||!m.value||(u.value.splice(p.value,1),p.value=Math.min(p.value,Math.max(0,u.value.length-1)))}function g(o){const c=p.value+o;if(t.readonly||c<0||c>=u.value.length)return;const y=u.value.splice(p.value,1)[0];u.value.splice(c,0,y),p.value=c}function r(o){t.readonly||!m.value||(m.value.type=o,m.value.min="",m.value.max="",m.value.minLength="",m.value.maxLength="")}function a(){if(t.readonly||h.value||f.value.length)return!1;try{return t.accept(L(v.value))?(s.value=JSON.stringify(v.value),b.value=JSON.stringify(u.value),i.value="",!0):(i.value=n.value.paramApplyFailed,!1)}catch(o){return i.value=o instanceof Error?o.message:String(o),!1}}return{m:n,rows:u,selected:p,current:m,definitions:v,issues:f,currentIssues:V,changes:k,pending:l,conflicted:h,error:i,reset:E,add:N,remove:D,move:g,setType:r,apply:a}}const Y=["aria-label"],O={class:"mr-param-editor__directory"},U=["aria-label"],w=["aria-pressed","onClick"],A={key:0},$=["disabled"],F={class:"mr-param-editor__main"},q={class:"mr-param-editor__heading"},P={class:"mr-param-editor__grid"},J=["aria-label","disabled"],I=["aria-label","disabled"],H=["value","aria-label","disabled"],j=["value"],z=["aria-label","disabled"],G={class:"mr-param-editor__checks"},W=["disabled"],K=["disabled"],Q={key:0},X=["aria-label","disabled"],Z=["value"],ee=["aria-label","type","placeholder","disabled"],te=["onUpdate:modelValue","aria-label","type","disabled"],ae=["onUpdate:modelValue","aria-label","disabled"],ne={key:0,class:"mr-param-editor__hint"},le={key:1,class:"mr-param-editor__options"},re={class:"mr-param-editor__option-head"},oe=["onUpdate:modelValue","aria-label","disabled"],ie=["onUpdate:modelValue","aria-label","disabled"],ue=["aria-label","disabled","onClick"],de=["disabled"],se={key:2,class:"mr-param-editor__errors",role:"alert"},me={class:"mr-param-editor__row-actions"},ce=["disabled"],pe=["disabled"],fe=["disabled"],ye={key:1,class:"mr-param-editor__empty"},ve=["disabled"],be={key:2,class:"mr-param-editor__impact"},ge={key:0},Ve={key:1},he={key:3,class:"mr-param-editor__errors",role:"alert"},Ee=["disabled"],ke=["disabled"],Ne=e.defineComponent({__name:"ParamEditor",props:{document:{},readonly:{type:Boolean},messages:{},accept:{type:Function}},emits:["dirty"],setup(t,{expose:d,emit:s}){const u=t,p=s,i=R(u),{m:n,rows:v,selected:b,current:l,currentIssues:h,changes:f,pending:m,conflicted:V,error:k}=i;e.watch(m,g=>p("dirty",g),{immediate:!0});function E(g){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}[g]}function N(){l.value&&!u.readonly&&l.value.options.push({value:"",label:""})}function D(g){u.readonly||l.value?.options.splice(g,1)}return d({pending:m,reset:i.reset,apply:i.apply}),(g,r)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-param-editor","aria-label":e.unref(n).paramsTool},[e.createElementVNode("aside",O,[e.createElementVNode("header",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).paramsDirectory),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(v).length),1)]),e.createElementVNode("nav",{"aria-label":e.unref(n).paramsDirectory},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(v),(a,o)=>(e.openBlock(),e.createElementBlock("button",{key:o,type:"button","aria-pressed":e.unref(b)===o,onClick:c=>b.value=o},[e.createElementVNode("strong",null,e.toDisplayString(a.label||a.field),1),e.createElementVNode("small",null,[e.createTextVNode(e.toDisplayString(a.field)+" · "+e.toDisplayString(E(a.type)),1),a.required?(e.openBlock(),e.createElementBlock("span",A," *")):e.createCommentVNode("",!0)])],8,w))),128))],8,U),e.createElementVNode("button",{type:"button",class:"mr-param-editor__add",disabled:t.readonly,onClick:r[0]||(r[0]=(...a)=>e.unref(i).add&&e.unref(i).add(...a))},"+ "+e.toDisplayString(e.unref(n).paramAdd),9,$),e.createElementVNode("p",null,e.toDisplayString(e.unref(n).paramsDescription),1)]),e.createElementVNode("div",F,[e.unref(l)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("header",q,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(l).label||e.unref(l).field),1),e.createElementVNode("code",null,e.toDisplayString(e.unref(_)[e.unref(l).type]),1)]),e.createElementVNode("span",{class:e.normalizeClass({"is-pending":e.unref(m)||e.unref(i).issues.value.length>0})},e.toDisplayString(e.unref(i).issues.value.length?e.unref(n).paramInvalid:e.unref(m)?e.unref(n).paramPending:e.unref(n).paramReady),3)]),e.createElementVNode("div",P,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramField),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[1]||(r[1]=a=>e.unref(l).field=a),"aria-label":e.unref(n).paramField,disabled:t.readonly,autocomplete:"off"},null,8,J),[[e.vModelText,e.unref(l).field]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramLabel),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[2]||(r[2]=a=>e.unref(l).label=a),"aria-label":e.unref(n).paramLabel,disabled:t.readonly},null,8,I),[[e.vModelText,e.unref(l).label]])]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramType),1),e.createElementVNode("select",{value:e.unref(l).type,"aria-label":e.unref(n).paramType,disabled:t.readonly,onChange:r[3]||(r[3]=a=>e.unref(i).setType(a.target.value))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(C),a=>(e.openBlock(),e.createElementBlock("option",{key:a,value:a},e.toDisplayString(E(a)),9,j))),128))],40,H)]),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(n).paramPlaceholder),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[4]||(r[4]=a=>e.unref(l).placeholder=a),"aria-label":e.unref(n).paramPlaceholder,disabled:t.readonly},null,8,z),[[e.vModelText,e.unref(l).placeholder]])]),e.createElementVNode("div",G,[e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[5]||(r[5]=a=>e.unref(l).required=a),type:"checkbox",disabled:t.readonly},null,8,W),[[e.vModelCheckbox,e.unref(l).required]]),e.createTextVNode(e.toDisplayString(e.unref(n).paramRequired),1)]),e.createElementVNode("label",null,[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":r[6]||(r[6]=a=>e.unref(l).defaultEnabled=a),type:"checkbox",disabled:t.readonly},null,8,K),[[e.vModelCheckbox,e.unref(l).defaultEnabled]]),e.createTextVNode(e.toDisplayString(e.unref(n).paramDefaultEnabled),1)])]),e.unref(l).defaultEnabled?(e.openBlock(),e.createElementBlock("label",Q,[e.createTextVNode(e.toDisplayString(e.unref(n).paramDefault),1),e.unref(l).type==="select"?e.withDirectives((e.openBlock(),e.createElementBlock("select",{key:0,"onUpdate:modelValue":r[7]||(r[7]=a=>e.unref(l).defaultValue=a),"aria-label":e.unref(n).paramDefault,disabled:t.readonly},[r[15]||(r[15]=e.createElementVNode("option",{value:""},null,-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(l).options,(a,o)=>(e.openBlock(),e.createElementBlock("option",{key:o,value:a.value},e.toDisplayString(a.label||a.value),9,Z))),128))],8,X)),[[e.vModelSelect,e.unref(l).defaultValue]]):e.withDirectives((e.openBlock(),e.createElementBlock("input",{key:1,"onUpdate:modelValue":r[8]||(r[8]=a=>e.unref(l).defaultValue=a),"aria-label":e.unref(n).paramDefault,type:["date","month","number"].includes(e.unref(l).type)?e.unref(l).type:"text",placeholder:e.unref(_)[e.unref(l).type],disabled:t.readonly},null,8,ee)),[[e.vModelDynamic,e.unref(l).defaultValue]])])):e.createCommentVNode("",!0),["number","date","month","year","dateRange"].includes(e.unref(l).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.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":o=>e.unref(l)[a]=o,"aria-label":a==="min"?e.unref(n).paramMinimum:e.unref(n).paramMaximum,type:e.unref(l).type==="dateRange"?"date":["date","month","number"].includes(e.unref(l).type)?e.unref(l).type:"text",disabled:t.readonly},null,8,te),[[e.vModelDynamic,e.unref(l)[a]]])])),64)):e.createCommentVNode("",!0),e.unref(l).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.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":o=>e.unref(l)[a]=o,type:"number",min:"0",step:"1","aria-label":a==="minLength"?e.unref(n).paramMinLength:e.unref(n).paramMaxLength,disabled:t.readonly},null,8,ae),[[e.vModelText,e.unref(l)[a]]])])),64)):e.createCommentVNode("",!0)]),e.unref(l).type==="dateRange"?(e.openBlock(),e.createElementBlock("p",ne,e.toDisplayString(e.unref(n).paramRangeHint),1)):e.createCommentVNode("",!0),e.unref(l).type==="select"?(e.openBlock(),e.createElementBlock("fieldset",le,[e.createElementVNode("legend",null,e.toDisplayString(e.unref(n).paramOptions),1),e.createElementVNode("div",re,[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(l).options,(a,o)=>(e.openBlock(),e.createElementBlock("div",{key:o,class:"mr-param-editor__option"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c=>a.value=c,"aria-label":`${e.unref(n).paramOptionValue} ${o+1}`,disabled:t.readonly},null,8,oe),[[e.vModelText,a.value]]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":c=>a.label=c,"aria-label":`${e.unref(n).paramOptionLabel} ${o+1}`,disabled:t.readonly},null,8,ie),[[e.vModelText,a.label]]),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(n).paramOptionRemove} ${o+1}`,disabled:t.readonly,onClick:c=>D(o)},"×",8,ue)]))),128)),e.createElementVNode("button",{type:"button",disabled:t.readonly,onClick:N},"+ "+e.toDisplayString(e.unref(n).paramOptionAdd),9,de)])):e.createCommentVNode("",!0),e.unref(h).length?(e.openBlock(),e.createElementBlock("ul",se,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h),(a,o)=>(e.openBlock(),e.createElementBlock("li",{key:o},e.toDisplayString(a.message),1))),128))])):e.createCommentVNode("",!0),e.createElementVNode("div",me,[e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(b)===0,onClick:r[9]||(r[9]=a=>e.unref(i).move(-1))},"↑ "+e.toDisplayString(e.unref(n).paramMoveUp),9,ce),e.createElementVNode("button",{type:"button",disabled:t.readonly||e.unref(b)===e.unref(v).length-1,onClick:r[10]||(r[10]=a=>e.unref(i).move(1))},"↓ "+e.toDisplayString(e.unref(n).paramMoveDown),9,pe),e.createElementVNode("button",{type:"button",class:"is-danger",disabled:t.readonly,onClick:r[11]||(r[11]=(...a)=>e.unref(i).remove&&e.unref(i).remove(...a))},e.toDisplayString(e.unref(n).paramRemove),9,fe)])],64)):(e.openBlock(),e.createElementBlock("div",ye,[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:r[12]||(r[12]=(...a)=>e.unref(i).add&&e.unref(i).add(...a))},"+ "+e.toDisplayString(e.unref(n).paramAdd),9,ve)])),e.unref(f).added.length||e.unref(f).removed.length?(e.openBlock(),e.createElementBlock("aside",be,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(n).paramChanges),1),e.unref(f).added.length?(e.openBlock(),e.createElementBlock("p",ge,[e.createTextVNode(e.toDisplayString(e.unref(n).paramAdded)+":",1),e.createElementVNode("code",null,e.toDisplayString(e.unref(f).added.join(", ")),1)])):e.createCommentVNode("",!0),e.unref(f).removed.length?(e.openBlock(),e.createElementBlock("p",Ve,[e.createTextVNode(e.toDisplayString(e.unref(n).paramRemoved)+":",1),e.createElementVNode("code",null,e.toDisplayString(e.unref(f).removed.join(", ")),1)])):e.createCommentVNode("",!0),e.createElementVNode("small",null,e.toDisplayString(e.unref(n).paramRenameHint),1)])):e.createCommentVNode("",!0),e.unref(V)||e.unref(k)?(e.openBlock(),e.createElementBlock("p",he,e.toDisplayString(e.unref(V)?e.unref(n).paramConflict:e.unref(k)),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",null,[e.createElementVNode("button",{type:"button",disabled:!e.unref(m)&&!e.unref(V),onClick:r[13]||(r[13]=(...a)=>e.unref(i).reset&&e.unref(i).reset(...a))},e.toDisplayString(e.unref(n).paramRestore),9,Ee),e.createElementVNode("button",{type:"button",class:"is-primary",disabled:t.readonly||!e.unref(m)||e.unref(V)||!!e.unref(i).issues.value.length,onClick:r[14]||(r[14]=(...a)=>e.unref(i).apply&&e.unref(i).apply(...a))},e.toDisplayString(e.unref(n).paramApply),9,ke)])])],8,Y))}}),De=M._export_sfc(Ne,[["__scopeId","data-v-58ededbb"]]);exports.default=De;
@@ -0,0 +1,381 @@
1
+ import { ref as U, computed as L, watch as F, defineComponent as I, openBlock as s, createElementBlock as u, unref as e, createElementVNode as n, toDisplayString as o, Fragment as R, renderList as Y, createTextVNode as g, createCommentVNode as f, normalizeClass as w, withDirectives as _, vModelText as O, vModelCheckbox as T, vModelSelect as B, vModelDynamic as J } from "vue";
2
+ import { validateReportParamDefinitions as H } from "@agile-team/mach-report";
3
+ import { PARAM_EDITOR_MESSAGES as j } from "./designer.js";
4
+ import { _ as z } from "./_plugin-vue_export-helper-8SL1F89S.js";
5
+ const G = ["text", "number", "date", "month", "year", "dateRange", "select"], q = { text: "string", number: "string → number", date: "YYYY-MM-DD", month: "YYYY-MM", year: "YYYY", dateRange: "YYYY-MM-DD/YYYY-MM-DD", select: "option.value" };
6
+ function W(a) {
7
+ return JSON.parse(JSON.stringify(a));
8
+ }
9
+ function P(a) {
10
+ return {
11
+ field: a.field,
12
+ label: a.label ?? "",
13
+ type: a.type ?? "text",
14
+ required: a.required === !0,
15
+ placeholder: a.placeholder ?? "",
16
+ defaultEnabled: a.defaultValue !== void 0,
17
+ defaultValue: a.defaultValue ?? "",
18
+ min: a.min === void 0 ? "" : String(a.min),
19
+ max: a.max === void 0 ? "" : String(a.max),
20
+ minLength: a.minLength === void 0 ? "" : String(a.minLength),
21
+ maxLength: a.maxLength === void 0 ? "" : String(a.maxLength),
22
+ options: a.options ? a.options.map((c) => ({ ...c })) : []
23
+ };
24
+ }
25
+ function K(a) {
26
+ const c = { field: a.field, type: a.type };
27
+ a.label && (c.label = a.label), a.placeholder && (c.placeholder = a.placeholder), a.required && (c.required = !0), a.defaultEnabled && (c.defaultValue = a.defaultValue);
28
+ for (const b of ["min", "max"])
29
+ a[b] !== "" && (c[b] = a.type === "number" ? Number(a[b]) : a[b]);
30
+ for (const b of ["minLength", "maxLength"]) a[b] !== "" && (c[b] = Number(a[b]));
31
+ return a.type === "select" && (c.options = a.options.map((b) => ({ ...b }))), c;
32
+ }
33
+ function Q(a) {
34
+ const c = () => JSON.stringify(a.document.template.params ?? []), b = U(c()), p = U((a.document.template.params ?? []).map(P)), h = U(0), m = U(""), t = L(() => ({ ...j, ...a.messages })), x = L(() => p.value.map(K)), V = U(JSON.stringify(p.value)), i = L(() => JSON.stringify(p.value) !== V.value), C = L(() => c() !== b.value), k = L(() => H(x.value)), y = L(() => p.value[h.value]), S = L(() => k.value.filter((d) => d.path === `$.paramDefs.${h.value}`)), N = L(() => {
35
+ const d = JSON.parse(b.value).map((M) => M.field), v = x.value.map((M) => M.field);
36
+ return { added: v.filter((M) => M && !d.includes(M)), removed: d.filter((M) => !v.includes(M)) };
37
+ });
38
+ function E() {
39
+ b.value = c(), p.value = (a.document.template.params ?? []).map(P), h.value = Math.min(h.value, Math.max(0, p.value.length - 1)), V.value = JSON.stringify(p.value), m.value = "";
40
+ }
41
+ F(c, () => {
42
+ i.value || E();
43
+ });
44
+ function A() {
45
+ if (a.readonly) return;
46
+ let d = p.value.length + 1;
47
+ for (; p.value.some((v) => v.field === `param${d}`); ) d++;
48
+ p.value.push(P({ field: `param${d}`, type: "text" })), h.value = p.value.length - 1;
49
+ }
50
+ function $() {
51
+ a.readonly || !y.value || (p.value.splice(h.value, 1), h.value = Math.min(h.value, Math.max(0, p.value.length - 1)));
52
+ }
53
+ function D(d) {
54
+ const v = h.value + d;
55
+ if (a.readonly || v < 0 || v >= p.value.length) return;
56
+ const M = p.value.splice(h.value, 1)[0];
57
+ p.value.splice(v, 0, M), h.value = v;
58
+ }
59
+ function r(d) {
60
+ a.readonly || !y.value || (y.value.type = d, y.value.min = "", y.value.max = "", y.value.minLength = "", y.value.maxLength = "");
61
+ }
62
+ function l() {
63
+ if (a.readonly || C.value || k.value.length) return !1;
64
+ try {
65
+ return a.accept(W(x.value)) ? (b.value = JSON.stringify(x.value), V.value = JSON.stringify(p.value), m.value = "", !0) : (m.value = t.value.paramApplyFailed, !1);
66
+ } catch (d) {
67
+ return m.value = d instanceof Error ? d.message : String(d), !1;
68
+ }
69
+ }
70
+ return { m: t, rows: p, selected: h, current: y, definitions: x, issues: k, currentIssues: S, changes: N, pending: i, conflicted: C, error: m, reset: E, add: A, remove: $, move: D, setType: r, apply: l };
71
+ }
72
+ const X = ["aria-label"], Z = { class: "mr-param-editor__directory" }, ee = ["aria-label"], ae = ["aria-pressed", "onClick"], le = { key: 0 }, te = ["disabled"], ne = { class: "mr-param-editor__main" }, ie = { class: "mr-param-editor__heading" }, oe = { class: "mr-param-editor__grid" }, re = ["aria-label", "disabled"], de = ["aria-label", "disabled"], se = ["value", "aria-label", "disabled"], ue = ["value"], me = ["aria-label", "disabled"], pe = { class: "mr-param-editor__checks" }, ce = ["disabled"], be = ["disabled"], ye = { key: 0 }, ve = ["aria-label", "disabled"], he = ["value"], ge = ["aria-label", "type", "placeholder", "disabled"], fe = ["onUpdate:modelValue", "aria-label", "type", "disabled"], _e = ["onUpdate:modelValue", "aria-label", "disabled"], ke = {
73
+ key: 0,
74
+ class: "mr-param-editor__hint"
75
+ }, Me = {
76
+ key: 1,
77
+ class: "mr-param-editor__options"
78
+ }, xe = { class: "mr-param-editor__option-head" }, Ve = ["onUpdate:modelValue", "aria-label", "disabled"], De = ["onUpdate:modelValue", "aria-label", "disabled"], Le = ["aria-label", "disabled", "onClick"], Re = ["disabled"], Ye = {
79
+ key: 2,
80
+ class: "mr-param-editor__errors",
81
+ role: "alert"
82
+ }, Se = { class: "mr-param-editor__row-actions" }, Oe = ["disabled"], Ce = ["disabled"], Ee = ["disabled"], Ue = {
83
+ key: 1,
84
+ class: "mr-param-editor__empty"
85
+ }, Ne = ["disabled"], Ae = {
86
+ key: 2,
87
+ class: "mr-param-editor__impact"
88
+ }, $e = { key: 0 }, Pe = { key: 1 }, Te = {
89
+ key: 3,
90
+ class: "mr-param-editor__errors",
91
+ role: "alert"
92
+ }, Je = ["disabled"], qe = ["disabled"], Fe = /* @__PURE__ */ I({
93
+ __name: "ParamEditor",
94
+ props: {
95
+ document: {},
96
+ readonly: { type: Boolean },
97
+ messages: {},
98
+ accept: { type: Function }
99
+ },
100
+ emits: ["dirty"],
101
+ setup(a, { expose: c, emit: b }) {
102
+ const p = a, h = b, m = Q(p), { m: t, rows: x, selected: V, current: i, currentIssues: C, changes: k, pending: y, conflicted: S, error: N } = m;
103
+ F(y, (D) => h("dirty", D), { immediate: !0 });
104
+ function E(D) {
105
+ return { text: t.value.paramText, number: t.value.paramNumber, date: t.value.paramDate, month: t.value.paramMonth, year: t.value.paramYear, dateRange: t.value.paramDateRange, select: t.value.paramSelect }[D];
106
+ }
107
+ function A() {
108
+ i.value && !p.readonly && i.value.options.push({ value: "", label: "" });
109
+ }
110
+ function $(D) {
111
+ p.readonly || i.value?.options.splice(D, 1);
112
+ }
113
+ return c({ pending: y, reset: m.reset, apply: m.apply }), (D, r) => (s(), u("section", {
114
+ class: "mr-param-editor",
115
+ "aria-label": e(t).paramsTool
116
+ }, [
117
+ n("aside", Z, [
118
+ n("header", null, [
119
+ n("strong", null, o(e(t).paramsDirectory), 1),
120
+ n("span", null, o(e(x).length), 1)
121
+ ]),
122
+ n("nav", {
123
+ "aria-label": e(t).paramsDirectory
124
+ }, [
125
+ (s(!0), u(R, null, Y(e(x), (l, d) => (s(), u("button", {
126
+ key: d,
127
+ type: "button",
128
+ "aria-pressed": e(V) === d,
129
+ onClick: (v) => V.value = d
130
+ }, [
131
+ n("strong", null, o(l.label || l.field), 1),
132
+ n("small", null, [
133
+ g(o(l.field) + " · " + o(E(l.type)), 1),
134
+ l.required ? (s(), u("span", le, " *")) : f("", !0)
135
+ ])
136
+ ], 8, ae))), 128))
137
+ ], 8, ee),
138
+ n("button", {
139
+ type: "button",
140
+ class: "mr-param-editor__add",
141
+ disabled: a.readonly,
142
+ onClick: r[0] || (r[0] = //@ts-ignore
143
+ (...l) => e(m).add && e(m).add(...l))
144
+ }, "+ " + o(e(t).paramAdd), 9, te),
145
+ n("p", null, o(e(t).paramsDescription), 1)
146
+ ]),
147
+ n("div", ne, [
148
+ e(i) ? (s(), u(R, { key: 0 }, [
149
+ n("header", ie, [
150
+ n("div", null, [
151
+ n("strong", null, o(e(i).label || e(i).field), 1),
152
+ n("code", null, o(e(q)[e(i).type]), 1)
153
+ ]),
154
+ n("span", {
155
+ class: w({ "is-pending": e(y) || e(m).issues.value.length > 0 })
156
+ }, o(e(m).issues.value.length ? e(t).paramInvalid : e(y) ? e(t).paramPending : e(t).paramReady), 3)
157
+ ]),
158
+ n("div", oe, [
159
+ n("label", null, [
160
+ g(o(e(t).paramField), 1),
161
+ _(n("input", {
162
+ "onUpdate:modelValue": r[1] || (r[1] = (l) => e(i).field = l),
163
+ "aria-label": e(t).paramField,
164
+ disabled: a.readonly,
165
+ autocomplete: "off"
166
+ }, null, 8, re), [
167
+ [O, e(i).field]
168
+ ])
169
+ ]),
170
+ n("label", null, [
171
+ g(o(e(t).paramLabel), 1),
172
+ _(n("input", {
173
+ "onUpdate:modelValue": r[2] || (r[2] = (l) => e(i).label = l),
174
+ "aria-label": e(t).paramLabel,
175
+ disabled: a.readonly
176
+ }, null, 8, de), [
177
+ [O, e(i).label]
178
+ ])
179
+ ]),
180
+ n("label", null, [
181
+ g(o(e(t).paramType), 1),
182
+ n("select", {
183
+ value: e(i).type,
184
+ "aria-label": e(t).paramType,
185
+ disabled: a.readonly,
186
+ onChange: r[3] || (r[3] = (l) => e(m).setType(l.target.value))
187
+ }, [
188
+ (s(!0), u(R, null, Y(e(G), (l) => (s(), u("option", {
189
+ key: l,
190
+ value: l
191
+ }, o(E(l)), 9, ue))), 128))
192
+ ], 40, se)
193
+ ]),
194
+ n("label", null, [
195
+ g(o(e(t).paramPlaceholder), 1),
196
+ _(n("input", {
197
+ "onUpdate:modelValue": r[4] || (r[4] = (l) => e(i).placeholder = l),
198
+ "aria-label": e(t).paramPlaceholder,
199
+ disabled: a.readonly
200
+ }, null, 8, me), [
201
+ [O, e(i).placeholder]
202
+ ])
203
+ ]),
204
+ n("div", pe, [
205
+ n("label", null, [
206
+ _(n("input", {
207
+ "onUpdate:modelValue": r[5] || (r[5] = (l) => e(i).required = l),
208
+ type: "checkbox",
209
+ disabled: a.readonly
210
+ }, null, 8, ce), [
211
+ [T, e(i).required]
212
+ ]),
213
+ g(o(e(t).paramRequired), 1)
214
+ ]),
215
+ n("label", null, [
216
+ _(n("input", {
217
+ "onUpdate:modelValue": r[6] || (r[6] = (l) => e(i).defaultEnabled = l),
218
+ type: "checkbox",
219
+ disabled: a.readonly
220
+ }, null, 8, be), [
221
+ [T, e(i).defaultEnabled]
222
+ ]),
223
+ g(o(e(t).paramDefaultEnabled), 1)
224
+ ])
225
+ ]),
226
+ e(i).defaultEnabled ? (s(), u("label", ye, [
227
+ g(o(e(t).paramDefault), 1),
228
+ e(i).type === "select" ? _((s(), u("select", {
229
+ key: 0,
230
+ "onUpdate:modelValue": r[7] || (r[7] = (l) => e(i).defaultValue = l),
231
+ "aria-label": e(t).paramDefault,
232
+ disabled: a.readonly
233
+ }, [
234
+ r[15] || (r[15] = n("option", { value: "" }, null, -1)),
235
+ (s(!0), u(R, null, Y(e(i).options, (l, d) => (s(), u("option", {
236
+ key: d,
237
+ value: l.value
238
+ }, o(l.label || l.value), 9, he))), 128))
239
+ ], 8, ve)), [
240
+ [B, e(i).defaultValue]
241
+ ]) : _((s(), u("input", {
242
+ key: 1,
243
+ "onUpdate:modelValue": r[8] || (r[8] = (l) => e(i).defaultValue = l),
244
+ "aria-label": e(t).paramDefault,
245
+ type: ["date", "month", "number"].includes(e(i).type) ? e(i).type : "text",
246
+ placeholder: e(q)[e(i).type],
247
+ disabled: a.readonly
248
+ }, null, 8, ge)), [
249
+ [J, e(i).defaultValue]
250
+ ])
251
+ ])) : f("", !0),
252
+ ["number", "date", "month", "year", "dateRange"].includes(e(i).type) ? (s(), u(R, { key: 1 }, Y(["min", "max"], (l) => n("label", { key: l }, [
253
+ g(o(l === "min" ? e(t).paramMinimum : e(t).paramMaximum), 1),
254
+ _(n("input", {
255
+ "onUpdate:modelValue": (d) => e(i)[l] = d,
256
+ "aria-label": l === "min" ? e(t).paramMinimum : e(t).paramMaximum,
257
+ type: e(i).type === "dateRange" ? "date" : ["date", "month", "number"].includes(e(i).type) ? e(i).type : "text",
258
+ disabled: a.readonly
259
+ }, null, 8, fe), [
260
+ [J, e(i)[l]]
261
+ ])
262
+ ])), 64)) : f("", !0),
263
+ e(i).type === "text" ? (s(), u(R, { key: 2 }, Y(["minLength", "maxLength"], (l) => n("label", { key: l }, [
264
+ g(o(l === "minLength" ? e(t).paramMinLength : e(t).paramMaxLength), 1),
265
+ _(n("input", {
266
+ "onUpdate:modelValue": (d) => e(i)[l] = d,
267
+ type: "number",
268
+ min: "0",
269
+ step: "1",
270
+ "aria-label": l === "minLength" ? e(t).paramMinLength : e(t).paramMaxLength,
271
+ disabled: a.readonly
272
+ }, null, 8, _e), [
273
+ [O, e(i)[l]]
274
+ ])
275
+ ])), 64)) : f("", !0)
276
+ ]),
277
+ e(i).type === "dateRange" ? (s(), u("p", ke, o(e(t).paramRangeHint), 1)) : f("", !0),
278
+ e(i).type === "select" ? (s(), u("fieldset", Me, [
279
+ n("legend", null, o(e(t).paramOptions), 1),
280
+ n("div", xe, [
281
+ n("span", null, o(e(t).paramOptionValue), 1),
282
+ n("span", null, o(e(t).paramOptionLabel), 1)
283
+ ]),
284
+ (s(!0), u(R, null, Y(e(i).options, (l, d) => (s(), u("div", {
285
+ key: d,
286
+ class: "mr-param-editor__option"
287
+ }, [
288
+ _(n("input", {
289
+ "onUpdate:modelValue": (v) => l.value = v,
290
+ "aria-label": `${e(t).paramOptionValue} ${d + 1}`,
291
+ disabled: a.readonly
292
+ }, null, 8, Ve), [
293
+ [O, l.value]
294
+ ]),
295
+ _(n("input", {
296
+ "onUpdate:modelValue": (v) => l.label = v,
297
+ "aria-label": `${e(t).paramOptionLabel} ${d + 1}`,
298
+ disabled: a.readonly
299
+ }, null, 8, De), [
300
+ [O, l.label]
301
+ ]),
302
+ n("button", {
303
+ type: "button",
304
+ "aria-label": `${e(t).paramOptionRemove} ${d + 1}`,
305
+ disabled: a.readonly,
306
+ onClick: (v) => $(d)
307
+ }, "×", 8, Le)
308
+ ]))), 128)),
309
+ n("button", {
310
+ type: "button",
311
+ disabled: a.readonly,
312
+ onClick: A
313
+ }, "+ " + o(e(t).paramOptionAdd), 9, Re)
314
+ ])) : f("", !0),
315
+ e(C).length ? (s(), u("ul", Ye, [
316
+ (s(!0), u(R, null, Y(e(C), (l, d) => (s(), u("li", { key: d }, o(l.message), 1))), 128))
317
+ ])) : f("", !0),
318
+ n("div", Se, [
319
+ n("button", {
320
+ type: "button",
321
+ disabled: a.readonly || e(V) === 0,
322
+ onClick: r[9] || (r[9] = (l) => e(m).move(-1))
323
+ }, "↑ " + o(e(t).paramMoveUp), 9, Oe),
324
+ n("button", {
325
+ type: "button",
326
+ disabled: a.readonly || e(V) === e(x).length - 1,
327
+ onClick: r[10] || (r[10] = (l) => e(m).move(1))
328
+ }, "↓ " + o(e(t).paramMoveDown), 9, Ce),
329
+ n("button", {
330
+ type: "button",
331
+ class: "is-danger",
332
+ disabled: a.readonly,
333
+ onClick: r[11] || (r[11] = //@ts-ignore
334
+ (...l) => e(m).remove && e(m).remove(...l))
335
+ }, o(e(t).paramRemove), 9, Ee)
336
+ ])
337
+ ], 64)) : (s(), u("div", Ue, [
338
+ n("strong", null, o(e(t).paramEmpty), 1),
339
+ n("p", null, o(e(t).paramEmptyHint), 1),
340
+ n("button", {
341
+ type: "button",
342
+ disabled: a.readonly,
343
+ onClick: r[12] || (r[12] = //@ts-ignore
344
+ (...l) => e(m).add && e(m).add(...l))
345
+ }, "+ " + o(e(t).paramAdd), 9, Ne)
346
+ ])),
347
+ e(k).added.length || e(k).removed.length ? (s(), u("aside", Ae, [
348
+ n("strong", null, o(e(t).paramChanges), 1),
349
+ e(k).added.length ? (s(), u("p", $e, [
350
+ g(o(e(t).paramAdded) + ":", 1),
351
+ n("code", null, o(e(k).added.join(", ")), 1)
352
+ ])) : f("", !0),
353
+ e(k).removed.length ? (s(), u("p", Pe, [
354
+ g(o(e(t).paramRemoved) + ":", 1),
355
+ n("code", null, o(e(k).removed.join(", ")), 1)
356
+ ])) : f("", !0),
357
+ n("small", null, o(e(t).paramRenameHint), 1)
358
+ ])) : f("", !0),
359
+ e(S) || e(N) ? (s(), u("p", Te, o(e(S) ? e(t).paramConflict : e(N)), 1)) : f("", !0),
360
+ n("footer", null, [
361
+ n("button", {
362
+ type: "button",
363
+ disabled: !e(y) && !e(S),
364
+ onClick: r[13] || (r[13] = //@ts-ignore
365
+ (...l) => e(m).reset && e(m).reset(...l))
366
+ }, o(e(t).paramRestore), 9, Je),
367
+ n("button", {
368
+ type: "button",
369
+ class: "is-primary",
370
+ disabled: a.readonly || !e(y) || e(S) || !!e(m).issues.value.length,
371
+ onClick: r[14] || (r[14] = //@ts-ignore
372
+ (...l) => e(m).apply && e(m).apply(...l))
373
+ }, o(e(t).paramApply), 9, qe)
374
+ ])
375
+ ])
376
+ ], 8, X));
377
+ }
378
+ }), je = /* @__PURE__ */ z(Fe, [["__scopeId", "data-v-58ededbb"]]);
379
+ export {
380
+ je as default
381
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),T=require("./config-BRoLo2oj.cjs"),O=require("@agile-team/mach-report"),w=require("./batch-Bt3Fd27Z.cjs"),F=require("./designer.cjs"),K=require("./_plugin-vue_export-helper-BLmdZLlg.cjs");function L(n){const c={};return!n||typeof n!="object"||(typeof n.instanceId=="string"&&n.instanceId.length>0&&n.instanceId.length<=512&&(c.instanceId=n.instanceId),typeof n.label=="string"&&(c.label=n.label.slice(0,512))),c}function U(n){return Object.fromEntries((Array.isArray(n)?n:[]).filter(c=>c&&typeof c.field=="string").map(c=>[c.field,c.defaultValue??""]))}function A(n){return(n instanceof Error?n.message:String(n)).slice(0,1e3)}function j(n){try{return{cases:w.snapshotReportBatchCases(n.initialCases??[],n.maxCases??100),error:""}}catch(c){return{cases:[],error:A(c)}}}function z(n){let c=0;const _=a=>({key:++c,item:{id:a.id,params:{...a.params}},status:"pending"}),C=j(n),o=e.ref(C.cases.map(_)),l=e.ref(!1),u=e.ref(!1),V=e.ref(!1),d=e.ref(C.error),k=e.ref(),E=e.ref({completed:0,total:0,failed:0,cancelled:0}),g=e.computed(()=>({...F.REPORT_BATCH_MESSAGES,...n.messages})),p=e.computed(()=>o.value.map(a=>O.validateReportParams(n.paramDefs,a.item.params))),D=e.computed(()=>o.value.filter(a=>a.status==="failed").length),b=e.computed(()=>n.maxCases??100);let v,s=0;function y(a=U(n.paramDefs)){let t=c+1;for(;o.value.some(r=>r.item.id===`case-${t}`);)t++;return{id:`case-${t}`,params:{...a}}}function h(a){if(!(n.readonly||l.value)){if(o.value.length>=b.value){d.value=g.value.batchLimit.replace("{count}",String(b.value));return}o.value.push(_(y(a?.item.params))),d.value=""}}function I(a){!l.value&&!n.readonly&&(o.value=o.value.filter(t=>t.key!==a))}function M(a,t){if(l.value||n.readonly)return;const r=o.value.find(i=>i.key===a);r&&(r.item.params={...t},r.status="pending",delete r.receipt,delete r.error)}function N(){l.value&&(u.value=!0,v?.abort())}function x(a){return o.value.filter(t=>!a||t.status==="failed")}function q(a){const t=a.map(i=>O.validateReportParams(n.paramDefs,i.item.params)),r=t.findIndex(i=>!i.ok);if(r>=0){k.value=a[r].key,d.value=g.value.batchInvalid;return}return a.map((i,S)=>({id:i.item.id,params:{...t[S].values}}))}function R(a,t){a.status=t.status,t.status==="completed"&&(a.receipt=t.value),t.status==="failed"&&(a.error=t.error.message.slice(0,1e3))}async function P(a,t,r,i,S){i===s&&(a.status="running");try{const m=L(await S(t,r));return i===s&&(a.receipt=m,a.status="completed"),m}catch(m){throw i===s&&(a.status=r.signal.aborted?"cancelled":"failed",a.error=A(m)),m}}async function f(a=!1){if(n.readonly||l.value)return;const t=x(a);if(!t.length)return;V.value=!0,d.value="",k.value=void 0;const r=q(t);if(!r)return;const i=++s,S=n.execute;v=new AbortController,l.value=!0,u.value=!1,E.value={completed:0,total:t.length,failed:0,cancelled:0};for(const m of t)m.status="pending",delete m.receipt,delete m.error;try{const m=await w.runReportBatch(r,(B,$)=>P(t[$.index],B,$,i,S),{concurrency:n.concurrency,maxCases:b.value,signal:v.signal,onProgress:B=>{i===s&&(E.value=B)}});i===s&&m.forEach((B,$)=>R(t[$],B))}catch(m){i===s&&(d.value=A(m))}finally{i===s&&(l.value=!1,u.value=!1,v=void 0)}}return e.watch(()=>[JSON.stringify(n.paramDefs),n.execute,n.readonly,n.concurrency,n.maxCases],()=>{l.value&&(N(),d.value=g.value.batchChanged)}),e.onBeforeUnmount(()=>{s++,v?.abort()}),{m:g,rows:o,validations:p,running:l,cancelling:u,attempted:V,error:d,progress:E,failures:D,maximum:b,invalidKey:k,add:h,remove:I,setParams:M,cancel:N,run:f}}const G=["aria-label","aria-busy"],H={class:"mr-batch__heading"},J=["disabled"],Q={key:0,class:"mr-batch__empty"},W={key:1,class:"mr-batch__rows"},X={class:"mr-batch__status",role:"status"},Y={class:"mr-batch__row-actions"},Z=["aria-label","disabled","onClick"],ee=["aria-label","disabled","onClick"],te={key:0,class:"mr-batch__row-error",role:"alert"},ae={key:1,class:"mr-batch__receipt"},ne=["onClick"],le={key:2,class:"mr-batch__error",role:"alert"},re={class:"mr-batch__progress","aria-live":"polite"},se=["value","max","aria-label"],ie={key:1},oe={class:"mr-batch__actions"},ce=["disabled"],ue=["disabled"],de=["disabled"],me=["aria-label"],fe=["disabled"],pe=["disabled"],ve=e.defineComponent({__name:"ReportBatchPanel",props:{paramDefs:{},execute:{type:Function},initialCases:{},readonly:{type:Boolean},concurrency:{},maxCases:{},messages:{},paramMessages:{}},emits:["open-instance"],setup(n,{emit:c}){const _=n,C=c,o=z(_),{m:l,rows:u,validations:V,running:d,cancelling:k,attempted:E,error:g,progress:p,failures:D,maximum:b}=o,v=e.ref(),s=e.ref(1),y=10,h=e.computed(()=>Math.max(1,Math.ceil(u.value.length/y))),I=e.computed(()=>u.value.slice((s.value-1)*y,s.value*y).map((f,a)=>({row:f,index:(s.value-1)*y+a}))),M=e.computed(()=>l.value.batchPage.replace("{page}",String(s.value)).replace("{pages}",String(h.value)).replace("{total}",String(u.value.length)));e.watch(h,f=>{s.value=Math.min(s.value,f)});const N=e.computed(()=>({...T.DEFAULT_MESSAGES,..._.paramMessages})),x=e.computed(()=>l.value.batchProgress.replace("{completed}",String(p.value.completed)).replace("{total}",String(p.value.total)).replace("{failed}",String(p.value.failed)).replace("{cancelled}",String(p.value.cancelled)));function q(f){return{pending:l.value.batchPending,running:l.value.batchRunning,completed:l.value.batchCompleted,failed:l.value.batchFailed,cancelled:l.value.batchCancelled}[f.status]}async function R(f){const a=u.value.length;o.add(f),u.value.length!==a&&(s.value=h.value,await e.nextTick(),v.value?.querySelector(".mr-batch__row:last-child .mrp-param-input")?.focus())}async function P(f=!1){const a=o.run(f);if(o.invalidKey.value!==void 0){const t=u.value.findIndex(r=>r.key===o.invalidKey.value);s.value=Math.max(1,Math.floor(t/y)+1),await e.nextTick(),v.value?.querySelector('[aria-invalid="true"]')?.focus()}await a}return(f,a)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"root",ref:v,class:"mr-batch","aria-label":e.unref(l).batchTitle,"aria-busy":e.unref(d)},[e.createElementVNode("header",H,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(l).batchTitle),1),e.createElementVNode("p",null,e.toDisplayString(e.unref(l).batchDescription),1)]),e.createElementVNode("button",{type:"button",disabled:n.readonly||e.unref(d)||e.unref(u).length>=e.unref(b),onClick:a[0]||(a[0]=t=>R())},"+ "+e.toDisplayString(e.unref(l).batchAdd),9,J)]),e.unref(u).length?(e.openBlock(),e.createElementBlock("div",W,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,({row:t,index:r})=>(e.openBlock(),e.createElementBlock("article",{key:t.key,class:e.normalizeClass(["mr-batch__row",`is-${t.status}`])},[e.createElementVNode("header",null,[e.createElementVNode("div",null,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(l).batchCase)+" "+e.toDisplayString(r+1),1),e.createElementVNode("span",X,e.toDisplayString(q(t)),1)]),e.createElementVNode("div",Y,[e.createElementVNode("button",{type:"button","aria-label":`${e.unref(l).batchDuplicate} ${r+1}`,disabled:n.readonly||e.unref(d)||e.unref(u).length>=e.unref(b),onClick:i=>R(t)},e.toDisplayString(e.unref(l).batchDuplicate),9,Z),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(l).batchRemove} ${r+1}`,disabled:n.readonly||e.unref(d),onClick:i=>e.unref(o).remove(t.key)},"×",8,ee)])]),e.createVNode(T.ReportParamPanel,{defs:n.paramDefs,"model-value":t.item.params,messages:N.value,attempted:e.unref(E),issues:e.unref(V)[r]?.issues,"show-actions":!1,"show-title":!1,disabled:n.readonly||e.unref(d),"onUpdate:modelValue":i=>e.unref(o).setParams(t.key,i)},null,8,["defs","model-value","messages","attempted","issues","disabled","onUpdate:modelValue"]),t.status==="failed"&&t.error?(e.openBlock(),e.createElementBlock("p",te,e.toDisplayString(t.error),1)):e.createCommentVNode("",!0),t.status==="completed"?(e.openBlock(),e.createElementBlock("div",ae,[e.createElementVNode("span",null,e.toDisplayString(t.receipt?.label||(t.receipt?.instanceId?t.receipt.instanceId:e.unref(l).batchNoInstance)),1),t.receipt?.instanceId?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:i=>C("open-instance",{...t.receipt})},e.toDisplayString(e.unref(l).batchOpen)+" ↗",9,ne)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)],2))),128))])):(e.openBlock(),e.createElementBlock("div",Q,e.toDisplayString(e.unref(l).batchEmpty),1)),e.unref(g)?(e.openBlock(),e.createElementBlock("p",le,e.toDisplayString(e.unref(g)),1)):e.createCommentVNode("",!0),e.createElementVNode("footer",null,[e.createElementVNode("div",re,[e.unref(p).total?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("progress",{value:e.unref(p).completed,max:e.unref(p).total,"aria-label":x.value},null,8,se),e.createElementVNode("span",null,e.toDisplayString(x.value),1)],64)):(e.openBlock(),e.createElementBlock("span",ie,e.toDisplayString(e.unref(u).length)+" / "+e.toDisplayString(e.unref(b)),1))]),e.createElementVNode("div",oe,[e.unref(D)&&!e.unref(d)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:n.readonly,onClick:a[1]||(a[1]=t=>P(!0))},e.toDisplayString(e.unref(l).batchRetry)+" ("+e.toDisplayString(e.unref(D))+")",9,ce)):e.createCommentVNode("",!0),e.unref(d)?(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:e.unref(k),onClick:a[2]||(a[2]=(...t)=>e.unref(o).cancel&&e.unref(o).cancel(...t))},e.toDisplayString(e.unref(k)?e.unref(l).batchCancelling:e.unref(l).batchCancel),9,ue)):(e.openBlock(),e.createElementBlock("button",{key:2,type:"button",class:"is-primary",disabled:n.readonly||!e.unref(u).length,onClick:a[3]||(a[3]=t=>P())},e.toDisplayString(e.unref(l).batchRun),9,de))]),h.value>1?(e.openBlock(),e.createElementBlock("nav",{key:0,class:"mr-batch__pagination","aria-label":e.unref(l).batchPages},[e.createElementVNode("span",null,e.toDisplayString(M.value),1),e.createElementVNode("button",{type:"button",disabled:s.value<=1,onClick:a[4]||(a[4]=t=>s.value--)},e.toDisplayString(e.unref(l).batchPrevious),9,fe),e.createElementVNode("button",{type:"button",disabled:s.value>=h.value,onClick:a[5]||(a[5]=t=>s.value++)},e.toDisplayString(e.unref(l).batchNext),9,pe)],8,me)):e.createCommentVNode("",!0)])],8,G))}}),be=K._export_sfc(ve,[["__scopeId","data-v-eea7fd86"]]);exports.default=be;