@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
package/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <img src="https://img.shields.io/badge/source-2.9.1-2563eb" alt="Source version 2.9.1" />
11
+ <img src="https://img.shields.io/badge/source-2.11.0-2563eb" alt="Source version 2.11.0" />
12
12
  <a href="https://www.npmjs.com/package/@agile-team/mach-report"><img src="https://img.shields.io/npm/v/@agile-team/mach-report?label=npm&color=3178c6" alt="npm version" /></a>
13
13
  <a href="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml"><img src="https://github.com/ChenyCHENYU/MachReport/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
14
14
  <a href="https://github.com/ChenyCHENYU/MachReport/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-authorization%20required-dc2626" alt="Authorization required" /></a>
@@ -44,8 +44,8 @@ MachReport 把模板、数据和输出分开:用 TypeScript DSL 或 JSON 定
44
44
  | 明细与汇总 | 自动分页、多级分组与加权小计、业务键主从明细、动态矩阵、重复页眉页脚 |
45
45
  | 数据呈现 | 表头与内容独立对齐、类型自动对齐、数值 / 百分比 / 日期格式化、条件格式 |
46
46
  | 预览交互 | 右下分页、分组导出菜单、内容搜索与字段目录、跨页选区、冻结窗格、Sheet 导航 |
47
- | 内容编辑 | 默认只读;双击与批量粘贴、原子保存、撤销 / 重做、恢复与变更清单 |
48
- | Excel 导入 | 多 Sheet、完整宽表、合并单元格、基础样式与缓存公式值转换为可复用模板 |
47
+ | 内容编辑 | 默认只读;双击与批量粘贴、原子保存、编辑后重算、撤销 / 重做、恢复与变更清单 |
48
+ | Excel 导入 | 多 Sheet 会话复用、可取消预检、完整宽表、合并样式与缓存公式值转换为模板 |
49
49
  | 模板配置 | 可视化画布、Excel 业务绑定向导、计算与规则、变更对比与发布验收、CAS 历史 / 回滚 |
50
50
  | 输出 | 浏览器打印、HTML、PDF、真正的 `.xlsx`、逐页 PNG、Word 兼容 HTML `.doc` |
51
51
  | 工程接入 | 局部组件、全局插件、异步入口、分层配置、结构化错误与导出告警 |
@@ -58,16 +58,19 @@ MachReport 把模板、数据和输出分开:用 TypeScript DSL 或 JSON 定
58
58
 
59
59
  | 工作 | 包内提供 | 宿主只需提供 |
60
60
  | --- | --- | --- |
61
- | 可视化设计 | 毫米画布、拖动 / 缩放 / 吸附、组件层级、列宽 / 顺序、多层表头 | 模板文档与保存回调 |
61
+ | 可视化设计 | 毫米画布、样例对齐、适宽 / 选区、多选对齐 / 分布、组件锁定、列宽与多层表头 | 模板文档与保存回调 |
62
62
  | Excel 业务化 | 选Sheet → 标题 / 表头 / 明细 / 页尾区域 → 字段映射 → 预览,支持重开会话 | 工作簿、数据集与字段契约 |
63
63
  | 计算与复杂单据 | 声明式表达式、精确十进制、多级分组、主从关系与动态矩阵 | 业务数据与口径 |
64
64
  | 发布验收 | 变更分类、字段依赖检查、显式样例、服务端真实PDF/XLSX编码 | 验收样例、字体、原子CAS存储 |
65
- | 大任务 | 逐页生成、增量编辑历史、租约 / 幂等 / 取消 / 失败重试 | 调度、文件归档;多实例数据库CAS适配 |
65
+ | 大任务 | 逐页生成、增量编辑历史、租约 / 幂等 / 取消 / 失败重试、有界终态归档 | 调度、文件归档;多实例数据库CAS适配 |
66
66
 
67
- 常规预览页面的接入保持不变。设计工具只在打开时加载;画布拖动在松手时提交一次模板事务,样例计算与验收按按钮执行。逐页生成不保留全部输出页,输入数据和分组索引仍受预算管理。
67
+ 常规预览页面的接入保持不变。稳定业务键的数据源自动维护编辑重算会话;派生列只读,保存前准备重算,成功后更新公式、条件样式与汇总,导出等待在途编辑。工作簿公式继续仅显示缓存结果。设计工具只在打开时加载;画布拖动在松手时提交一次模板事务,样例计算与验收按按钮执行。逐页生成不保留全部输出页,输入数据和分组索引仍受预算管理。
68
68
 
69
69
  操作与边界见[设计器](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DESIGNER.md)、[Excel绑定](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_BINDING.md)、[复杂报表](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/COMPLEX_REPORTS.md)、[发布验收](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PUBLICATION_REVIEW.md)、[持久任务](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DURABLE_JOBS.md)。
70
70
 
71
+ 业务参数、设计器和服务端执行共用一套声明:查询参数支持月份、年份与日期区间;Excel 单 Sheet 可绑定多个数据集,静态邻格与后续区域随明细行数保持位置;树形节点按稳定身份排版,父级来源值与叶子汇总显式区分。可选模板库提供分类、搜索、打开和复制,批量面板提供逐组参数校验、进度、取消及显式失败重试。实例通过独立 CAS 契约保存参数、模板/数据修订与渲染快照,预览不自动保存。运行示例访问 `/platform.html`,产品分层、接入示例及暂缓的连接/IAM/调度/渠道路线见[产品能力](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PRODUCT_PLATFORM.md)。
72
+
73
+
71
74
  ## 安装:一个包,按需入口
72
75
 
73
76
  ```bash
@@ -601,6 +604,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
601
604
  | Excel | [导出指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL.md)与[模板导入](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_IMPORT.md):原始类型、宽表与工作簿转换 |
602
605
  | 单元格编辑 | [编辑指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/CELL_EDITING.md):开关、类型、权限校验、异步保存与输出同步 |
603
606
  | 交互配置 | [交互指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/INTERACTION.md):选区、键盘、冻结、导航、偏好与导入摘要 |
607
+ | 产品工作流 | [能力与后端边界](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PRODUCT_PLATFORM.md) · [批量生成](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/BATCH_GENERATION.md) |
604
608
  | 模板管理 | [扩展指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/TEMPLATE_MANAGEMENT.md):JSON 文档、目录、动态版本与后台接入 |
605
609
  | 模板属性 | [编辑器指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DESIGNER.md):实时预览、版本保存与属性面板 |
606
610
  | Excel业务绑定 | [绑定向导](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_BINDING.md):区域识别、契约映射与可重开会话 |
@@ -623,7 +627,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
623
627
 
624
628
  ## 版本与授权
625
629
 
626
- 当前源码版本为 `2.9.1`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
630
+ 当前源码版本为 `2.11.0`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
627
631
 
628
632
  Copyright © 2026 ChenyCHENYU (Agile Team). All rights reserved.
629
633
 
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),R=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),C=require("./region-binding-workflow-DhQvu1co.cjs"),ye=require("./useLocalDraft-Yiw1wFgI.cjs"),he=require("./designer.cjs"),ke=["aria-label"],Ee={class:"mr-binding-group"},Ne={class:"mr-binding-note"},Ve=["disabled"],Be={class:"mr-binding-region-list",role:"list"},Se=["aria-pressed","onClick"],we=["aria-label","disabled","onClick"],De=["disabled"],Ce={key:0,class:"mr-binding-group"},$e={class:"mr-binding-label"},xe=["value","aria-label"],Re={class:"mr-binding-label"},_e=["aria-label"],Me={value:"record"},Fe={value:"repeat"},Le={class:"mr-binding-note"},Te={class:"mr-binding-label"},Ke=["value","aria-label"],ze={value:""},Ie=["value"],Ae={key:0,class:"mr-binding-label"},Pe=["aria-label"],We={value:""},He=["value"],Oe={class:"mr-binding-region-tools"},qe=["disabled"],Ue=["aria-label"],Je={key:1,class:"mr-binding-mappings"},je={class:"mr-binding-field-search"},Ge=["placeholder","aria-label"],Xe={key:0,class:"mr-binding-note"},Qe=["onUpdate:modelValue","aria-label"],Ye={value:""},Ze=["value"],et={key:0},tt={key:2,class:"mr-binding-map-pages"},nt=["disabled","aria-label"],lt=["disabled","aria-label"],ot={key:3,class:"mr-binding-concurrency"},at=["value","onChange"],rt={value:""},it=["value"],st={class:"mr-binding-group"},ut={class:"mr-binding-note"},ct={class:"mr-binding-region-tools"},dt=["disabled"],mt=["aria-label"],ft=e.defineComponent({__name:"ExcelRegionBindingPanel",props:{controller:{},datasets:{},disabled:{type:Boolean},messages:{}},setup(t){const L=t,m=e.ref(0),v=e.ref(""),s=L.controller.active,i=e.computed(()=>L.datasets.find(y=>y.id===s.value?.dataset)),k=e.computed(()=>{if(!s.value)return[];let y=1;try{y=C.parseImportRange(s.value.range).left}catch{}return s.value.fields.slice(m.value*12,m.value*12+12).map((f,a)=>({field:f,index:m.value*12+a,physical:C.columnName(y+m.value*12+a)}))}),p=e.computed(()=>Math.max(1,Math.ceil((s.value?.fields.length??0)/12))),N=e.computed(()=>{const y=v.value.trim().toLocaleLowerCase(),f=i.value?.fields??[],a=f.filter(V=>[V.field,V.label,V.unit].some(z=>z?.toLocaleLowerCase().includes(y))).slice(0,64),b=new Set(k.value.map(V=>V.field));return[...a,...f.filter(V=>b.has(V.field)&&!a.includes(V))]});function S(y){return y.target.value}function K(y){L.controller.setActive(y),m.value=0,v.value=""}function W(y){if(!(!s.value||L.disabled)){s.value.range=S(y);try{const f=C.parseImportRange(s.value.range),a=f.right-f.left+1;a<=2048&&(s.value.fields=Array.from({length:a},(b,V)=>s.value.fields[V]??""))}catch{}}}return(y,f)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-binding-multi","aria-label":t.messages.multiRegions},[e.createElementVNode("div",Ee,[e.createElementVNode("h3",null,[e.createTextVNode(e.toDisplayString(t.messages.multiRegions),1),e.createElementVNode("span",null,e.toDisplayString(t.controller.recipe.value.regions.length)+"/128",1)]),e.createElementVNode("p",Ne,e.toDisplayString(t.messages.multiHint),1),e.createElementVNode("button",{type:"button",class:"mr-binding-add-region",disabled:t.disabled||!t.controller.selection.value||t.controller.recipe.value.regions.length>=128,onClick:f[0]||(f[0]=(...a)=>t.controller.add&&t.controller.add(...a))},[e.createVNode(R._sfc_main,{name:"grid",size:13}),e.createTextVNode(e.toDisplayString(t.messages.addRegion),1),e.createElementVNode("code",null,e.toDisplayString(t.controller.selection.value||"—"),1)],8,Ve),e.createElementVNode("div",Be,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.controller.recipe.value.regions,a=>(e.openBlock(),e.createElementBlock("div",{key:a.id,class:e.normalizeClass(["mr-binding-region-entry",{"is-active":a.id===t.controller.activeId.value}])},[e.createElementVNode("button",{type:"button","aria-pressed":a.id===t.controller.activeId.value,onClick:b=>K(a.id)},[e.createElementVNode("strong",null,e.toDisplayString(a.id),1),e.createElementVNode("code",null,e.toDisplayString(a.range),1),e.createElementVNode("small",null,e.toDisplayString(a.mode==="record"?t.messages.recordMode:t.messages.repeatMode)+" · "+e.toDisplayString(a.dataset||t.messages.chooseDataset),1)],8,Se),e.createElementVNode("button",{type:"button","aria-label":`${t.messages.removeRegion} ${a.id}`,disabled:t.disabled,onClick:b=>t.controller.remove(a.id)},[e.createVNode(R._sfc_main,{name:"close",size:12})],8,we)],2))),128))])]),e.createElementVNode("fieldset",{disabled:t.disabled,class:"mr-binding-region-editor"},[e.unref(s)?(e.openBlock(),e.createElementBlock("section",Ce,[e.createElementVNode("h3",null,[e.createTextVNode(e.toDisplayString(t.messages.regionProperties),1),e.createElementVNode("code",null,e.toDisplayString(e.unref(s).id),1)]),e.createElementVNode("label",$e,[e.createTextVNode(e.toDisplayString(t.messages.regionCoordinates),1),e.createElementVNode("input",{value:e.unref(s).range,"aria-label":t.messages.regionCoordinates,onChange:W},null,40,xe)]),e.createElementVNode("label",Re,[e.createTextVNode(e.toDisplayString(t.messages.regionMode),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[1]||(f[1]=a=>e.unref(s).mode=a),"aria-label":t.messages.regionMode},[e.createElementVNode("option",Me,e.toDisplayString(t.messages.recordMode),1),e.createElementVNode("option",Fe,e.toDisplayString(t.messages.repeatMode),1)],8,_e),[[e.vModelSelect,e.unref(s).mode]])]),e.createElementVNode("p",Le,e.toDisplayString(e.unref(s).mode==="record"?t.messages.recordHint:t.messages.repeatHint),1),e.createElementVNode("label",Te,[e.createTextVNode(e.toDisplayString(t.messages.dataset),1),e.createElementVNode("select",{value:e.unref(s).dataset,"aria-label":t.messages.dataset,onChange:f[2]||(f[2]=a=>t.controller.dataset(S(a)))},[e.createElementVNode("option",ze,e.toDisplayString(t.messages.chooseDataset),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.datasets,a=>(e.openBlock(),e.createElementBlock("option",{key:a.id,value:a.id},e.toDisplayString(a.label||a.id),9,Ie))),128))],40,Ke)]),i.value?(e.openBlock(),e.createElementBlock("label",Ae,[e.createTextVNode(e.toDisplayString(t.messages.rowKey),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":f[3]||(f[3]=a=>e.unref(s).rowKey=a),"aria-label":t.messages.rowKey},[e.createElementVNode("option",We,e.toDisplayString(t.messages.chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.fields.filter(a=>a.type!=="boolean"),a=>(e.openBlock(),e.createElementBlock("option",{key:a.field,value:a.field},e.toDisplayString(a.label||a.field),9,He))),128))],8,Pe),[[e.vModelSelect,e.unref(s).rowKey]])])):e.createCommentVNode("",!0),e.createElementVNode("div",Oe,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:f[4]||(f[4]=(...a)=>t.controller.header&&t.controller.header(...a))},e.toDisplayString(t.messages.bindRegionHeader),9,qe),e.createElementVNode("code",null,e.toDisplayString(e.unref(s).headerRange||t.messages.noRegionHeader),1),e.unref(s).headerRange?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":t.messages.clearHeader,onClick:f[5]||(f[5]=a=>delete e.unref(s).headerRange)},[e.createVNode(R._sfc_main,{name:"close",size:11})],8,Ue)):e.createCommentVNode("",!0)]),i.value?(e.openBlock(),e.createElementBlock("div",Je,[e.createElementVNode("label",je,[e.createVNode(R._sfc_main,{name:"search",size:13}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":f[6]||(f[6]=a=>v.value=a),type:"search",placeholder:t.messages.searchFields,"aria-label":t.messages.searchFields},null,8,Ge),[[e.vModelText,v.value]])]),i.value.fields.length>64?(e.openBlock(),e.createElementBlock("small",Xe,e.toDisplayString(t.messages.fieldLimit),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,a=>(e.openBlock(),e.createElementBlock("label",{key:a.index,class:"mr-binding-map"},[e.createElementVNode("span",null,e.toDisplayString(a.physical),1),e.createElementVNode("div",null,[e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":b=>e.unref(s).fields[a.index]=b,"aria-label":`${t.messages.physical} ${a.physical} · ${t.messages.business}`},[e.createElementVNode("option",Ye,e.toDisplayString(t.messages.chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N.value,b=>(e.openBlock(),e.createElementBlock("option",{key:b.field,value:b.field},e.toDisplayString(b.label||b.field)+" · "+e.toDisplayString(b.field),9,Ze))),128))],8,Qe),[[e.vModelSelect,e.unref(s).fields[a.index]]]),a.field?(e.openBlock(),e.createElementBlock("small",et,e.toDisplayString(i.value.fields.find(b=>b.field===a.field)?.type)+" · "+e.toDisplayString(i.value.fields.find(b=>b.field===a.field)?.unit||"—"),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),p.value>1?(e.openBlock(),e.createElementBlock("div",tt,[e.createElementVNode("button",{type:"button",disabled:m.value<=0,"aria-label":t.messages.previousColumns,onClick:f[7]||(f[7]=a=>m.value--)},[e.createVNode(R._sfc_main,{name:"chevron-left",size:13})],8,nt),e.createElementVNode("span",null,e.toDisplayString(m.value+1)+"/"+e.toDisplayString(p.value),1),e.createElementVNode("button",{type:"button",disabled:m.value+1>=p.value,"aria-label":t.messages.nextColumns,onClick:f[8]||(f[8]=a=>m.value++)},[e.createVNode(R._sfc_main,{name:"chevron-right",size:13})],8,lt)])):e.createCommentVNode("",!0),i.value?(e.openBlock(),e.createElementBlock("details",ot,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.concurrency),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["revisionField","sourceTokenField"],a=>e.createElementVNode("label",{key:a,class:"mr-binding-label"},[e.createTextVNode(e.toDisplayString(a==="revisionField"?t.messages.revisionField:t.messages.sourceTokenField),1),e.createElementVNode("select",{value:e.unref(s)[a]||"",onChange:b=>S(b)?e.unref(s)[a]=S(b):delete e.unref(s)[a]},[e.createElementVNode("option",rt,e.toDisplayString(t.messages.optional),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value.fields,b=>(e.openBlock(),e.createElementBlock("option",{key:b.field,value:b.field},e.toDisplayString(b.label||b.field),9,it))),128))],40,at)])),64))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("section",st,[e.createElementVNode("h3",null,e.toDisplayString(t.messages.flowFooter),1),e.createElementVNode("p",ut,e.toDisplayString(t.messages.flowFooterHint),1),e.createElementVNode("div",ct,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:f[9]||(f[9]=(...a)=>t.controller.footer&&t.controller.footer(...a))},e.toDisplayString(t.messages.bindFooter),9,dt),e.createElementVNode("code",null,e.toDisplayString(t.controller.recipe.value.footerRange||"—"),1),t.controller.recipe.value.footerRange?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":t.messages.clearFooter,onClick:f[10]||(f[10]=(...a)=>t.controller.clearFooter&&t.controller.clearFooter(...a))},[e.createVNode(R._sfc_main,{name:"close",size:11})],8,mt)):e.createCommentVNode("",!0)])])],8,De)],8,ke))}});function se(t=""){return{version:"2.0",sheet:t,regions:[]}}function vt(t,L,m,v){const s=e.ref(se()),i=e.ref(""),k=e.ref(),p=e.ref(),N=e.computed(()=>!t.value||!k.value||!p.value?"":C.excelBindingCellRange(t.value,L.value,k.value,p.value)),S=e.computed(()=>({...s.value,regions:s.value.regions.map(c=>({...c,fields:[]}))})),K=e.computed(()=>t.value?C.validateExcelRegionGeometry(t.value,S.value):[]),W=e.computed(()=>{const c=C.validateExcelRegionFields(s.value,v()),E=[...K.value,...c.issues];return{...c,ok:!E.length,issues:E}}),y=e.computed(()=>s.value.regions.find(c=>c.id===i.value));function f(c=se(L.value)){s.value=JSON.parse(JSON.stringify(c)),i.value=s.value.regions[0]?.id??"",k.value=void 0,p.value=void 0}function a(c,E,h){m.value||((!h||!k.value)&&(k.value={row:c,column:E}),p.value={row:c,column:E})}function b(){if(m.value||!N.value||s.value.regions.length>=128)return;let c=1;for(;s.value.regions.some(w=>w.id===`region-${c}`);)c++;const E=`region-${c}`,h=Math.abs(p.value.column-k.value.column)+1;s.value.regions.push({id:E,range:N.value,mode:"repeat",dataset:"",fields:Array.from({length:h},()=>""),rowKey:""}),i.value=E}function V(c){m.value||(s.value.regions=s.value.regions.filter(E=>E.id!==c),i.value===c&&(i.value=s.value.regions[0]?.id??""))}function z(c){!m.value&&y.value&&(y.value.dataset=c,y.value.rowKey="",y.value.fields.fill(""),delete y.value.revisionField,delete y.value.sourceTokenField)}function A(){!m.value&&y.value&&N.value&&(y.value.headerRange=N.value)}function T(){!m.value&&N.value&&(s.value.footerRange=N.value)}function o(){m.value||delete s.value.footerRange}function B(c){s.value.regions.some(E=>E.id===c)&&(i.value=c)}function M(c,E){return!!k.value&&!!p.value&&c>=Math.min(k.value.row,p.value.row)&&c<=Math.max(k.value.row,p.value.row)&&E>=Math.min(k.value.column,p.value.column)&&E<=Math.max(k.value.column,p.value.column)}return{recipe:s,activeId:i,active:y,selection:N,validation:W,reset:f,select:a,add:b,remove:V,dataset:z,header:A,footer:T,clearFooter:o,setActive:B,selected:M}}function Y(t="",L=0){return{version:"1.0",sheet:t,dataset:"",regions:{header:"",detail:""},fields:Array.from({length:L},()=>""),rowKey:""}}function ne(t){return t instanceof Error?t.message:String(t)}function gt(t,L){const m=e.shallowRef(),v=e.ref(Y()),s=e.ref("table"),i=vt(m,e.computed(()=>v.value.sheet),e.computed(()=>$.value),()=>t.datasets),k=new Map,p=new Map,N=e.ref({table:[],regions:[]});function S(){k.clear(),p.clear(),N.value={table:[],regions:[]}}function K(){v.value.sheet&&(k.set(v.value.sheet,W(v.value)),p.set(v.value.sheet,JSON.parse(JSON.stringify(i.recipe.value))),N.value={table:[...k.values()],regions:[...p.values()]})}const W=r=>JSON.parse(JSON.stringify(r));function y(r,g){return W(k.get(r)??Y(r,g))}const f=e.ref({id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"}),a=e.ref(""),b=e.ref(0),V=ye.useLocalDraft(()=>({source:b.value,recipe:v.value,mode:s.value,regions:i.recipe.value,cached:N.value,identity:f.value})),z=e.ref([]);let A;function T(){A?.dispose(),A=void 0}const o=e.ref(""),B=e.ref(!1),M=e.ref(!1),c=e.ref(!1),E=e.ref(!1),h=e.ref(1),w=e.ref(1),H=e.ref(),O=e.ref(),_=e.ref(0),q=e.computed(()=>({...he.EXCEL_BINDING_MESSAGES,...t.messages})),$=e.computed(()=>!!t.readonly||B.value||E.value),U=e.computed(()=>m.value?.sheets.find(r=>r.name===v.value.sheet)),F=e.computed(()=>U.value?C.parseImportRange(U.value.range):void 0),J=e.computed(()=>t.datasets.find(r=>r.id===v.value.dataset)),j=e.computed(()=>m.value&&U.value?C.getExcelSheetWindow(m.value,U.value.name,{row:h.value,column:w.value}):void 0),le=e.computed(()=>m.value?C.validateExcelBindingRegions(m.value,v.value):[]),oe=e.computed(()=>{if(!m.value)return{ok:!1,issues:[],mapped:0,total:0};const r=C.validateExcelBindingFields(m.value,v.value,t.datasets),g=[...le.value,...r.issues];return{...r,ok:g.length===0,issues:g}}),Z=e.computed(()=>s.value==="regions"?i.validation.value:oe.value),ae=e.computed(()=>v.value.fields.slice(_.value*12,(_.value+1)*12).map((r,g)=>({index:_.value*12+g,field:r,physical:C.columnName((F.value?.left??1)+_.value*12+g)}))),re=e.computed(()=>J.value?.fields.filter(r=>r.type!=="boolean")??[]),G=e.computed(()=>H.value!==void 0&&O.value!==void 0?{top:Math.min(H.value,O.value),bottom:Math.max(H.value,O.value)}:void 0);let I,u=0;function l(){u++,I?.abort(),I=void 0,B.value=!1}function n(){h.value=F.value?.top??1,w.value=F.value?.left??1,H.value=void 0,O.value=void 0,_.value=0,M.value=!1,c.value=!1}function d(r){l();try{const g=r.version==="2.0"?C.parseExcelRegionBindingSession(r):C.parseExcelBindingSession(r);l(),T(),z.value=g.source.sheets.map(D=>({name:D.name,index:D.index})),m.value=g.source,S(),g.version==="2.0"?(v.value=Y(g.recipe.sheet,g.source.sheets.find(D=>D.name===g.recipe.sheet).columnCount),i.reset(g.recipe),s.value="regions"):(v.value=g.recipe,i.reset(),s.value="table"),f.value={...g.identity,...t.lockId&&t.identity?{id:t.identity.id}:{}},a.value=g.recipe.sheet,o.value="",n(),b.value++,V.accept()}catch(g){o.value=ne(g)}}e.watch(()=>t.session,r=>{r&&d(r)},{immediate:!0}),e.watch(()=>t.readonly,r=>{r&&(l(),T())}),e.watch([v,f,s,i.recipe],()=>{M.value=!1,c.value=!1},{deep:!0,flush:"sync"}),e.watch(()=>t.datasets,()=>{M.value=!1,c.value=!1}),e.onBeforeUnmount(()=>{l(),T()});async function P(r){if(t.readonly)return;if(l(),!/\.xlsx$/i.test(r.name)){o.value=q.value.invalidFile;return}const g=++u;I=new AbortController,B.value=!0,o.value="";let D;try{const{openExcelWorkbook:x}=await Promise.resolve().then(()=>require("./workbook-session-CLYLhZWu.cjs")).then(X=>X.workbookSession);if(g!==u||t.readonly||(D=await x(r,{...t.importOptions,signal:I.signal}),g!==u||t.readonly))return;const Q=D.inspect().sheets.filter(X=>X.visible);if(!Q.length)throw new Error("Excel 中没有可导入的可见工作表");const ie=await D.importTemplate({sheets:[Q[0].name],signal:I.signal});if(g!==u||t.readonly)return;T(),A=D,D=void 0,m.value=ie,b.value++,a.value=r.name,z.value=Q.map(X=>({name:X.name,index:X.index})),S(),v.value=Y(ie.sheets[0].name,ie.sheets[0].columnCount),i.reset(),n()}catch(x){g===u&&(o.value=ne(x))}finally{D?.dispose(),g===u&&(B.value=!1,I=void 0)}}async function ee(r){if($.value||!z.value.some(x=>x.name===r)||v.value.sheet===r)return;K();const g=m.value?.sheets.find(x=>x.name===r);if(g){v.value=y(r,g.columnCount),i.reset(p.get(r)),o.value="",n();return}if(!A||A.disposed)return;l();const D=++u;I=new AbortController,B.value=!0,o.value="";try{const x=await A.importTemplate({sheets:[r],signal:I.signal});if(D!==u||t.readonly)return;m.value=x,v.value=y(r,x.sheets[0].columnCount),i.reset(p.get(r)),n()}catch(x){D===u&&(o.value=ne(x))}finally{D===u&&(B.value=!1,I=void 0)}}function te(r){$.value||(v.value.dataset=r,v.value.rowKey="",v.value.fields.fill(""),M.value=!1,c.value=!1)}function ue(r,g){$.value||!F.value||r<F.value.top||r>F.value.bottom||((!g||H.value===void 0)&&(H.value=r),O.value=r)}function ce(r){if($.value||!m.value||!G.value){$.value||(o.value=q.value.emptySelection);return}v.value.regions[r]=C.excelBindingRowRange(m.value,v.value.sheet,G.value.top,G.value.bottom),M.value=!1,c.value=!1,o.value=""}function de(r){$.value||(delete v.value.regions[r],M.value=!1,c.value=!1)}function me(r,g){!$.value&&r>=0&&r<v.value.fields.length&&(v.value.fields[r]=g,M.value=!1,c.value=!1)}function fe(r){for(const g of["title","header","detail","footer"]){const D=v.value.regions[g];if(!D)continue;const x=C.parseImportRange(D);if(r>=x.top&&r<=x.bottom)return g}}function ve(r,g){F.value&&(r==="row"?h.value=Math.max(F.value.top,Math.min(F.value.bottom,h.value+g)):w.value=Math.max(F.value.left,Math.min(F.value.right,w.value+g)))}function ge(){if(!t.readonly){if(t.session){d(t.session);return}l(),T(),m.value=void 0,z.value=[],a.value="",S(),v.value=Y(),f.value={id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"},i.reset(),s.value="table",n(),b.value++,V.accept(),o.value=""}}function pe(){M.value=!0,o.value=""}async function be(){if(!($.value||!m.value)&&(M.value=!0,o.value="",!!Z.value.ok)){E.value=!0;try{const r={...f.value,...t.lockId&&t.identity?{id:t.identity.id}:{}},g=s.value==="regions"?C.createExcelRegionBindingDocument(m.value,i.recipe.value,t.datasets,r):C.createExcelBindingDocument(m.value,v.value,t.datasets,r),D=s.value==="regions"?C.createExcelRegionBindingSession(m.value,i.recipe.value,r):C.createExcelBindingSession(m.value,v.value,r),x={...g,session:D},Q=V.snapshot();if(t.accept&&!await t.accept(x)||t.readonly||Q!==V.snapshot()&&V.pending.value)return;t.accept||L(x),S(),V.accept(),c.value=!0}catch(r){o.value=ne(r)}finally{E.value=!1}}}return{imported:m,mode:s,regionBindings:i,pendingLocalChanges:V.pending,recipe:v,identity:f,sourceName:a,sheetChoices:z,error:o,loading:B,checked:M,applied:c,row:h,column:w,mappingPage:_,m:q,disabled:$,sheet:U,sourceRange:F,dataset:J,window:j,validation:Z,mappings:ae,rowKeys:re,selection:G,cancel:l,importFile:P,chooseSheet:ee,chooseDataset:te,chooseRow:ue,markRegion:ce,clearRegion:de,setMapping:me,regionAt:fe,moveWindow:ve,check:pe,restoreDraft:ge,apply:be}}const pt=["aria-label","aria-busy"],bt={class:"mr-binding-bar"},yt={class:"mr-binding-heading"},ht=["aria-label","disabled"],kt=["disabled"],Et={key:0,class:"mr-binding-error",role:"alert"},Nt={key:1,class:"mr-binding-placeholder",role:"status"},Vt={key:2,class:"mr-binding-placeholder"},Bt=["disabled"],St={class:"mr-binding-sourcebar"},wt=["value","aria-label","disabled"],Dt=["value"],Ct=["aria-label"],$t=["aria-pressed","disabled"],xt=["aria-pressed","disabled"],Rt={class:"mr-binding-range"},_t={class:"mr-binding-sample-note"},Mt={class:"mr-binding-layout"},Ft={class:"mr-binding-source"},Lt={class:"mr-binding-grid-heading"},Tt=["aria-label"],Kt={class:"mr-binding-grid"},zt=["data-region"],It={scope:"row"},At=["data-source-row","aria-label","aria-pressed","disabled","onPointerdown","onPointerenter","onKeydown"],Pt=["rowspan","colspan","title","data-source-cell","tabindex","aria-label","aria-selected","onPointerdown","onPointerenter","onKeydown"],Wt={key:1,class:"mr-binding-grid-footer"},Ht={class:"mr-binding-window"},Ot=["aria-label","disabled"],qt=["min","max","value"],Ut=["aria-label","disabled"],Jt={class:"mr-binding-window"},jt=["aria-label","disabled"],Gt=["min","max","value"],Xt=["aria-label","disabled"],Qt={class:"mr-binding-inspector"},Yt=["disabled"],Zt={class:"mr-binding-group"},en=["data-role"],tn={key:0},nn=["aria-label","disabled","onClick"],ln=["aria-label","onClick"],on={key:0,class:"mr-binding-note"},an={class:"mr-binding-group"},rn={class:"mr-binding-label"},sn=["value","aria-label"],un={value:""},cn=["value"],dn={key:0,class:"mr-binding-note"},mn={key:1,class:"mr-binding-label"},fn=["aria-label"],vn={value:""},gn=["value"],pn={key:2,class:"mr-binding-mappings"},bn=["aria-label","value","onChange"],yn={value:""},hn=["value"],kn={key:0},En={key:3,class:"mr-binding-map-pages"},Nn=["disabled","aria-label"],Vn=["disabled","aria-label"],Bn=["disabled"],Sn={class:"mr-binding-group"},wn={class:"mr-binding-label"},Dn=["value","readonly"],Cn={class:"mr-binding-label"},$n={key:0,class:"mr-binding-issues",role:"alert"},xn={key:0},Rn={key:1,class:"mr-binding-warnings"},_n={class:"mr-binding-actions"},Mn=["disabled"],Fn=["disabled"],Ln=["disabled"],Tn=e.defineComponent({__name:"ExcelBindingWizard",props:{datasets:{},accept:{type:Function},session:{},identity:{},lockId:{type:Boolean},readonly:{type:Boolean},importOptions:{},messages:{}},emits:["apply","dirty"],setup(t,{expose:L,emit:m}){const v=t,s=m,i=gt(v,u=>s("apply",u)),{imported:k,mode:p,regionBindings:N,recipe:S,identity:K,sourceName:W,sheetChoices:y,error:f,loading:a,checked:b,applied:V,row:z,column:A,mappingPage:T,m:o,disabled:B,sheet:M,sourceRange:c,dataset:E,window:h,validation:w,mappings:H,rowKeys:O,selection:_}=i;e.watch([i.pendingLocalChanges,S,K],()=>s("dirty",i.pendingLocalChanges.value),{immediate:!0,deep:!0,flush:"sync"});const q=e.ref(),$=e.ref(!1),U=["title","header","detail","footer"],F=e.computed(()=>({title:o.value.titleRegion,header:o.value.headerRegion,detail:o.value.detailRegion,footer:o.value.footerRegion})),J=e.computed(()=>Math.max(1,Math.ceil(S.value.fields.length/12)));function j(u){return u.target.value}function le(u){const l=u.target,n=l.files?.[0];n&&i.importFile(n),l.value=""}function oe(u,l){u.button!==0||B.value||(u.preventDefault(),$.value=!0,i.chooseRow(l,u.shiftKey),p.value==="regions"&&c.value&&(N.select(l,c.value.left,!1),N.select(l,c.value.right,!0)),u.currentTarget.focus())}function Z(u,l,n){p.value!=="regions"||u.button!==0||B.value||(u.preventDefault(),$.value=!0,N.select(l,n,u.shiftKey),u.currentTarget.focus())}function ae(u,l,n){if(p.value!=="regions")return;(u.key===" "||u.key==="Enter")&&(u.preventDefault(),N.select(l,n,u.shiftKey));const P={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]}[u.key];if(!P||!c.value)return;u.preventDefault();const ee=Math.max(c.value.top,Math.min(c.value.bottom,l+P[0])),te=Math.max(c.value.left,Math.min(c.value.right,n+P[1]));u.shiftKey&&N.select(ee,te,!0),u.currentTarget.closest("table")?.querySelector(`td[data-source-cell="${ee}:${te}"]`)?.focus()}function re(u,l){if((u.key===" "||u.key==="Enter")&&(u.preventDefault(),i.chooseRow(l,u.shiftKey)),u.key==="ArrowDown"||u.key==="ArrowUp"){u.preventDefault();const n=l+(u.key==="ArrowDown"?1:-1);u.shiftKey&&i.chooseRow(n,!0),u.currentTarget.closest("table")?.querySelector(`button[data-source-row="${n}"]`)?.focus()}}function G(u){const l=E.value?.fields.find(n=>n.field===u);return l?[l.type,l.unit,l.digits===void 0?void 0:`${l.digits}${o.value.precision}`,l.sample===void 0?void 0:`${o.value.sample}: ${String(l.sample)}`].filter(n=>n!==void 0&&n!=="").join(" · "):""}function I(u,l){const n=Number(j(u));!Number.isInteger(n)||!c.value||(l==="row"?z.value=Math.max(c.value.top,Math.min(c.value.bottom,n)):A.value=Math.max(c.value.left,Math.min(c.value.right,n)))}return L({get pendingLocalChanges(){return i.pendingLocalChanges.value},importFile:i.importFile,apply:i.apply,cancel:i.cancel}),(u,l)=>(e.openBlock(),e.createElementBlock("section",{class:"mr-binding","aria-label":e.unref(o).title,"aria-busy":e.unref(a),onPointerup:l[21]||(l[21]=n=>$.value=!1),onPointercancel:l[22]||(l[22]=n=>$.value=!1),onPointerleave:l[23]||(l[23]=n=>$.value=!1)},[e.createElementVNode("header",bt,[e.createElementVNode("div",yt,[e.createVNode(R._sfc_main,{name:"file",size:17}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).title),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(W)||e.unref(o).intro),1)]),e.createElementVNode("input",{ref_key:"input",ref:q,type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","aria-label":e.unref(o).upload,class:"mr-binding-file",disabled:t.readonly,onChange:le},null,40,ht),e.unref(a)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:l[0]||(l[0]=(...n)=>e.unref(i).cancel&&e.unref(i).cancel(...n))},e.toDisplayString(e.unref(o).cancel),1)):(e.openBlock(),e.createElementBlock("button",{key:1,type:"button",disabled:t.readonly,onClick:l[1]||(l[1]=n=>q.value?.click())},[e.createVNode(R._sfc_main,{name:"upload",size:14}),e.createTextVNode(e.toDisplayString(e.unref(k)?e.unref(o).replace:e.unref(o).upload),1)],8,kt))]),e.unref(f)?(e.openBlock(),e.createElementBlock("div",Et,e.toDisplayString(e.unref(f)),1)):e.createCommentVNode("",!0),e.unref(a)?(e.openBlock(),e.createElementBlock("div",Nt,[l[24]||(l[24]=e.createElementVNode("span",{class:"mr-binding-loader"},null,-1)),e.createTextVNode(e.toDisplayString(e.unref(o).loading),1)])):e.unref(k)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:3},[e.createElementVNode("div",St,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).sheet),1),e.createElementVNode("select",{value:e.unref(S).sheet,"aria-label":e.unref(o).sheet,disabled:e.unref(B),onChange:l[3]||(l[3]=n=>e.unref(i).chooseSheet(j(n)))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(y),n=>(e.openBlock(),e.createElementBlock("option",{key:n.name,value:n.name},e.toDisplayString(n.name),9,Dt))),128))],40,wt)]),e.createElementVNode("div",{class:"mr-binding-mode",role:"group","aria-label":e.unref(o).regionMode},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(p)==="table",disabled:e.unref(B),onClick:l[4]||(l[4]=n=>p.value="table")},e.toDisplayString(e.unref(o).tableMode),9,$t),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(p)==="regions",disabled:e.unref(B),onClick:l[5]||(l[5]=n=>p.value="regions")},[e.createVNode(R._sfc_main,{name:"grid",size:12}),e.createTextVNode(e.toDisplayString(e.unref(o).multiRegions),1)],8,xt)],8,Ct),e.createElementVNode("span",Rt,e.toDisplayString(e.unref(M)?.range)+" · "+e.toDisplayString(e.unref(M)?.rowCount)+" × "+e.toDisplayString(e.unref(M)?.columnCount),1),e.createElementVNode("span",_t,e.toDisplayString(e.unref(o).sourceOnly),1)]),e.createElementVNode("div",Mt,[e.createElementVNode("div",Ft,[e.createElementVNode("div",Lt,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).source),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(p)==="regions"?e.unref(o).multiHint:e.unref(o).sourceHint),1)]),e.unref(h)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-binding-grid-scroll","aria-label":e.unref(o).source},[e.createElementVNode("table",Kt,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[l[26]||(l[26]=e.createElementVNode("th",{class:"mr-binding-corner","aria-label":"#"},"#",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).columns,n=>(e.openBlock(),e.createElementBlock("th",{key:n.column,scope:"col"},e.toDisplayString(n.name),1))),128))])]),e.createElementVNode("tbody",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(h).rows,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.row,"data-region":e.unref(i).regionAt(n.row),class:e.normalizeClass({"is-selected":e.unref(_)&&n.row>=e.unref(_).top&&n.row<=e.unref(_).bottom})},[e.createElementVNode("th",It,[e.createElementVNode("button",{type:"button","data-source-row":n.row,"aria-label":`${e.unref(o).selectionLabel} ${n.row}`,"aria-pressed":!!e.unref(_)&&n.row>=e.unref(_).top&&n.row<=e.unref(_).bottom,disabled:e.unref(B),onPointerdown:d=>oe(d,n.row),onPointerenter:d=>$.value&&e.unref(i).chooseRow(n.row,!0),onKeydown:d=>re(d,n.row)},e.toDisplayString(n.row),41,At)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.cells,d=>(e.openBlock(),e.createElementBlock("td",{key:d.column,rowspan:d.rowSpan,colspan:d.colSpan,title:`${d.address} · ${d.text}`,"data-source-cell":`${d.row}:${d.column}`,tabindex:e.unref(p)==="regions"?0:void 0,"aria-label":e.unref(p)==="regions"?`${e.unref(o).selectionCellLabel} ${d.address}`:void 0,"aria-selected":e.unref(p)==="regions"?e.unref(N).selected(d.row,d.column):void 0,class:e.normalizeClass({"is-continued":d.continued,"is-cell-selected":e.unref(p)==="regions"&&e.unref(N).selected(d.row,d.column)}),onPointerdown:P=>Z(P,d.row,d.column),onPointerenter:P=>e.unref(p)==="regions"&&$.value&&e.unref(N).select(d.row,d.column,!0),onKeydown:P=>ae(P,d.row,d.column),style:e.normalizeStyle({textAlign:d.style?.align,fontWeight:d.style?.bold?"600":void 0})},[e.createElementVNode("span",null,e.toDisplayString(d.text),1)],46,Pt))),128))],10,zt))),128))])])],8,Tt)):e.createCommentVNode("",!0),e.unref(h)?(e.openBlock(),e.createElementBlock("footer",Wt,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(e.unref(o).selected)+" ",1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(p)==="regions"?e.unref(N).selection.value||"—":e.unref(_)?`${e.unref(_).top}–${e.unref(_).bottom}`:"—"),1)]),e.createElementVNode("div",Ht,[e.createElementVNode("button",{type:"button","aria-label":e.unref(o).previousRows,disabled:e.unref(h).top<=e.unref(h).source.top,onClick:l[6]||(l[6]=n=>e.unref(i).moveWindow("row",-24))},[e.createVNode(R._sfc_main,{name:"chevron-left",size:13})],8,Ot),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).rowStart),1),e.createElementVNode("input",{type:"number",min:e.unref(h).source.top,max:e.unref(h).source.bottom,value:e.unref(z),onChange:l[7]||(l[7]=n=>I(n,"row"))},null,40,qt)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).nextRows,disabled:e.unref(h).bottom>=e.unref(h).source.bottom,onClick:l[8]||(l[8]=n=>e.unref(i).moveWindow("row",24))},[e.createVNode(R._sfc_main,{name:"chevron-right",size:13})],8,Ut)]),e.createElementVNode("div",Jt,[e.createElementVNode("button",{type:"button","aria-label":e.unref(o).previousColumns,disabled:e.unref(h).left<=e.unref(h).source.left,onClick:l[9]||(l[9]=n=>e.unref(i).moveWindow("column",-12))},[e.createVNode(R._sfc_main,{name:"chevron-left",size:13})],8,jt),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(o).columnStart),1),e.createElementVNode("input",{type:"number",min:e.unref(h).source.left,max:e.unref(h).source.right,value:e.unref(A),onChange:l[10]||(l[10]=n=>I(n,"column"))},null,40,Gt)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(o).nextColumns,disabled:e.unref(h).right>=e.unref(h).source.right,onClick:l[11]||(l[11]=n=>e.unref(i).moveWindow("column",12))},[e.createVNode(R._sfc_main,{name:"chevron-right",size:13})],8,Xt)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Qt,[e.unref(p)==="regions"?(e.openBlock(),e.createBlock(ft,{key:0,controller:e.unref(N),datasets:t.datasets,disabled:e.unref(B),messages:e.unref(o)},null,8,["controller","datasets","disabled","messages"])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("fieldset",{disabled:e.unref(B)},[e.createElementVNode("section",Zt,[e.createElementVNode("h3",null,[l[27]||(l[27]=e.createElementVNode("b",null,"1",-1)),e.createTextVNode(e.toDisplayString(e.unref(o).regionLegend),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(U,n=>e.createElementVNode("div",{key:n,class:"mr-binding-region","data-role":n},[e.createElementVNode("div",null,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(F.value[n]),1),n==="title"||n==="footer"?(e.openBlock(),e.createElementBlock("small",tn,e.toDisplayString(e.unref(o).optional),1)):e.createCommentVNode("",!0)]),e.createElementVNode("code",null,e.toDisplayString(e.unref(S).regions[n]||e.unref(o).unnamed),1)]),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(o).selectRegion} · ${F.value[n]}`,disabled:!e.unref(_),onClick:d=>e.unref(i).markRegion(n)},[e.createVNode(R._sfc_main,{name:"arrow-right",size:13})],8,nn),(n==="title"||n==="footer")&&e.unref(S).regions[n]?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${e.unref(o).clear} · ${F.value[n]}`,onClick:d=>e.unref(i).clearRegion(n)},[e.createVNode(R._sfc_main,{name:"close",size:13})],8,ln)):e.createCommentVNode("",!0)],8,en)),64)),e.unref(S).regions.footer?(e.openBlock(),e.createElementBlock("p",on,e.toDisplayString(e.unref(o).footerHint),1)):e.createCommentVNode("",!0)]),e.createElementVNode("section",an,[e.createElementVNode("h3",null,[l[28]||(l[28]=e.createElementVNode("b",null,"2",-1)),e.createTextVNode(e.toDisplayString(e.unref(o).mapping),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(w).mapped)+"/"+e.toDisplayString(e.unref(w).total),1)]),e.createElementVNode("label",rn,[e.createTextVNode(e.toDisplayString(e.unref(o).dataset),1),e.createElementVNode("select",{value:e.unref(S).dataset,"aria-label":e.unref(o).dataset,onChange:l[12]||(l[12]=n=>e.unref(i).chooseDataset(j(n)))},[e.createElementVNode("option",un,e.toDisplayString(e.unref(o).chooseDataset),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.datasets,n=>(e.openBlock(),e.createElementBlock("option",{key:n.id,value:n.id},e.toDisplayString(n.label||n.id),9,cn))),128))],40,sn)]),t.datasets.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",dn,e.toDisplayString(e.unref(o).noContract),1)),e.unref(E)?(e.openBlock(),e.createElementBlock("label",mn,[e.createTextVNode(e.toDisplayString(e.unref(o).rowKey),1),e.withDirectives(e.createElementVNode("select",{"onUpdate:modelValue":l[13]||(l[13]=n=>e.unref(S).rowKey=n),"aria-label":e.unref(o).rowKey},[e.createElementVNode("option",vn,e.toDisplayString(e.unref(o).chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(O),n=>(e.openBlock(),e.createElementBlock("option",{key:n.field,value:n.field},e.toDisplayString(n.label||n.field)+" · "+e.toDisplayString(n.field),9,gn))),128))],8,fn),[[e.vModelSelect,e.unref(S).rowKey]])])):e.createCommentVNode("",!0),e.unref(E)?(e.openBlock(),e.createElementBlock("div",pn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(H),n=>(e.openBlock(),e.createElementBlock("label",{key:n.index,class:"mr-binding-map"},[e.createElementVNode("span",null,e.toDisplayString(n.physical),1),e.createElementVNode("div",null,[e.createElementVNode("select",{"aria-label":`${e.unref(o).physical} ${n.physical} · ${e.unref(o).business}`,value:n.field,onChange:d=>e.unref(i).setMapping(n.index,j(d))},[e.createElementVNode("option",yn,e.toDisplayString(e.unref(o).chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(E).fields,d=>(e.openBlock(),e.createElementBlock("option",{key:d.field,value:d.field},e.toDisplayString(d.label||d.field)+" · "+e.toDisplayString(d.field),9,hn))),128))],40,bn),n.field?(e.openBlock(),e.createElementBlock("small",kn,e.toDisplayString(G(n.field)),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),e.unref(E)&&J.value>1?(e.openBlock(),e.createElementBlock("div",En,[e.createElementVNode("button",{type:"button",disabled:e.unref(T)<=0,"aria-label":e.unref(o).previousColumns,onClick:l[14]||(l[14]=n=>T.value--)},[e.createVNode(R._sfc_main,{name:"chevron-left",size:13})],8,Nn),e.createElementVNode("span",null,e.toDisplayString(e.unref(T)+1)+" / "+e.toDisplayString(J.value),1),e.createElementVNode("button",{type:"button",disabled:e.unref(T)+1>=J.value,"aria-label":e.unref(o).nextColumns,onClick:l[15]||(l[15]=n=>T.value++)},[e.createVNode(R._sfc_main,{name:"chevron-right",size:13})],8,Vn)])):e.createCommentVNode("",!0)])],8,Yt),[[e.vShow,e.unref(p)==="table"]]),e.createElementVNode("fieldset",{disabled:e.unref(B)},[e.createElementVNode("section",Sn,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(o).identity),1),e.createElementVNode("label",wn,[e.createTextVNode(e.toDisplayString(e.unref(o).templateId),1),e.createElementVNode("input",{value:t.lockId?v.identity?.id??e.unref(K).id:e.unref(K).id,autocomplete:"off",readonly:t.lockId,onInput:l[16]||(l[16]=n=>e.unref(K).id=n.target.value)},null,40,Dn)]),e.createElementVNode("label",Cn,[e.createTextVNode(e.toDisplayString(e.unref(o).templateName),1),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":l[17]||(l[17]=n=>e.unref(K).name=n),autocomplete:"off"},null,512),[[e.vModelText,e.unref(K).name]])])])],8,Bn)])]),e.unref(b)&&e.unref(w).issues.length?(e.openBlock(),e.createElementBlock("div",$n,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).issues)+" · "+e.toDisplayString(e.unref(w).issues.length)+" "+e.toDisplayString(e.unref(o).errors),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w).issues.slice(0,12),(n,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},[e.createElementVNode("code",null,e.toDisplayString(n.path),1),e.createTextVNode(e.toDisplayString(n.message),1)]))),128))]),e.unref(w).issues.length>12?(e.openBlock(),e.createElementBlock("span",xn,"+ "+e.toDisplayString(e.unref(w).issues.length-12),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(k).warnings.length?(e.openBlock(),e.createElementBlock("details",Rn,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(o).inspectWarning)+" · "+e.toDisplayString(e.unref(k).warnings.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(k).warnings,(n,d)=>(e.openBlock(),e.createElementBlock("li",{key:d},e.toDisplayString(n),1))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("footer",_n,[e.createElementVNode("span",{class:e.normalizeClass({"is-ready":e.unref(w).ok}),role:"status"},e.toDisplayString(t.readonly?e.unref(o).readonly:e.unref(V)?e.unref(o).applied:e.unref(w).ok?e.unref(o).ready:`${e.unref(o).coverage} ${e.unref(w).mapped}/${e.unref(w).total}`),3),e.unref(i).pendingLocalChanges.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:e.unref(B),onClick:l[18]||(l[18]=(...n)=>e.unref(i).restoreDraft&&e.unref(i).restoreDraft(...n))},e.toDisplayString(e.unref(o).restoreDraft),9,Mn)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",disabled:e.unref(B),onClick:l[19]||(l[19]=(...n)=>e.unref(i).check&&e.unref(i).check(...n))},e.toDisplayString(e.unref(o).check),9,Fn),e.createElementVNode("button",{type:"button",class:"mr-binding-primary",disabled:e.unref(B)||!e.unref(w).ok,onClick:l[20]||(l[20]=(...n)=>e.unref(i).apply&&e.unref(i).apply(...n))},e.toDisplayString(e.unref(o).apply),9,Ln)])],64)):(e.openBlock(),e.createElementBlock("div",Vt,[l[25]||(l[25]=e.createElementVNode("svg",{viewBox:"0 0 80 80",fill:"none","aria-hidden":"true"},[e.createElementVNode("rect",{x:"15",y:"10",width:"50",height:"60",rx:"8",fill:"#eff6ff",stroke:"#bfdbfe"}),e.createElementVNode("path",{d:"M25 25h30M25 35h30M25 45h30M35 25v30M45 25v30M25 55h30",stroke:"#93c5fd","stroke-width":"1.5"})],-1)),e.createElementVNode("strong",null,e.toDisplayString(e.unref(o).noSource),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(o).sourceOnly),1),e.createElementVNode("button",{type:"button",class:"mr-binding-primary",disabled:t.readonly,onClick:l[2]||(l[2]=n=>q.value?.click())},e.toDisplayString(e.unref(o).upload),9,Bt)]))],40,pt))}});exports.default=Tn;