@rytass/bpm-core-react 0.14.0 → 0.16.2

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 (247) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/chunks/{FormBuilderView-BYLN6W-P.js → FormBuilderView-BYL42M0d.js} +499 -476
  3. package/dist/chunks/FormBuilderView-BYL42M0d.js.map +1 -0
  4. package/dist/chunks/FormBuilderView-aBcA-_tt.cjs +3 -0
  5. package/dist/chunks/FormBuilderView-aBcA-_tt.cjs.map +1 -0
  6. package/dist/chunks/FormRendererView-DRFi_IH7.cjs +4 -0
  7. package/dist/chunks/FormRendererView-DRFi_IH7.cjs.map +1 -0
  8. package/dist/chunks/FormRendererView-cZGOOjU5.js +986 -0
  9. package/dist/chunks/FormRendererView-cZGOOjU5.js.map +1 -0
  10. package/dist/chunks/{admin-pickers-DLlG_1du.js → admin-pickers-DxhzECkD.js} +52 -51
  11. package/dist/chunks/admin-pickers-DxhzECkD.js.map +1 -0
  12. package/dist/chunks/admin-pickers-qe3j--gX.cjs +2 -0
  13. package/dist/chunks/admin-pickers-qe3j--gX.cjs.map +1 -0
  14. package/dist/chunks/approval-instance-list-page-CPXMP3PL.js.map +1 -1
  15. package/dist/chunks/approval-instance-list-page-ax0pm8bt.cjs.map +1 -1
  16. package/dist/chunks/auth-provider-4BeCw7cI.cjs.map +1 -1
  17. package/dist/chunks/auth-provider-B5oPmvk2.js.map +1 -1
  18. package/dist/chunks/bpm-form-field-Bc6k4ZEO.cjs.map +1 -1
  19. package/dist/chunks/bpm-form-field-Cao0rMol.js.map +1 -1
  20. package/dist/chunks/{categories-DGlxuC6X.js → categories-1gKxeEqw.js} +4 -10
  21. package/dist/chunks/categories-1gKxeEqw.js.map +1 -0
  22. package/dist/chunks/{categories-Yid05WAX.cjs → categories-DjENouRm.cjs} +2 -2
  23. package/dist/chunks/categories-DjENouRm.cjs.map +1 -0
  24. package/dist/chunks/{compose-CSWbRgJJ.js → compose-DO6n0NJi.js} +5 -5
  25. package/dist/chunks/compose-DO6n0NJi.js.map +1 -0
  26. package/dist/chunks/compose-DUH9cQ-L.cjs +2 -0
  27. package/dist/chunks/compose-DUH9cQ-L.cjs.map +1 -0
  28. package/dist/chunks/dashboard-page-BWQBSGDq.cjs +2 -0
  29. package/dist/chunks/dashboard-page-BWQBSGDq.cjs.map +1 -0
  30. package/dist/chunks/{dashboard-page-CeCLV1tp.js → dashboard-page-DdBvV6YI.js} +15 -16
  31. package/dist/chunks/dashboard-page-DdBvV6YI.js.map +1 -0
  32. package/dist/chunks/delegations-BLzYnOae.cjs +2 -0
  33. package/dist/chunks/delegations-BLzYnOae.cjs.map +1 -0
  34. package/dist/chunks/delegations-Ckf03icM.cjs +2 -0
  35. package/dist/chunks/delegations-Ckf03icM.cjs.map +1 -0
  36. package/dist/chunks/{delegations-DRupxJ4_.js → delegations-MxF3uJGW.js} +205 -215
  37. package/dist/chunks/delegations-MxF3uJGW.js.map +1 -0
  38. package/dist/chunks/{delegations-B8gLSt0i.js → delegations-_b4_xBit.js} +167 -173
  39. package/dist/chunks/delegations-_b4_xBit.js.map +1 -0
  40. package/dist/chunks/designer-2YvjP_GU.cjs +65 -0
  41. package/dist/chunks/designer-2YvjP_GU.cjs.map +1 -0
  42. package/dist/chunks/{designer-BtsIL0BB.js → designer-B-cfiob9.js} +1334 -1254
  43. package/dist/chunks/designer-B-cfiob9.js.map +1 -0
  44. package/dist/chunks/{detail-C8NOqY0p.js → detail-C6NdVijG.js} +852 -841
  45. package/dist/chunks/detail-C6NdVijG.js.map +1 -0
  46. package/dist/chunks/detail-DKobK4Cg.cjs +2 -0
  47. package/dist/chunks/detail-DKobK4Cg.cjs.map +1 -0
  48. package/dist/chunks/format-date-time-CB-LxzqT.js.map +1 -1
  49. package/dist/chunks/format-date-time-D-cx5M8z.cjs.map +1 -1
  50. package/dist/chunks/format-member-label-DudVI55w.js +13 -0
  51. package/dist/chunks/format-member-label-DudVI55w.js.map +1 -0
  52. package/dist/chunks/format-member-label-t7ANTF62.cjs +2 -0
  53. package/dist/chunks/format-member-label-t7ANTF62.cjs.map +1 -0
  54. package/dist/chunks/login-AtVxZBsC.cjs.map +1 -1
  55. package/dist/chunks/login-C6qlTC6F.js.map +1 -1
  56. package/dist/chunks/notifications-Bc4mgSds.cjs.map +1 -1
  57. package/dist/chunks/notifications-DJ5wzCye.js.map +1 -1
  58. package/dist/chunks/{orgs-BpqVu5ka.js → orgs-Bpp1U60k.js} +538 -557
  59. package/dist/chunks/orgs-Bpp1U60k.js.map +1 -0
  60. package/dist/chunks/orgs-ywaE1_02.cjs +2 -0
  61. package/dist/chunks/orgs-ywaE1_02.cjs.map +1 -0
  62. package/dist/chunks/providers-DHtDZFNA.cjs.map +1 -1
  63. package/dist/chunks/providers-J5eyByQj.js.map +1 -1
  64. package/dist/chunks/router-adapter--gYs13E8.cjs.map +1 -1
  65. package/dist/chunks/router-adapter-DftlFTOd.js.map +1 -1
  66. package/dist/chunks/routes-config-C1j_vFKo.cjs.map +1 -1
  67. package/dist/chunks/routes-config-yZbESPlw.js.map +1 -1
  68. package/dist/chunks/task-node-label-BF6UllxP.cjs +2 -0
  69. package/dist/chunks/task-node-label-BF6UllxP.cjs.map +1 -0
  70. package/dist/chunks/task-node-label-CWZgOBj0.js +9 -0
  71. package/dist/chunks/task-node-label-CWZgOBj0.js.map +1 -0
  72. package/dist/chunks/use-bpm-member-D57LKe_u.js.map +1 -1
  73. package/dist/chunks/use-bpm-member-DpNAQtNC.cjs.map +1 -1
  74. package/dist/chunks/users-BSVo_eNe.js +215 -0
  75. package/dist/chunks/users-BSVo_eNe.js.map +1 -0
  76. package/dist/chunks/users-DFSBTDMy.cjs +2 -0
  77. package/dist/chunks/users-DFSBTDMy.cjs.map +1 -0
  78. package/dist/index.cjs +1 -1
  79. package/dist/index.cjs.map +1 -1
  80. package/dist/index.js +2 -2
  81. package/dist/index.js.map +1 -1
  82. package/dist/lib/format-member-label.d.ts +12 -0
  83. package/dist/lib/member-profile-resolution.d.ts +48 -0
  84. package/dist/lib/routes-config.d.ts +1 -1
  85. package/dist/lib/task-node-label.d.ts +10 -0
  86. package/dist/next/index.cjs.map +1 -1
  87. package/dist/next/index.js.map +1 -1
  88. package/dist/next/workflow-chat-route.cjs.map +1 -1
  89. package/dist/next/workflow-chat-route.js.map +1 -1
  90. package/dist/pages/admin/delegations/index.cjs +1 -1
  91. package/dist/pages/admin/delegations/index.cjs.map +1 -1
  92. package/dist/pages/admin/delegations/index.js +1 -1
  93. package/dist/pages/admin/delegations/index.js.map +1 -1
  94. package/dist/pages/admin/orgs/index.cjs +1 -1
  95. package/dist/pages/admin/orgs/index.cjs.map +1 -1
  96. package/dist/pages/admin/orgs/index.js +1 -1
  97. package/dist/pages/admin/orgs/index.js.map +1 -1
  98. package/dist/pages/admin/users/index.cjs +1 -1
  99. package/dist/pages/admin/users/index.cjs.map +1 -1
  100. package/dist/pages/admin/users/index.js +1 -1
  101. package/dist/pages/admin/users/index.js.map +1 -1
  102. package/dist/pages/admin/webhook-endpoints/index.cjs.map +1 -1
  103. package/dist/pages/admin/webhook-endpoints/index.js.map +1 -1
  104. package/dist/pages/cc/index.cjs.map +1 -1
  105. package/dist/pages/cc/index.js.map +1 -1
  106. package/dist/pages/dashboard/index.cjs.map +1 -1
  107. package/dist/pages/dashboard/index.js.map +1 -1
  108. package/dist/pages/delegations/index.cjs +1 -1
  109. package/dist/pages/delegations/index.cjs.map +1 -1
  110. package/dist/pages/delegations/index.js +1 -1
  111. package/dist/pages/delegations/index.js.map +1 -1
  112. package/dist/pages/inbox/index.cjs.map +1 -1
  113. package/dist/pages/inbox/index.js.map +1 -1
  114. package/dist/pages/instances/detail/index.cjs +1 -1
  115. package/dist/pages/instances/detail/index.cjs.map +1 -1
  116. package/dist/pages/instances/detail/index.js +1 -1
  117. package/dist/pages/instances/detail/index.js.map +1 -1
  118. package/dist/pages/instances/new/index.cjs.map +1 -1
  119. package/dist/pages/instances/new/index.js.map +1 -1
  120. package/dist/pages/login/index.cjs.map +1 -1
  121. package/dist/pages/login/index.js.map +1 -1
  122. package/dist/pages/root/index.cjs.map +1 -1
  123. package/dist/pages/root/index.js.map +1 -1
  124. package/dist/pages/search/index.cjs.map +1 -1
  125. package/dist/pages/search/index.js.map +1 -1
  126. package/dist/pages/sent/index.cjs.map +1 -1
  127. package/dist/pages/sent/index.js.map +1 -1
  128. package/dist/pages/settings/notifications/index.cjs.map +1 -1
  129. package/dist/pages/settings/notifications/index.js.map +1 -1
  130. package/dist/pages/templates/categories/index.cjs +1 -1
  131. package/dist/pages/templates/categories/index.cjs.map +1 -1
  132. package/dist/pages/templates/categories/index.js +1 -1
  133. package/dist/pages/templates/categories/index.js.map +1 -1
  134. package/dist/pages/templates/compose/index.cjs +1 -1
  135. package/dist/pages/templates/compose/index.cjs.map +1 -1
  136. package/dist/pages/templates/compose/index.js +1 -1
  137. package/dist/pages/templates/compose/index.js.map +1 -1
  138. package/dist/pages/templates/designer/index.cjs +1 -1
  139. package/dist/pages/templates/designer/index.cjs.map +1 -1
  140. package/dist/pages/templates/designer/index.js +1 -1
  141. package/dist/pages/templates/designer/index.js.map +1 -1
  142. package/dist/pages/templates/index.cjs.map +1 -1
  143. package/dist/pages/templates/index.js.map +1 -1
  144. package/dist/pages/templates/versions/index.cjs.map +1 -1
  145. package/dist/pages/templates/versions/index.js.map +1 -1
  146. package/dist/views/admin/delegations/index.cjs +1 -1
  147. package/dist/views/admin/delegations/index.js +1 -2
  148. package/dist/views/admin/index.cjs +1 -1
  149. package/dist/views/admin/index.js +3 -3
  150. package/dist/views/admin/orgs/index.cjs +1 -1
  151. package/dist/views/admin/orgs/index.js +1 -2
  152. package/dist/views/admin/users/index.cjs +1 -1
  153. package/dist/views/admin/users/index.js +1 -2
  154. package/dist/views/admin/webhook-endpoints/index.cjs.map +1 -1
  155. package/dist/views/admin/webhook-endpoints/index.js.map +1 -1
  156. package/dist/views/cc/index.cjs.map +1 -1
  157. package/dist/views/cc/index.js.map +1 -1
  158. package/dist/views/dashboard/index.cjs +1 -1
  159. package/dist/views/dashboard/index.cjs.map +1 -1
  160. package/dist/views/dashboard/index.js +1 -1
  161. package/dist/views/dashboard/index.js.map +1 -1
  162. package/dist/views/delegations/index.cjs +1 -1
  163. package/dist/views/delegations/index.js +1 -2
  164. package/dist/views/forms/builder/index.cjs +1 -1
  165. package/dist/views/forms/builder/index.js +1 -2
  166. package/dist/views/forms/renderer/form-field-link.d.ts +16 -0
  167. package/dist/views/forms/renderer/index.cjs +1 -1
  168. package/dist/views/forms/renderer/index.js +1 -2
  169. package/dist/views/forms/renderer/member-field-options.d.ts +39 -0
  170. package/dist/views/forms/renderer/member-field.d.ts +21 -0
  171. package/dist/views/inbox/index.cjs +1 -1
  172. package/dist/views/inbox/index.cjs.map +1 -1
  173. package/dist/views/inbox/index.js +101 -102
  174. package/dist/views/inbox/index.js.map +1 -1
  175. package/dist/views/instances/detail/index.cjs +1 -1
  176. package/dist/views/instances/detail/index.js +1 -2
  177. package/dist/views/instances/detail/sections/container-helpers.d.ts +3 -2
  178. package/dist/views/instances/detail/submitted-by.d.ts +23 -0
  179. package/dist/views/instances/index.js +1 -2
  180. package/dist/views/instances/new/index.cjs +1 -1
  181. package/dist/views/instances/new/index.cjs.map +1 -1
  182. package/dist/views/instances/new/index.js +4 -11
  183. package/dist/views/instances/new/index.js.map +1 -1
  184. package/dist/views/login/index.js +1 -2
  185. package/dist/views/search/index.cjs.map +1 -1
  186. package/dist/views/search/index.js.map +1 -1
  187. package/dist/views/sent/SentView.d.ts +1 -1
  188. package/dist/views/sent/index.cjs +1 -1
  189. package/dist/views/sent/index.cjs.map +1 -1
  190. package/dist/views/sent/index.js +2 -2
  191. package/dist/views/sent/index.js.map +1 -1
  192. package/dist/views/settings/index.js +1 -2
  193. package/dist/views/settings/notifications/index.js +1 -2
  194. package/dist/views/templates/categories/index.cjs +1 -1
  195. package/dist/views/templates/categories/index.js +1 -2
  196. package/dist/views/templates/compose/index.cjs +1 -1
  197. package/dist/views/templates/compose/index.js +1 -2
  198. package/dist/views/templates/designer/designer-version-labels.d.ts +12 -0
  199. package/dist/views/templates/designer/dry-run-assignee-label.d.ts +28 -0
  200. package/dist/views/templates/designer/dry-run-sample-data.d.ts +9 -0
  201. package/dist/views/templates/designer/dynamic-form-resolver-options.d.ts +35 -0
  202. package/dist/views/templates/designer/index.cjs +1 -1
  203. package/dist/views/templates/designer/index.js +1 -2
  204. package/dist/views/templates/index.cjs +1 -1
  205. package/dist/views/templates/index.cjs.map +1 -1
  206. package/dist/views/templates/index.js +1 -1
  207. package/dist/views/templates/index.js.map +1 -1
  208. package/dist/views/templates/versions/index.cjs.map +1 -1
  209. package/dist/views/templates/versions/index.js.map +1 -1
  210. package/package.json +5 -5
  211. package/dist/chunks/FormBuilderView-BYLN6W-P.js.map +0 -1
  212. package/dist/chunks/FormBuilderView-VmdPVbg7.cjs +0 -3
  213. package/dist/chunks/FormBuilderView-VmdPVbg7.cjs.map +0 -1
  214. package/dist/chunks/FormRendererView-Bs8lTb4k.cjs +0 -2
  215. package/dist/chunks/FormRendererView-Bs8lTb4k.cjs.map +0 -1
  216. package/dist/chunks/FormRendererView-UPowZZgw.js +0 -798
  217. package/dist/chunks/FormRendererView-UPowZZgw.js.map +0 -1
  218. package/dist/chunks/admin-pickers-Btvij1at.cjs +0 -2
  219. package/dist/chunks/admin-pickers-Btvij1at.cjs.map +0 -1
  220. package/dist/chunks/admin-pickers-DLlG_1du.js.map +0 -1
  221. package/dist/chunks/categories-DGlxuC6X.js.map +0 -1
  222. package/dist/chunks/categories-Yid05WAX.cjs.map +0 -1
  223. package/dist/chunks/compose-CHZoX-H0.cjs +0 -2
  224. package/dist/chunks/compose-CHZoX-H0.cjs.map +0 -1
  225. package/dist/chunks/compose-CSWbRgJJ.js.map +0 -1
  226. package/dist/chunks/dashboard-page-CeCLV1tp.js.map +0 -1
  227. package/dist/chunks/dashboard-page-DooFJsxM.cjs +0 -2
  228. package/dist/chunks/dashboard-page-DooFJsxM.cjs.map +0 -1
  229. package/dist/chunks/delegations-8LsxcQM4.cjs +0 -2
  230. package/dist/chunks/delegations-8LsxcQM4.cjs.map +0 -1
  231. package/dist/chunks/delegations-B8gLSt0i.js.map +0 -1
  232. package/dist/chunks/delegations-DRupxJ4_.js.map +0 -1
  233. package/dist/chunks/delegations-DlYwMiAW.cjs +0 -2
  234. package/dist/chunks/delegations-DlYwMiAW.cjs.map +0 -1
  235. package/dist/chunks/designer-BtsIL0BB.js.map +0 -1
  236. package/dist/chunks/designer-Dm6cX2kZ.cjs +0 -65
  237. package/dist/chunks/designer-Dm6cX2kZ.cjs.map +0 -1
  238. package/dist/chunks/detail-C8NOqY0p.js.map +0 -1
  239. package/dist/chunks/detail-CX-3hZoL.cjs +0 -2
  240. package/dist/chunks/detail-CX-3hZoL.cjs.map +0 -1
  241. package/dist/chunks/orgs-BpqVu5ka.js.map +0 -1
  242. package/dist/chunks/orgs-D0-5BaHT.cjs +0 -2
  243. package/dist/chunks/orgs-D0-5BaHT.cjs.map +0 -1
  244. package/dist/chunks/users-C9LA-Rd7.cjs +0 -2
  245. package/dist/chunks/users-C9LA-Rd7.cjs.map +0 -1
  246. package/dist/chunks/users-FWrb3ehW.js +0 -214
  247. package/dist/chunks/users-FWrb3ehW.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ "use client";require('../style.css');require('../detail.css');const e=require("./rolldown-runtime-BocRIvOZ.cjs"),t=require("./auth-provider-4BeCw7cI.cjs"),n=require("./format-date-time-D-cx5M8z.cjs"),r=require("./bpm-form-field-Bc6k4ZEO.cjs"),i=require("./use-bpm-member-DpNAQtNC.cjs"),a=require("./format-member-label-t7ANTF62.cjs"),o=require("./task-node-label-BF6UllxP.cjs"),s=require("./FormRendererView-DRFi_IH7.cjs");;/* empty css */let c=require("react"),l=require("@mezzanine-ui/react"),u=require("react/jsx-runtime"),d=require("@rytass/bpm-core-client/workflow"),f=require("@mezzanine-ui/react/ContentHeader");f=e.t(f,1);let p=require("@mezzanine-ui/icons"),m=require("@rytass/bpm-core-client/form"),h=require("@xyflow/react"),g=require("dagre");g=e.t(g,1);let _=require("react-pdf"),v=require("@mezzanine-ui/core/stepper");var y={root:`bpm_root_ehm7w`,toolbar:`bpm_toolbar_R-tis`,pageControls:`bpm_pageControls_jM-rC`,zoomControls:`bpm_zoomControls_7RAbJ`,counter:`bpm_counter_ILUsD`,viewport:`bpm_viewport_DQXms`,page:`bpm_page_Cv5Rg`,state:`bpm_state_bpgp3`},ee=760,b=920,te=320,ne=32,re=.75,x=1.75,ie=.25;function ae({filename:e,fileUrl:t,onDownload:n}){let r=(0,c.useRef)(null),[i,a]=(0,c.useState)(null),[o,s]=(0,c.useState)(1),[d,f]=(0,c.useState)(1),[m,h]=(0,c.useState)(ee);(0,c.useEffect)(()=>{let e=r.current;if(!e||typeof ResizeObserver>`u`)return;let t=new ResizeObserver(e=>{let t=e[0]?.contentRect.width;t&&h(t)});return t.observe(e),()=>t.disconnect()},[]),(0,c.useEffect)(()=>{a(null),s(1),f(1)},[t]);let g=(0,c.useMemo)(()=>{let e=Math.max(te,m-ne);return Math.round(Math.min(b,e)*d)},[d,m]),v=(0,c.useCallback)(e=>{a(e.numPages),s(1)},[]),ae=o>1,C=i!==null&&o<i,oe=d>re,se=d<x,ce=i===null?`第 ${o} 頁`:`第 ${o} / ${i} 頁`,w=`${Math.round(d*100)}%`;return(0,u.jsxs)(`section`,{"aria-label":`${e} PDF 預覽`,className:y.root,children:[(0,u.jsxs)(`div`,{className:y.toolbar,children:[(0,u.jsxs)(`div`,{className:y.pageControls,"aria-label":`頁面切換`,children:[(0,u.jsx)(l.Button,{"aria-label":`上一頁`,disabled:!ae,icon:p.ChevronLeftIcon,onClick:()=>{s(e=>Math.max(1,e-1))},size:`minor`,variant:`base-secondary`}),(0,u.jsx)(l.Typography,{className:y.counter,component:`span`,variant:`body`,children:ce}),(0,u.jsx)(l.Button,{"aria-label":`下一頁`,disabled:!C,icon:p.ChevronRightIcon,onClick:()=>{s(e=>i===null?e:Math.min(i,e+1))},size:`minor`,variant:`base-secondary`})]}),(0,u.jsxs)(`div`,{className:y.zoomControls,"aria-label":`縮放`,children:[(0,u.jsx)(l.Button,{"aria-label":`縮小`,disabled:!oe,icon:p.ZoomOutIcon,onClick:()=>{f(e=>Math.max(re,e-ie))},size:`minor`,variant:`base-secondary`}),(0,u.jsx)(l.Typography,{className:y.counter,component:`span`,variant:`body`,children:w}),(0,u.jsx)(l.Button,{"aria-label":`放大`,disabled:!se,icon:p.ZoomInIcon,onClick:()=>{f(e=>Math.min(x,e+ie))},size:`minor`,variant:`base-secondary`})]}),n?(0,u.jsx)(l.Button,{icon:p.DownloadIcon,iconType:`leading`,onClick:n,size:`minor`,variant:`base-primary`,children:`下載`}):null]}),(0,u.jsx)(`div`,{className:y.viewport,ref:r,children:(0,u.jsx)(_.Document,{error:(0,u.jsx)(S,{message:`PDF 無法載入。`}),file:t,loading:(0,u.jsx)(S,{message:`正在載入 PDF...`}),noData:(0,u.jsx)(S,{message:`沒有可預覽的 PDF。`}),onLoadSuccess:v,suspense:!1,children:(0,u.jsx)(_.Page,{className:y.page,loading:(0,u.jsx)(S,{message:`正在載入頁面...`}),pageNumber:o,renderAnnotationLayer:!0,renderTextLayer:!0,width:g})})})]})}function S({message:e}){return(0,u.jsx)(`div`,{className:y.state,children:(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:e})})}function C({initiatorMemberId:e,submittedByMemberId:t}){return t&&t!==e?t:null}function oe(e,t){let n=C(e);if(!n||!e.initiatorMemberId)return null;let r=e=>t.get(e)?.name??e;return`由 ${r(n)} 代 ${r(e.initiatorMemberId)} 送出`}function se(e){let t=w(e,`from`),n=w(e,`to`),r=w(e,`reason`);return!t||!n||!r?null:{from:t,reason:r,ruleId:w(e,`ruleId`),to:n}}function ce(e){try{let t=JSON.parse(e);return Array.isArray(t)?t.map(e=>D(e)?se(e):null).filter(e=>e!==null):[]}catch{return[]}}function w(e,t){let n=e[t];return typeof n==`string`?n:null}function le(e,t){let n=e[t];return Array.isArray(n)?n.filter(e=>typeof e==`string`):[]}function T(e,t){let n=e[t];return typeof n==`number`?n:null}function E(e){return typeof e==`string`&&e.trim().length>0}function D(e){return typeof e==`object`&&!!e}function ue(e){return e.status===`PENDING`||e.status===`IN_PROGRESS`}function O(e){return(0,m.readFormDataSourceErrorMessage)(e)||(e instanceof Error?e.message:`發生未知錯誤`)}function de(e){return!Number.isFinite(e)||e<=0?`-`:e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(1)} KB`:`${(e/1024/1024).toFixed(1)} MB`}function k(e){return e.length>16?`${e.slice(0,12)}...`:e}function fe(e){return e===`APPROVED`?`已同意`:e===`CANCELLED`?`已取消`:e===`DRAFT`?`草稿`:e===`EXPIRED`?`已逾期`:e===`REJECTED`?`已拒絕`:e===`RETURNED`?`已退回`:e===`RUNNING`?`進行中`:e}function pe(e){return e===`PENDING`?`待處理`:e===`IN_PROGRESS`?`處理中`:e===`COMPLETED`?`已完成`:e===`CANCELLED`?`已取消`:e===`TRANSFERRED`?`已轉派`:e}function me(e){return e===`APPROVED`?`同意`:e===`REJECTED`?`拒絕`:e===`RETURNED`?`退回`:e===`TRANSFERRED`?`轉派`:e}function A(e){return e===`startEvent`?`開始`:e===`endEvent`?`完成`:e===`userTask`?`簽核節點`:e===`serviceTask`?`知會節點`:e===`exclusiveGateway`?`條件分流`:`平行處理`}function he(e,t){return t?.nodes.find(t=>t.id===e)?.data.label??e}function j(e,t){if(!e)return`-`;let n=t.get(e);return n?a.t(n.name,n.email,`fullwidth`):e}function ge(e,t=new Map){let n=ce(e.delegationChainJson);if(!e.assigneeMemberId)return e.candidateMemberIds.length?`候選 ${e.candidateMemberIds.map(e=>j(e,t)).join(`、`)}`:`未指定`;let r=j(e.assigneeMemberId,t),i=j(e.originalAssigneeMemberId,t);return n.length===0||e.originalAssigneeMemberId===e.assigneeMemberId?r:`${r}(原:${i})`}function _e(e,t){return t?e.assigneeMemberId===t||(e.openCandidateMemberIds??e.candidateMemberIds).includes(t):!1}function ve(e,t){if(t.type!==`userTask`||!t.data.returnBehavior.allowReturn)return[];if(t.data.returnBehavior.allowedTargets===`ANY`)return e.nodes.filter(e=>e.id!==t.id).map(e=>({id:e.id,name:`${e.data.label}(${A(e.type)})`}));let n=t.data.returnBehavior.allowedTargets===`INITIATOR`?e.nodes.find(e=>e.type===`startEvent`)?.id:e.edges.find(e=>e.target===t.id)?.source,r=e.nodes.find(e=>e.id===n);return r?[{id:r.id,name:`${r.data.label}(${A(r.type)})`}]:[]}function M(e){return{email:e.email,id:e.memberId,name:a.t(e.name,e.email,`dot`)}}function ye({memberIds:e,useWebhookTarget:t,webhookUrl:n}){if(t){let e=n.trim();return e?{target:{kind:`WEBHOOK`,webhookUrl:e},valid:!0}:{error:`請輸入 Webhook URL`,valid:!1}}return e.length>0?{target:{kind:`MEMBER`,memberIds:e},valid:!0}:{error:`請選擇對象成員`,valid:!1}}function be(e){return!!e}function xe(e){if(!D(e))return null;let t=e.email,n=e.id,r=e.name;return typeof n==`string`&&typeof r==`string`?{email:typeof t==`string`?t:null,id:n,name:r}:null}function N(e,t){let n=e.trim().toLocaleLowerCase();if(!n)return null;let r=t.filter(e=>[e.id,e.name,e.email??``].some(e=>e.toLocaleLowerCase().includes(n)));return r.length===1?r[0]??null:null}function P(e){return E(e)?{text:e,type:`text`}:null}function F(e,t,n=`neutral`){return E(t)?{label:e,text:t,tone:n,type:`comment`}:null}function I(e,t,n,r){let i=t?n.get(t):null;return{email:i?.email??null,label:i?.name??r,memberId:t,prefix:e,type:`member`}}function L(e){return!!e}function Se(e){let t=e.findIndex(e=>e.id.startsWith(`pending-task-`)||e.id.startsWith(`future-node-`));return t===-1?e.length:t}function R(e){return e.eventType===`INSTANCE_STARTED`||e.eventType===`TASK_DECIDED`||e.eventType===`SLA_TRIGGERED`||e.eventType===`TASK_CANDIDATE_ACTIVATED`||Ce(e)||z(e.eventType,H(e))}function Ce(e){return e.eventType===`TASK_CREATED`&&le(H(e),`sequentialCandidateMemberIds`).length>0}function we(e){if(e.eventType!==`TASK_CANDIDATE_ACTIVATED`&&e.eventType!==`TASK_CREATED`)return[];let t=H(e);return[...le(t,`sequentialCandidateMemberIds`),w(t,`candidateMemberId`),w(t,`previousMemberId`)].filter(E)}var Te=new Set([`SERVICE_TASK_EXECUTED`,`SERVICE_TASK_FAILED`,`WEBHOOK_DELIVERY_RETRIED`]);function z(e,t){return Te.has(e)&&w(t,`action`)===`NOTIFY_WEBHOOK`}function B(e){return w(e,`endpointLabel`)??w(e,`endpointKey`)??`外部系統`}function Ee(e){return e===`APPROVED`?`已同意`:e===`REJECTED`?`已拒絕`:e===`RETURNED`?`已退回`:e===`TRANSFERRED`?`已轉派`:`簽核已決議`}function V(e,t){if(e===`INSTANCE_STARTED`)return`案件已發起`;if(e===`TOKEN_CREATED`)return`流程路徑已建立`;if(e===`ENGINE_PROCESS_REQUESTED`)return`流程引擎已處理`;if(e===`TOKEN_ADVANCED`)return`流程已前進`;if(e===`TASK_CREATED`)return`待簽任務已建立`;if(e===`TASK_CANDIDATE_ACTIVATED`)return`輪到下一位簽核`;if(e===`TASK_DECIDED`)return Ee(w(t,`action`));if(e===`SLA_TRIGGERED`)return`時限提醒已觸發`;if(z(e,t)){let n=B(t);return e===`SERVICE_TASK_EXECUTED`?`已通知外部系統:${n}`:e===`SERVICE_TASK_FAILED`?`通知外部系統失敗:${n}`:`管理者重新傳送外部系統通知:${n}`}return e}function H(e){try{let t=JSON.parse(e.payloadJson);return D(t)?t:{}}catch{return{}}}function U(e,t){return e.eventType===`SLA_TRIGGERED`||e.eventType===`SERVICE_TASK_FAILED`&&z(e.eventType,t)||w(t,`action`)===`REJECTED`||w(t,`instanceState`)===`REJECTED`}function W(e){return n.t(e)}function De(e,t,n,r){if(e.eventType===`INSTANCE_STARTED`)return oe({initiatorMemberId:e.actorMemberId,submittedByMemberId:w(t,`submittedByMemberId`)},r);if(e.eventType===`TASK_CANDIDATE_ACTIVATED`){let e=w(t,`candidateMemberId`),n=w(t,`previousMemberId`);if(!e)return null;let i=j(e,r);return n?`輪到:${i}(前一位:${j(n,r)})`:`輪到:${i}`}if(e.eventType===`TASK_CREATED`){let e=le(t,`sequentialCandidateMemberIds`);if(e.length)return`簽核順序:${e.map(e=>j(e,r)).join(` → `)}`;let n=w(t,`assigneeMemberId`),i=w(t,`originalAssigneeMemberId`);if(!n){let e=le(t,`candidateMemberIds`);return e.length?`候選簽核人:${e.map(e=>j(e,r)).join(`、`)}`:null}let a=j(n,r),o=j(i,r);return i&&i!==n?`待簽人:${a}(原簽核人:${o})`:`待簽人:${a}`}if(e.eventType===`TASK_DECIDED`){let e=w(t,`action`),n=w(t,`comment`),i=e?`決議:${me(e)}`:null,a=w(t,`transferToMemberId`);return e===`REJECTED`&&n?[i,`拒絕原因:${n}`].filter(E).join(` · `):e===`APPROVED`&&n?[i,`同意說明:${n}`].filter(E).join(` · `):e===`TRANSFERRED`?[i,`轉派給:${j(a,r)}`].filter(E).join(` · `):i}if(e.eventType===`TOKEN_ADVANCED`){let e=w(t,`action`);if(e)return`流程結果:${me(e)}`;let r=T(t,`arrivedCount`),i=T(t,`requiredCount`);if(r!==null&&i!==null)return`等待匯合:${r}/${i}`;let a=w(t,`fromNodeId`),o=w(t,`toNodeId`);if(a&&o)return`由 ${he(a,n)} 前進至 ${he(o,n)}`}if(e.eventType===`ENGINE_PROCESS_REQUESTED`){let e=w(t,`state`);return e?`案件狀態:${fe(e)}`:null}return null}function Oe(e,t,n,r,i,a,o){if(e.eventType!==`TASK_DECIDED`)return[P(De(e,t,n,o))].filter(L);let s=e.taskId?r.get(e.taskId):null,c=w(t,`action`)??s?.action??null,l=w(t,`comment`)??s?.comment??null,u=w(t,`transferToMemberId`)??s?.transferToMemberId??null,d=w(t,`signatureId`)??s?.signatureId??null,f=d?i.get(d):null;return[P(c?`決議:${me(c)}`:null),c===`REJECTED`?F(`拒絕原因`,l??`-`,`danger`):null,c===`APPROVED`?F(`同意說明`,l):null,c===`RETURNED`?F(`退回說明`,l??`-`):null,c===`TRANSFERRED`?P(`轉派給:${j(u,o)}`):null,c===`TRANSFERRED`?F(`轉派說明`,l??`-`):null,f?P(a?.valid?`簽章:已驗證(${k(f.signedPayloadHash)})`:`簽章:待檢查(${k(f.signedPayloadHash)})`):null].filter(L)}function ke(e,t,n,r,i){if(e.type===`startEvent`||i.has(e.id))return!1;if(r===`REJECTED`)return!0;let a=Y(e,t,n,r);return a.tone===`neutral`||a.tone===`waiting`}function G(e,t,n,r,i){if(r!==`RUNNING`&&r!==`REJECTED`)return[];let a=e.nodes.filter(e=>ke(e,t,n,r,i)),o=K(e,a,t,n,i),s=new Map(e.nodes.map((e,t)=>[e.id,t]));return a.filter(e=>o.has(e.id)).sort((e,t)=>{let n=o.get(e.id)??0,r=o.get(t.id)??0;return n===r?e.position.x===t.position.x?e.position.y===t.position.y?(s.get(e.id)??0)-(s.get(t.id)??0):e.position.y-t.position.y:e.position.x-t.position.x:n-r})}function K(e,t,n,r,i){let a=new Set(t.map(e=>e.id)),o=e.edges.reduce((e,t)=>{let n=[...e.get(t.source)??[],t.target];return new Map(e).set(t.source,n)},new Map);return Ae(e,n,r,i).reduce((e,t)=>J(e,je(t,o,a)),new Map)}function Ae(e,t,n,r){let i=n.filter(e=>e.status===`ACTIVE`||e.status===`WAITING`).map(e=>e.currentNodeId),a=t.filter(ue).map(e=>e.nodeId),o=e.nodes.filter(e=>r.has(e.id)).map(e=>e.id),s=[...new Set([...i,...a,...o])],c=e.nodes.filter(e=>e.type===`startEvent`).map(e=>e.id);return s.length>0?s:c}function je(e,t,n){return q([{distance:0,nodeId:e}],t,n)}function q(e,t,n,r=new Set,i=new Map){let[a,...o]=e;if(!a)return i;if(r.has(a.nodeId))return q(o,t,n,r,i);let s=new Set(r).add(a.nodeId),c=n.has(a.nodeId)?new Map(i).set(a.nodeId,Math.min(i.get(a.nodeId)??a.distance,a.distance)):i;return q([...o,...(t.get(a.nodeId)??[]).map(e=>({distance:a.distance+1,nodeId:e}))],t,n,s,c)}function J(e,t){return[...t.entries()].reduce((e,[t,n])=>new Map(e).set(t,Math.min(e.get(t)??n,n)),e)}function Me(e){return e.type===`userTask`?`未來簽核:${e.data.label}`:e.type===`serviceTask`?`未來知會:${e.data.label}`:e.type===`exclusiveGateway`?`未來分流:${e.data.label}`:e.type===`parallelGateway`?`未來匯合:${e.data.label}`:e.type===`endEvent`?`流程完成:${e.data.label}`:`未來節點:${e.data.label}`}function Ne(e,t,n,r,i,a,o,s,c){let l=e.filter(R).map(e=>{let t=H(e),n=e.nodeId?he(e.nodeId,r):null;return{descriptionParts:[P(n?`節點:${n}`:`節點:全流程`),I(`操作者`,e.actorMemberId,a,`系統`),P(`時間:${W(e.createdAt)}`),...Oe(e,t,r,o,s,c,a)].filter(L),error:U(e,t),id:e.id,title:V(e.eventType,t)}}),u=t.filter(ue).map(e=>({descriptionParts:[P(`節點:${he(e.nodeId,r)}`),I(`處理者`,e.assigneeMemberId,a,`未指定`),P(`建立時間:${W(e.createdAt)}`)].filter(L),error:!1,id:`pending-task-${e.id}`,title:e.status===`IN_PROGRESS`?`簽核處理中`:`等待簽核處理`})),d=new Set([...e.filter(R).map(e=>e.nodeId),...t.map(e=>e.nodeId)].filter(E)),f=r?G(r,t,n,i,d).map(e=>({descriptionParts:[P(`${A(e.type)} · 尚未抵達`)].filter(L),error:!1,forcePending:!0,id:`future-node-${e.id}`,title:Me(e)})):[];return[...l,...u,...f]}function Y(e,t,n,r){let i=t.filter(t=>t.nodeId===e.id),a=i.find(e=>e.status===`PENDING`||e.status===`IN_PROGRESS`),o=i.find(e=>e.status===`CANCELLED`),s=i.find(e=>e.status===`COMPLETED`),c=n.filter(t=>t.currentNodeId===e.id),l=c.find(e=>e.status===`ACTIVE`),u=c.find(e=>e.status===`WAITING`);return a?{secondaryLabel:`處理者 ${ge(a)}`,statusLabel:`待處理`,tone:`current`}:o?{secondaryLabel:`已取消 ${ge(o)}`,statusLabel:`已取消`,tone:`cancelled`}:s?{secondaryLabel:`已完成 ${ge(s)}`,statusLabel:`已完成`,tone:`completed`}:l?{secondaryLabel:`token ${l.id}`,statusLabel:`執行中`,tone:`current`}:u?{secondaryLabel:`token ${u.id}`,statusLabel:`等待前置`,tone:`waiting`}:e.type===`startEvent`?{secondaryLabel:`流程已發起`,statusLabel:`已發起`,tone:`completed`}:e.type===`endEvent`&&r!==`RUNNING`?{secondaryLabel:r,statusLabel:r===`REJECTED`?`已拒絕`:`已完成`,tone:r===`REJECTED`?`cancelled`:`completed`}:{secondaryLabel:A(e.type),statusLabel:`未抵達`,tone:`neutral`}}async function Pe({activityLogs:e,adhocDirectives:t=[],instance:n,tasks:r}){let i=[...new Set([n?.initiatorMemberId??null,n?.submittedByMemberId??null,...e.map(e=>e.actorMemberId),...e.flatMap(we),...r.map(e=>e.assigneeMemberId),...r.map(e=>e.originalAssigneeMemberId),...r.flatMap(e=>e.candidateMemberIds),...r.flatMap(e=>ce(e.delegationChainJson).flatMap(e=>[e.from,e.to])),...t.flatMap(e=>[e.createdByMemberId,...Fe(e.targetValueJson)])].filter(E))];try{return await(0,d.resolveMemberProfiles)(i)}catch{return[]}}function Fe(e){try{return(JSON.parse(e).memberIds??[]).filter(e=>typeof e==`string`)}catch{return[]}}async function Ie(e){return(await Promise.all(e.map(e=>(0,d.listTaskDecisions)(e.id)))).flat()}function Le(e){return e.reduce((e,t)=>{let n=e.get(t.taskId),r=!n||new Date(t.decidedAt).getTime()>new Date(n.decidedAt).getTime()?t:n;return new Map(e).set(t.taskId,r)},new Map)}var Re={display:`grid`,gap:16},ze={display:`flex`,flexWrap:`wrap`,gap:8};function Be({canResubmitInstance:e,deciding:t,error:n,instance:r,loading:i,onDataSourceStateChange:a,onResubmitFormChange:o,onResubmitInstance:c,onUploadAttachment:d,resubmitFormData:f,resubmitFormErrors:m}){return(0,u.jsxs)(`div`,{style:Re,children:[n?(0,u.jsx)(l.Typography,{color:`text-error`,variant:`body`,children:n}):null,i?(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:`載入中...`}):null,r?.formDefinitionSnapshot.schema&&r.formDefinitionSnapshot.uiSchema?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(s.t,{dataSourceContext:e?{instanceId:r.id,kind:`runtime`}:void 0,dataSourceInitialValues:r.formData,errors:m,onChange:e=>{o(e)},onDataSourceStateChange:a,onUploadAttachment:e?d:void 0,optionSnapshots:r.formDataOptionSnapshot,readonly:!e,schema:r.formDefinitionSnapshot.schema,uiSchema:r.formDefinitionSnapshot.uiSchema,value:e?f:r.formData}),e?(0,u.jsx)(`div`,{style:ze,children:(0,u.jsx)(l.Button,{disabled:t,icon:p.RefreshCcwIcon,iconType:`leading`,onClick:c,variant:`base-primary`,children:`重新送出`})}):null]}):(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:`此案件沒有可顯示的表單快照。`})]})}var Ve={display:`grid`,gap:16};function He({attachments:e,onDownload:t,onPreview:r}){let i=(0,c.useMemo)(()=>e.map(e=>({attachment:e,createdAt:e.createdAt,filename:e.filename,id:e.id,key:e.id,mimeType:e.mimeType,sizeLabel:de(Number(e.sizeBytes))})),[e]),a=(0,c.useMemo)(()=>[{dataIndex:`filename`,key:`filename`,title:`檔名`,width:260},{dataIndex:`mimeType`,key:`mimeType`,title:`類型`,width:180},{dataIndex:`sizeLabel`,key:`sizeLabel`,title:`大小`,width:120},{key:`createdAt`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`上傳時間`,width:220}],[]),o=(0,c.useMemo)(()=>({render:e=>[...e.mimeType===`application/pdf`?[{icon:p.FileSearchIcon,iconType:`leading`,name:`預覽`,onClick:()=>{r(e.attachment)}}]:[],{icon:p.DownloadIcon,iconType:`leading`,name:`下載`,onClick:()=>{t(e.attachment)}}],variant:`base-secondary`,width:160}),[t,r]);return(0,u.jsxs)(`div`,{style:Ve,children:[(0,u.jsx)(l.Typography,{component:`h2`,variant:`h3`,children:`附件`}),i.length>0?(0,u.jsx)(l.Table,{actions:o,columns:a,dataSource:i,fullWidth:!0}):(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:`此案件沒有附件。`})]})}var Ue={display:`grid`,gap:12,width:`100%`},We={minWidth:`100%`,width:`100%`},X={display:`grid`,gap:12,width:`100%`},Ge={marginTop:12},Ke={marginTop:24};function qe(e){e&&(e.style.width=`100%`)}var Z={COMPLETION_NOTIFY:`結案通知`,COUNTERSIGN:`臨時會簽`,PRE_APPROVAL:`臨時加簽`,STAGE_NOTIFY:`階段完成通知`},Je={COMPLETION_NOTIFY:`本張單到達結案狀態(核准 / 拒絕 / 取消)後,通知指定對象。`,COUNTERSIGN:`指定對象會併入下一層簽核,下一層需所有人都完成才會繼續。`,PRE_APPROVAL:`指定對象需先完成加簽,本階段才會往下一層繼續。`,STAGE_NOTIFY:`本階段完成後(不論通過與否)通知指定對象。`},Ye=[{id:`REJECT_INSTANCE`,name:`加簽拒絕時整單駁回`},{id:`RETURN_TO_ORIGIN`,name:`加簽拒絕時退回給我重新處理`}],Xe=[{id:`MEMBER`,name:`指定成員`},{id:`WEBHOOK`,name:`Webhook`}],Ze=(0,c.forwardRef)(function({adhocDirectives:e,currentMemberId:t,instance:i,memberProfilesById:a,onChanged:s,tasks:f},p){let[m,h]=(0,c.useState)(!1),[g,_]=(0,c.useState)(null),[v,y]=(0,c.useState)(``),[ee,b]=(0,c.useState)(!1),[te,ne]=(0,c.useState)(``),[re,x]=(0,c.useState)(null),[ie,ae]=(0,c.useState)(!1),[S,C]=(0,c.useState)(``),[oe,se]=(0,c.useState)(!1),[ce,w]=(0,c.useState)(null),[le,T]=(0,c.useState)(``),[E,D]=(0,c.useState)(null),[ue,de]=(0,c.useState)(!1),[k,fe]=(0,c.useState)([]),[me,A]=(0,c.useState)(!1),[P,F]=(0,c.useState)(``),[I,L]=(0,c.useState)([]),[Se,R]=(0,c.useState)(!1),[Ce,we]=(0,c.useState)([]),[Te,z]=(0,c.useState)(!1),[B,Ee]=(0,c.useState)(`COUNTERSIGN`),[V,H]=(0,c.useState)(`REJECT_INSTANCE`),[U,W]=(0,c.useState)(!1),[De,Oe]=(0,c.useState)(`MEMBER`),[ke,G]=(0,c.useState)(``),K=te.trim(),Ae=S.trim(),je=le.trim(),q=(0,c.useMemo)(()=>f.find(e=>_e(e,t)&&(e.status===`PENDING`||e.status===`IN_PROGRESS`))??null,[t,f]),J=(0,c.useMemo)(()=>q&&i?i.workflowSnapshot.nodes.find(e=>e.id===q.nodeId)??null:null,[q,i]),Me=(0,c.useMemo)(()=>J&&i?ve(i.workflowSnapshot,J):[],[J,i]),Ne=J?.type===`userTask`&&J.data.returnBehavior.allowReturn,Y=J?.type===`userTask`&&J.data.allowReject!==!1,Pe=J?.type===`userTask`&&J.data.allowTransfer!==!1,Fe=J?.type===`userTask`&&J.data.returnBehavior.requireComment===!0,Ie=J?.type===`userTask`&&J.data.allowAddSigner,Le=(0,c.useMemo)(()=>e.filter(e=>e.status===`PENDING`),[e]),Re=Me.find(e=>e.id===ce)??Me[0]??null,ze=(0,c.useMemo)(()=>f.map(e=>({...e,assigneeLabel:ge(e,a),key:e.id,nodeLabel:o.t({...e,nodeLabel:he(e.nodeId,i?.workflowSnapshot??null)}),statusLabel:pe(e.status)})),[i,a,f]),Be=(0,c.useMemo)(()=>[{dataIndex:`nodeLabel`,key:`nodeLabel`,title:`節點`,width:180},{key:`assigneeMemberId`,title:`處理者`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:e.assigneeLabel}),width:180},{dataIndex:`statusLabel`,key:`statusLabel`,title:`狀態`,width:120},{key:`createdAt`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`建立時間`,width:220}],[]),Ve=(0,c.useMemo)(()=>Le.map(e=>({...e,createdByLabel:j(e.createdByMemberId,a),key:e.id,targetLabel:Qe(e,a),typeLabel:Z[e.type]})),[a,Le]),He=(0,c.useMemo)(()=>[{dataIndex:`typeLabel`,key:`typeLabel`,title:`類型`,width:180},{key:`targetLabel`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:e.targetLabel}),title:`對象`,width:220},{key:`createdByLabel`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:e.createdByLabel}),title:`設定者`,width:180},{key:`createdAt`,render:e=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:n.t(e.createdAt)}),title:`建立時間`,width:220},{key:`actions`,render:e=>e.createdByMemberId===t?(0,u.jsx)(l.Button,{disabled:U,onClick:()=>void gt(e.id),size:`minor`,variant:`destructive-secondary`,children:`撤回`}):(0,u.jsx)(u.Fragment,{}),title:`操作`,width:100}],[U,t]);async function Ze({action:e,comment:n,returnToNodeId:r=null,transferToMemberId:i=null}){if(!t||!q||e===`REJECTED`&&!Y||e===`TRANSFERRED`&&!Pe)return!1;h(!0),_(null);try{await(0,d.decideTask)({action:e,comment:n,decidedByMemberId:t,returnToNodeId:r,taskId:q.id,transferToMemberId:i}),ae(!1),se(!1),A(!1),ne(``),C(``),T(``),D(null),w(null),x(null)}catch(e){return _(O(e)),h(!1),!1}try{await s()}catch(e){_(O(e))}finally{h(!1)}return!0}function $e(){t&&q&&(_(null),y(``),b(!0))}function et(){m||(b(!1),y(``))}async function tt(){m||await Ze({action:`APPROVED`,comment:v.trim()||null})&&(b(!1),y(``))}function nt(){Y&&(ne(``),x(null),ae(!0))}function rt(){m||(ae(!1),ne(``),x(null))}function it(){C(``),w(Me[0]?.id??null),se(!0)}function Q(){m||(se(!1),C(``),w(null))}function at(){Pe&&(T(``),D(null),A(!0),st(``))}function ot(){m||(A(!1),T(``),D(null))}async function st(e){de(!0);try{fe((await(0,d.searchMembers)(e)).filter(e=>e.memberId!==t).map(M))}catch(e){_(O(e))}finally{de(!1)}}async function ct(){Y&&(K?await Ze({action:`REJECTED`,comment:K}):x(`請輸入拒絕原因`))}async function lt(){Pe&&(E?await Ze({action:`TRANSFERRED`,comment:je||null,transferToMemberId:E.id}):_(`請選擇轉派對象`))}async function ut(){await Ze({action:`RETURNED`,comment:Ae||null,returnToNodeId:Re?.id??null})}function dt(){F(``),L([]),H(`REJECT_INSTANCE`),Oe(`MEMBER`),G(``)}function ft(e){Ee(e),dt(),z(!0),mt(``)}function pt(){U||(z(!1),dt())}async function mt(e){R(!0);try{we((await(0,d.searchMembers)(e)).map(M))}catch(e){_(O(e))}finally{R(!1)}}async function ht(){if(!q)return;let e=(B===`STAGE_NOTIFY`||B===`COMPLETION_NOTIFY`)&&De===`WEBHOOK`,t=ye({memberIds:I.map(e=>e.id),useWebhookTarget:e,webhookUrl:ke});if(!t.valid){_(t.error);return}let{target:n}=t,r=P.trim()||null;W(!0),_(null);try{B===`COUNTERSIGN`?await(0,d.requestAdhocCountersign)({comment:r,target:n,taskId:q.id}):B===`PRE_APPROVAL`?await(0,d.requestAdhocPreApproval)({comment:r,onReject:V,target:n,taskId:q.id}):B===`STAGE_NOTIFY`?await(0,d.configureAdhocStageNotification)({target:n,taskId:q.id}):await(0,d.configureAdhocCompletionNotification)({target:n,taskId:q.id}),z(!1),dt(),await s()}catch(e){_(O(e))}finally{W(!1)}}async function gt(e){W(!0),_(null);try{await(0,d.cancelAdhocDirective)(e),await s()}catch(e){_(O(e))}finally{W(!1)}}(0,c.useImperativeHandle)(p,()=>({canAddSignerCurrentTask:Ie,canRejectCurrentTask:Y,canReturnCurrentTask:Ne,canTransferCurrentTask:Pe,deciding:m,handleApprove:$e,hasCurrentTask:q!==null,openAdhocModal:ft,openRejectModal:nt,openReturnModal:it,openTransferModal:at}),[Ie,Y,Ne,Pe,t,q,m]);let $=B===`STAGE_NOTIFY`||B===`COMPLETION_NOTIFY`,_t=$&&De===`WEBHOOK`?!ke.trim():I.length===0,vt=Ye.find(e=>e.id===V)??Ye[0],yt=Xe.find(e=>e.id===De)??Xe[0];return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l.Typography,{component:`h2`,variant:`h3`,children:`任務`}),g?(0,u.jsx)(l.Typography,{color:`text-error`,variant:`body`,children:g}):null,(0,u.jsx)(`div`,{style:Ge,children:(0,u.jsx)(l.Table,{columns:Be,dataSource:ze,fullWidth:!0})}),Le.length>0?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l.Typography,{component:`h3`,style:Ke,variant:`h3`,children:`待生效的臨時設定`}),(0,u.jsx)(`div`,{style:Ge,children:(0,u.jsx)(l.Table,{columns:He,dataSource:Ve,fullWidth:!0})})]}):null,(0,u.jsxs)(l.Modal,{cancelText:`取消`,confirmText:`送出同意`,loading:m,modalType:`standard`,onCancel:et,onClose:et,onConfirm:()=>void tt(),open:ee,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`可以留下同意的說明,內容會記錄在簽核歷程;不填也可以直接送出。`,title:`簽核意見`,children:[g?(0,u.jsx)(l.Typography,{color:`text-error`,role:`alert`,variant:`body`,children:g}):null,(0,u.jsx)(`div`,{style:Ue,children:(0,u.jsx)(r.t,{label:`簽核意見`,name:`approveComment`,children:(0,u.jsx)(l.Textarea,{autoFocus:!0,onChange:e=>y(e.target.value),placeholder:`選填,例如補充核准的條件或提醒事項`,ref:qe,resize:`vertical`,rows:4,style:We,value:v})})})]}),(0,u.jsx)(l.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!K,variant:`destructive-primary`},confirmText:`送出拒絕`,loading:m,modalStatusType:`error`,modalType:`standard`,onCancel:rt,onClose:rt,onConfirm:()=>void ct(),open:ie,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`拒絕案件時必須留下原因,供發起人與後續追蹤查看。`,title:`拒絕原因`,children:(0,u.jsxs)(`div`,{style:Ue,children:[(0,u.jsx)(r.t,{label:`拒絕原因`,name:`rejectReason`,required:!0,children:(0,u.jsx)(l.Textarea,{autoFocus:!0,onChange:e=>{ne(e.target.value),x(null)},placeholder:`請說明拒絕原因`,ref:qe,resize:`vertical`,rows:4,style:We,type:re?`error`:`default`,value:te})}),re?(0,u.jsx)(l.Typography,{color:`text-error`,variant:`body`,children:re}):null]})}),(0,u.jsx)(l.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!E},confirmText:`送出轉派`,loading:m,modalType:`standard`,onCancel:ot,onClose:ot,onConfirm:()=>void lt(),open:me,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`轉派後,原任務會保留轉派紀錄,新的待簽任務會指派給指定成員。`,title:`轉派簽核`,children:(0,u.jsxs)(`div`,{style:X,children:[(0,u.jsx)(r.t,{label:`轉派對象`,name:`transferToMemberId`,required:!0,children:(0,u.jsx)(l.AutoComplete,{asyncData:!0,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`transfer-member-search`,spellCheck:!1},loading:ue,loadingText:`搜尋成員中...`,mode:`single`,onChange:e=>D(xe(e)),onSearch:st,onSearchTextChange:e=>D(N(e,k)),onVisibilityChange:e=>{e&&st(``)},options:[...k],placeholder:`搜尋姓名或信箱`,searchDebounceTime:300,value:E})}),(0,u.jsx)(r.t,{label:`轉派說明`,name:`transferComment`,children:(0,u.jsx)(l.Textarea,{onChange:e=>T(e.target.value),placeholder:`可補充轉派原因`,ref:qe,resize:`vertical`,rows:4,style:We,value:le})})]})}),(0,u.jsx)(l.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:!Re||Fe&&!Ae},confirmText:`送出退回`,loading:m,modalType:`standard`,onCancel:Q,onClose:Q,onConfirm:()=>void ut(),open:oe,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:`退回後,流程會回到指定節點並等待重新處理。`,title:`退回簽核`,children:(0,u.jsxs)(`div`,{style:X,children:[(0,u.jsx)(r.t,{label:`退回節點`,name:`returnTargetNodeId`,required:!0,children:(0,u.jsx)(l.Select,{clearable:!1,fullWidth:!0,onChange:e=>w(e?.id??null),options:[...Me],placeholder:`選擇退回節點`,value:Re})}),(0,u.jsx)(r.t,{hintText:Fe?`此關卡設定退回時必須填寫意見。`:void 0,label:`退回說明`,name:`returnComment`,required:Fe,children:(0,u.jsx)(l.Textarea,{onChange:e=>C(e.target.value),placeholder:Fe?`請說明退回原因`:`可補充需要修改的內容`,ref:qe,resize:`vertical`,rows:4,style:We,value:S})})]})}),(0,u.jsx)(l.Modal,{cancelText:`取消`,confirmButtonProps:{disabled:_t},confirmText:`送出`,loading:U,modalType:`standard`,onCancel:pt,onClose:pt,onConfirm:()=>void ht(),open:Te,showModalFooter:!0,showModalHeader:!0,size:`regular`,supportingText:Je[B],title:Z[B],children:(0,u.jsxs)(`div`,{style:X,children:[$?(0,u.jsx)(r.t,{label:`通知時機`,name:`adhocNotifyMode`,required:!0,children:(0,u.jsx)(l.Select,{clearable:!1,fullWidth:!0,onChange:e=>Ee(e?.id===`COMPLETION_NOTIFY`?`COMPLETION_NOTIFY`:`STAGE_NOTIFY`),options:[{id:`STAGE_NOTIFY`,name:Z.STAGE_NOTIFY},{id:`COMPLETION_NOTIFY`,name:Z.COMPLETION_NOTIFY}],value:{id:B,name:Z[B]}})}):null,$?(0,u.jsx)(r.t,{label:`通知對象類型`,name:`adhocTargetKind`,required:!0,children:(0,u.jsx)(l.Select,{clearable:!1,fullWidth:!0,onChange:e=>Oe(e?.id===`WEBHOOK`?`WEBHOOK`:`MEMBER`),options:[...Xe],value:yt})}):null,$&&De===`WEBHOOK`?(0,u.jsx)(r.t,{label:`Webhook URL`,name:`adhocWebhookUrl`,required:!0,children:(0,u.jsx)(l.Input,{fullWidth:!0,onChange:e=>G(e.target.value),placeholder:`https://example.com/webhook`,value:ke})}):(0,u.jsx)(r.t,{label:$?`通知對象`:`簽核對象`,name:`adhocMemberId`,required:!0,children:(0,u.jsx)(l.AutoComplete,{asyncData:!0,disabledOptionsFilter:!0,emptyText:`沒有符合的成員`,inputProps:{autoCapitalize:`none`,autoCorrect:`off`,name:`adhoc-member-search`,spellCheck:!1},loading:Se,loadingText:`搜尋成員中...`,menuMaxHeight:320,mode:`multiple`,onChange:e=>L(e.map(xe).filter(be)),onSearch:mt,onVisibilityChange:e=>{e&&mt(``)},options:[...Ce],overflowStrategy:`wrap`,placeholder:`搜尋姓名或信箱,可加入多位`,searchDebounceTime:300,value:[...I]})}),B===`PRE_APPROVAL`?(0,u.jsx)(r.t,{label:`拒簽處理方式`,name:`adhocOnReject`,required:!0,children:(0,u.jsx)(l.Select,{clearable:!1,fullWidth:!0,onChange:e=>H(e?.id===`RETURN_TO_ORIGIN`?`RETURN_TO_ORIGIN`:`REJECT_INSTANCE`),options:[...Ye],value:vt})}):null,$?null:(0,u.jsx)(r.t,{label:`說明`,name:`adhocComment`,children:(0,u.jsx)(l.Textarea,{onChange:e=>F(e.target.value),placeholder:`可補充原因`,ref:qe,resize:`vertical`,rows:3,style:We,value:P})})]})})]})});function Qe(e,t){try{let n=JSON.parse(e.targetValueJson);if(n.memberIds?.length)return n.memberIds.map(e=>j(e,t)).join(`、`);if(n.webhookUrl)return n.webhookUrl;if(n.positionId)return`職位 ${n.positionId}`;if(n.orgUnitId)return`部門 ${n.orgUnitId}`}catch{}return e.targetKind}var $e={display:`grid`,gap:16};function et({signatureVerification:e,signatures:t}){let r=(0,c.useMemo)(()=>t.map(e=>({algorithm:e.algorithm,hashLabel:k(e.signedPayloadHash),key:e.id,keyVersion:e.keyVersion,signedAtLabel:n.t(e.signedAt),signerMemberId:e.signerMemberId})),[t]),i=(0,c.useMemo)(()=>[{dataIndex:`signerMemberId`,key:`signerMemberId`,title:`簽章者`,width:160},{dataIndex:`algorithm`,key:`algorithm`,title:`演算法`,width:150},{dataIndex:`keyVersion`,key:`keyVersion`,title:`Key 版本`,width:100},{dataIndex:`hashLabel`,key:`hashLabel`,title:`Payload Hash`,width:180},{dataIndex:`signedAtLabel`,key:`signedAtLabel`,title:`簽章時間`,width:220}],[]);return(0,u.jsxs)(`div`,{style:$e,children:[(0,u.jsx)(l.Typography,{component:`h2`,variant:`h3`,children:`簽章`}),(0,u.jsx)(l.Typography,{color:e?.valid?`text-success`:`text-error`,variant:`body`,children:e?e.valid?`簽章鏈已驗證,共 ${e.checkedCount} 筆。`:`簽章鏈驗證失敗:${e.errors.join(`、`)}`:`尚無簽章紀錄。`}),r.length>0?(0,u.jsx)(l.Table,{columns:i,dataSource:r,fullWidth:!0}):null]})}var tt={display:`grid`,gap:16},nt={cursor:`help`,textDecoration:`underline dotted`,textUnderlineOffset:3},rt={borderLeftColor:`var(--mzn-color-border)`,borderLeftStyle:`solid`,borderLeftWidth:2,marginTop:4,paddingLeft:8,whiteSpace:`pre-wrap`},it={color:`var(--mzn-color-text-secondary)`},Q={...rt,borderLeftColor:`var(--mzn-color-text-error)`,color:`var(--mzn-color-text-error)`};function at(...e){return e.filter(e=>E(e??null)).join(` `)}var ot=(0,c.forwardRef)(function({className:e,descriptionParts:t,error:n,forcePending:r=!1,index:i=0,orientation:a,status:o=`pending`,title:s,type:d=`number`,...f},p){let m=r?`pending`:o,h=t.filter(e=>e.type!==`comment`),g=t.filter(e=>e.type===`comment`);return(0,u.jsxs)(`div`,{...f,className:at(v.stepClasses.host,d===`dot`?v.stepClasses.dot:null,n&&m!==`processing`?v.stepClasses.error:null,a===`horizontal`?v.stepClasses.horizontal:null,d===`number`?v.stepClasses.number:null,m===`pending`?v.stepClasses.pending:null,m===`processing`?v.stepClasses.processing:null,n&&m===`processing`?v.stepClasses.processingError:null,!n&&m===`succeeded`?v.stepClasses.succeeded:null,a===`vertical`?v.stepClasses.vertical:null,e),ref:p,children:[d===`dot`?(0,u.jsx)(`span`,{className:at(v.stepClasses.statusIndicator,v.stepClasses.statusIndicatorDot)}):(0,u.jsx)(`span`,{className:v.stepClasses.statusIndicator,children:i+1}),(0,u.jsxs)(`div`,{className:v.stepClasses.textContainer,children:[(0,u.jsxs)(l.Typography,{className:v.stepClasses.title,variant:`label-primary-highlight`,children:[s,(0,u.jsx)(`span`,{className:v.stepClasses.titleConnectLine})]}),h.length>0?(0,u.jsx)(l.Typography,{className:v.stepClasses.description,variant:`caption`,children:h.map((e,t)=>(0,u.jsxs)(c.Fragment,{children:[t>0?` · `:null,st(e)]},`${e.type}-${t}`))}):null,g.map((e,t)=>(0,u.jsxs)(l.Typography,{style:e.tone===`danger`?Q:rt,variant:`body`,children:[(0,u.jsxs)(`span`,{style:e.tone===`danger`?void 0:it,children:[e.label,`:`]}),e.text]},`comment-${t}`))]})]})});function st(e){return e.type===`text`?e.text:e.email?.trim()?(0,u.jsxs)(u.Fragment,{children:[e.prefix,`:`,(0,u.jsx)(l.Tooltip,{title:e.email,children:({ref:t,...n})=>(0,u.jsx)(`span`,{...n,"data-testid":e.memberId?`member-tooltip-${e.memberId}`:void 0,ref:t,style:nt,children:e.label})})]}):`${e.prefix}:${e.label}`}function ct({activityLogs:e,instanceState:t,memberProfilesById:n,signatureVerification:r,signaturesById:i,taskDecisionsByTaskId:a,tasks:o,workflowSnapshot:s,workflowTokens:c}){let d=Ne(e,o,c,s,t,n,a,i,r),f=Se(d),p=d.map(e=>({...e,descriptionParts:e.descriptionParts.filter(L)}));return(0,u.jsxs)(`div`,{style:tt,children:[(0,u.jsx)(l.Typography,{component:`h2`,variant:`h3`,children:`歷程`}),p.length>0?(0,u.jsx)(l.Stepper,{currentStep:f,orientation:`vertical`,type:`dot`,children:p.map(e=>(0,u.jsx)(ot,{descriptionParts:e.descriptionParts,error:e.error,forcePending:e.forcePending,title:e.title},e.id))}):(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:`尚無歷程紀錄。`})]})}var lt={display:`grid`,gap:16},ut={display:`grid`,gap:2},dt={overflowWrap:`anywhere`,whiteSpace:`pre-wrap`};function ft({deliveries:e,onRetry:t,readNodeLabel:n}){let[r,i]=(0,c.useState)(null),[a,o]=(0,c.useState)(!1),[s,d]=(0,c.useState)(null),f=(0,c.useMemo)(()=>e.map(e=>({delivery:e,key:e.id})),[e]),m=(0,c.useMemo)(()=>[{key:`endpoint`,render:({delivery:e})=>(0,u.jsxs)(`div`,{style:ut,children:[(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:e.endpointLabel??e.endpointKey}),(0,u.jsxs)(l.Typography,{color:`text-neutral`,component:`span`,variant:`caption`,children:[e.endpointKey,`@`,e.endpointVersion,` ·`,` `,n(e.nodeId)]})]}),title:`外部系統`,width:240},{key:`status`,render:({delivery:e})=>(0,u.jsx)(pt,{status:e.status}),title:`狀態`,width:120},{key:`attemptCount`,render:({delivery:e})=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:e.attemptCount}),title:`嘗試次數`,width:100},{key:`lastError`,render:({delivery:e})=>e.lastErrorCode&&e.status!==`SENT`?(0,u.jsxs)(`div`,{style:ut,children:[(0,u.jsx)(l.Typography,{color:`text-error`,component:`span`,variant:`body`,children:e.lastErrorCode}),e.lastErrorDetail?(0,u.jsx)(l.Typography,{color:`text-neutral`,component:`span`,style:dt,variant:`caption`,children:e.lastErrorDetail}):null]}):(0,u.jsx)(l.Typography,{color:`text-neutral`,component:`span`,variant:`body`,children:`—`}),title:`最後錯誤`,width:280},{key:`time`,render:({delivery:e})=>(0,u.jsx)(l.Typography,{component:`span`,variant:`body`,children:mt(e)}),title:`時間`,width:220}],[n]),h=(0,c.useMemo)(()=>({render:({delivery:e})=>e.status===`FAILED`&&e.attemptCount>0?[{disabled:()=>a,icon:p.ResetIcon,iconType:`leading`,name:`重新傳送`,onClick:()=>{d(null),i(e)}}]:[],variant:`base-secondary`,width:140}),[a]);async function g(){if(r){o(!0),d(null);try{await t(r),i(null)}catch(e){i(null),d(e instanceof Error&&e.message?e.message:`重新傳送失敗,請稍後再試。`)}finally{o(!1)}}}return(0,u.jsxs)(`div`,{style:lt,children:[(0,u.jsx)(l.Typography,{component:`h2`,variant:`h3`,children:`外部系統通知`}),s?(0,u.jsx)(l.Typography,{color:`text-error`,variant:`body`,children:s}):null,f.length>0?(0,u.jsx)(l.Table,{actions:h,columns:m,dataSource:f,fullWidth:!0}):(0,u.jsx)(l.Typography,{color:`text-neutral`,variant:`body`,children:`此案件沒有外部系統通知。`}),(0,u.jsx)(l.Modal,{cancelText:`取消`,confirmText:`重新傳送`,loading:a,modalStatusType:`info`,modalType:`standard`,onCancel:()=>i(null),onClose:()=>i(null),onConfirm:()=>void g(),open:!!r,showModalFooter:!0,showModalHeader:!0,supportingText:`會以相同的投遞編號重新送出,接收端可據此避免重複處理。`,title:`重新傳送通知`,children:(0,u.jsxs)(l.Typography,{variant:`body`,children:[`確定要重新通知「`,r?.endpointLabel??r?.endpointKey??``,`」嗎?`]})})]})}function pt({status:e}){return e===`SENT`?(0,u.jsx)(l.Badge,{size:`sub`,text:`已送達`,variant:`dot-success`}):e===`FAILED`?(0,u.jsx)(l.Badge,{size:`sub`,text:`失敗`,variant:`dot-error`}):(0,u.jsx)(l.Badge,{size:`sub`,text:e===`PENDING`?`等待傳送`:`傳送中`,variant:`dot-info`})}function mt(e){return e.sentAt?`送達:${n.t(e.sentAt)}`:e.status===`PENDING`&&e.nextRetryAt?`下次重試:${n.t(e.nextRetryAt)}`:e.lastAttemptAt?`最後嘗試:${n.t(e.lastAttemptAt)}`:`建立:${n.t(e.createdAt)}`}var ht=3e3,gt=40,$=184,_t=96,vt={display:`grid`,gap:16},yt={background:`#f8fafc`,border:`1px solid #e2e8f0`,borderRadius:8,height:`min(64vh, 620px)`,minHeight:440,overflow:`hidden`,width:`min(80vw, 1040px)`},bt={background:`#ffffff`,border:`1px solid #cbd5e1`,borderRadius:8,boxShadow:`0 8px 18px rgba(15, 23, 42, 0.08)`,display:`grid`,gap:6,minHeight:82,padding:12,width:184},xt={borderRadius:999,fontSize:12,fontWeight:600,justifySelf:`start`,lineHeight:`18px`,padding:`0 8px`},St={color:`#64748b`,fontSize:12,overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},Ct={opacity:0},wt={display:`flex`,flexWrap:`wrap`,gap:8},Tt={alignItems:`center`,background:`#ffffff`,border:`1px solid #cbd5e1`,borderRadius:8,color:`#334155`,display:`inline-flex`,fontSize:12,fontWeight:600,gap:6,lineHeight:`20px`,padding:`4px 8px`},Et={display:`grid`,gap:16},Dt={workflowRuntime:Lt};function Ot({instanceId:e,showAttachments:a=!0,showForm:o=!0,showHistory:g=!0,showSignatures:_=!0,showTasks:v=!0,showWebhookDeliveries:y=!0}){let{member:ee}=t.n(),b=ee?.memberId??null,te=y&&i.t(ee),[ne,re]=(0,c.useState)([]),[x,ie]=(0,c.useState)(null),[S,C]=(0,c.useState)([]),[se,ce]=(0,c.useState)([]),[w,le]=(0,c.useState)([]),[T,D]=(0,c.useState)([]),[ue,de]=(0,c.useState)(null),[k,pe]=(0,c.useState)([]),[me,A]=(0,c.useState)([]),[j,ge]=(0,c.useState)([]),[ve,M]=(0,c.useState)(null),[ye,be]=(0,c.useState)(!0),[xe,N]=(0,c.useState)(!1),[P,F]=(0,c.useState)(!1),[I,L]=(0,c.useState)(``),[Se,R]=(0,c.useState)(!1),[Ce,we]=(0,c.useState)({}),[Te,z]=(0,c.useState)({}),[B,Ee]=(0,c.useState)({}),[V,H]=(0,c.useState)(null),[U,W]=(0,c.useState)(null),[De,Oe]=(0,c.useState)([]),ke=I.trim(),G=(0,c.useRef)(null),K=(0,c.useRef)(0),Ae=T.some(e=>e.status===`PENDING`||e.status===`DELIVERY_IN_PROGRESS`);(0,c.useEffect)(()=>{Z()},[b,e]),(0,c.useEffect)(()=>{if(!te||!Ae||K.current>=gt)return;let e=setTimeout(()=>{K.current+=1,Xe()},ht);return()=>clearTimeout(e)},[te,Ae,T]),(0,c.useEffect)(()=>{z(x?.formData??{}),Ee({})},[x]);let je=(0,c.useCallback)((e,t)=>{Ee(n=>{let r=n[e];return r?.hasValue===t.hasValue&&r.status===t.status?n:{...n,[e]:{hasValue:t.hasValue,status:t.status}}})},[]),q=(0,c.useMemo)(()=>k.find(e=>_e(e,b)&&(e.status===`PENDING`||e.status===`IN_PROGRESS`))??null,[b,k]),J=(0,c.useMemo)(()=>q&&x?x.workflowSnapshot.nodes.find(e=>e.id===q.nodeId)??null:null,[q,x]),Me=J?.type===`userTask`&&J.data.returnBehavior.allowReturn,Ne=J?.type===`userTask`&&J.data.allowReject!==!1,Y=J?.type===`userTask`&&J.data.allowTransfer!==!1,Fe=J?.type===`userTask`&&J.data.allowAddSigner,Re=!(!x||x.initiatorMemberId!==b||x.state!==`RUNNING`&&x.state!==`RETURNED`),ze=!!(x&&x.initiatorMemberId===b&&x.state===`RETURNED`),Ve=(0,c.useMemo)(()=>new Map(j.map(e=>[e.memberId,e])),[j]),Ue=(0,c.useMemo)(()=>Le(S),[S]),We=(0,c.useMemo)(()=>new Map(w.map(e=>[e.id,e])),[w]),X=(0,c.useMemo)(()=>x?Nt(x.workflowSnapshot):null,[x]),Ge=(0,c.useMemo)(()=>x&&X?Mt(X,k,me,x.state):[],[x,X,k,me]),Ke=(0,c.useMemo)(()=>X?Pt(X):[],[X]),qe=(0,c.useMemo)(()=>x?At(x.workflowSnapshot):[],[x]);async function Z(){be(!0),M(null);try{let t=await(0,d.readApprovalInstance)(e);re(t.activityLogs),ie(t.instance),pe(t.tasks),A(t.workflowTokens);let n=await(0,d.listAdhocDirectives)(t.instance.id),[r,i,a,o,s]=await Promise.all([Ie(t.tasks),Pe({...t,adhocDirectives:n}),(0,d.listAttachments)(t.instance.id),(0,d.readInstanceSignatures)(t.instance.id),Je(t.instance.id)]);C(r),ge(i),ce(a),le(o.signatures),de(o.verification),Oe(n),D(s)}catch(e){M(O(e))}finally{be(!1)}}async function Je(e){return te?(0,d.listWorkflowWebhookDeliveries)(e).catch(()=>[]):[]}async function Ye(e){await(0,d.retryWorkflowWebhookDelivery)(e.id),K.current=0,await Z()}async function Xe(){let t=await Je(e);t.some(e=>e.status===`PENDING`||e.status===`DELIVERY_IN_PROGRESS`)?D(t):await Z()}async function Qe(e,t){if(!b)throw Error(`尚未登入,無法上傳附件`);return{id:(await(0,d.uploadAttachment)({file:t,formFieldPath:`form.${e.fieldKey}`})).id}}async function $e(e){if(!b)return;let t=await(0,d.readAttachmentDownloadUrl)({id:e.id});window.open(t,`_blank`,`noopener,noreferrer`)}async function tt(e){if(!b)return;let t=await(0,d.readAttachmentPreviewUrl)({id:e.id});H(e),W(t)}async function nt(){if(b&&x&&Re){N(!0),M(null),we({});try{await(0,d.cancelApprovalInstance)({cancelledByMemberId:b,comment:ke||null,instanceId:x.id}),L(``),R(!1),await Z()}catch(e){M(O(e))}finally{N(!1)}}}async function rt(){if(!b||!x||!ze)return;N(!0),M(null),we({});let e=s.o(Object.values(B));if(e){M(e),N(!1);return}let t=x.formDefinitionSnapshot.schema?(0,m.buildFormRendererValues)(x.formDefinitionSnapshot.schema.fields,Te):Te;if(x.formDefinitionSnapshot.schema&&x.formDefinitionSnapshot.uiSchema){let e=(0,m.validateFormRendererValues)({schema:x.formDefinitionSnapshot.schema,uiSchema:x.formDefinitionSnapshot.uiSchema,values:t});if(!e.valid){we(e.errors),M(`請先補齊必填欄位。`),e.firstInvalidFieldKey&&(0,m.focusFormRendererField)(e.firstInvalidFieldKey),N(!1);return}}try{await(0,d.resubmitApprovalInstance)({formData:t,initiatorMemberId:b,instanceId:x.id,title:x.title}),await Z()}catch(e){M(O(e))}finally{N(!1)}}let it=G.current?.deciding??!1,Q=xe||it;return(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l.PageHeader,{children:(0,u.jsxs)(f.default,{description:x?[fe(x.state),n.t(x.startedAt),oe(x,Ve)].filter(E).join(` · `):`載入案件內容。`,title:x?.title??`簽核案件`,children:[x?(0,u.jsx)(l.Button,{"aria-label":`查看流程圖`,icon:p.ShareIcon,iconType:`icon-only`,onClick:()=>F(!0),title:`查看流程圖`,variant:`base-secondary`,children:`流程圖`}):null,Re?(0,u.jsx)(l.Button,{disabled:Q,icon:p.DangerousOutlineIcon,iconType:`leading`,onClick:()=>R(!0),variant:`destructive-secondary`,children:`取消案件`}):null,q?(0,u.jsxs)(u.Fragment,{children:[Fe?(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(l.Button,{disabled:Q,icon:p.PlusIcon,iconType:`leading`,onClick:()=>G.current?.openAdhocModal(`COUNTERSIGN`),variant:`base-secondary`,children:`會簽`},`adhoc-countersign`),(0,u.jsx)(l.Button,{disabled:Q,icon:p.PlusIcon,iconType:`leading`,onClick:()=>G.current?.openAdhocModal(`PRE_APPROVAL`),variant:`base-secondary`,children:`加簽`},`adhoc-pre-approval`)]}):null,(0,u.jsx)(l.Button,{disabled:Q,icon:p.NotificationUnreadIcon,iconType:`leading`,onClick:()=>G.current?.openAdhocModal(`STAGE_NOTIFY`),variant:`base-secondary`,children:`通知設定`},`adhoc-notify`),Me?(0,u.jsx)(l.Button,{disabled:Q,icon:p.RefreshCcwIcon,iconType:`leading`,onClick:()=>G.current?.openReturnModal(),variant:`base-secondary`,children:`退回`},`task-return`):null,Y?(0,u.jsx)(l.Button,{disabled:Q,icon:p.UserIcon,iconType:`leading`,onClick:()=>G.current?.openTransferModal(),variant:`base-secondary`,children:`轉派`},`task-transfer`):null,Ne?(0,u.jsx)(l.Button,{disabled:Q,icon:p.DangerousOutlineIcon,iconType:`leading`,onClick:()=>G.current?.openRejectModal(),variant:`destructive-secondary`,children:`拒絕`},`task-reject`):null,(0,u.jsx)(l.Button,{disabled:Q,icon:p.CheckedIcon,iconType:`leading`,onClick:()=>G.current?.handleApprove(),variant:`base-primary`,children:`同意`},`task-approve`)]}):null]})}),(0,u.jsxs)(l.SectionGroup,{children:[o?(0,u.jsx)(l.Section,{children:(0,u.jsx)(Be,{canResubmitInstance:ze,deciding:xe,error:ve,instance:x,loading:ye,onDataSourceStateChange:je,onResubmitFormChange:e=>{z(e),we({})},onResubmitInstance:()=>void rt(),onUploadAttachment:Qe,resubmitFormData:Te,resubmitFormErrors:Ce})}):null,a?(0,u.jsx)(l.Section,{children:(0,u.jsx)(He,{attachments:se,onDownload:e=>{$e(e)},onPreview:e=>{tt(e)}})}):null,v?(0,u.jsx)(l.Section,{children:(0,u.jsx)(Ze,{adhocDirectives:De,currentMemberId:b,instance:x,memberProfilesById:Ve,onChanged:Z,ref:G,tasks:k})}):null,_?(0,u.jsx)(l.Section,{children:(0,u.jsx)(et,{signatureVerification:ue,signatures:w})}):null,te&&T.length>0?(0,u.jsx)(l.Section,{children:(0,u.jsx)(ft,{deliveries:T,onRetry:Ye,readNodeLabel:e=>he(e,x?.workflowSnapshot??null)})}):null,g?(0,u.jsx)(l.Section,{children:(0,u.jsx)(ct,{activityLogs:ne,instanceState:x?.state??`RUNNING`,memberProfilesById:Ve,signatureVerification:ue,signaturesById:We,taskDecisionsByTaskId:Ue,tasks:k,workflowSnapshot:x?.workflowSnapshot??null,workflowTokens:me})}):null]}),x?(0,u.jsx)(l.Modal,{modalType:`standard`,onClose:()=>F(!1),open:P,showModalHeader:!0,size:`wide`,supportingText:`${fe(x.state)} · ${n.t(x.startedAt)}`,title:`流程圖`,children:(0,u.jsxs)(`div`,{style:vt,children:[(0,u.jsx)(`div`,{style:yt,children:(0,u.jsxs)(h.ReactFlow,{edges:Ke,fitView:!0,fitViewOptions:{padding:.18},maxZoom:1.2,minZoom:.2,nodes:Ge,nodesDraggable:!1,nodesFocusable:!1,nodeTypes:Dt,panOnDrag:!0,proOptions:{hideAttribution:!0},children:[(0,u.jsx)(h.Background,{}),(0,u.jsx)(h.Controls,{showInteractive:!1})]})}),qe.length>0?(0,u.jsx)(`div`,{style:wt,children:qe.map(e=>(0,u.jsx)(`span`,{style:Tt,children:e},e))}):null]})}):null,(0,u.jsx)(l.Modal,{modalType:`standard`,onClose:()=>{H(null),W(null)},open:!!(V&&U),showModalHeader:!0,size:`wide`,supportingText:V?.filename??void 0,title:`PDF 預覽`,children:U?(0,u.jsx)(ae,{filename:V?.filename??`PDF 預覽`,fileUrl:U,onDownload:V?()=>void $e(V):void 0}):null}),(0,u.jsx)(l.Modal,{cancelText:`保留案件`,confirmButtonProps:{variant:`destructive-primary`},confirmText:`確認取消`,loading:xe,modalStatusType:`error`,modalType:`standard`,onCancel:()=>R(!1),onClose:()=>R(!1),onConfirm:()=>void nt(),open:Se,showModalFooter:!0,showModalHeader:!0,supportingText:`取消後會關閉目前待簽任務與候選簽核人。`,title:`取消案件`,children:(0,u.jsxs)(`div`,{style:Et,children:[(0,u.jsxs)(l.Typography,{variant:`body`,children:[`確定要取消「`,x?.title??``,`」嗎?`]}),(0,u.jsx)(r.t,{label:`取消原因`,name:`cancelComment`,children:(0,u.jsx)(l.Textarea,{onChange:e=>L(e.target.value),placeholder:`可填寫取消原因`,resize:`vertical`,rows:3,value:I})})]})})]})}function kt(e){return e.data.label?e.data.label:e.data.isDefault?`其他情況`:e.data.condition??``}function At(e){return e.edges.map(kt).filter(e=>e.trim().length>0)}function jt(e){return e===`startEvent`?`開始`:e===`endEvent`?`完成`:e===`userTask`?`簽核節點`:e===`serviceTask`?`知會節點`:e===`exclusiveGateway`?`條件分流`:`平行處理`}function Mt(e,t,n,r){return e.nodes.map(e=>{let i=Y(e,t,n,r);return{data:{kindLabel:jt(e.type),label:e.data.label,secondaryLabel:i.secondaryLabel,statusLabel:i.statusLabel,tone:i.tone},id:e.id,position:e.position,sourcePosition:h.Position.Right,targetPosition:h.Position.Left,type:`workflowRuntime`}})}function Nt(e){let t=new g.graphlib.Graph;return t.setDefaultEdgeLabel(()=>({})),t.setGraph({nodesep:56,rankdir:`LR`,ranksep:120}),e.nodes.forEach(e=>{t.setNode(e.id,{height:_t,width:$})}),e.edges.forEach(e=>{t.setEdge(e.source,e.target)}),g.layout(t),{...e,nodes:e.nodes.map(e=>{let n=t.node(e.id);return n?{...e,position:{x:n.x-$/2,y:n.y-_t/2}}:e})}}function Pt(e){return e.edges.map(e=>{let t=kt(e);return{animated:!1,id:e.id,label:t,labelBgBorderRadius:6,labelBgPadding:[8,4],labelBgStyle:{fill:e.data.isDefault?`#f8fafc`:`#eff6ff`,stroke:e.data.isDefault?`#64748b`:`#2563eb`,strokeWidth:1},labelShowBg:!!t,labelStyle:{fill:e.data.isDefault?`#475569`:`#2563eb`,fontSize:12,fontWeight:600},source:e.source,style:{stroke:`#475569`,strokeWidth:1.5},target:e.target,type:e.type??`smoothstep`}})}function Ft(e){return e===`current`?{...bt,border:`1px solid var(--mzn-color-primary, #0057ff)`,boxShadow:`0 0 0 3px rgba(0, 87, 255, 0.14)`}:e===`completed`?{...bt,border:`1px solid #16a34a`}:e===`cancelled`?{...bt,border:`1px solid #dc2626`,opacity:.72}:e===`waiting`?{...bt,border:`1px dashed #64748b`}:bt}function It(e){let t=xt;return e===`current`?{...t,background:`#eff6ff`,color:`#2563eb`}:e===`completed`?{...t,background:`#f0fdf4`,color:`#15803d`}:e===`cancelled`?{...t,background:`#fef2f2`,color:`#dc2626`}:e===`waiting`?{...t,background:`#f8fafc`,color:`#475569`}:{...t,background:`#f1f5f9`,color:`#64748b`}}function Lt({data:e}){return(0,u.jsxs)(`div`,{style:Ft(e.tone),children:[(0,u.jsx)(h.Handle,{isConnectable:!1,position:h.Position.Left,style:Ct,type:`target`}),(0,u.jsx)(l.Typography,{component:`span`,ellipsis:!0,title:e.label,variant:`label-primary`,children:e.label}),(0,u.jsx)(`span`,{style:It(e.tone),children:e.statusLabel}),(0,u.jsx)(`span`,{title:e.secondaryLabel,style:St,children:e.secondaryLabel||e.kindLabel}),(0,u.jsx)(h.Handle,{isConnectable:!1,position:h.Position.Right,style:Ct,type:`source`})]})}Object.defineProperty(exports,"a",{enumerable:!0,get:function(){return Ze}}),Object.defineProperty(exports,"i",{enumerable:!0,get:function(){return et}}),Object.defineProperty(exports,"n",{enumerable:!0,get:function(){return ft}}),Object.defineProperty(exports,"o",{enumerable:!0,get:function(){return He}}),Object.defineProperty(exports,"r",{enumerable:!0,get:function(){return ct}}),Object.defineProperty(exports,"s",{enumerable:!0,get:function(){return Be}}),Object.defineProperty(exports,"t",{enumerable:!0,get:function(){return Ot}});
2
+ //# sourceMappingURL=detail-DKobK4Cg.cjs.map