@agile-team/mach-report 2.17.0 → 2.18.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 (168) hide show
  1. package/README.md +18 -9
  2. package/dist/{ExcelBindingWizard-Bq6FYME6.cjs → ExcelBindingWizard-Czn3C2yE.cjs} +1 -1
  3. package/dist/{ExcelBindingWizard-Co1svTsw.js → ExcelBindingWizard-DMGZj6I6.js} +3 -3
  4. package/dist/ParamEditor-KzDQvbHY.js +732 -0
  5. package/dist/ParamEditor-oDfD8LgE.cjs +1 -0
  6. package/dist/{ReportBatchPanel-uQh06usx.js → ReportBatchPanel-BJK7PvZ4.js} +39 -39
  7. package/dist/ReportBatchPanel-DnmNRssu.cjs +1 -0
  8. package/dist/ReportParamPanel-mQkeN70Q.js +1020 -0
  9. package/dist/ReportParamPanel-sOANVRz-.cjs +1 -0
  10. package/dist/ReportPreview-BxWWTUL5.js +5583 -0
  11. package/dist/ReportPreview-Yf99omi3.cjs +6 -0
  12. package/dist/{ReportTemplateLibrary-TIL_Oj2l.js → ReportTemplateLibrary-BFjB08Wu.js} +1 -1
  13. package/dist/{ReportTemplateLibrary-CnP7_1pH.cjs → ReportTemplateLibrary-BO42QnWd.cjs} +1 -1
  14. package/dist/RuleEditor-CqxT1a-W.js +2337 -0
  15. package/dist/RuleEditor-D7YWigD9.cjs +1 -0
  16. package/dist/{TemplateOutlinePanel-BlLxRrfu.cjs → TemplateOutlinePanel-B0XX350V.cjs} +1 -1
  17. package/dist/{TemplateOutlinePanel-BouxsuqQ.js → TemplateOutlinePanel-zG0DrsIB.js} +2 -2
  18. package/dist/{TemplateReusePanel-yxsHSO40.cjs → TemplateReusePanel-BD0HSKp_.cjs} +1 -1
  19. package/dist/{TemplateReusePanel-BEACLPaN.js → TemplateReusePanel-Czwe5GbC.js} +2 -2
  20. package/dist/{TemplateReviewPanel-D9Cx0m2N.cjs → TemplateReviewPanel-CA5sdffM.cjs} +1 -1
  21. package/dist/{TemplateReviewPanel-B1OGRY2i.js → TemplateReviewPanel-NhmQI65C.js} +2 -2
  22. package/dist/analytics.cjs +1 -1
  23. package/dist/analytics.d.cts +100 -41
  24. package/dist/analytics.d.ts +100 -41
  25. package/dist/analytics.js +76 -141
  26. package/dist/artifact-integrity.json +108 -102
  27. package/dist/assets-2eC3mOcV.js +232 -0
  28. package/dist/assets-B0Hxn4l6.cjs +1 -0
  29. package/dist/{auto-DDHflI9v.cjs → auto-B0EZFIK1.cjs} +1 -1
  30. package/dist/{auto-BIOmtVhk.js → auto-BlchZ1b8.js} +19 -19
  31. package/dist/{batch-WzDIXJAt.js → batch-DGCt44XM.js} +1 -1
  32. package/dist/{batch-z6Aw5GEY.cjs → batch-DYcokH4v.cjs} +1 -1
  33. package/dist/charts-Dlv8j2AG.js +141 -0
  34. package/dist/charts-aCtoswXq.cjs +1 -0
  35. package/dist/codes.cjs +9 -9
  36. package/dist/codes.d.cts +54 -0
  37. package/dist/codes.d.ts +54 -0
  38. package/dist/codes.js +12097 -13668
  39. package/dist/column-visual-BpgQVWwT.js +238 -0
  40. package/dist/column-visual-CtYxnBCP.cjs +1 -0
  41. package/dist/component-tree-6TV7W6Yj.cjs +1 -0
  42. package/dist/component-tree-CvW4lzpv.js +67 -0
  43. package/dist/computed-4TnxzgIh.cjs +1 -0
  44. package/dist/computed-C8NRZQss.js +739 -0
  45. package/dist/data-bar-Ce38juRZ.cjs +1 -0
  46. package/dist/data-bar-PtjXhMgN.js +9 -0
  47. package/dist/designer--TKECSEc.cjs +2 -0
  48. package/dist/designer-d6hJS41w.js +5683 -0
  49. package/dist/designer.cjs +1 -1
  50. package/dist/designer.d.cts +710 -42
  51. package/dist/designer.d.ts +710 -42
  52. package/dist/designer.js +23 -20
  53. package/dist/{encoding-BFMFIc4r.cjs → encoding-B--eZpp1.cjs} +1 -1
  54. package/dist/{encoding-DP_Eaf0A.js → encoding-mctOLocI.js} +2 -2
  55. package/dist/{font-loader-7FWVlykp.cjs → font-loader-DBBJ5KE9.cjs} +1 -1
  56. package/dist/{font-loader-CQZowp0I.js → font-loader-DW8tIaNp.js} +1 -1
  57. package/dist/index-CPh6tqge.js +1575 -0
  58. package/dist/index-CUNw7dL9.cjs +1 -0
  59. package/dist/index.cjs +7 -7
  60. package/dist/index.d.cts +361 -15
  61. package/dist/index.d.ts +361 -15
  62. package/dist/index.js +876 -835
  63. package/dist/json-snapshot-By4ZVVUt.js +1967 -0
  64. package/dist/json-snapshot-jiXff4lc.cjs +2 -0
  65. package/dist/matrix-0hywp0-F.cjs +1 -0
  66. package/dist/matrix-Dy-tyY7E.js +381 -0
  67. package/dist/param-validation-C-8sRJLq.cjs +1 -0
  68. package/dist/param-validation-CnDEd2l-.js +333 -0
  69. package/dist/{pdf-l3ea86di.js → pdf-CKROKygt.js} +1851 -1849
  70. package/dist/{pdf-B8JouyYv.cjs → pdf-DqyxJ96U.cjs} +46 -46
  71. package/dist/pdf.cjs +1 -1
  72. package/dist/pdf.d.cts +54 -0
  73. package/dist/pdf.d.ts +54 -0
  74. package/dist/pdf.js +2 -2
  75. package/dist/{plugin-BBp74CQZ.js → plugin-ByjF2kiV.js} +5 -5
  76. package/dist/{plugin-CtFX9PFG.cjs → plugin-DM1M2wlI.cjs} +1 -1
  77. package/dist/prefill-B8H9qwE4.js +371 -0
  78. package/dist/prefill-D7EswyTI.cjs +1 -0
  79. package/dist/{prepared-CARicKYh.js → prepared-BE-4jfX5.js} +2 -2
  80. package/dist/{prepared-Ch1x_Gog.cjs → prepared-CGVphji3.cjs} +1 -1
  81. package/dist/{protocol-B5A2uom4.cjs → protocol-ByRVzzQG.cjs} +1 -1
  82. package/dist/{protocol-BaiWjq5w.js → protocol-Cr81vFSQ.js} +3 -3
  83. package/dist/{record-bindings-D4TuMzHs.js → record-bindings-DEJtmo3p.js} +67 -107
  84. package/dist/record-bindings-ehjnCDHt.cjs +1 -0
  85. package/dist/{region-binding-workflow-BNasF5kz.js → region-binding-workflow-CBg0l_tj.js} +1 -1
  86. package/dist/{region-binding-workflow-O2Cni3mF.cjs → region-binding-workflow-D05tOYn3.cjs} +1 -1
  87. package/dist/report-encoding-worker.cjs +1 -1
  88. package/dist/report-encoding-worker.js +1 -1
  89. package/dist/{report-params-B1RzkhJj.js → report-params-D9tBuM9B.js} +1 -1
  90. package/dist/{report-params-WDGrA4oP.cjs → report-params-VTg8MoCp.cjs} +1 -1
  91. package/dist/runtime-CDA6d263.cjs +1 -0
  92. package/dist/runtime-CEMvybO7.js +170 -0
  93. package/dist/sbom.cdx.json +1 -1
  94. package/dist/server/node.d.cts +75 -7
  95. package/dist/server/node.d.ts +75 -7
  96. package/dist/server-node.cjs +4 -4
  97. package/dist/server-node.js +2692 -1990
  98. package/dist/server.cjs +1 -1
  99. package/dist/server.d.cts +243 -28
  100. package/dist/server.d.ts +243 -28
  101. package/dist/server.js +28 -28
  102. package/dist/sha256-BDQ1Qk7A.js +158 -0
  103. package/dist/sha256-DgZAKXqI.cjs +1 -0
  104. package/dist/style.css +1 -1
  105. package/dist/template-bindings-Cg5oBLFT.cjs +1 -0
  106. package/dist/template-bindings-TKnXM7ll.js +62 -0
  107. package/dist/{template-catalog-wT1fNeAP.js → template-catalog-CmbWOJqy.js} +16 -16
  108. package/dist/{template-catalog-Dua8h9ZA.cjs → template-catalog-Utu4GP09.cjs} +1 -1
  109. package/dist/{template-fragments-BajTajb4.cjs → template-fragments-C_zSHJAa.cjs} +1 -1
  110. package/dist/{template-fragments-DmX5XK4N.js → template-fragments-DWgo9tlZ.js} +2 -2
  111. package/dist/{template-outline-BwRV_eRo.cjs → template-outline-DWkzZXVC.cjs} +1 -1
  112. package/dist/{template-outline-cnWfT_LK.js → template-outline-DiADphlq.js} +1 -1
  113. package/dist/{template-registry-u11fPd8D.js → template-registry-BIhIHOab.js} +319 -314
  114. package/dist/template-registry-DzWswQI5.cjs +1 -0
  115. package/dist/vue/async.d.cts +528 -33
  116. package/dist/vue/async.d.ts +528 -33
  117. package/dist/vue/index.d.cts +616 -64
  118. package/dist/vue/index.d.ts +616 -64
  119. package/dist/vue-async.cjs +1 -1
  120. package/dist/vue-async.js +3 -3
  121. package/dist/vue.cjs +1 -1
  122. package/dist/vue.js +94 -89
  123. package/dist/{workbook-session-DN5LSA5C.cjs → workbook-session-B94EwVa_.cjs} +1 -1
  124. package/dist/{workbook-session-B8pNW24X.js → workbook-session-BoScoOg-.js} +2 -2
  125. package/dist/worker.cjs +1 -1
  126. package/dist/worker.d.cts +75 -7
  127. package/dist/worker.d.ts +75 -7
  128. package/dist/worker.js +4 -4
  129. package/dist/xlsx.cjs +4 -4
  130. package/dist/xlsx.d.cts +120 -13
  131. package/dist/xlsx.d.ts +120 -13
  132. package/dist/xlsx.js +313 -279
  133. package/package.json +1 -1
  134. package/dist/ParamEditor-B5UZRgxv.cjs +0 -1
  135. package/dist/ParamEditor-DNNARyeB.js +0 -594
  136. package/dist/ReportBatchPanel-Ctvs2t_9.cjs +0 -1
  137. package/dist/ReportPreview-BdQawRh0.js +0 -4879
  138. package/dist/ReportPreview-CJC_-j2I.cjs +0 -6
  139. package/dist/RuleEditor-DkRjOLlr.js +0 -2141
  140. package/dist/RuleEditor-h5anGsDB.cjs +0 -1
  141. package/dist/assets-BIMVwjQe.js +0 -231
  142. package/dist/assets-Dfs2ElxI.cjs +0 -1
  143. package/dist/component-tree-Ca6YYfHq.js +0 -61
  144. package/dist/component-tree-DkGLEfZC.cjs +0 -1
  145. package/dist/computed-BW5a8QFk.js +0 -612
  146. package/dist/computed-C2GD3XcE.cjs +0 -1
  147. package/dist/config-Dg_o8e7m.cjs +0 -1
  148. package/dist/config-XQ4qrQ7Q.js +0 -844
  149. package/dist/designer-D9XAxqSc.js +0 -5178
  150. package/dist/designer-uCDo5XSK.cjs +0 -2
  151. package/dist/drill-ByN8COs_.cjs +0 -1
  152. package/dist/drill-CKW3Xtfa.js +0 -145
  153. package/dist/json-snapshot-D7PE1NsU.cjs +0 -2
  154. package/dist/json-snapshot-DYmEe3sO.js +0 -1779
  155. package/dist/matrix-JLAXlux-.js +0 -302
  156. package/dist/matrix-gTHpDTGm.cjs +0 -1
  157. package/dist/param-validation-C3HlcLLO.cjs +0 -1
  158. package/dist/param-validation-Do7Eg8Zv.js +0 -181
  159. package/dist/record-bindings-B86Sur_y.cjs +0 -1
  160. package/dist/runtime-DakRXui3.js +0 -170
  161. package/dist/runtime-dL5ygIfa.cjs +0 -1
  162. package/dist/sha256-BshdOkCC.cjs +0 -1
  163. package/dist/sha256-DTG-Gq8i.js +0 -157
  164. package/dist/template-bindings-C2SpvsMU.js +0 -58
  165. package/dist/template-bindings-CEtWyiLX.cjs +0 -1
  166. package/dist/template-registry-CpysHAxy.cjs +0 -1
  167. package/dist/tree-CLpxYbKa.cjs +0 -1
  168. package/dist/tree-DNJorJUf.js +0 -172
package/README.md CHANGED
@@ -4,11 +4,11 @@
4
4
 
5
5
  <p align="center">
6
6
  <strong>面向业务宽表、明细台账与工业标签的 TypeScript 报表引擎</strong><br />
7
- 完整宽表 · Excel 模板绑定 · 工业标签 · 前后端共用契约 · 受控服务端输出
7
+ 完整宽表 · Excel 模板绑定 · 规则填报与数据核对 · 工业标签 · 前后端共用契约
8
8
  </p>
9
9
 
10
10
  <p align="center">
11
- <img src="https://img.shields.io/badge/source-2.17.0-2563eb" alt="Source version 2.17.0" />
11
+ <img src="https://img.shields.io/badge/source-2.18.0-2563eb" alt="Source version 2.18.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>
@@ -22,6 +22,7 @@
22
22
  <a href="#excel-报表能力与边界"><strong>Excel 能力</strong></a> ·
23
23
  <a href="#工业标签与材料标识">工业标签</a> ·
24
24
  <a href="#单元格编辑">单元格编辑</a> ·
25
+ <a href="https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DATA_WORKFLOW.md">填报与核对</a> ·
25
26
  <a href="#对齐与可读性">对齐配置</a> ·
26
27
  <a href="#模板配置与管理扩展">模板管理</a> ·
27
28
  <a href="#接入项目数据">数据接入</a> ·
@@ -43,16 +44,16 @@ MachReport 把模板、数据和输出分开:用 TypeScript DSL 或 JSON 定
43
44
  | 页面模型 | 毫米单位、纸张预设与自定义尺寸、页边距、横纵向、文本与表格几何 |
44
45
  | 完整宽表 | 自然列宽、横向滚动、默认 100% 预览;页级与宽表行列视口裁剪,Excel 自动合并连续 Sheet |
45
46
  | 明细与汇总 | 自动分页、多级分组与加权小计、业务键主从明细、层级动态矩阵、独立区域流式组合、重复页眉页脚 |
46
- | 数据呈现 | 表头与内容独立对齐、类型自动对齐、数值 / 百分比 / 日期格式化、条件格式、富文本与格内子组件 |
47
- | 预览交互 | 远程级联参数、受控关联详情、右下分页、分组导出菜单、内容搜索与字段目录、跨页选区、冻结窗格、Sheet 导航 |
48
- | 内容编辑 | 默认只读;双击与批量粘贴、原子保存、按行依赖增量计算、编辑后重排、撤销 / 重做、恢复与变更清单 |
47
+ | 数据呈现 | 独立对齐与字段格式、组合条件、数据条 / 色阶、声明式聚合图表、富文本与格内子组件 |
48
+ | 预览交互 | 多选 / 级联 / 数值范围、远程字典、紧凑数据工具、搜索与字段目录、右下分页、跨页选区、冻结与 Sheet 导航 |
49
+ | 内容编辑 | 默认只读;双击 / 粘贴、整批候选校验、安全预填、原子保存、按行依赖增量计算、撤销 / 重做与差异审阅 |
49
50
  | Excel 导入 | 混合字体与只读富文本、PNG/JPEG Logo、完整索引色、多 Sheet 会话复用、可取消预检、合并样式与缓存公式值转换为模板 |
50
51
  | 模板配置 | 可视化画布、Excel 业务绑定向导、计算与规则、变更对比与发布验收、CAS 历史 / 回滚 |
51
52
  | 工业标签 | 模板 + 行数组直接接入、逐记录字段绑定、多版相邻与份数、真实 QR / 条码、可视化设计 |
52
53
  | 输出 | 浏览器打印、HTML、PDF、真正的 `.xlsx`、逐页 PNG、Word 兼容 HTML `.doc` |
53
54
  | 工程接入 | 局部组件、全局插件、异步入口、分层配置、结构化错误与导出告警 |
54
55
  | 引擎复用 | 共用业务语义与计算、逐页排版、按页文档存储、OpenAPI / Java客户端、自动隔离编码、流式 Excel、可恢复持久任务 |
55
- | 分析扩展 | 可选只读选区计算、交叉汇总、声明式计算、柱图 / 折线图基础图元与资源适配 |
56
+ | 分析扩展 | 只读选区计算、按业务键精确期间对比、交叉汇总、IF / 数值 / 文本 / 日期表达式与按需资源适配 |
56
57
 
57
58
  数据接口、鉴权与业务规则由宿主应用决定。包内统一校验、分页、编辑事务、设计器和版本流程;宿主提供请求与存储适配器。审批和业务数据库部署按项目现有治理执行。
58
59
 
@@ -74,6 +75,7 @@ MachReport 把模板、数据和输出分开:用 TypeScript DSL 或 JSON 定
74
75
  | Excel 区域绑定、主从/树形/矩阵 | [Excel绑定](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_BINDING.md) · [复杂报表](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/COMPLEX_REPORTS.md) |
75
76
  | 模板库 → 发布 → 批次 → 可追溯实例 | [最小工作流](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/WORKFLOW.md) · [发布验收](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PUBLICATION_REVIEW.md) · `/platform.html` |
76
77
  | 跨项目搬运模板、资源、字段契约与脱敏样例 | [可搬运模板包](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/TEMPLATE_PACKAGE.md) |
78
+ | 安全预填、整批校验、期间数据对比、视觉分析 | [数据工作流](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DATA_WORKFLOW.md) · `/data-tools.html` |
77
79
  | 字典搜索、厂别/产线级联、查看关联详情 | [参数](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PARAMETERS.md) · [关联动作与隔离](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/RELIABILITY.md) · `/parameters.html`、`/product.html` |
78
80
  | 大批量标签、标准纸张拼版、持久任务 | [交付](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DELIVERY.md) · [持久任务](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DURABLE_JOBS.md) · [打印校准](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PRINT_AND_DATA.md) |
79
81
  | 层级交叉表、复杂区域、指标语义与组件扩展 | [复杂报表](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/COMPLEX_REPORTS.md) · [组件扩展](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/COMPONENT_EXTENSIONS.md) · [稳定接入](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/API_STABILITY.md) |
@@ -181,7 +183,7 @@ app.use(machReportPlugin, {
181
183
 
182
184
  模板的 `params` 会自动生成查询面板,显式 `paramDefs` 可覆盖。父页面用 `useMachReport()` 获得 `ref`、可等待的控制方法和只读响应式 `state`;例如 `report.state.canExport` 直接驱动外部按钮,加载、页数、导出、打印与错误无需另建状态。完整示例及接入边界见[项目接入指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/INTEGRATION.md)。旧 `fetcher` 与 `createLocalFetcher` 继续支持。
183
185
 
184
- 查询面板复用同一参数契约,校验类型、范围、日期、枚举和Unicode长度。首次缺少必填条件时显示填写引导并等待查询;提交后标明具体字段并聚焦首个问题项。可选下拉能清空,中文输入法确认不会误提交。原始`fetcher + paramDefs`和编程式`setParams`同样在请求前校验;自动首载所需的必填值请通过`params`或`defaultValue`提供。
186
+ 查询面板复用同一参数契约,校验类型、范围、日期、枚举和Unicode长度。新增多选、完整叶节点级联与数值范围保留规范JSON wire,旧单选继续使用原字符串;显式业务时钟/时区可通过 `reportDateDefault` 生成日历默认值。首次缺少必填条件时显示填写引导并等待查询;提交后标明具体字段并聚焦首个问题项。可选下拉能清空,中文输入法确认不会误提交。原始`fetcher + paramDefs`和编程式`setParams`同样在请求前校验;自动首载所需的必填值请通过`params`或`defaultValue`提供。
185
187
 
186
188
  ### 原生 TypeScript:生成并渲染页面
187
189
 
@@ -305,6 +307,12 @@ const { template, warnings } = bindExcelTemplate(imported, [{
305
307
 
306
308
  本地修改不会写入后台。持久化可配置 `{ canEdit, validate, save, saveBatch }`,或使用 `createProviderEditing` 桥接统一 Provider。包内先验证并原子保存,再更新计划;失败保留原值。已保存数据的撤销 / 重做也经过保存回调。`listOptions.rowKey` 声明稳定业务主键,修订号与来源令牌随编辑传递;屏幕行号不会被当作数据库身份。文本编号与真实 0 保留原始类型;表头、汇总和公式默认只读。详见 [编辑指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/CELL_EDITING.md)与[交互指南](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/INTERACTION.md)。
307
309
 
310
+ ### 规则填报与业务核对
311
+
312
+ `editable.validation` 用共享声明规则检查完整来源候选、隐藏行和派生结果;错误阻止整批保存,警告是否阻止由业务显式配置。`prefill` 只声明参考 loader 与字段白名单,默认仅补空白、保留真实零和只读格,审阅后复用同一原子编辑与撤销链路。`dataComparison` 按稳定业务键比较期间或实例数据,精确十进制差额、容差与零分母策略均显式配置。
313
+
314
+ 配置这些能力后才出现紧凑的“数据工具”菜单;包内维护侧栏、差异分页、取消和原报表定位,不要求项目增加第二张表或一套保存历史。保存及参考数据接口仍用现有业务客户端,Node可执行同一校验器,授权与数据库事务由宿主负责。见[最小接入、预算和边界](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DATA_WORKFLOW.md),或运行 `/data-tools.html` 体验本地闭环。
315
+
308
316
  ## 对齐与可读性
309
317
 
310
318
  `createTableTemplate()` 提供适合业务报表的默认值,常规列无需逐个配置。表头和内容独立设置,整表配置可被单列覆盖。
@@ -420,7 +428,7 @@ const { bytes, contentType, diagnostics, stats } = await runtime.export({
420
428
 
421
429
  `/worker` 与 `/server/node` 提供真实浏览器 Worker / worker_threads 适配器,运行同步分页时可硬取消;有界队列限制并发和排队。默认同步执行仅在阶段边界检查取消,不宣称阻塞期间可抢占。接入与预算详见[服务端与 Worker](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/SERVER.md)。
422
430
 
423
- 交叉汇总、声明式计算和基础柱图 / 折线图位于可选 `/analytics`。图形展开成共享基础图元;公式字符串需显式引擎适配器,不执行 `eval`,不重算导入 Excel 的公式。二维码与条码可选内置 `/codes`;其他码制与图表仍可配置 `assets.assetRenderers`,异步准备一次后供预览和导出共用,并返回缺失 / 不支持的结构化诊断。用法见[分析与资源适配](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/ANALYTICS.md)。
431
+ 交叉汇总、声明式计算和柱图 / 折线 / 堆叠 / 百分比图元位于可选 `/analytics`。模板也可用 `chartBinding` 直接声明数据集、分类、度量和聚合,不必在使用侧拼图形。`ListColumn.visual` 提供数据条和色阶,保持原始值;Excel数据条为静态快照,不会随Excel编辑重算,并返回明确说明。图形展开成共享基础图元;公式字符串需显式引擎适配器,不执行 `eval`,不重算导入 Excel 的公式。二维码与条码可选内置 `/codes`;其他码制与图表仍可配置 `assets.assetRenderers`,异步准备一次后供预览和导出共用,并返回缺失 / 不支持的结构化诊断。用法见[分析与资源适配](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/ANALYTICS.md)。
424
432
 
425
433
  ## 大报表预览与性能
426
434
 
@@ -655,6 +663,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
655
663
  | 设计效率 | [结构、片段与验收](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DESIGNER_PRODUCTIVITY.md) · [草稿恢复与版本冲突](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DRAFT_RECOVERY.md) |
656
664
  | 输出交付 | [准备结果与标签分批](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DELIVERY.md) · [打印校准与来源说明](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PRINT_AND_DATA.md) |
657
665
  | Excel业务绑定 | [绑定向导](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/EXCEL_BINDING.md):区域识别、契约映射与可重开会话 |
666
+ | 填报与核对 | [数据工作流](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DATA_WORKFLOW.md):复合参数、整批校验、安全预填、精确对比、图表与静态视觉 |
658
667
  | 复杂报表 | [计算与布局](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/COMPLEX_REPORTS.md):精确数值、多级分组、主从、动态矩阵与逐页生成 |
659
668
  | 发布验收 | [变更与输出](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/PUBLICATION_REVIEW.md):兼容检查、样例和真实文件验收 |
660
669
  | 持久任务 | [任务恢复](https://github.com/ChenyCHENYU/MachReport/blob/main/docs/DURABLE_JOBS.md):幂等、租约、取消与存储适配 |
@@ -674,7 +683,7 @@ CI 使用同一套校验命令,并在构建后检查实际发布产物。协
674
683
 
675
684
  ## 版本与授权
676
685
 
677
- 当前源码版本为 `2.17.0`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
686
+ 当前源码版本为 `2.18.0`,以 [`packages/mach-report/package.json`](https://github.com/ChenyCHENYU/MachReport/blob/main/packages/mach-report/package.json) 为准;npm 已发布版本由顶部 npm 标识展示。
678
687
 
679
688
  Copyright © 2026 ChenyCHENYU (Agile Team). All rights reserved.
680
689
 
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),I=require("./region-binding-workflow-O2Cni3mF.cjs"),_=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),he=require("./designer-uCDo5XSK.cjs"),ze=require("./useLocalDraft-CioIfDb6.cjs");function Ee(t,h){const c=/^\$\.datasets\[(\d+)\]/.exec(t.path)?.[1];return c!==void 0?h[Number(c)]?.id:h.find(g=>t.path.startsWith(`$.datasets.${g.id}.samples`))?.id}function Ne(t,h){const c=/\.fields\[(\d+)\]/.exec(t)?.[1];return c!==void 0?{control:"field",fieldIndex:Number(c)}:{control:t.split(".").at(-1)||h}}function Ve(t,h,c){const g=/^\$\.recipe\.regions\[(\d+)\]/.exec(t.path)?.[1],v=Ee(t,c),a=g===void 0?h.regions.find(E=>E.dataset===v):h.regions[Number(g)];if(!a)return{control:t.path.endsWith("footerRange")?"footer":"regions",...h.footerRange?{range:h.footerRange}:{}};if(t.path.startsWith("$.datasets"))return{regionId:a.id,range:a.range,control:t.code==="row-key"?"rowKey":"contract"};const w=Ne(t.path,"range"),k=t.code==="row-key"?"rowKey":w.control.startsWith("regions[")?"range":w.control;return{...w,control:k,regionId:a.id,range:a.range}}function Ae(t,h,c){if(t.path.startsWith("$.datasets")){const v=Ee(t,c);return v===void 0?[]:h.regions.filter(a=>a.dataset===v).map(a=>a.id)}const g=Ve(t,h,c).regionId;return g?[g]:[]}function Pe(t,h){const c=/^\$\.recipe\.regions\.(title|header|detail|footer)$/.exec(t.path)?.[1];return c?{control:c,range:h.regions[c]}:t.path.startsWith("$.datasets")?{control:t.code==="row-key"?"rowKey":"contract",range:h.regions.detail}:{...Ne(t.path,"detail"),range:h.regions.detail}}function ie(t){if(t.range)try{const h=I.parseImportRange(t.range);return t.fieldIndex!==void 0&&(h.left=h.right=h.left+t.fieldIndex),h}catch{return}}function We(t,h,c){return h.control==="dataset"?!c.dataset:h.control==="rowKey"?!c.rowKey:h.control==="field"&&h.fieldIndex!==void 0?!c.fields[h.fieldIndex]:!1}const He=["aria-label"],qe={class:"mr-binding-group"},Oe={class:"mr-binding-note"},Je=["title","disabled"],je={class:"mr-binding-region-list",role:"list",tabindex:"-1","data-binding-control":"regions"},Ue=["data-state"],Ge=["aria-pressed","onClick"],Xe=["title"],Qe={class:"mr-binding-region-state"},Ye={key:0},Ze=["aria-label","disabled","onClick"],et=["disabled"],tt={key:0,class:"mr-binding-group"},nt={class:"mr-binding-label",tabindex:"-1"},at=["value","aria-label"],ot={class:"mr-binding-label"},lt=["value","aria-label"],rt={value:"record"},it={value:"repeat"},st={class:"mr-binding-note"},ut={class:"mr-binding-label",tabindex:"-1"},ct=["value","aria-label"],dt={value:""},gt=["value"],mt={key:0,class:"mr-binding-label",tabindex:"-1"},ft=["value","aria-label"],vt={value:""},bt=["value"],pt={class:"mr-binding-region-tools"},yt=["disabled"],ht=["aria-label"],kt={key:1,class:"mr-binding-mappings"},Et={class:"mr-binding-field-search"},Nt=["placeholder","aria-label"],Vt={key:0,class:"mr-binding-note"},wt=["data-binding-control","value","onChange","aria-label"],St={value:""},Bt=["value"],xt={key:0},Dt={key:2,class:"mr-binding-map-pages"},$t=["disabled","aria-label"],Ct=["disabled","aria-label"],Rt={key:3,class:"mr-binding-concurrency"},It=["data-binding-control","value","onChange"],_t={value:""},Mt=["value"],Ft={class:"mr-binding-group",tabindex:"-1","data-binding-control":"footer"},Tt={class:"mr-binding-note"},Kt={class:"mr-binding-region-tools"},Lt=["disabled"],zt=["aria-label"],At=e.defineComponent({__name:"ExcelRegionBindingPanel",props:{controller:{},datasets:{},disabled:{type:Boolean},messages:{}},setup(t){const h=t,c=e.ref(0),g=e.ref(),v=e.ref(""),a=h.controller.active,w=e.computed(()=>h.datasets.find(f=>f.id===a.value?.dataset)),k=e.computed(()=>{if(!a.value)return[];let f=1;try{f=I.parseImportRange(a.value.range).left}catch{}return a.value.fields.slice(c.value*12,c.value*12+12).map((y,r)=>({field:y,index:c.value*12+r,physical:I.columnName(f+c.value*12+r)}))}),E=e.computed(()=>Math.max(1,Math.ceil((a.value?.fields.length??0)/12))),D=e.computed(()=>{const f=v.value.trim().toLocaleLowerCase(),y=w.value?.fields??[],r=y.filter(B=>[B.field,B.label,B.unit].some(H=>H?.toLocaleLowerCase().includes(f))).slice(0,64),V=new Set(k.value.map(B=>B.field));return[...r,...y.filter(B=>V.has(B.field)&&!r.includes(B))]});function L(f){return f.target.value}function U(f){h.controller.setActive(f),c.value=0,v.value=""}e.watch(()=>h.controller.focusTarget.value,async f=>{if(!f)return;c.value=Math.floor((f.target.fieldIndex??0)/12),v.value="",await e.nextTick();const y=f.target.control==="field"?`field-${f.target.fieldIndex}`:f.target.control==="contract"?"dataset":f.target.control,r=g.value?.querySelector(`[data-binding-control="${y}"]`),V=r?.closest("details");V&&(V.open=!0);const B=h.disabled&&r?.matches("input,select,textarea,button")?r.closest("label"):r;B?.focus(),B?.scrollIntoView?.({block:"nearest"})});function G(f){if(!(!a.value||h.disabled)){a.value.range=L(f);try{const y=I.parseImportRange(a.value.range),r=y.right-y.left+1;r<=2048&&(a.value.fields=Array.from({length:r},(V,B)=>a.value.fields[B]??""))}catch{}}}return(f,y)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"panel",ref:g,class:"mr-binding-multi","aria-label":t.messages.multiRegions},[e.createElementVNode("div",qe,[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",Oe,e.toDisplayString(t.messages.multiHint),1),e.createElementVNode("button",{type:"button",class:"mr-binding-add-region",title:t.controller.recipe.value.regions.length>=128?t.messages.limitRegions:t.controller.selection.value?t.messages.addRegion:t.messages.noCellSelection,disabled:t.disabled||!t.controller.selection.value||t.controller.recipe.value.regions.length>=128,onClick:y[0]||(y[0]=(...r)=>t.controller.add&&t.controller.add(...r))},[e.createVNode(_._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,Je),e.createElementVNode("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.controller.directory.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.region.id,class:e.normalizeClass(["mr-binding-region-entry",{"is-active":r.region.id===t.controller.activeId.value}]),"data-state":r.state},[e.createElementVNode("button",{type:"button","aria-pressed":r.region.id===t.controller.activeId.value,onClick:V=>U(r.region.id)},[e.createElementVNode("strong",{title:r.region.id},e.toDisplayString(r.region.id),9,Xe),e.createElementVNode("code",null,e.toDisplayString(r.region.range),1),e.createElementVNode("small",null,e.toDisplayString(r.region.mode==="record"?t.messages.recordMode:t.messages.repeatMode)+" · "+e.toDisplayString(r.region.dataset||t.messages.chooseDataset),1),e.createElementVNode("span",Qe,[e.createTextVNode(e.toDisplayString(r.state==="ready"?t.messages.regionReady:r.state==="pending"?t.messages.regionPending:t.messages.regionError),1),r.issues.length?(e.openBlock(),e.createElementBlock("span",Ye," · "+e.toDisplayString(r.issues.length),1)):e.createCommentVNode("",!0)])],8,Ge),e.createElementVNode("button",{type:"button","aria-label":`${t.messages.removeRegion} ${r.region.id}`,disabled:t.disabled,onClick:V=>t.controller.remove(r.region.id)},[e.createVNode(_._sfc_main,{name:"close",size:12})],8,Ze)],10,Ue))),128))])]),e.createElementVNode("fieldset",{disabled:t.disabled,class:"mr-binding-region-editor"},[e.unref(a)?(e.openBlock(),e.createElementBlock("section",tt,[e.createElementVNode("h3",null,[e.createTextVNode(e.toDisplayString(t.messages.regionProperties),1),e.createElementVNode("code",null,e.toDisplayString(e.unref(a).id),1)]),e.createElementVNode("label",nt,[e.createTextVNode(e.toDisplayString(t.messages.regionCoordinates),1),e.createElementVNode("input",{"data-binding-control":"range",value:e.unref(a).range,"aria-label":t.messages.regionCoordinates,onChange:G},null,40,at)]),e.createElementVNode("label",ot,[e.createTextVNode(e.toDisplayString(t.messages.regionMode),1),e.createElementVNode("select",{value:e.unref(a).mode,"aria-label":t.messages.regionMode,onChange:y[1]||(y[1]=r=>t.controller.property("mode",L(r)))},[e.createElementVNode("option",rt,e.toDisplayString(t.messages.recordMode),1),e.createElementVNode("option",it,e.toDisplayString(t.messages.repeatMode),1)],40,lt)]),e.createElementVNode("p",st,e.toDisplayString(e.unref(a).mode==="record"?t.messages.recordHint:t.messages.repeatHint),1),e.createElementVNode("label",ut,[e.createTextVNode(e.toDisplayString(t.messages.dataset),1),e.createElementVNode("select",{"data-binding-control":"dataset",value:e.unref(a).dataset,"aria-label":t.messages.dataset,onChange:y[2]||(y[2]=r=>t.controller.dataset(L(r)))},[e.createElementVNode("option",dt,e.toDisplayString(t.messages.chooseDataset),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.datasets,r=>(e.openBlock(),e.createElementBlock("option",{key:r.id,value:r.id},e.toDisplayString(r.label||r.id),9,gt))),128))],40,ct)]),w.value?(e.openBlock(),e.createElementBlock("label",mt,[e.createTextVNode(e.toDisplayString(t.messages.rowKey),1),e.createElementVNode("select",{"data-binding-control":"rowKey",value:e.unref(a).rowKey,"aria-label":t.messages.rowKey,onChange:y[3]||(y[3]=r=>t.controller.property("rowKey",L(r)))},[e.createElementVNode("option",vt,e.toDisplayString(t.messages.chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.fields.filter(r=>r.type!=="boolean"),r=>(e.openBlock(),e.createElementBlock("option",{key:r.field,value:r.field},e.toDisplayString(r.label||r.field),9,bt))),128))],40,ft)])):e.createCommentVNode("",!0),e.createElementVNode("div",pt,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:y[4]||(y[4]=(...r)=>t.controller.header&&t.controller.header(...r))},e.toDisplayString(t.messages.bindRegionHeader),9,yt),e.createElementVNode("code",null,e.toDisplayString(e.unref(a).headerRange||t.messages.noRegionHeader),1),e.unref(a).headerRange?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":t.messages.clearHeader,onClick:y[5]||(y[5]=(...r)=>t.controller.clearHeader&&t.controller.clearHeader(...r))},[e.createVNode(_._sfc_main,{name:"close",size:11})],8,ht)):e.createCommentVNode("",!0)]),w.value?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("label",Et,[e.createVNode(_._sfc_main,{name:"search",size:13}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[6]||(y[6]=r=>v.value=r),type:"search",placeholder:t.messages.searchFields,"aria-label":t.messages.searchFields},null,8,Nt),[[e.vModelText,v.value]])]),w.value.fields.length>64?(e.openBlock(),e.createElementBlock("small",Vt,e.toDisplayString(t.messages.fieldLimit),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("label",{key:r.index,class:"mr-binding-map",tabindex:"-1"},[e.createElementVNode("span",null,e.toDisplayString(r.physical),1),e.createElementVNode("div",null,[e.createElementVNode("select",{"data-binding-control":`field-${r.index}`,value:e.unref(a).fields[r.index],onChange:V=>t.controller.mapping(r.index,L(V)),"aria-label":`${t.messages.physical} ${r.physical} · ${t.messages.business}`},[e.createElementVNode("option",St,e.toDisplayString(t.messages.chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label||V.field)+" · "+e.toDisplayString(V.field),9,Bt))),128))],40,wt),r.field?(e.openBlock(),e.createElementBlock("small",xt,e.toDisplayString(w.value.fields.find(V=>V.field===r.field)?.type)+" · "+e.toDisplayString(w.value.fields.find(V=>V.field===r.field)?.unit||"—"),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),E.value>1?(e.openBlock(),e.createElementBlock("div",Dt,[e.createElementVNode("button",{type:"button",disabled:c.value<=0,"aria-label":t.messages.previousColumns,onClick:y[7]||(y[7]=r=>c.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,$t),e.createElementVNode("span",null,e.toDisplayString(c.value+1)+"/"+e.toDisplayString(E.value),1),e.createElementVNode("button",{type:"button",disabled:c.value+1>=E.value,"aria-label":t.messages.nextColumns,onClick:y[8]||(y[8]=r=>c.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Ct)])):e.createCommentVNode("",!0),w.value?(e.openBlock(),e.createElementBlock("details",Rt,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.concurrency),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["revisionField","sourceTokenField"],r=>e.createElementVNode("label",{key:r,class:"mr-binding-label",tabindex:"-1"},[e.createTextVNode(e.toDisplayString(r==="revisionField"?t.messages.revisionField:t.messages.sourceTokenField),1),e.createElementVNode("select",{"data-binding-control":r,value:e.unref(a)[r]||"",onChange:V=>t.controller.property(r,L(V))},[e.createElementVNode("option",_t,e.toDisplayString(t.messages.optional),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.fields,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label||V.field),9,Mt))),128))],40,It)])),64))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("section",Ft,[e.createElementVNode("h3",null,e.toDisplayString(t.messages.flowFooter),1),e.createElementVNode("p",Tt,e.toDisplayString(t.messages.flowFooterHint),1),e.createElementVNode("div",Kt,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:y[9]||(y[9]=(...r)=>t.controller.footer&&t.controller.footer(...r))},e.toDisplayString(t.messages.bindFooter),9,Lt),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:y[10]||(y[10]=(...r)=>t.controller.clearFooter&&t.controller.clearFooter(...r))},[e.createVNode(_._sfc_main,{name:"close",size:11})],8,zt)):e.createCommentVNode("",!0)])])],8,et)],8,He))}});function ke(t=""){return{version:"2.0",sheet:t,regions:[]}}function Pt(t,h,c,g){const v=e.ref(ke()),a=e.ref(""),w=e.ref(),k=e.ref(),E=e.ref(),D=e.computed(()=>!t.value||!k.value||!E.value?"":I.excelBindingCellRange(t.value,h.value,k.value,E.value)),L=e.computed(()=>({...v.value,regions:v.value.regions.map(u=>({...u,fields:[]}))})),U=e.computed(()=>t.value?I.validateExcelRegionGeometry(t.value,L.value):[]),G=e.computed(()=>{const u=I.validateExcelRegionFields(v.value,g()),b=[...U.value,...u.issues];return{...u,ok:!b.length,issues:b}}),f=e.computed(()=>v.value.regions.find(u=>u.id===a.value));function y(u){return Ve(u,v.value,g())}const r=e.computed(()=>{const u=new Map;for(const b of G.value.issues){const R=y(b);for(const d of Ae(b,v.value,g())){const M=u.get(d)??[];M.push({issue:b,target:{...R,regionId:d}}),u.set(d,M)}}return v.value.regions.map(b=>{const R=u.get(b.id)??[],d=R.length?R.every(M=>We(M.issue,M.target,b))?"pending":"error":"ready";return{region:b,state:d,issues:R}})});function V(u=ke(h.value)){v.value=JSON.parse(JSON.stringify(u)),a.value=v.value.regions[0]?.id??"",k.value=void 0,E.value=void 0,w.value=void 0}function B(u){u.regionId&&(a.value=u.regionId);const b=ie(u);b&&(k.value={row:b.top,column:b.left},E.value={row:b.bottom,column:b.right}),w.value={target:u,sequence:(w.value?.sequence??0)+1}}function H(u){B(y(u))}function i(u,b,R){c.value||((!R||!k.value)&&(k.value={row:u,column:b}),E.value={row:u,column:b})}function $(){if(c.value||!D.value||v.value.regions.length>=128)return;let u=1;for(;v.value.regions.some(d=>d.id===`region-${u}`);)u++;const b=`region-${u}`,R=Math.abs(E.value.column-k.value.column)+1;v.value.regions.push({id:b,range:D.value,mode:"repeat",dataset:"",fields:Array.from({length:R},()=>""),rowKey:""}),a.value=b}function J(u){c.value||(v.value.regions=v.value.regions.filter(b=>b.id!==u),a.value===u&&(a.value=v.value.regions[0]?.id??""))}function C(u){!c.value&&f.value&&(f.value.dataset=u,f.value.rowKey="",f.value.fields.fill(""),delete f.value.revisionField,delete f.value.sourceTokenField)}function P(u,b){if(!(c.value||!f.value)){if(u==="mode"){(b==="record"||b==="repeat")&&(f.value.mode=b);return}b||u==="rowKey"?f.value[u]=b:delete f.value[u]}}function N(u,b){!c.value&&f.value&&u>=0&&u<f.value.fields.length&&(f.value.fields[u]=b)}function K(){!c.value&&f.value&&delete f.value.headerRange}function z(){!c.value&&f.value&&D.value&&(f.value.headerRange=D.value)}function A(){!c.value&&D.value&&(v.value.footerRange=D.value)}function T(){c.value||delete v.value.footerRange}function q(u){const b=v.value.regions.find(R=>R.id===u);b&&B({regionId:u,control:"range",range:b.range})}function O(u,b){return!!k.value&&!!E.value&&u>=Math.min(k.value.row,E.value.row)&&u<=Math.max(k.value.row,E.value.row)&&b>=Math.min(k.value.column,E.value.column)&&b<=Math.max(k.value.column,E.value.column)}return{recipe:v,activeId:a,active:f,selection:D,validation:G,directory:r,focusTarget:w,target:y,locate:H,reset:V,select:i,add:$,remove:J,dataset:C,property:P,mapping:N,header:z,clearHeader:K,footer:A,clearFooter:T,setActive:q,selected:O}}function re(t="",h=0){return{version:"1.0",sheet:t,dataset:"",regions:{header:"",detail:""},fields:Array.from({length:h},()=>""),rowKey:""}}function ge(t){return t instanceof Error?t.message:String(t)}function Wt(t,h){const c=e.shallowRef(),g=e.ref(re()),v=e.ref("table"),a=Pt(c,e.computed(()=>g.value.sheet),e.computed(()=>M.value),()=>t.datasets),w=new Map,k=new Map,E=e.ref({table:[],regions:[]});function D(){w.clear(),k.clear(),E.value={table:[],regions:[]}}function L(){g.value.sheet&&(w.set(g.value.sheet,U(g.value)),k.set(g.value.sheet,JSON.parse(JSON.stringify(a.recipe.value))),E.value={table:[...w.values()],regions:[...k.values()]})}const U=o=>JSON.parse(JSON.stringify(o));function G(o,s){return U(w.get(o)??re(o,s))}const f=e.ref({id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"}),y=e.ref(""),r=e.ref(!1),V=()=>({recipe:g.value,regions:a.recipe.value,mode:v.value,cached:E.value,identity:f.value});let B;function H(o){g.value=U(o.recipe),a.reset(o.regions),v.value=o.mode,f.value={...o.identity,...t.lockId&&t.identity?{id:t.identity.id}:{}},D();for(const s of o.cached.table)w.set(s.sheet,s);for(const s of o.cached.regions)k.set(s.sheet,s);E.value=o.cached}const i=e.ref(0),$=ze.useLocalDraft(()=>({source:i.value,recipe:g.value,mode:v.value,regions:a.recipe.value,cached:E.value,identity:f.value})),J=e.ref([]);let C;function P(){C?.dispose(),C=void 0}const N=e.ref(""),K=e.ref(!1),z=e.ref(!1),A=e.ref(!1),T=e.ref(!1),q=e.ref(1),O=e.ref(1),u=e.ref(),b=e.ref(),R=e.ref(0),d=e.computed(()=>({...he.EXCEL_BINDING_MESSAGES,...t.messages})),M=e.computed(()=>!!t.readonly||K.value||T.value),te=e.computed(()=>!K.value&&!T.value),X=e.computed(()=>c.value?.sheets.find(o=>o.name===g.value.sheet)),x=e.computed(()=>X.value?I.parseImportRange(X.value.range):void 0),se=e.computed(()=>t.datasets.find(o=>o.id===g.value.dataset)),me=e.computed(()=>c.value&&X.value?I.getExcelSheetWindow(c.value,X.value.name,{row:q.value,column:O.value}):void 0),fe=e.computed(()=>c.value?I.validateExcelBindingRegions(c.value,g.value):[]),ve=e.computed(()=>{if(!c.value)return{ok:!1,issues:[],mapped:0,total:0};const o=I.validateExcelBindingFields(c.value,g.value,t.datasets),s=[...fe.value,...o.issues];return{...o,ok:s.length===0,issues:s}}),Y=e.computed(()=>v.value==="regions"?a.validation.value:ve.value),ae=e.ref(),oe=e.computed(()=>v.value==="regions"?a.focusTarget.value:ae.value);function m(o){return v.value==="regions"?a.target(o):Pe(o,g.value)}function l(o){const s={dataset:d.value.dataset,contract:d.value.dataContract,rowKey:d.value.rowKey,range:d.value.regionCoordinates,field:d.value.mapping,fields:d.value.mapping,footer:d.value.flowFooter,header:d.value.headerRegion,detail:d.value.detailRegion,title:d.value.titleRegion,sheet:d.value.sheet,regions:v.value==="regions"?d.value.multiRegions:d.value.regionLegend,revisionField:d.value.revisionField,sourceTokenField:d.value.sourceTokenField},S=ie(o),F=o.fieldIndex===void 0?"":` ${I.columnName(S?.left??o.fieldIndex+1)}`;return`${o.regionId?`${o.regionId} · `:""}${s[o.control]??d.value.regionCoordinates}${F}`}const n=e.computed(()=>Y.value.issues.map(o=>({issue:o,label:l(m(o)),message:o.message.replace(/\$\.recipe\.regions\[(\d+)\]/g,(s,S)=>a.recipe.value.regions[Number(S)]?.id??d.value.regionProperties)})));function p(o){return o?{dataset:d.value.nextDataset,rowKey:d.value.nextRowKey,field:d.value.nextField,fields:d.value.nextField,range:d.value.nextRange,regions:d.value.nextRegion,footer:d.value.nextFooter,header:d.value.nextHeader,detail:d.value.nextHeader,title:d.value.nextHeader}[o.control]??d.value.nextContract:v.value==="regions"?d.value.nextRegion:d.value.nextHeader}const W=e.computed(()=>t.readonly?d.value.readonly:K.value?d.value.loading:T.value?d.value.applying:A.value?d.value.applied:Y.value.ok?d.value.ready:p(Y.value.issues[0]?m(Y.value.issues[0]):void 0));e.watch(oe,o=>{const s=o&&ie(o.target);!s||!x.value||(q.value=Math.max(x.value.top,Math.min(x.value.bottom,s.top)),O.value=Math.max(x.value.left,Math.min(x.value.right,s.left)))});function ue(o){if(v.value==="regions"){a.locate(o);return}const s=m(o),S=ie(s);S&&(u.value=S.top,b.value=S.bottom),s.fieldIndex!==void 0&&(R.value=Math.floor(s.fieldIndex/12)),ae.value={target:s,sequence:(ae.value?.sequence??0)+1}}const ce=e.computed(()=>g.value.fields.slice(R.value*12,(R.value+1)*12).map((o,s)=>({index:R.value*12+s,field:o,physical:I.columnName((x.value?.left??1)+R.value*12+s)}))),we=e.computed(()=>se.value?.fields.filter(o=>o.type!=="boolean")??[]),de=e.computed(()=>u.value!==void 0&&b.value!==void 0?{top:Math.min(u.value,b.value),bottom:Math.max(u.value,b.value)}:void 0);let Q,j=0;function Z(){j++,Q?.abort(),Q=void 0,K.value=!1}function le(){q.value=x.value?.top??1,O.value=x.value?.left??1,u.value=void 0,b.value=void 0,R.value=0,z.value=!1,A.value=!1}function pe(o){Z();try{const s=o.version==="2.0"?I.parseExcelRegionBindingSession(o):I.parseExcelBindingSession(o);Z(),P(),J.value=s.source.sheets.map(S=>({name:S.name,index:S.index})),c.value=s.source,D(),s.version==="2.0"?(g.value=re(s.recipe.sheet,s.source.sheets.find(S=>S.name===s.recipe.sheet).columnCount),a.reset(s.recipe),v.value="regions"):(g.value=s.recipe,a.reset(),v.value="table"),f.value={...s.identity,...t.lockId&&t.identity?{id:t.identity.id}:{}},y.value=s.recipe.sheet,N.value="",le(),i.value++,$.accept()}catch(s){N.value=ge(s)}}e.watch(()=>t.session,o=>{o&&pe(o)},{immediate:!0}),e.watch(()=>t.readonly,o=>{o&&(Z(),P())}),e.watch([g,f,v,a.recipe],()=>{z.value=!1,A.value=!1},{deep:!0,flush:"sync"}),e.watch(()=>t.datasets,()=>{z.value=!1,A.value=!1}),e.onBeforeUnmount(()=>{Z(),P()});async function Se(o){if(t.readonly)return;if(Z(),!/\.xlsx$/i.test(o.name)){N.value=d.value.invalidFile;return}const s=++j;Q=new AbortController,K.value=!0,N.value="";let S;try{const{openExcelWorkbook:F}=await Promise.resolve().then(()=>require("./workbook-session-DN5LSA5C.cjs")).then(ee=>ee.workbookSession);if(s!==j||t.readonly||(S=await F(o,{...t.importOptions,signal:Q.signal}),s!==j||t.readonly))return;const ne=S.inspect().sheets.filter(ee=>ee.visible);if(!ne.length)throw new Error("Excel 中没有可导入的可见工作表");const ye=B?.recipe.sheet||ne[0].name;if(!ne.some(ee=>ee.name===ye))throw new Error(d.value.recoveredSheetMissing);const be=await S.importTemplate({sheets:[ye],signal:Q.signal});if(s!==j||t.readonly)return;P(),C=S,S=void 0,c.value=be,i.value++,y.value=o.name,J.value=ne.map(ee=>({name:ee.name,index:ee.index})),D(),g.value=re(be.sheets[0].name,be.sheets[0].columnCount),a.reset(),B&&(H(B),B=void 0,r.value=!1),le()}catch(F){s===j&&(N.value=ge(F))}finally{S?.dispose(),s===j&&(K.value=!1,Q=void 0)}}async function Be(o){if(M.value||!J.value.some(F=>F.name===o)||g.value.sheet===o)return;L();const s=c.value?.sheets.find(F=>F.name===o);if(s){g.value=G(o,s.columnCount),a.reset(k.get(o)),N.value="",le();return}if(!C||C.disposed)return;Z();const S=++j;Q=new AbortController,K.value=!0,N.value="";try{const F=await C.importTemplate({sheets:[o],signal:Q.signal});if(S!==j||t.readonly)return;c.value=F,g.value=G(o,F.sheets[0].columnCount),a.reset(k.get(o)),le()}catch(F){S===j&&(N.value=ge(F))}finally{S===j&&(K.value=!1,Q=void 0)}}function xe(o){M.value||(g.value.dataset=o,g.value.rowKey="",g.value.fields.fill(""),z.value=!1,A.value=!1)}function De(o,s){M.value||!x.value||o<x.value.top||o>x.value.bottom||((!s||u.value===void 0)&&(u.value=o),b.value=o)}function $e(o){if(M.value||!c.value||!de.value){M.value||(N.value=d.value.emptySelection);return}g.value.regions[o]=I.excelBindingRowRange(c.value,g.value.sheet,de.value.top,de.value.bottom),z.value=!1,A.value=!1,N.value=""}function Ce(o){M.value||(delete g.value.regions[o],z.value=!1,A.value=!1)}function Re(o,s){!M.value&&o>=0&&o<g.value.fields.length&&(g.value.fields[o]=s,z.value=!1,A.value=!1)}function Ie(o){M.value||(g.value.rowKey=o)}function _e(o,s){!M.value&&!(o==="id"&&t.lockId)&&(f.value[o]=s)}function Me(o){for(const s of["title","header","detail","footer"]){const S=g.value.regions[s];if(!S)continue;const F=I.parseImportRange(S);if(o>=F.top&&o<=F.bottom)return s}}function Fe(o,s){x.value&&(o==="row"?q.value=Math.max(x.value.top,Math.min(x.value.bottom,q.value+s)):O.value=Math.max(x.value.left,Math.min(x.value.right,O.value+s)))}function Te(){if(!t.readonly){if(t.session){pe(t.session);return}B=void 0,r.value=!1,Z(),P(),c.value=void 0,J.value=[],y.value="",D(),g.value=re(),f.value={id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"},a.reset(),v.value="table",le(),i.value++,$.accept(),N.value=""}}function Ke(){te.value&&(z.value=!0,N.value="")}async function Le(){if(!(M.value||!c.value||r.value)&&(z.value=!0,N.value="",!!Y.value.ok)){T.value=!0;try{const o={...f.value,...t.lockId&&t.identity?{id:t.identity.id}:{}},s=v.value==="regions"?I.createExcelRegionBindingDocument(c.value,a.recipe.value,t.datasets,o):I.createExcelBindingDocument(c.value,g.value,t.datasets,o),S=v.value==="regions"?I.createExcelRegionBindingSession(c.value,a.recipe.value,o):I.createExcelBindingSession(c.value,g.value,o),F={...s,session:S},ne=$.snapshot();if(t.accept&&!await t.accept(F)||t.readonly||ne!==$.snapshot()&&$.pending.value)return;t.accept||h(F),D(),$.accept(),A.value=!0}catch(o){N.value=ge(o)}finally{T.value=!1}}}return he.useTemplateToolDraft({key:()=>"excel",baseline:()=>"declarations-only",pending:()=>$.pending.value||r.value,snapshot:()=>JSON.stringify(V()),restore(o){const s=JSON.parse(o);if(!s.recipe||!s.regions||!Array.isArray(s.cached?.table)||!Array.isArray(s.cached?.regions))throw new Error("Invalid Excel mapping draft");H(s),B=s,r.value=!0}}),{recoveredMapping:r,imported:c,mode:v,regionBindings:a,pendingLocalChanges:e.computed(()=>$.pending.value||r.value),recipe:g,identity:f,sourceName:y,sheetChoices:J,error:N,loading:K,checked:z,applied:A,row:q,column:O,mappingPage:R,m:d,disabled:M,canCheck:te,sheet:X,sourceRange:x,dataset:se,window:me,validation:Y,focusTarget:oe,issueEntries:n,guidance:W,locateIssue:ue,mappings:ce,rowKeys:we,selection:de,cancel:Z,importFile:Se,chooseSheet:Be,chooseDataset:xe,chooseRow:De,markRegion:$e,clearRegion:Ce,setMapping:Re,setRowKey:Ie,setIdentity:_e,regionAt:Me,moveWindow:Fe,check:Ke,restoreDraft:Te,apply:Le}}const Ht=["aria-label","aria-busy"],qt={key:0,role:"status",class:"mr-binding-recovery"},Ot={class:"mr-binding-bar"},Jt={class:"mr-binding-heading"},jt=["aria-label","disabled"],Ut=["disabled"],Gt={key:1,class:"mr-binding-error",role:"alert"},Xt={key:2,class:"mr-binding-placeholder",role:"status"},Qt={key:3,class:"mr-binding-placeholder"},Yt=["disabled"],Zt={class:"mr-binding-sourcebar"},en=["value","aria-label","disabled"],tn=["value"],nn=["aria-label"],an=["aria-pressed","disabled"],on=["aria-pressed","disabled"],ln={class:"mr-binding-range"},rn={class:"mr-binding-sample-note"},sn={class:"mr-binding-layout"},un={class:"mr-binding-source"},cn={class:"mr-binding-grid-heading"},dn=["aria-label"],gn={class:"mr-binding-grid"},mn=["data-region"],fn={scope:"row"},vn=["data-source-row","aria-label","aria-pressed","disabled","onPointerdown","onPointerenter","onKeydown"],bn=["rowspan","colspan","title","data-source-cell","tabindex","aria-label","aria-selected","onPointerdown","onPointerenter","onKeydown"],pn={key:1,class:"mr-binding-grid-footer"},yn={class:"mr-binding-window"},hn=["aria-label","disabled"],kn=["min","max","value","aria-label"],En=["aria-label","disabled"],Nn={class:"mr-binding-window"},Vn=["aria-label","disabled"],wn=["min","max","value","aria-label"],Sn=["aria-label","disabled"],Bn={class:"mr-binding-inspector"},xn=["disabled"],Dn={class:"mr-binding-group"},$n=["data-role"],Cn={key:0},Rn=["aria-label","data-binding-control","title","disabled","onClick"],In=["aria-label","onClick"],_n={key:0,class:"mr-binding-note"},Mn={class:"mr-binding-group"},Fn={class:"mr-binding-label",tabindex:"-1"},Tn=["value","aria-label"],Kn={value:""},Ln=["value"],zn={key:0,class:"mr-binding-note"},An={key:1,class:"mr-binding-label",tabindex:"-1"},Pn=["value","aria-label"],Wn={value:""},Hn=["value"],qn={key:2,class:"mr-binding-mappings"},On=["data-binding-control","aria-label","value","onChange"],Jn={value:""},jn=["value"],Un={key:0},Gn={key:3,class:"mr-binding-map-pages"},Xn=["disabled","aria-label"],Qn=["disabled","aria-label"],Yn=["disabled"],Zn={class:"mr-binding-group"},ea={class:"mr-binding-label"},ta=["value","readonly"],na={class:"mr-binding-label"},aa=["value"],oa={key:0,class:"mr-binding-issues",open:""},la=["aria-label","onClick"],ra={key:0,class:"mr-binding-issue-pages"},ia=["disabled","aria-label"],sa=["disabled","aria-label"],ua={key:1,class:"mr-binding-warnings"},ca={class:"mr-binding-actions"},da=["title"],ga=["disabled"],ma=["disabled"],fa=["disabled","title"],va=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:h,emit:c}){const g=t,v=c,a=Wt(g,m=>v("apply",m)),{imported:w,mode:k,regionBindings:E,recipe:D,identity:L,sourceName:U,sheetChoices:G,error:f,loading:y,checked:r,row:V,column:B,mappingPage:H,m:i,disabled:$,sheet:J,sourceRange:C,dataset:P,window:N,validation:K,mappings:z,rowKeys:A,selection:T}=a;e.watch([a.pendingLocalChanges,D,L],()=>v("dirty",a.pendingLocalChanges.value),{immediate:!0,deep:!0,flush:"sync"});const q=e.ref(),O=e.ref(),u=e.ref(0),b=e.computed(()=>Math.max(1,Math.ceil(a.issueEntries.value.length/12))),R=e.computed(()=>a.issueEntries.value.slice(u.value*12,(u.value+1)*12));e.watch(b,m=>{u.value=Math.min(u.value,m-1)}),e.watch(a.focusTarget,async m=>{if(!m)return;await e.nextTick();const l=ie(m.target);if(l&&O.value?.querySelector(`td[data-source-cell="${l.top}:${l.left}"]`)?.scrollIntoView?.({block:"nearest",inline:"nearest"}),k.value==="regions")return;const n=m.target.control==="field"?`field-${m.target.fieldIndex}`:m.target.control==="contract"?"dataset":m.target.control,p=O.value?.querySelector(`.mr-binding-table-editor [data-binding-control="${n}"]`),W=$.value?p?.closest("label"):p;W?.focus(),W?.scrollIntoView?.({block:"nearest"})});const d=e.ref(!1),M=["title","header","detail","footer"],te=e.computed(()=>({title:i.value.titleRegion,header:i.value.headerRegion,detail:i.value.detailRegion,footer:i.value.footerRegion})),X=e.computed(()=>Math.max(1,Math.ceil(D.value.fields.length/12)));function x(m){return m.target.value}function se(m){const l=m.target,n=l.files?.[0];n&&a.importFile(n),l.value=""}function me(m,l){m.button!==0||$.value||(m.preventDefault(),d.value=!0,a.chooseRow(l,m.shiftKey),k.value==="regions"&&C.value&&(E.select(l,C.value.left,!1),E.select(l,C.value.right,!0)),m.currentTarget.focus())}function fe(m,l,n){k.value!=="regions"||m.button!==0||$.value||(m.preventDefault(),d.value=!0,E.select(l,n,m.shiftKey),m.currentTarget.focus())}function ve(m,l,n){if(k.value!=="regions")return;(m.key===" "||m.key==="Enter")&&(m.preventDefault(),E.select(l,n,m.shiftKey));const W={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]}[m.key];if(!W||!C.value)return;m.preventDefault();const ue=Math.max(C.value.top,Math.min(C.value.bottom,l+W[0])),ce=Math.max(C.value.left,Math.min(C.value.right,n+W[1]));m.shiftKey&&E.select(ue,ce,!0),m.currentTarget.closest("table")?.querySelector(`td[data-source-cell="${ue}:${ce}"]`)?.focus()}function Y(m,l){if((m.key===" "||m.key==="Enter")&&(m.preventDefault(),a.chooseRow(l,m.shiftKey)),m.key==="ArrowDown"||m.key==="ArrowUp"){m.preventDefault();const n=l+(m.key==="ArrowDown"?1:-1);m.shiftKey&&a.chooseRow(n,!0),m.currentTarget.closest("table")?.querySelector(`button[data-source-row="${n}"]`)?.focus()}}function ae(m){const l=P.value?.fields.find(n=>n.field===m);return l?[l.type,l.unit,l.digits===void 0?void 0:`${l.digits}${i.value.precision}`,l.sample===void 0?void 0:`${i.value.sample}: ${String(l.sample)}`].filter(n=>n!==void 0&&n!=="").join(" · "):""}function oe(m,l){const n=Number(x(m));!Number.isInteger(n)||!C.value||(l==="row"?V.value=Math.max(C.value.top,Math.min(C.value.bottom,n)):B.value=Math.max(C.value.left,Math.min(C.value.right,n)))}return h({get pendingLocalChanges(){return a.pendingLocalChanges.value},importFile:a.importFile,apply:a.apply,cancel:a.cancel}),(m,l)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"element",ref:O,class:"mr-binding","aria-label":e.unref(i).title,"aria-busy":e.unref(y),onPointerup:l[23]||(l[23]=n=>d.value=!1),onPointercancel:l[24]||(l[24]=n=>d.value=!1),onPointerleave:l[25]||(l[25]=n=>d.value=!1)},[e.unref(a).recoveredMapping.value?(e.openBlock(),e.createElementBlock("p",qt,e.toDisplayString(e.unref(i).recoveredMapping),1)):e.createCommentVNode("",!0),e.createElementVNode("header",Ot,[e.createElementVNode("div",Jt,[e.createVNode(_._sfc_main,{name:"file",size:17}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).title),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(U)||e.unref(i).intro),1)]),e.createElementVNode("input",{ref_key:"input",ref:q,type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","aria-label":e.unref(i).upload,class:"mr-binding-file",disabled:t.readonly,onChange:se},null,40,jt),e.unref(y)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:l[0]||(l[0]=(...n)=>e.unref(a).cancel&&e.unref(a).cancel(...n))},e.toDisplayString(e.unref(i).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(_._sfc_main,{name:"upload",size:14}),e.createTextVNode(e.toDisplayString(e.unref(w)?e.unref(i).replace:e.unref(i).upload),1)],8,Ut))]),e.unref(f)?(e.openBlock(),e.createElementBlock("div",Gt,e.toDisplayString(e.unref(f)),1)):e.createCommentVNode("",!0),e.unref(y)?(e.openBlock(),e.createElementBlock("div",Xt,[l[26]||(l[26]=e.createElementVNode("span",{class:"mr-binding-loader"},null,-1)),e.createTextVNode(e.toDisplayString(e.unref(i).loading),1)])):e.unref(w)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("div",Zt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).sheet),1),e.createElementVNode("select",{value:e.unref(D).sheet,"aria-label":e.unref(i).sheet,disabled:e.unref($),onChange:l[3]||(l[3]=n=>e.unref(a).chooseSheet(x(n)))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),n=>(e.openBlock(),e.createElementBlock("option",{key:n.name,value:n.name},e.toDisplayString(n.name),9,tn))),128))],40,en)]),e.createElementVNode("div",{class:"mr-binding-mode",role:"group","aria-label":e.unref(i).regionMode},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(k)==="table",disabled:e.unref($),onClick:l[4]||(l[4]=n=>k.value="table")},e.toDisplayString(e.unref(i).tableMode),9,an),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(k)==="regions",disabled:e.unref($),onClick:l[5]||(l[5]=n=>k.value="regions")},[e.createVNode(_._sfc_main,{name:"grid",size:12}),e.createTextVNode(e.toDisplayString(e.unref(i).multiRegions),1)],8,on)],8,nn),e.createElementVNode("span",ln,e.toDisplayString(e.unref(J)?.range)+" · "+e.toDisplayString(e.unref(J)?.rowCount)+" × "+e.toDisplayString(e.unref(J)?.columnCount),1),e.createElementVNode("span",rn,e.toDisplayString(e.unref(i).sourceOnly),1)]),e.createElementVNode("div",sn,[e.createElementVNode("div",un,[e.createElementVNode("div",cn,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).source),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(k)==="regions"?e.unref(i).multiHint:e.unref(i).sourceHint),1)]),e.unref(N)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-binding-grid-scroll","aria-label":e.unref(i).source},[e.createElementVNode("table",gn,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[l[28]||(l[28]=e.createElementVNode("th",{class:"mr-binding-corner","aria-label":"#"},"#",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(N).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(N).rows,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.row,"data-region":e.unref(a).regionAt(n.row),class:e.normalizeClass({"is-selected":e.unref(T)&&n.row>=e.unref(T).top&&n.row<=e.unref(T).bottom})},[e.createElementVNode("th",fn,[e.createElementVNode("button",{type:"button","data-source-row":n.row,"aria-label":`${e.unref(i).selectionLabel} ${n.row}`,"aria-pressed":!!e.unref(T)&&n.row>=e.unref(T).top&&n.row<=e.unref(T).bottom,disabled:e.unref($),onPointerdown:p=>me(p,n.row),onPointerenter:p=>d.value&&e.unref(a).chooseRow(n.row,!0),onKeydown:p=>Y(p,n.row)},e.toDisplayString(n.row),41,vn)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.cells,p=>(e.openBlock(),e.createElementBlock("td",{key:p.column,rowspan:p.rowSpan,colspan:p.colSpan,title:`${p.address} · ${p.text}`,"data-source-cell":`${p.row}:${p.column}`,tabindex:e.unref(k)==="regions"?0:void 0,"aria-label":e.unref(k)==="regions"?`${e.unref(i).selectionCellLabel} ${p.address}`:void 0,"aria-selected":e.unref(k)==="regions"?e.unref(E).selected(p.row,p.column):void 0,class:e.normalizeClass({"is-continued":p.continued,"is-cell-selected":e.unref(k)==="regions"&&e.unref(E).selected(p.row,p.column)}),onPointerdown:W=>fe(W,p.row,p.column),onPointerenter:W=>e.unref(k)==="regions"&&d.value&&e.unref(E).select(p.row,p.column,!0),onKeydown:W=>ve(W,p.row,p.column),style:e.normalizeStyle({textAlign:p.style?.align,fontWeight:p.style?.bold?"600":void 0})},[e.createElementVNode("span",null,e.toDisplayString(p.text),1)],46,bn))),128))],10,mn))),128))])])],8,dn)):e.createCommentVNode("",!0),e.unref(N)?(e.openBlock(),e.createElementBlock("footer",pn,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(e.unref(i).selected)+" ",1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(k)==="regions"?e.unref(E).selection.value||"—":e.unref(T)?`${e.unref(T).top}–${e.unref(T).bottom}`:"—"),1)]),e.createElementVNode("div",yn,[e.createElementVNode("button",{type:"button","aria-label":e.unref(i).previousRows,disabled:e.unref(N).top<=e.unref(N).source.top,onClick:l[6]||(l[6]=n=>e.unref(a).moveWindow("row",-24))},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,hn),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).rowStart),1),e.createElementVNode("input",{type:"number",min:e.unref(N).source.top,max:e.unref(N).source.bottom,value:e.unref(V),"aria-label":e.unref(i).rowStart,onChange:l[7]||(l[7]=n=>oe(n,"row"))},null,40,kn)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).nextRows,disabled:e.unref(N).bottom>=e.unref(N).source.bottom,onClick:l[8]||(l[8]=n=>e.unref(a).moveWindow("row",24))},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,En)]),e.createElementVNode("div",Nn,[e.createElementVNode("button",{type:"button","aria-label":e.unref(i).previousColumns,disabled:e.unref(N).left<=e.unref(N).source.left,onClick:l[9]||(l[9]=n=>e.unref(a).moveWindow("column",-12))},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,Vn),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).columnStart),1),e.createElementVNode("input",{type:"number",min:e.unref(N).source.left,max:e.unref(N).source.right,value:e.unref(B),"aria-label":e.unref(i).columnStart,onChange:l[10]||(l[10]=n=>oe(n,"column"))},null,40,wn)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).nextColumns,disabled:e.unref(N).right>=e.unref(N).source.right,onClick:l[11]||(l[11]=n=>e.unref(a).moveWindow("column",12))},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Sn)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bn,[e.unref(k)==="regions"?(e.openBlock(),e.createBlock(At,{key:0,controller:e.unref(E),datasets:t.datasets,disabled:e.unref($),messages:e.unref(i)},null,8,["controller","datasets","disabled","messages"])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("fieldset",{disabled:e.unref($),class:"mr-binding-table-editor"},[e.createElementVNode("section",Dn,[e.createElementVNode("h3",null,[l[29]||(l[29]=e.createElementVNode("b",null,"1",-1)),e.createTextVNode(e.toDisplayString(e.unref(i).regionLegend),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(M,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(te.value[n]),1),n==="title"||n==="footer"?(e.openBlock(),e.createElementBlock("small",Cn,e.toDisplayString(e.unref(i).optional),1)):e.createCommentVNode("",!0)]),e.createElementVNode("code",null,e.toDisplayString(e.unref(D).regions[n]||e.unref(i).unnamed),1)]),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(i).selectRegion} · ${te.value[n]}`,"data-binding-control":n,title:e.unref(T)?`${e.unref(i).selectRegion} · ${te.value[n]}`:e.unref(i).emptySelection,disabled:!e.unref(T),onClick:p=>e.unref(a).markRegion(n)},[e.createVNode(_._sfc_main,{name:"arrow-right",size:13})],8,Rn),(n==="title"||n==="footer")&&e.unref(D).regions[n]?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${e.unref(i).clear} · ${te.value[n]}`,onClick:p=>e.unref(a).clearRegion(n)},[e.createVNode(_._sfc_main,{name:"close",size:13})],8,In)):e.createCommentVNode("",!0)],8,$n)),64)),e.unref(D).regions.footer?(e.openBlock(),e.createElementBlock("p",_n,e.toDisplayString(e.unref(i).footerHint),1)):e.createCommentVNode("",!0)]),e.createElementVNode("section",Mn,[e.createElementVNode("h3",null,[l[30]||(l[30]=e.createElementVNode("b",null,"2",-1)),e.createTextVNode(e.toDisplayString(e.unref(i).mapping),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(K).mapped)+"/"+e.toDisplayString(e.unref(K).total),1)]),e.createElementVNode("label",Fn,[e.createTextVNode(e.toDisplayString(e.unref(i).dataset),1),e.createElementVNode("select",{"data-binding-control":"dataset",value:e.unref(D).dataset,"aria-label":e.unref(i).dataset,onChange:l[12]||(l[12]=n=>e.unref(a).chooseDataset(x(n)))},[e.createElementVNode("option",Kn,e.toDisplayString(e.unref(i).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,Ln))),128))],40,Tn)]),t.datasets.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",zn,e.toDisplayString(e.unref(i).noContract),1)),e.unref(P)?(e.openBlock(),e.createElementBlock("label",An,[e.createTextVNode(e.toDisplayString(e.unref(i).rowKey),1),e.createElementVNode("select",{"data-binding-control":"rowKey",value:e.unref(D).rowKey,"aria-label":e.unref(i).rowKey,onChange:l[13]||(l[13]=n=>e.unref(a).setRowKey(x(n)))},[e.createElementVNode("option",Wn,e.toDisplayString(e.unref(i).chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(A),n=>(e.openBlock(),e.createElementBlock("option",{key:n.field,value:n.field},e.toDisplayString(n.label||n.field)+" · "+e.toDisplayString(n.field),9,Hn))),128))],40,Pn)])):e.createCommentVNode("",!0),e.unref(P)?(e.openBlock(),e.createElementBlock("div",qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(z),n=>(e.openBlock(),e.createElementBlock("label",{key:n.index,class:"mr-binding-map",tabindex:"-1"},[e.createElementVNode("span",null,e.toDisplayString(n.physical),1),e.createElementVNode("div",null,[e.createElementVNode("select",{"data-binding-control":`field-${n.index}`,"aria-label":`${e.unref(i).physical} ${n.physical} · ${e.unref(i).business}`,value:n.field,onChange:p=>e.unref(a).setMapping(n.index,x(p))},[e.createElementVNode("option",Jn,e.toDisplayString(e.unref(i).chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(P).fields,p=>(e.openBlock(),e.createElementBlock("option",{key:p.field,value:p.field},e.toDisplayString(p.label||p.field)+" · "+e.toDisplayString(p.field),9,jn))),128))],40,On),n.field?(e.openBlock(),e.createElementBlock("small",Un,e.toDisplayString(ae(n.field)),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),e.unref(P)&&X.value>1?(e.openBlock(),e.createElementBlock("div",Gn,[e.createElementVNode("button",{type:"button",disabled:e.unref(H)<=0,"aria-label":e.unref(i).previousColumns,onClick:l[14]||(l[14]=n=>H.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,Xn),e.createElementVNode("span",null,e.toDisplayString(e.unref(H)+1)+" / "+e.toDisplayString(X.value),1),e.createElementVNode("button",{type:"button",disabled:e.unref(H)+1>=X.value,"aria-label":e.unref(i).nextColumns,onClick:l[15]||(l[15]=n=>H.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Qn)])):e.createCommentVNode("",!0)])],8,xn),[[e.vShow,e.unref(k)==="table"]]),e.createElementVNode("fieldset",{disabled:e.unref($)},[e.createElementVNode("section",Zn,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).identity),1),e.createElementVNode("label",ea,[e.createTextVNode(e.toDisplayString(e.unref(i).templateId),1),e.createElementVNode("input",{value:t.lockId?g.identity?.id??e.unref(L).id:e.unref(L).id,autocomplete:"off",readonly:t.lockId,onInput:l[16]||(l[16]=n=>e.unref(a).setIdentity("id",x(n)))},null,40,ta)]),e.createElementVNode("label",na,[e.createTextVNode(e.toDisplayString(e.unref(i).templateName),1),e.createElementVNode("input",{value:e.unref(L).name,autocomplete:"off",onInput:l[17]||(l[17]=n=>e.unref(a).setIdentity("name",x(n)))},null,40,aa)])])],8,Yn)])]),e.unref(r)&&e.unref(K).issues.length?(e.openBlock(),e.createElementBlock("details",oa,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(i).issues)+" · "+e.toDisplayString(e.unref(K).issues.length)+" "+e.toDisplayString(e.unref(i).errors),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,n=>(e.openBlock(),e.createElementBlock("li",{key:`${n.issue.path}:${n.issue.message}`},[e.createElementVNode("button",{type:"button",class:"mr-binding-issue-link","aria-label":`${e.unref(i).locateIssue} · ${n.label}`,onClick:p=>e.unref(a).locateIssue(n.issue)},[e.createElementVNode("strong",null,e.toDisplayString(n.label),1),e.createElementVNode("span",null,e.toDisplayString(n.message),1),e.createVNode(_._sfc_main,{name:"arrow-right",size:12})],8,la)]))),128))]),b.value>1?(e.openBlock(),e.createElementBlock("div",ra,[e.createElementVNode("button",{type:"button",disabled:u.value===0,"aria-label":e.unref(i).previousIssues,onClick:l[18]||(l[18]=n=>u.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:12})],8,ia),e.createElementVNode("span",null,e.toDisplayString(u.value+1)+"/"+e.toDisplayString(b.value),1),e.createElementVNode("button",{type:"button",disabled:u.value+1>=b.value,"aria-label":e.unref(i).nextIssues,onClick:l[19]||(l[19]=n=>u.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:12})],8,sa)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(w).warnings.length?(e.openBlock(),e.createElementBlock("details",ua,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(i).inspectWarning)+" · "+e.toDisplayString(e.unref(w).warnings.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w).warnings,(n,p)=>(e.openBlock(),e.createElementBlock("li",{key:p},e.toDisplayString(n),1))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("footer",ca,[e.createElementVNode("span",{class:e.normalizeClass({"is-ready":e.unref(K).ok}),role:"status",title:e.unref(a).guidance.value},e.toDisplayString(e.unref(a).guidance.value),11,da),e.unref(a).pendingLocalChanges.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:e.unref($),onClick:l[20]||(l[20]=(...n)=>e.unref(a).restoreDraft&&e.unref(a).restoreDraft(...n))},e.toDisplayString(e.unref(i).restoreDraft),9,ga)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",disabled:!e.unref(a).canCheck.value,onClick:l[21]||(l[21]=(...n)=>e.unref(a).check&&e.unref(a).check(...n))},e.toDisplayString(e.unref(i).check),9,ma),e.createElementVNode("button",{type:"button",class:"mr-binding-primary",disabled:e.unref($)||!e.unref(K).ok,title:e.unref(a).guidance.value,onClick:l[22]||(l[22]=(...n)=>e.unref(a).apply&&e.unref(a).apply(...n))},e.toDisplayString(e.unref(i).apply),9,fa)])],64)):(e.openBlock(),e.createElementBlock("div",Qt,[l[27]||(l[27]=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(i).noSource),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(i).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(i).upload),9,Yt)]))],40,Ht))}});exports.default=va;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),I=require("./region-binding-workflow-D05tOYn3.cjs"),_=require("./_plugin-vue_export-helper-BLmdZLlg.cjs"),he=require("./designer--TKECSEc.cjs"),ze=require("./useLocalDraft-CioIfDb6.cjs");function Ee(t,h){const c=/^\$\.datasets\[(\d+)\]/.exec(t.path)?.[1];return c!==void 0?h[Number(c)]?.id:h.find(g=>t.path.startsWith(`$.datasets.${g.id}.samples`))?.id}function Ne(t,h){const c=/\.fields\[(\d+)\]/.exec(t)?.[1];return c!==void 0?{control:"field",fieldIndex:Number(c)}:{control:t.split(".").at(-1)||h}}function Ve(t,h,c){const g=/^\$\.recipe\.regions\[(\d+)\]/.exec(t.path)?.[1],v=Ee(t,c),a=g===void 0?h.regions.find(E=>E.dataset===v):h.regions[Number(g)];if(!a)return{control:t.path.endsWith("footerRange")?"footer":"regions",...h.footerRange?{range:h.footerRange}:{}};if(t.path.startsWith("$.datasets"))return{regionId:a.id,range:a.range,control:t.code==="row-key"?"rowKey":"contract"};const w=Ne(t.path,"range"),k=t.code==="row-key"?"rowKey":w.control.startsWith("regions[")?"range":w.control;return{...w,control:k,regionId:a.id,range:a.range}}function Ae(t,h,c){if(t.path.startsWith("$.datasets")){const v=Ee(t,c);return v===void 0?[]:h.regions.filter(a=>a.dataset===v).map(a=>a.id)}const g=Ve(t,h,c).regionId;return g?[g]:[]}function Pe(t,h){const c=/^\$\.recipe\.regions\.(title|header|detail|footer)$/.exec(t.path)?.[1];return c?{control:c,range:h.regions[c]}:t.path.startsWith("$.datasets")?{control:t.code==="row-key"?"rowKey":"contract",range:h.regions.detail}:{...Ne(t.path,"detail"),range:h.regions.detail}}function ie(t){if(t.range)try{const h=I.parseImportRange(t.range);return t.fieldIndex!==void 0&&(h.left=h.right=h.left+t.fieldIndex),h}catch{return}}function We(t,h,c){return h.control==="dataset"?!c.dataset:h.control==="rowKey"?!c.rowKey:h.control==="field"&&h.fieldIndex!==void 0?!c.fields[h.fieldIndex]:!1}const He=["aria-label"],qe={class:"mr-binding-group"},Oe={class:"mr-binding-note"},Je=["title","disabled"],je={class:"mr-binding-region-list",role:"list",tabindex:"-1","data-binding-control":"regions"},Ue=["data-state"],Ge=["aria-pressed","onClick"],Xe=["title"],Qe={class:"mr-binding-region-state"},Ye={key:0},Ze=["aria-label","disabled","onClick"],et=["disabled"],tt={key:0,class:"mr-binding-group"},nt={class:"mr-binding-label",tabindex:"-1"},at=["value","aria-label"],ot={class:"mr-binding-label"},lt=["value","aria-label"],rt={value:"record"},it={value:"repeat"},st={class:"mr-binding-note"},ut={class:"mr-binding-label",tabindex:"-1"},ct=["value","aria-label"],dt={value:""},gt=["value"],mt={key:0,class:"mr-binding-label",tabindex:"-1"},ft=["value","aria-label"],vt={value:""},bt=["value"],pt={class:"mr-binding-region-tools"},yt=["disabled"],ht=["aria-label"],kt={key:1,class:"mr-binding-mappings"},Et={class:"mr-binding-field-search"},Nt=["placeholder","aria-label"],Vt={key:0,class:"mr-binding-note"},wt=["data-binding-control","value","onChange","aria-label"],St={value:""},Bt=["value"],xt={key:0},Dt={key:2,class:"mr-binding-map-pages"},$t=["disabled","aria-label"],Ct=["disabled","aria-label"],Rt={key:3,class:"mr-binding-concurrency"},It=["data-binding-control","value","onChange"],_t={value:""},Mt=["value"],Ft={class:"mr-binding-group",tabindex:"-1","data-binding-control":"footer"},Tt={class:"mr-binding-note"},Kt={class:"mr-binding-region-tools"},Lt=["disabled"],zt=["aria-label"],At=e.defineComponent({__name:"ExcelRegionBindingPanel",props:{controller:{},datasets:{},disabled:{type:Boolean},messages:{}},setup(t){const h=t,c=e.ref(0),g=e.ref(),v=e.ref(""),a=h.controller.active,w=e.computed(()=>h.datasets.find(f=>f.id===a.value?.dataset)),k=e.computed(()=>{if(!a.value)return[];let f=1;try{f=I.parseImportRange(a.value.range).left}catch{}return a.value.fields.slice(c.value*12,c.value*12+12).map((y,r)=>({field:y,index:c.value*12+r,physical:I.columnName(f+c.value*12+r)}))}),E=e.computed(()=>Math.max(1,Math.ceil((a.value?.fields.length??0)/12))),D=e.computed(()=>{const f=v.value.trim().toLocaleLowerCase(),y=w.value?.fields??[],r=y.filter(B=>[B.field,B.label,B.unit].some(H=>H?.toLocaleLowerCase().includes(f))).slice(0,64),V=new Set(k.value.map(B=>B.field));return[...r,...y.filter(B=>V.has(B.field)&&!r.includes(B))]});function L(f){return f.target.value}function U(f){h.controller.setActive(f),c.value=0,v.value=""}e.watch(()=>h.controller.focusTarget.value,async f=>{if(!f)return;c.value=Math.floor((f.target.fieldIndex??0)/12),v.value="",await e.nextTick();const y=f.target.control==="field"?`field-${f.target.fieldIndex}`:f.target.control==="contract"?"dataset":f.target.control,r=g.value?.querySelector(`[data-binding-control="${y}"]`),V=r?.closest("details");V&&(V.open=!0);const B=h.disabled&&r?.matches("input,select,textarea,button")?r.closest("label"):r;B?.focus(),B?.scrollIntoView?.({block:"nearest"})});function G(f){if(!(!a.value||h.disabled)){a.value.range=L(f);try{const y=I.parseImportRange(a.value.range),r=y.right-y.left+1;r<=2048&&(a.value.fields=Array.from({length:r},(V,B)=>a.value.fields[B]??""))}catch{}}}return(f,y)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"panel",ref:g,class:"mr-binding-multi","aria-label":t.messages.multiRegions},[e.createElementVNode("div",qe,[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",Oe,e.toDisplayString(t.messages.multiHint),1),e.createElementVNode("button",{type:"button",class:"mr-binding-add-region",title:t.controller.recipe.value.regions.length>=128?t.messages.limitRegions:t.controller.selection.value?t.messages.addRegion:t.messages.noCellSelection,disabled:t.disabled||!t.controller.selection.value||t.controller.recipe.value.regions.length>=128,onClick:y[0]||(y[0]=(...r)=>t.controller.add&&t.controller.add(...r))},[e.createVNode(_._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,Je),e.createElementVNode("div",je,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.controller.directory.value,r=>(e.openBlock(),e.createElementBlock("div",{key:r.region.id,class:e.normalizeClass(["mr-binding-region-entry",{"is-active":r.region.id===t.controller.activeId.value}]),"data-state":r.state},[e.createElementVNode("button",{type:"button","aria-pressed":r.region.id===t.controller.activeId.value,onClick:V=>U(r.region.id)},[e.createElementVNode("strong",{title:r.region.id},e.toDisplayString(r.region.id),9,Xe),e.createElementVNode("code",null,e.toDisplayString(r.region.range),1),e.createElementVNode("small",null,e.toDisplayString(r.region.mode==="record"?t.messages.recordMode:t.messages.repeatMode)+" · "+e.toDisplayString(r.region.dataset||t.messages.chooseDataset),1),e.createElementVNode("span",Qe,[e.createTextVNode(e.toDisplayString(r.state==="ready"?t.messages.regionReady:r.state==="pending"?t.messages.regionPending:t.messages.regionError),1),r.issues.length?(e.openBlock(),e.createElementBlock("span",Ye," · "+e.toDisplayString(r.issues.length),1)):e.createCommentVNode("",!0)])],8,Ge),e.createElementVNode("button",{type:"button","aria-label":`${t.messages.removeRegion} ${r.region.id}`,disabled:t.disabled,onClick:V=>t.controller.remove(r.region.id)},[e.createVNode(_._sfc_main,{name:"close",size:12})],8,Ze)],10,Ue))),128))])]),e.createElementVNode("fieldset",{disabled:t.disabled,class:"mr-binding-region-editor"},[e.unref(a)?(e.openBlock(),e.createElementBlock("section",tt,[e.createElementVNode("h3",null,[e.createTextVNode(e.toDisplayString(t.messages.regionProperties),1),e.createElementVNode("code",null,e.toDisplayString(e.unref(a).id),1)]),e.createElementVNode("label",nt,[e.createTextVNode(e.toDisplayString(t.messages.regionCoordinates),1),e.createElementVNode("input",{"data-binding-control":"range",value:e.unref(a).range,"aria-label":t.messages.regionCoordinates,onChange:G},null,40,at)]),e.createElementVNode("label",ot,[e.createTextVNode(e.toDisplayString(t.messages.regionMode),1),e.createElementVNode("select",{value:e.unref(a).mode,"aria-label":t.messages.regionMode,onChange:y[1]||(y[1]=r=>t.controller.property("mode",L(r)))},[e.createElementVNode("option",rt,e.toDisplayString(t.messages.recordMode),1),e.createElementVNode("option",it,e.toDisplayString(t.messages.repeatMode),1)],40,lt)]),e.createElementVNode("p",st,e.toDisplayString(e.unref(a).mode==="record"?t.messages.recordHint:t.messages.repeatHint),1),e.createElementVNode("label",ut,[e.createTextVNode(e.toDisplayString(t.messages.dataset),1),e.createElementVNode("select",{"data-binding-control":"dataset",value:e.unref(a).dataset,"aria-label":t.messages.dataset,onChange:y[2]||(y[2]=r=>t.controller.dataset(L(r)))},[e.createElementVNode("option",dt,e.toDisplayString(t.messages.chooseDataset),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.datasets,r=>(e.openBlock(),e.createElementBlock("option",{key:r.id,value:r.id},e.toDisplayString(r.label||r.id),9,gt))),128))],40,ct)]),w.value?(e.openBlock(),e.createElementBlock("label",mt,[e.createTextVNode(e.toDisplayString(t.messages.rowKey),1),e.createElementVNode("select",{"data-binding-control":"rowKey",value:e.unref(a).rowKey,"aria-label":t.messages.rowKey,onChange:y[3]||(y[3]=r=>t.controller.property("rowKey",L(r)))},[e.createElementVNode("option",vt,e.toDisplayString(t.messages.chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.fields.filter(r=>r.type!=="boolean"),r=>(e.openBlock(),e.createElementBlock("option",{key:r.field,value:r.field},e.toDisplayString(r.label||r.field),9,bt))),128))],40,ft)])):e.createCommentVNode("",!0),e.createElementVNode("div",pt,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:y[4]||(y[4]=(...r)=>t.controller.header&&t.controller.header(...r))},e.toDisplayString(t.messages.bindRegionHeader),9,yt),e.createElementVNode("code",null,e.toDisplayString(e.unref(a).headerRange||t.messages.noRegionHeader),1),e.unref(a).headerRange?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":t.messages.clearHeader,onClick:y[5]||(y[5]=(...r)=>t.controller.clearHeader&&t.controller.clearHeader(...r))},[e.createVNode(_._sfc_main,{name:"close",size:11})],8,ht)):e.createCommentVNode("",!0)]),w.value?(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("label",Et,[e.createVNode(_._sfc_main,{name:"search",size:13}),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":y[6]||(y[6]=r=>v.value=r),type:"search",placeholder:t.messages.searchFields,"aria-label":t.messages.searchFields},null,8,Nt),[[e.vModelText,v.value]])]),w.value.fields.length>64?(e.openBlock(),e.createElementBlock("small",Vt,e.toDisplayString(t.messages.fieldLimit),1)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,r=>(e.openBlock(),e.createElementBlock("label",{key:r.index,class:"mr-binding-map",tabindex:"-1"},[e.createElementVNode("span",null,e.toDisplayString(r.physical),1),e.createElementVNode("div",null,[e.createElementVNode("select",{"data-binding-control":`field-${r.index}`,value:e.unref(a).fields[r.index],onChange:V=>t.controller.mapping(r.index,L(V)),"aria-label":`${t.messages.physical} ${r.physical} · ${t.messages.business}`},[e.createElementVNode("option",St,e.toDisplayString(t.messages.chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(D.value,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label||V.field)+" · "+e.toDisplayString(V.field),9,Bt))),128))],40,wt),r.field?(e.openBlock(),e.createElementBlock("small",xt,e.toDisplayString(w.value.fields.find(V=>V.field===r.field)?.type)+" · "+e.toDisplayString(w.value.fields.find(V=>V.field===r.field)?.unit||"—"),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),E.value>1?(e.openBlock(),e.createElementBlock("div",Dt,[e.createElementVNode("button",{type:"button",disabled:c.value<=0,"aria-label":t.messages.previousColumns,onClick:y[7]||(y[7]=r=>c.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,$t),e.createElementVNode("span",null,e.toDisplayString(c.value+1)+"/"+e.toDisplayString(E.value),1),e.createElementVNode("button",{type:"button",disabled:c.value+1>=E.value,"aria-label":t.messages.nextColumns,onClick:y[8]||(y[8]=r=>c.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Ct)])):e.createCommentVNode("",!0),w.value?(e.openBlock(),e.createElementBlock("details",Rt,[e.createElementVNode("summary",null,e.toDisplayString(t.messages.concurrency),1),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(["revisionField","sourceTokenField"],r=>e.createElementVNode("label",{key:r,class:"mr-binding-label",tabindex:"-1"},[e.createTextVNode(e.toDisplayString(r==="revisionField"?t.messages.revisionField:t.messages.sourceTokenField),1),e.createElementVNode("select",{"data-binding-control":r,value:e.unref(a)[r]||"",onChange:V=>t.controller.property(r,L(V))},[e.createElementVNode("option",_t,e.toDisplayString(t.messages.optional),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(w.value.fields,V=>(e.openBlock(),e.createElementBlock("option",{key:V.field,value:V.field},e.toDisplayString(V.label||V.field),9,Mt))),128))],40,It)])),64))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("section",Ft,[e.createElementVNode("h3",null,e.toDisplayString(t.messages.flowFooter),1),e.createElementVNode("p",Tt,e.toDisplayString(t.messages.flowFooterHint),1),e.createElementVNode("div",Kt,[e.createElementVNode("button",{type:"button",disabled:!t.controller.selection.value,onClick:y[9]||(y[9]=(...r)=>t.controller.footer&&t.controller.footer(...r))},e.toDisplayString(t.messages.bindFooter),9,Lt),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:y[10]||(y[10]=(...r)=>t.controller.clearFooter&&t.controller.clearFooter(...r))},[e.createVNode(_._sfc_main,{name:"close",size:11})],8,zt)):e.createCommentVNode("",!0)])])],8,et)],8,He))}});function ke(t=""){return{version:"2.0",sheet:t,regions:[]}}function Pt(t,h,c,g){const v=e.ref(ke()),a=e.ref(""),w=e.ref(),k=e.ref(),E=e.ref(),D=e.computed(()=>!t.value||!k.value||!E.value?"":I.excelBindingCellRange(t.value,h.value,k.value,E.value)),L=e.computed(()=>({...v.value,regions:v.value.regions.map(u=>({...u,fields:[]}))})),U=e.computed(()=>t.value?I.validateExcelRegionGeometry(t.value,L.value):[]),G=e.computed(()=>{const u=I.validateExcelRegionFields(v.value,g()),b=[...U.value,...u.issues];return{...u,ok:!b.length,issues:b}}),f=e.computed(()=>v.value.regions.find(u=>u.id===a.value));function y(u){return Ve(u,v.value,g())}const r=e.computed(()=>{const u=new Map;for(const b of G.value.issues){const R=y(b);for(const d of Ae(b,v.value,g())){const M=u.get(d)??[];M.push({issue:b,target:{...R,regionId:d}}),u.set(d,M)}}return v.value.regions.map(b=>{const R=u.get(b.id)??[],d=R.length?R.every(M=>We(M.issue,M.target,b))?"pending":"error":"ready";return{region:b,state:d,issues:R}})});function V(u=ke(h.value)){v.value=JSON.parse(JSON.stringify(u)),a.value=v.value.regions[0]?.id??"",k.value=void 0,E.value=void 0,w.value=void 0}function B(u){u.regionId&&(a.value=u.regionId);const b=ie(u);b&&(k.value={row:b.top,column:b.left},E.value={row:b.bottom,column:b.right}),w.value={target:u,sequence:(w.value?.sequence??0)+1}}function H(u){B(y(u))}function i(u,b,R){c.value||((!R||!k.value)&&(k.value={row:u,column:b}),E.value={row:u,column:b})}function $(){if(c.value||!D.value||v.value.regions.length>=128)return;let u=1;for(;v.value.regions.some(d=>d.id===`region-${u}`);)u++;const b=`region-${u}`,R=Math.abs(E.value.column-k.value.column)+1;v.value.regions.push({id:b,range:D.value,mode:"repeat",dataset:"",fields:Array.from({length:R},()=>""),rowKey:""}),a.value=b}function J(u){c.value||(v.value.regions=v.value.regions.filter(b=>b.id!==u),a.value===u&&(a.value=v.value.regions[0]?.id??""))}function C(u){!c.value&&f.value&&(f.value.dataset=u,f.value.rowKey="",f.value.fields.fill(""),delete f.value.revisionField,delete f.value.sourceTokenField)}function P(u,b){if(!(c.value||!f.value)){if(u==="mode"){(b==="record"||b==="repeat")&&(f.value.mode=b);return}b||u==="rowKey"?f.value[u]=b:delete f.value[u]}}function N(u,b){!c.value&&f.value&&u>=0&&u<f.value.fields.length&&(f.value.fields[u]=b)}function K(){!c.value&&f.value&&delete f.value.headerRange}function z(){!c.value&&f.value&&D.value&&(f.value.headerRange=D.value)}function A(){!c.value&&D.value&&(v.value.footerRange=D.value)}function T(){c.value||delete v.value.footerRange}function q(u){const b=v.value.regions.find(R=>R.id===u);b&&B({regionId:u,control:"range",range:b.range})}function O(u,b){return!!k.value&&!!E.value&&u>=Math.min(k.value.row,E.value.row)&&u<=Math.max(k.value.row,E.value.row)&&b>=Math.min(k.value.column,E.value.column)&&b<=Math.max(k.value.column,E.value.column)}return{recipe:v,activeId:a,active:f,selection:D,validation:G,directory:r,focusTarget:w,target:y,locate:H,reset:V,select:i,add:$,remove:J,dataset:C,property:P,mapping:N,header:z,clearHeader:K,footer:A,clearFooter:T,setActive:q,selected:O}}function re(t="",h=0){return{version:"1.0",sheet:t,dataset:"",regions:{header:"",detail:""},fields:Array.from({length:h},()=>""),rowKey:""}}function ge(t){return t instanceof Error?t.message:String(t)}function Wt(t,h){const c=e.shallowRef(),g=e.ref(re()),v=e.ref("table"),a=Pt(c,e.computed(()=>g.value.sheet),e.computed(()=>M.value),()=>t.datasets),w=new Map,k=new Map,E=e.ref({table:[],regions:[]});function D(){w.clear(),k.clear(),E.value={table:[],regions:[]}}function L(){g.value.sheet&&(w.set(g.value.sheet,U(g.value)),k.set(g.value.sheet,JSON.parse(JSON.stringify(a.recipe.value))),E.value={table:[...w.values()],regions:[...k.values()]})}const U=o=>JSON.parse(JSON.stringify(o));function G(o,s){return U(w.get(o)??re(o,s))}const f=e.ref({id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"}),y=e.ref(""),r=e.ref(!1),V=()=>({recipe:g.value,regions:a.recipe.value,mode:v.value,cached:E.value,identity:f.value});let B;function H(o){g.value=U(o.recipe),a.reset(o.regions),v.value=o.mode,f.value={...o.identity,...t.lockId&&t.identity?{id:t.identity.id}:{}},D();for(const s of o.cached.table)w.set(s.sheet,s);for(const s of o.cached.regions)k.set(s.sheet,s);E.value=o.cached}const i=e.ref(0),$=ze.useLocalDraft(()=>({source:i.value,recipe:g.value,mode:v.value,regions:a.recipe.value,cached:E.value,identity:f.value})),J=e.ref([]);let C;function P(){C?.dispose(),C=void 0}const N=e.ref(""),K=e.ref(!1),z=e.ref(!1),A=e.ref(!1),T=e.ref(!1),q=e.ref(1),O=e.ref(1),u=e.ref(),b=e.ref(),R=e.ref(0),d=e.computed(()=>({...he.EXCEL_BINDING_MESSAGES,...t.messages})),M=e.computed(()=>!!t.readonly||K.value||T.value),te=e.computed(()=>!K.value&&!T.value),X=e.computed(()=>c.value?.sheets.find(o=>o.name===g.value.sheet)),x=e.computed(()=>X.value?I.parseImportRange(X.value.range):void 0),se=e.computed(()=>t.datasets.find(o=>o.id===g.value.dataset)),me=e.computed(()=>c.value&&X.value?I.getExcelSheetWindow(c.value,X.value.name,{row:q.value,column:O.value}):void 0),fe=e.computed(()=>c.value?I.validateExcelBindingRegions(c.value,g.value):[]),ve=e.computed(()=>{if(!c.value)return{ok:!1,issues:[],mapped:0,total:0};const o=I.validateExcelBindingFields(c.value,g.value,t.datasets),s=[...fe.value,...o.issues];return{...o,ok:s.length===0,issues:s}}),Y=e.computed(()=>v.value==="regions"?a.validation.value:ve.value),ae=e.ref(),oe=e.computed(()=>v.value==="regions"?a.focusTarget.value:ae.value);function m(o){return v.value==="regions"?a.target(o):Pe(o,g.value)}function l(o){const s={dataset:d.value.dataset,contract:d.value.dataContract,rowKey:d.value.rowKey,range:d.value.regionCoordinates,field:d.value.mapping,fields:d.value.mapping,footer:d.value.flowFooter,header:d.value.headerRegion,detail:d.value.detailRegion,title:d.value.titleRegion,sheet:d.value.sheet,regions:v.value==="regions"?d.value.multiRegions:d.value.regionLegend,revisionField:d.value.revisionField,sourceTokenField:d.value.sourceTokenField},S=ie(o),F=o.fieldIndex===void 0?"":` ${I.columnName(S?.left??o.fieldIndex+1)}`;return`${o.regionId?`${o.regionId} · `:""}${s[o.control]??d.value.regionCoordinates}${F}`}const n=e.computed(()=>Y.value.issues.map(o=>({issue:o,label:l(m(o)),message:o.message.replace(/\$\.recipe\.regions\[(\d+)\]/g,(s,S)=>a.recipe.value.regions[Number(S)]?.id??d.value.regionProperties)})));function p(o){return o?{dataset:d.value.nextDataset,rowKey:d.value.nextRowKey,field:d.value.nextField,fields:d.value.nextField,range:d.value.nextRange,regions:d.value.nextRegion,footer:d.value.nextFooter,header:d.value.nextHeader,detail:d.value.nextHeader,title:d.value.nextHeader}[o.control]??d.value.nextContract:v.value==="regions"?d.value.nextRegion:d.value.nextHeader}const W=e.computed(()=>t.readonly?d.value.readonly:K.value?d.value.loading:T.value?d.value.applying:A.value?d.value.applied:Y.value.ok?d.value.ready:p(Y.value.issues[0]?m(Y.value.issues[0]):void 0));e.watch(oe,o=>{const s=o&&ie(o.target);!s||!x.value||(q.value=Math.max(x.value.top,Math.min(x.value.bottom,s.top)),O.value=Math.max(x.value.left,Math.min(x.value.right,s.left)))});function ue(o){if(v.value==="regions"){a.locate(o);return}const s=m(o),S=ie(s);S&&(u.value=S.top,b.value=S.bottom),s.fieldIndex!==void 0&&(R.value=Math.floor(s.fieldIndex/12)),ae.value={target:s,sequence:(ae.value?.sequence??0)+1}}const ce=e.computed(()=>g.value.fields.slice(R.value*12,(R.value+1)*12).map((o,s)=>({index:R.value*12+s,field:o,physical:I.columnName((x.value?.left??1)+R.value*12+s)}))),we=e.computed(()=>se.value?.fields.filter(o=>o.type!=="boolean")??[]),de=e.computed(()=>u.value!==void 0&&b.value!==void 0?{top:Math.min(u.value,b.value),bottom:Math.max(u.value,b.value)}:void 0);let Q,j=0;function Z(){j++,Q?.abort(),Q=void 0,K.value=!1}function le(){q.value=x.value?.top??1,O.value=x.value?.left??1,u.value=void 0,b.value=void 0,R.value=0,z.value=!1,A.value=!1}function pe(o){Z();try{const s=o.version==="2.0"?I.parseExcelRegionBindingSession(o):I.parseExcelBindingSession(o);Z(),P(),J.value=s.source.sheets.map(S=>({name:S.name,index:S.index})),c.value=s.source,D(),s.version==="2.0"?(g.value=re(s.recipe.sheet,s.source.sheets.find(S=>S.name===s.recipe.sheet).columnCount),a.reset(s.recipe),v.value="regions"):(g.value=s.recipe,a.reset(),v.value="table"),f.value={...s.identity,...t.lockId&&t.identity?{id:t.identity.id}:{}},y.value=s.recipe.sheet,N.value="",le(),i.value++,$.accept()}catch(s){N.value=ge(s)}}e.watch(()=>t.session,o=>{o&&pe(o)},{immediate:!0}),e.watch(()=>t.readonly,o=>{o&&(Z(),P())}),e.watch([g,f,v,a.recipe],()=>{z.value=!1,A.value=!1},{deep:!0,flush:"sync"}),e.watch(()=>t.datasets,()=>{z.value=!1,A.value=!1}),e.onBeforeUnmount(()=>{Z(),P()});async function Se(o){if(t.readonly)return;if(Z(),!/\.xlsx$/i.test(o.name)){N.value=d.value.invalidFile;return}const s=++j;Q=new AbortController,K.value=!0,N.value="";let S;try{const{openExcelWorkbook:F}=await Promise.resolve().then(()=>require("./workbook-session-B94EwVa_.cjs")).then(ee=>ee.workbookSession);if(s!==j||t.readonly||(S=await F(o,{...t.importOptions,signal:Q.signal}),s!==j||t.readonly))return;const ne=S.inspect().sheets.filter(ee=>ee.visible);if(!ne.length)throw new Error("Excel 中没有可导入的可见工作表");const ye=B?.recipe.sheet||ne[0].name;if(!ne.some(ee=>ee.name===ye))throw new Error(d.value.recoveredSheetMissing);const be=await S.importTemplate({sheets:[ye],signal:Q.signal});if(s!==j||t.readonly)return;P(),C=S,S=void 0,c.value=be,i.value++,y.value=o.name,J.value=ne.map(ee=>({name:ee.name,index:ee.index})),D(),g.value=re(be.sheets[0].name,be.sheets[0].columnCount),a.reset(),B&&(H(B),B=void 0,r.value=!1),le()}catch(F){s===j&&(N.value=ge(F))}finally{S?.dispose(),s===j&&(K.value=!1,Q=void 0)}}async function Be(o){if(M.value||!J.value.some(F=>F.name===o)||g.value.sheet===o)return;L();const s=c.value?.sheets.find(F=>F.name===o);if(s){g.value=G(o,s.columnCount),a.reset(k.get(o)),N.value="",le();return}if(!C||C.disposed)return;Z();const S=++j;Q=new AbortController,K.value=!0,N.value="";try{const F=await C.importTemplate({sheets:[o],signal:Q.signal});if(S!==j||t.readonly)return;c.value=F,g.value=G(o,F.sheets[0].columnCount),a.reset(k.get(o)),le()}catch(F){S===j&&(N.value=ge(F))}finally{S===j&&(K.value=!1,Q=void 0)}}function xe(o){M.value||(g.value.dataset=o,g.value.rowKey="",g.value.fields.fill(""),z.value=!1,A.value=!1)}function De(o,s){M.value||!x.value||o<x.value.top||o>x.value.bottom||((!s||u.value===void 0)&&(u.value=o),b.value=o)}function $e(o){if(M.value||!c.value||!de.value){M.value||(N.value=d.value.emptySelection);return}g.value.regions[o]=I.excelBindingRowRange(c.value,g.value.sheet,de.value.top,de.value.bottom),z.value=!1,A.value=!1,N.value=""}function Ce(o){M.value||(delete g.value.regions[o],z.value=!1,A.value=!1)}function Re(o,s){!M.value&&o>=0&&o<g.value.fields.length&&(g.value.fields[o]=s,z.value=!1,A.value=!1)}function Ie(o){M.value||(g.value.rowKey=o)}function _e(o,s){!M.value&&!(o==="id"&&t.lockId)&&(f.value[o]=s)}function Me(o){for(const s of["title","header","detail","footer"]){const S=g.value.regions[s];if(!S)continue;const F=I.parseImportRange(S);if(o>=F.top&&o<=F.bottom)return s}}function Fe(o,s){x.value&&(o==="row"?q.value=Math.max(x.value.top,Math.min(x.value.bottom,q.value+s)):O.value=Math.max(x.value.left,Math.min(x.value.right,O.value+s)))}function Te(){if(!t.readonly){if(t.session){pe(t.session);return}B=void 0,r.value=!1,Z(),P(),c.value=void 0,J.value=[],y.value="",D(),g.value=re(),f.value={id:t.identity?.id??"excel-template",name:t.identity?.name??"Excel 业务模板"},a.reset(),v.value="table",le(),i.value++,$.accept(),N.value=""}}function Ke(){te.value&&(z.value=!0,N.value="")}async function Le(){if(!(M.value||!c.value||r.value)&&(z.value=!0,N.value="",!!Y.value.ok)){T.value=!0;try{const o={...f.value,...t.lockId&&t.identity?{id:t.identity.id}:{}},s=v.value==="regions"?I.createExcelRegionBindingDocument(c.value,a.recipe.value,t.datasets,o):I.createExcelBindingDocument(c.value,g.value,t.datasets,o),S=v.value==="regions"?I.createExcelRegionBindingSession(c.value,a.recipe.value,o):I.createExcelBindingSession(c.value,g.value,o),F={...s,session:S},ne=$.snapshot();if(t.accept&&!await t.accept(F)||t.readonly||ne!==$.snapshot()&&$.pending.value)return;t.accept||h(F),D(),$.accept(),A.value=!0}catch(o){N.value=ge(o)}finally{T.value=!1}}}return he.useTemplateToolDraft({key:()=>"excel",baseline:()=>"declarations-only",pending:()=>$.pending.value||r.value,snapshot:()=>JSON.stringify(V()),restore(o){const s=JSON.parse(o);if(!s.recipe||!s.regions||!Array.isArray(s.cached?.table)||!Array.isArray(s.cached?.regions))throw new Error("Invalid Excel mapping draft");H(s),B=s,r.value=!0}}),{recoveredMapping:r,imported:c,mode:v,regionBindings:a,pendingLocalChanges:e.computed(()=>$.pending.value||r.value),recipe:g,identity:f,sourceName:y,sheetChoices:J,error:N,loading:K,checked:z,applied:A,row:q,column:O,mappingPage:R,m:d,disabled:M,canCheck:te,sheet:X,sourceRange:x,dataset:se,window:me,validation:Y,focusTarget:oe,issueEntries:n,guidance:W,locateIssue:ue,mappings:ce,rowKeys:we,selection:de,cancel:Z,importFile:Se,chooseSheet:Be,chooseDataset:xe,chooseRow:De,markRegion:$e,clearRegion:Ce,setMapping:Re,setRowKey:Ie,setIdentity:_e,regionAt:Me,moveWindow:Fe,check:Ke,restoreDraft:Te,apply:Le}}const Ht=["aria-label","aria-busy"],qt={key:0,role:"status",class:"mr-binding-recovery"},Ot={class:"mr-binding-bar"},Jt={class:"mr-binding-heading"},jt=["aria-label","disabled"],Ut=["disabled"],Gt={key:1,class:"mr-binding-error",role:"alert"},Xt={key:2,class:"mr-binding-placeholder",role:"status"},Qt={key:3,class:"mr-binding-placeholder"},Yt=["disabled"],Zt={class:"mr-binding-sourcebar"},en=["value","aria-label","disabled"],tn=["value"],nn=["aria-label"],an=["aria-pressed","disabled"],on=["aria-pressed","disabled"],ln={class:"mr-binding-range"},rn={class:"mr-binding-sample-note"},sn={class:"mr-binding-layout"},un={class:"mr-binding-source"},cn={class:"mr-binding-grid-heading"},dn=["aria-label"],gn={class:"mr-binding-grid"},mn=["data-region"],fn={scope:"row"},vn=["data-source-row","aria-label","aria-pressed","disabled","onPointerdown","onPointerenter","onKeydown"],bn=["rowspan","colspan","title","data-source-cell","tabindex","aria-label","aria-selected","onPointerdown","onPointerenter","onKeydown"],pn={key:1,class:"mr-binding-grid-footer"},yn={class:"mr-binding-window"},hn=["aria-label","disabled"],kn=["min","max","value","aria-label"],En=["aria-label","disabled"],Nn={class:"mr-binding-window"},Vn=["aria-label","disabled"],wn=["min","max","value","aria-label"],Sn=["aria-label","disabled"],Bn={class:"mr-binding-inspector"},xn=["disabled"],Dn={class:"mr-binding-group"},$n=["data-role"],Cn={key:0},Rn=["aria-label","data-binding-control","title","disabled","onClick"],In=["aria-label","onClick"],_n={key:0,class:"mr-binding-note"},Mn={class:"mr-binding-group"},Fn={class:"mr-binding-label",tabindex:"-1"},Tn=["value","aria-label"],Kn={value:""},Ln=["value"],zn={key:0,class:"mr-binding-note"},An={key:1,class:"mr-binding-label",tabindex:"-1"},Pn=["value","aria-label"],Wn={value:""},Hn=["value"],qn={key:2,class:"mr-binding-mappings"},On=["data-binding-control","aria-label","value","onChange"],Jn={value:""},jn=["value"],Un={key:0},Gn={key:3,class:"mr-binding-map-pages"},Xn=["disabled","aria-label"],Qn=["disabled","aria-label"],Yn=["disabled"],Zn={class:"mr-binding-group"},ea={class:"mr-binding-label"},ta=["value","readonly"],na={class:"mr-binding-label"},aa=["value"],oa={key:0,class:"mr-binding-issues",open:""},la=["aria-label","onClick"],ra={key:0,class:"mr-binding-issue-pages"},ia=["disabled","aria-label"],sa=["disabled","aria-label"],ua={key:1,class:"mr-binding-warnings"},ca={class:"mr-binding-actions"},da=["title"],ga=["disabled"],ma=["disabled"],fa=["disabled","title"],va=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:h,emit:c}){const g=t,v=c,a=Wt(g,m=>v("apply",m)),{imported:w,mode:k,regionBindings:E,recipe:D,identity:L,sourceName:U,sheetChoices:G,error:f,loading:y,checked:r,row:V,column:B,mappingPage:H,m:i,disabled:$,sheet:J,sourceRange:C,dataset:P,window:N,validation:K,mappings:z,rowKeys:A,selection:T}=a;e.watch([a.pendingLocalChanges,D,L],()=>v("dirty",a.pendingLocalChanges.value),{immediate:!0,deep:!0,flush:"sync"});const q=e.ref(),O=e.ref(),u=e.ref(0),b=e.computed(()=>Math.max(1,Math.ceil(a.issueEntries.value.length/12))),R=e.computed(()=>a.issueEntries.value.slice(u.value*12,(u.value+1)*12));e.watch(b,m=>{u.value=Math.min(u.value,m-1)}),e.watch(a.focusTarget,async m=>{if(!m)return;await e.nextTick();const l=ie(m.target);if(l&&O.value?.querySelector(`td[data-source-cell="${l.top}:${l.left}"]`)?.scrollIntoView?.({block:"nearest",inline:"nearest"}),k.value==="regions")return;const n=m.target.control==="field"?`field-${m.target.fieldIndex}`:m.target.control==="contract"?"dataset":m.target.control,p=O.value?.querySelector(`.mr-binding-table-editor [data-binding-control="${n}"]`),W=$.value?p?.closest("label"):p;W?.focus(),W?.scrollIntoView?.({block:"nearest"})});const d=e.ref(!1),M=["title","header","detail","footer"],te=e.computed(()=>({title:i.value.titleRegion,header:i.value.headerRegion,detail:i.value.detailRegion,footer:i.value.footerRegion})),X=e.computed(()=>Math.max(1,Math.ceil(D.value.fields.length/12)));function x(m){return m.target.value}function se(m){const l=m.target,n=l.files?.[0];n&&a.importFile(n),l.value=""}function me(m,l){m.button!==0||$.value||(m.preventDefault(),d.value=!0,a.chooseRow(l,m.shiftKey),k.value==="regions"&&C.value&&(E.select(l,C.value.left,!1),E.select(l,C.value.right,!0)),m.currentTarget.focus())}function fe(m,l,n){k.value!=="regions"||m.button!==0||$.value||(m.preventDefault(),d.value=!0,E.select(l,n,m.shiftKey),m.currentTarget.focus())}function ve(m,l,n){if(k.value!=="regions")return;(m.key===" "||m.key==="Enter")&&(m.preventDefault(),E.select(l,n,m.shiftKey));const W={ArrowUp:[-1,0],ArrowDown:[1,0],ArrowLeft:[0,-1],ArrowRight:[0,1]}[m.key];if(!W||!C.value)return;m.preventDefault();const ue=Math.max(C.value.top,Math.min(C.value.bottom,l+W[0])),ce=Math.max(C.value.left,Math.min(C.value.right,n+W[1]));m.shiftKey&&E.select(ue,ce,!0),m.currentTarget.closest("table")?.querySelector(`td[data-source-cell="${ue}:${ce}"]`)?.focus()}function Y(m,l){if((m.key===" "||m.key==="Enter")&&(m.preventDefault(),a.chooseRow(l,m.shiftKey)),m.key==="ArrowDown"||m.key==="ArrowUp"){m.preventDefault();const n=l+(m.key==="ArrowDown"?1:-1);m.shiftKey&&a.chooseRow(n,!0),m.currentTarget.closest("table")?.querySelector(`button[data-source-row="${n}"]`)?.focus()}}function ae(m){const l=P.value?.fields.find(n=>n.field===m);return l?[l.type,l.unit,l.digits===void 0?void 0:`${l.digits}${i.value.precision}`,l.sample===void 0?void 0:`${i.value.sample}: ${String(l.sample)}`].filter(n=>n!==void 0&&n!=="").join(" · "):""}function oe(m,l){const n=Number(x(m));!Number.isInteger(n)||!C.value||(l==="row"?V.value=Math.max(C.value.top,Math.min(C.value.bottom,n)):B.value=Math.max(C.value.left,Math.min(C.value.right,n)))}return h({get pendingLocalChanges(){return a.pendingLocalChanges.value},importFile:a.importFile,apply:a.apply,cancel:a.cancel}),(m,l)=>(e.openBlock(),e.createElementBlock("section",{ref_key:"element",ref:O,class:"mr-binding","aria-label":e.unref(i).title,"aria-busy":e.unref(y),onPointerup:l[23]||(l[23]=n=>d.value=!1),onPointercancel:l[24]||(l[24]=n=>d.value=!1),onPointerleave:l[25]||(l[25]=n=>d.value=!1)},[e.unref(a).recoveredMapping.value?(e.openBlock(),e.createElementBlock("p",qt,e.toDisplayString(e.unref(i).recoveredMapping),1)):e.createCommentVNode("",!0),e.createElementVNode("header",Ot,[e.createElementVNode("div",Jt,[e.createVNode(_._sfc_main,{name:"file",size:17}),e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).title),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(U)||e.unref(i).intro),1)]),e.createElementVNode("input",{ref_key:"input",ref:q,type:"file",accept:".xlsx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","aria-label":e.unref(i).upload,class:"mr-binding-file",disabled:t.readonly,onChange:se},null,40,jt),e.unref(y)?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",onClick:l[0]||(l[0]=(...n)=>e.unref(a).cancel&&e.unref(a).cancel(...n))},e.toDisplayString(e.unref(i).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(_._sfc_main,{name:"upload",size:14}),e.createTextVNode(e.toDisplayString(e.unref(w)?e.unref(i).replace:e.unref(i).upload),1)],8,Ut))]),e.unref(f)?(e.openBlock(),e.createElementBlock("div",Gt,e.toDisplayString(e.unref(f)),1)):e.createCommentVNode("",!0),e.unref(y)?(e.openBlock(),e.createElementBlock("div",Xt,[l[26]||(l[26]=e.createElementVNode("span",{class:"mr-binding-loader"},null,-1)),e.createTextVNode(e.toDisplayString(e.unref(i).loading),1)])):e.unref(w)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:4},[e.createElementVNode("div",Zt,[e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).sheet),1),e.createElementVNode("select",{value:e.unref(D).sheet,"aria-label":e.unref(i).sheet,disabled:e.unref($),onChange:l[3]||(l[3]=n=>e.unref(a).chooseSheet(x(n)))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(G),n=>(e.openBlock(),e.createElementBlock("option",{key:n.name,value:n.name},e.toDisplayString(n.name),9,tn))),128))],40,en)]),e.createElementVNode("div",{class:"mr-binding-mode",role:"group","aria-label":e.unref(i).regionMode},[e.createElementVNode("button",{type:"button","aria-pressed":e.unref(k)==="table",disabled:e.unref($),onClick:l[4]||(l[4]=n=>k.value="table")},e.toDisplayString(e.unref(i).tableMode),9,an),e.createElementVNode("button",{type:"button","aria-pressed":e.unref(k)==="regions",disabled:e.unref($),onClick:l[5]||(l[5]=n=>k.value="regions")},[e.createVNode(_._sfc_main,{name:"grid",size:12}),e.createTextVNode(e.toDisplayString(e.unref(i).multiRegions),1)],8,on)],8,nn),e.createElementVNode("span",ln,e.toDisplayString(e.unref(J)?.range)+" · "+e.toDisplayString(e.unref(J)?.rowCount)+" × "+e.toDisplayString(e.unref(J)?.columnCount),1),e.createElementVNode("span",rn,e.toDisplayString(e.unref(i).sourceOnly),1)]),e.createElementVNode("div",sn,[e.createElementVNode("div",un,[e.createElementVNode("div",cn,[e.createElementVNode("strong",null,e.toDisplayString(e.unref(i).source),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(k)==="regions"?e.unref(i).multiHint:e.unref(i).sourceHint),1)]),e.unref(N)?(e.openBlock(),e.createElementBlock("div",{key:0,class:"mr-binding-grid-scroll","aria-label":e.unref(i).source},[e.createElementVNode("table",gn,[e.createElementVNode("thead",null,[e.createElementVNode("tr",null,[l[28]||(l[28]=e.createElementVNode("th",{class:"mr-binding-corner","aria-label":"#"},"#",-1)),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(N).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(N).rows,n=>(e.openBlock(),e.createElementBlock("tr",{key:n.row,"data-region":e.unref(a).regionAt(n.row),class:e.normalizeClass({"is-selected":e.unref(T)&&n.row>=e.unref(T).top&&n.row<=e.unref(T).bottom})},[e.createElementVNode("th",fn,[e.createElementVNode("button",{type:"button","data-source-row":n.row,"aria-label":`${e.unref(i).selectionLabel} ${n.row}`,"aria-pressed":!!e.unref(T)&&n.row>=e.unref(T).top&&n.row<=e.unref(T).bottom,disabled:e.unref($),onPointerdown:p=>me(p,n.row),onPointerenter:p=>d.value&&e.unref(a).chooseRow(n.row,!0),onKeydown:p=>Y(p,n.row)},e.toDisplayString(n.row),41,vn)]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.cells,p=>(e.openBlock(),e.createElementBlock("td",{key:p.column,rowspan:p.rowSpan,colspan:p.colSpan,title:`${p.address} · ${p.text}`,"data-source-cell":`${p.row}:${p.column}`,tabindex:e.unref(k)==="regions"?0:void 0,"aria-label":e.unref(k)==="regions"?`${e.unref(i).selectionCellLabel} ${p.address}`:void 0,"aria-selected":e.unref(k)==="regions"?e.unref(E).selected(p.row,p.column):void 0,class:e.normalizeClass({"is-continued":p.continued,"is-cell-selected":e.unref(k)==="regions"&&e.unref(E).selected(p.row,p.column)}),onPointerdown:W=>fe(W,p.row,p.column),onPointerenter:W=>e.unref(k)==="regions"&&d.value&&e.unref(E).select(p.row,p.column,!0),onKeydown:W=>ve(W,p.row,p.column),style:e.normalizeStyle({textAlign:p.style?.align,fontWeight:p.style?.bold?"600":void 0})},[e.createElementVNode("span",null,e.toDisplayString(p.text),1)],46,bn))),128))],10,mn))),128))])])],8,dn)):e.createCommentVNode("",!0),e.unref(N)?(e.openBlock(),e.createElementBlock("footer",pn,[e.createElementVNode("span",null,[e.createTextVNode(e.toDisplayString(e.unref(i).selected)+" ",1),e.createElementVNode("strong",null,e.toDisplayString(e.unref(k)==="regions"?e.unref(E).selection.value||"—":e.unref(T)?`${e.unref(T).top}–${e.unref(T).bottom}`:"—"),1)]),e.createElementVNode("div",yn,[e.createElementVNode("button",{type:"button","aria-label":e.unref(i).previousRows,disabled:e.unref(N).top<=e.unref(N).source.top,onClick:l[6]||(l[6]=n=>e.unref(a).moveWindow("row",-24))},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,hn),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).rowStart),1),e.createElementVNode("input",{type:"number",min:e.unref(N).source.top,max:e.unref(N).source.bottom,value:e.unref(V),"aria-label":e.unref(i).rowStart,onChange:l[7]||(l[7]=n=>oe(n,"row"))},null,40,kn)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).nextRows,disabled:e.unref(N).bottom>=e.unref(N).source.bottom,onClick:l[8]||(l[8]=n=>e.unref(a).moveWindow("row",24))},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,En)]),e.createElementVNode("div",Nn,[e.createElementVNode("button",{type:"button","aria-label":e.unref(i).previousColumns,disabled:e.unref(N).left<=e.unref(N).source.left,onClick:l[9]||(l[9]=n=>e.unref(a).moveWindow("column",-12))},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,Vn),e.createElementVNode("label",null,[e.createTextVNode(e.toDisplayString(e.unref(i).columnStart),1),e.createElementVNode("input",{type:"number",min:e.unref(N).source.left,max:e.unref(N).source.right,value:e.unref(B),"aria-label":e.unref(i).columnStart,onChange:l[10]||(l[10]=n=>oe(n,"column"))},null,40,wn)]),e.createElementVNode("button",{type:"button","aria-label":e.unref(i).nextColumns,disabled:e.unref(N).right>=e.unref(N).source.right,onClick:l[11]||(l[11]=n=>e.unref(a).moveWindow("column",12))},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Sn)])])):e.createCommentVNode("",!0)]),e.createElementVNode("div",Bn,[e.unref(k)==="regions"?(e.openBlock(),e.createBlock(At,{key:0,controller:e.unref(E),datasets:t.datasets,disabled:e.unref($),messages:e.unref(i)},null,8,["controller","datasets","disabled","messages"])):e.createCommentVNode("",!0),e.withDirectives(e.createElementVNode("fieldset",{disabled:e.unref($),class:"mr-binding-table-editor"},[e.createElementVNode("section",Dn,[e.createElementVNode("h3",null,[l[29]||(l[29]=e.createElementVNode("b",null,"1",-1)),e.createTextVNode(e.toDisplayString(e.unref(i).regionLegend),1)]),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(M,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(te.value[n]),1),n==="title"||n==="footer"?(e.openBlock(),e.createElementBlock("small",Cn,e.toDisplayString(e.unref(i).optional),1)):e.createCommentVNode("",!0)]),e.createElementVNode("code",null,e.toDisplayString(e.unref(D).regions[n]||e.unref(i).unnamed),1)]),e.createElementVNode("button",{type:"button","aria-label":`${e.unref(i).selectRegion} · ${te.value[n]}`,"data-binding-control":n,title:e.unref(T)?`${e.unref(i).selectRegion} · ${te.value[n]}`:e.unref(i).emptySelection,disabled:!e.unref(T),onClick:p=>e.unref(a).markRegion(n)},[e.createVNode(_._sfc_main,{name:"arrow-right",size:13})],8,Rn),(n==="title"||n==="footer")&&e.unref(D).regions[n]?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button","aria-label":`${e.unref(i).clear} · ${te.value[n]}`,onClick:p=>e.unref(a).clearRegion(n)},[e.createVNode(_._sfc_main,{name:"close",size:13})],8,In)):e.createCommentVNode("",!0)],8,$n)),64)),e.unref(D).regions.footer?(e.openBlock(),e.createElementBlock("p",_n,e.toDisplayString(e.unref(i).footerHint),1)):e.createCommentVNode("",!0)]),e.createElementVNode("section",Mn,[e.createElementVNode("h3",null,[l[30]||(l[30]=e.createElementVNode("b",null,"2",-1)),e.createTextVNode(e.toDisplayString(e.unref(i).mapping),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(K).mapped)+"/"+e.toDisplayString(e.unref(K).total),1)]),e.createElementVNode("label",Fn,[e.createTextVNode(e.toDisplayString(e.unref(i).dataset),1),e.createElementVNode("select",{"data-binding-control":"dataset",value:e.unref(D).dataset,"aria-label":e.unref(i).dataset,onChange:l[12]||(l[12]=n=>e.unref(a).chooseDataset(x(n)))},[e.createElementVNode("option",Kn,e.toDisplayString(e.unref(i).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,Ln))),128))],40,Tn)]),t.datasets.length?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("p",zn,e.toDisplayString(e.unref(i).noContract),1)),e.unref(P)?(e.openBlock(),e.createElementBlock("label",An,[e.createTextVNode(e.toDisplayString(e.unref(i).rowKey),1),e.createElementVNode("select",{"data-binding-control":"rowKey",value:e.unref(D).rowKey,"aria-label":e.unref(i).rowKey,onChange:l[13]||(l[13]=n=>e.unref(a).setRowKey(x(n)))},[e.createElementVNode("option",Wn,e.toDisplayString(e.unref(i).chooseRowKey),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(A),n=>(e.openBlock(),e.createElementBlock("option",{key:n.field,value:n.field},e.toDisplayString(n.label||n.field)+" · "+e.toDisplayString(n.field),9,Hn))),128))],40,Pn)])):e.createCommentVNode("",!0),e.unref(P)?(e.openBlock(),e.createElementBlock("div",qn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(z),n=>(e.openBlock(),e.createElementBlock("label",{key:n.index,class:"mr-binding-map",tabindex:"-1"},[e.createElementVNode("span",null,e.toDisplayString(n.physical),1),e.createElementVNode("div",null,[e.createElementVNode("select",{"data-binding-control":`field-${n.index}`,"aria-label":`${e.unref(i).physical} ${n.physical} · ${e.unref(i).business}`,value:n.field,onChange:p=>e.unref(a).setMapping(n.index,x(p))},[e.createElementVNode("option",Jn,e.toDisplayString(e.unref(i).chooseField),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(P).fields,p=>(e.openBlock(),e.createElementBlock("option",{key:p.field,value:p.field},e.toDisplayString(p.label||p.field)+" · "+e.toDisplayString(p.field),9,jn))),128))],40,On),n.field?(e.openBlock(),e.createElementBlock("small",Un,e.toDisplayString(ae(n.field)),1)):e.createCommentVNode("",!0)])]))),128))])):e.createCommentVNode("",!0),e.unref(P)&&X.value>1?(e.openBlock(),e.createElementBlock("div",Gn,[e.createElementVNode("button",{type:"button",disabled:e.unref(H)<=0,"aria-label":e.unref(i).previousColumns,onClick:l[14]||(l[14]=n=>H.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:13})],8,Xn),e.createElementVNode("span",null,e.toDisplayString(e.unref(H)+1)+" / "+e.toDisplayString(X.value),1),e.createElementVNode("button",{type:"button",disabled:e.unref(H)+1>=X.value,"aria-label":e.unref(i).nextColumns,onClick:l[15]||(l[15]=n=>H.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:13})],8,Qn)])):e.createCommentVNode("",!0)])],8,xn),[[e.vShow,e.unref(k)==="table"]]),e.createElementVNode("fieldset",{disabled:e.unref($)},[e.createElementVNode("section",Zn,[e.createElementVNode("h3",null,e.toDisplayString(e.unref(i).identity),1),e.createElementVNode("label",ea,[e.createTextVNode(e.toDisplayString(e.unref(i).templateId),1),e.createElementVNode("input",{value:t.lockId?g.identity?.id??e.unref(L).id:e.unref(L).id,autocomplete:"off",readonly:t.lockId,onInput:l[16]||(l[16]=n=>e.unref(a).setIdentity("id",x(n)))},null,40,ta)]),e.createElementVNode("label",na,[e.createTextVNode(e.toDisplayString(e.unref(i).templateName),1),e.createElementVNode("input",{value:e.unref(L).name,autocomplete:"off",onInput:l[17]||(l[17]=n=>e.unref(a).setIdentity("name",x(n)))},null,40,aa)])])],8,Yn)])]),e.unref(r)&&e.unref(K).issues.length?(e.openBlock(),e.createElementBlock("details",oa,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(i).issues)+" · "+e.toDisplayString(e.unref(K).issues.length)+" "+e.toDisplayString(e.unref(i).errors),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,n=>(e.openBlock(),e.createElementBlock("li",{key:`${n.issue.path}:${n.issue.message}`},[e.createElementVNode("button",{type:"button",class:"mr-binding-issue-link","aria-label":`${e.unref(i).locateIssue} · ${n.label}`,onClick:p=>e.unref(a).locateIssue(n.issue)},[e.createElementVNode("strong",null,e.toDisplayString(n.label),1),e.createElementVNode("span",null,e.toDisplayString(n.message),1),e.createVNode(_._sfc_main,{name:"arrow-right",size:12})],8,la)]))),128))]),b.value>1?(e.openBlock(),e.createElementBlock("div",ra,[e.createElementVNode("button",{type:"button",disabled:u.value===0,"aria-label":e.unref(i).previousIssues,onClick:l[18]||(l[18]=n=>u.value--)},[e.createVNode(_._sfc_main,{name:"chevron-left",size:12})],8,ia),e.createElementVNode("span",null,e.toDisplayString(u.value+1)+"/"+e.toDisplayString(b.value),1),e.createElementVNode("button",{type:"button",disabled:u.value+1>=b.value,"aria-label":e.unref(i).nextIssues,onClick:l[19]||(l[19]=n=>u.value++)},[e.createVNode(_._sfc_main,{name:"chevron-right",size:12})],8,sa)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.unref(w).warnings.length?(e.openBlock(),e.createElementBlock("details",ua,[e.createElementVNode("summary",null,e.toDisplayString(e.unref(i).inspectWarning)+" · "+e.toDisplayString(e.unref(w).warnings.length),1),e.createElementVNode("ul",null,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(w).warnings,(n,p)=>(e.openBlock(),e.createElementBlock("li",{key:p},e.toDisplayString(n),1))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("footer",ca,[e.createElementVNode("span",{class:e.normalizeClass({"is-ready":e.unref(K).ok}),role:"status",title:e.unref(a).guidance.value},e.toDisplayString(e.unref(a).guidance.value),11,da),e.unref(a).pendingLocalChanges.value?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",disabled:e.unref($),onClick:l[20]||(l[20]=(...n)=>e.unref(a).restoreDraft&&e.unref(a).restoreDraft(...n))},e.toDisplayString(e.unref(i).restoreDraft),9,ga)):e.createCommentVNode("",!0),e.createElementVNode("button",{type:"button",disabled:!e.unref(a).canCheck.value,onClick:l[21]||(l[21]=(...n)=>e.unref(a).check&&e.unref(a).check(...n))},e.toDisplayString(e.unref(i).check),9,ma),e.createElementVNode("button",{type:"button",class:"mr-binding-primary",disabled:e.unref($)||!e.unref(K).ok,title:e.unref(a).guidance.value,onClick:l[22]||(l[22]=(...n)=>e.unref(a).apply&&e.unref(a).apply(...n))},e.toDisplayString(e.unref(i).apply),9,fa)])],64)):(e.openBlock(),e.createElementBlock("div",Qt,[l[27]||(l[27]=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(i).noSource),1),e.createElementVNode("span",null,e.toDisplayString(e.unref(i).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(i).upload),9,Yt)]))],40,Ht))}});exports.default=va;
@@ -1,7 +1,7 @@
1
1
  import { defineComponent as ze, ref as K, computed as S, watch as re, nextTick as Be, openBlock as c, createElementBlock as v, createElementVNode as n, createTextVNode as A, toDisplayString as l, createVNode as W, Fragment as V, renderList as U, normalizeClass as Re, createCommentVNode as D, unref as e, withDirectives as Ne, vModelText as tt, shallowRef as nt, onBeforeUnmount as at, normalizeStyle as lt, createBlock as ot, vShow as it } from "vue";
2
- import { o as pe, q as Ee, f as st, n as rt, m as ut, h as dt, k as ct, v as vt, i as gt, p as ft, d as bt, c as mt, e as ht, a as yt, g as pt } from "./region-binding-workflow-BNasF5kz.js";
2
+ import { o as pe, q as Ee, f as st, n as rt, m as ut, h as dt, k as ct, v as vt, i as gt, p as ft, d as bt, c as mt, e as ht, a as yt, g as pt } from "./region-binding-workflow-CBg0l_tj.js";
3
3
  import { a as _ } from "./_plugin-vue_export-helper-8SL1F89S.js";
4
- import { E as wt, u as kt } from "./designer-D9XAxqSc.js";
4
+ import { E as wt, u as kt } from "./designer-d6hJS41w.js";
5
5
  import { u as $t } from "./useLocalDraft-BnhcxXk_.js";
6
6
  function Ae(t, x) {
7
7
  const f = /^\$\.datasets\[(\d+)\]/.exec(t.path)?.[1];
@@ -625,7 +625,7 @@ function In(t, x) {
625
625
  se = new AbortController(), J.value = !0, I.value = "";
626
626
  let F;
627
627
  try {
628
- const { openExcelWorkbook: q } = await import("./workbook-session-B8pNW24X.js").then((ce) => ce.w);
628
+ const { openExcelWorkbook: q } = await import("./workbook-session-BoScoOg-.js").then((ce) => ce.w);
629
629
  if (d !== ae || t.readonly || (F = await q(i, { ...t.importOptions, signal: se.signal }), d !== ae || t.readonly)) return;
630
630
  const ge = F.inspect().sheets.filter((ce) => ce.visible);
631
631
  if (!ge.length) throw new Error("Excel 中没有可导入的可见工作表");