openxiangda 2.34.3 → 2.44.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 (242) hide show
  1. package/dist/browser/FilePreviewPage.d.ts.map +1 -1
  2. package/dist/browser/FilePreviewPage.js +4 -2
  3. package/dist/browser/FilePreviewPage.js.map +1 -1
  4. package/dist/browser/ManagedCommand.d.ts +1 -0
  5. package/dist/browser/ManagedCommand.d.ts.map +1 -1
  6. package/dist/browser/ManagedCommand.js +1 -1
  7. package/dist/browser/ManagedCommand.js.map +1 -1
  8. package/dist/browser/Shell.d.ts.map +1 -1
  9. package/dist/browser/Shell.js +1 -1
  10. package/dist/browser/Shell.js.map +1 -1
  11. package/dist/browser/application.d.ts.map +1 -1
  12. package/dist/browser/application.js +5 -4
  13. package/dist/browser/application.js.map +1 -1
  14. package/dist/browser/components/administration/RoleMembershipManager.d.ts +7 -0
  15. package/dist/browser/components/administration/RoleMembershipManager.d.ts.map +1 -0
  16. package/dist/browser/components/administration/RoleMembershipManager.js +724 -0
  17. package/dist/browser/components/administration/RoleMembershipManager.js.map +1 -0
  18. package/dist/browser/components/administration/membership-batch-model.d.ts +17 -0
  19. package/dist/browser/components/administration/membership-batch-model.d.ts.map +1 -0
  20. package/dist/browser/components/administration/membership-batch-model.js +117 -0
  21. package/dist/browser/components/administration/membership-batch-model.js.map +1 -0
  22. package/dist/browser/components/platform-fields/AttachmentFileList.d.ts.map +1 -1
  23. package/dist/browser/components/platform-fields/AttachmentFileList.js +2 -1
  24. package/dist/browser/components/platform-fields/AttachmentFileList.js.map +1 -1
  25. package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts +3 -1
  26. package/dist/browser/components/platform-fields/MobileManagedFileField.d.ts.map +1 -1
  27. package/dist/browser/components/platform-fields/MobileManagedFileField.js +9 -5
  28. package/dist/browser/components/platform-fields/MobileManagedFileField.js.map +1 -1
  29. package/dist/browser/components/resource/SurfaceFields.d.ts +3 -2
  30. package/dist/browser/components/resource/SurfaceFields.d.ts.map +1 -1
  31. package/dist/browser/components/resource/SurfaceFields.js +9 -9
  32. package/dist/browser/components/resource/SurfaceFields.js.map +1 -1
  33. package/dist/browser/components/resource/useResourceFormDrafts.d.ts.map +1 -1
  34. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts +14 -3
  35. package/dist/browser/components/workflow/StandardWorkflowPages.d.ts.map +1 -1
  36. package/dist/browser/components/workflow/StandardWorkflowPages.js +283 -75
  37. package/dist/browser/components/workflow/StandardWorkflowPages.js.map +1 -1
  38. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.d.ts +8 -0
  39. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.d.ts.map +1 -0
  40. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js +174 -0
  41. package/dist/browser/components/workflow/WorkflowAssignmentRoutingEditor.js.map +1 -0
  42. package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.d.ts +3 -0
  43. package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.d.ts.map +1 -0
  44. package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.js +75 -0
  45. package/dist/browser/components/workflow/WorkflowAssignmentRoutingManager.js.map +1 -0
  46. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.d.ts +14 -0
  47. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.d.ts.map +1 -0
  48. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js +117 -0
  49. package/dist/browser/components/workflow/WorkflowBusinessStepRecoveryPanel.js.map +1 -0
  50. package/dist/browser/components/workflow/WorkflowDelegationManager.d.ts +14 -0
  51. package/dist/browser/components/workflow/WorkflowDelegationManager.d.ts.map +1 -0
  52. package/dist/browser/components/workflow/WorkflowDelegationManager.js +204 -0
  53. package/dist/browser/components/workflow/WorkflowDelegationManager.js.map +1 -0
  54. package/dist/browser/components/workflow/WorkflowDiagram.d.ts +16 -0
  55. package/dist/browser/components/workflow/WorkflowDiagram.d.ts.map +1 -0
  56. package/dist/browser/components/workflow/WorkflowDiagram.js +110 -0
  57. package/dist/browser/components/workflow/WorkflowDiagram.js.map +1 -0
  58. package/dist/browser/components/workflow/WorkflowFlowCanvas.d.ts +23 -0
  59. package/dist/browser/components/workflow/WorkflowFlowCanvas.d.ts.map +1 -0
  60. package/dist/browser/components/workflow/WorkflowFlowCanvas.js +78 -0
  61. package/dist/browser/components/workflow/WorkflowFlowCanvas.js.map +1 -0
  62. package/dist/browser/components/workflow/WorkflowNodeCard.d.ts +15 -0
  63. package/dist/browser/components/workflow/WorkflowNodeCard.d.ts.map +1 -0
  64. package/dist/browser/components/workflow/WorkflowNodeCard.js +16 -0
  65. package/dist/browser/components/workflow/WorkflowNodeCard.js.map +1 -0
  66. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.d.ts +13 -0
  67. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.d.ts.map +1 -0
  68. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js +151 -0
  69. package/dist/browser/components/workflow/WorkflowNodeConfigurationEditor.js.map +1 -0
  70. package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.d.ts +10 -0
  71. package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.d.ts.map +1 -0
  72. package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.js +59 -0
  73. package/dist/browser/components/workflow/WorkflowTaskCommandReceipt.js.map +1 -0
  74. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.d.ts +17 -0
  75. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.d.ts.map +1 -0
  76. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js +136 -0
  77. package/dist/browser/components/workflow/WorkflowTaskDraftPanel.js.map +1 -0
  78. package/dist/browser/components/workflow/WorkflowTaskFiles.d.ts +20 -0
  79. package/dist/browser/components/workflow/WorkflowTaskFiles.d.ts.map +1 -0
  80. package/dist/browser/components/workflow/WorkflowTaskFiles.js +124 -0
  81. package/dist/browser/components/workflow/WorkflowTaskFiles.js.map +1 -0
  82. package/dist/browser/components/workflow/WorkflowTaskForm.d.ts +49 -0
  83. package/dist/browser/components/workflow/WorkflowTaskForm.d.ts.map +1 -0
  84. package/dist/browser/components/workflow/WorkflowTaskForm.js +141 -0
  85. package/dist/browser/components/workflow/WorkflowTaskForm.js.map +1 -0
  86. package/dist/browser/components/workflow/workflow-flow-layout.d.ts +28 -0
  87. package/dist/browser/components/workflow/workflow-flow-layout.d.ts.map +1 -0
  88. package/dist/browser/components/workflow/workflow-flow-layout.js +54 -0
  89. package/dist/browser/components/workflow/workflow-flow-layout.js.map +1 -0
  90. package/dist/browser/components/workflow/workflow-routing-draft.d.ts +4 -0
  91. package/dist/browser/components/workflow/workflow-routing-draft.d.ts.map +1 -0
  92. package/dist/browser/components/workflow/workflow-routing-draft.js +9 -0
  93. package/dist/browser/components/workflow/workflow-routing-draft.js.map +1 -0
  94. package/dist/browser/durable-command.d.ts +9 -0
  95. package/dist/browser/durable-command.d.ts.map +1 -1
  96. package/dist/browser/durable-command.js +67 -13
  97. package/dist/browser/durable-command.js.map +1 -1
  98. package/dist/browser/navigation-guard.d.ts +3 -1
  99. package/dist/browser/navigation-guard.d.ts.map +1 -1
  100. package/dist/browser/navigation-guard.js +7 -3
  101. package/dist/browser/navigation-guard.js.map +1 -1
  102. package/dist/browser/platform-client.d.ts +76 -3
  103. package/dist/browser/platform-client.d.ts.map +1 -1
  104. package/dist/browser/platform-client.js +292 -47
  105. package/dist/browser/platform-client.js.map +1 -1
  106. package/dist/browser/record-detail.css +10 -0
  107. package/dist/browser/runtime-authorization-recovery.d.ts +7 -0
  108. package/dist/browser/runtime-authorization-recovery.d.ts.map +1 -0
  109. package/dist/browser/runtime-authorization-recovery.js +119 -0
  110. package/dist/browser/runtime-authorization-recovery.js.map +1 -0
  111. package/dist/browser/runtime.d.ts +2 -0
  112. package/dist/browser/runtime.d.ts.map +1 -1
  113. package/dist/browser/runtime.js +39 -13
  114. package/dist/browser/runtime.js.map +1 -1
  115. package/dist/browser/styles.css +155 -0
  116. package/dist/browser/workflow-task-command-recovery.d.ts +17 -0
  117. package/dist/browser/workflow-task-command-recovery.d.ts.map +1 -0
  118. package/dist/browser/workflow-task-command-recovery.js +50 -0
  119. package/dist/browser/workflow-task-command-recovery.js.map +1 -0
  120. package/dist/browser/workflow-task-file-upload.d.ts +18 -0
  121. package/dist/browser/workflow-task-file-upload.d.ts.map +1 -0
  122. package/dist/browser/workflow-task-file-upload.js +35 -0
  123. package/dist/browser/workflow-task-file-upload.js.map +1 -0
  124. package/dist/config.d.ts +1 -1
  125. package/dist/config.d.ts.map +1 -1
  126. package/dist/core.d.ts +9 -1
  127. package/dist/core.d.ts.map +1 -1
  128. package/dist/core.js +3 -0
  129. package/dist/core.js.map +1 -1
  130. package/dist/nest.d.ts +2 -2
  131. package/dist/nest.d.ts.map +1 -1
  132. package/dist/nest.js.map +1 -1
  133. package/dist/react.d.ts +10 -2
  134. package/dist/react.d.ts.map +1 -1
  135. package/dist/react.js +9 -1
  136. package/dist/react.js.map +1 -1
  137. package/documentation/administration.md +190 -0
  138. package/documentation/frontend.md +2 -0
  139. package/documentation/getting-started.md +7 -7
  140. package/documentation/managed-concurrency-frontend.md +9 -4
  141. package/documentation/managed-concurrency.md +10 -0
  142. package/documentation/manifest.json +7 -7
  143. package/documentation/workflow-events.md +237 -3
  144. package/package.json +26 -23
  145. package/releases/2.43.0.json +38 -0
  146. package/releases/2.44.0.json +36 -0
  147. package/skills/manifest.json +1 -1
  148. package/skills/openxiangda-v2/SKILL.md +4 -4
  149. package/skills/openxiangda-v2/references/administration.md +190 -0
  150. package/skills/openxiangda-v2/references/frontend.md +2 -0
  151. package/skills/openxiangda-v2/references/getting-started.md +7 -7
  152. package/skills/openxiangda-v2/references/managed-concurrency-frontend.md +9 -4
  153. package/skills/openxiangda-v2/references/managed-concurrency.md +10 -0
  154. package/skills/openxiangda-v2/references/workflow-events.md +237 -3
  155. package/releases/2.0.0.json +0 -50
  156. package/releases/2.0.1.json +0 -39
  157. package/releases/2.1.0.json +0 -44
  158. package/releases/2.1.1.json +0 -48
  159. package/releases/2.10.0.json +0 -42
  160. package/releases/2.11.0.json +0 -41
  161. package/releases/2.12.0.json +0 -38
  162. package/releases/2.13.0.json +0 -41
  163. package/releases/2.13.1.json +0 -33
  164. package/releases/2.13.2.json +0 -31
  165. package/releases/2.14.0.json +0 -41
  166. package/releases/2.15.0.json +0 -40
  167. package/releases/2.16.0.json +0 -41
  168. package/releases/2.17.0.json +0 -39
  169. package/releases/2.17.1.json +0 -34
  170. package/releases/2.18.0.json +0 -37
  171. package/releases/2.18.1.json +0 -31
  172. package/releases/2.18.10.json +0 -29
  173. package/releases/2.18.2.json +0 -30
  174. package/releases/2.18.3.json +0 -30
  175. package/releases/2.18.9.json +0 -37
  176. package/releases/2.19.0.json +0 -38
  177. package/releases/2.2.0.json +0 -48
  178. package/releases/2.2.1.json +0 -35
  179. package/releases/2.2.2.json +0 -34
  180. package/releases/2.20.0.json +0 -36
  181. package/releases/2.20.1.json +0 -30
  182. package/releases/2.20.4.json +0 -30
  183. package/releases/2.21.0.json +0 -35
  184. package/releases/2.21.1.json +0 -36
  185. package/releases/2.21.2.json +0 -34
  186. package/releases/2.21.3.json +0 -31
  187. package/releases/2.21.4.json +0 -31
  188. package/releases/2.22.0.json +0 -35
  189. package/releases/2.22.1.json +0 -32
  190. package/releases/2.22.2.json +0 -35
  191. package/releases/2.22.3.json +0 -32
  192. package/releases/2.22.4.json +0 -33
  193. package/releases/2.22.5.json +0 -31
  194. package/releases/2.22.6.json +0 -29
  195. package/releases/2.22.7.json +0 -29
  196. package/releases/2.23.0.json +0 -34
  197. package/releases/2.24.0.json +0 -33
  198. package/releases/2.24.1.json +0 -33
  199. package/releases/2.24.2.json +0 -31
  200. package/releases/2.24.3.json +0 -33
  201. package/releases/2.25.0.json +0 -31
  202. package/releases/2.25.1.json +0 -33
  203. package/releases/2.25.2.json +0 -32
  204. package/releases/2.25.3.json +0 -32
  205. package/releases/2.26.0.json +0 -41
  206. package/releases/2.27.0.json +0 -38
  207. package/releases/2.28.0.json +0 -37
  208. package/releases/2.28.1.json +0 -34
  209. package/releases/2.29.0.json +0 -37
  210. package/releases/2.29.1.json +0 -34
  211. package/releases/2.29.2.json +0 -32
  212. package/releases/2.3.0.json +0 -37
  213. package/releases/2.30.0.json +0 -34
  214. package/releases/2.31.0.json +0 -39
  215. package/releases/2.31.1.json +0 -38
  216. package/releases/2.31.2.json +0 -34
  217. package/releases/2.31.3.json +0 -32
  218. package/releases/2.31.4.json +0 -33
  219. package/releases/2.31.5.json +0 -33
  220. package/releases/2.31.6.json +0 -29
  221. package/releases/2.31.7.json +0 -29
  222. package/releases/2.31.8.json +0 -33
  223. package/releases/2.31.9.json +0 -33
  224. package/releases/2.32.0.json +0 -38
  225. package/releases/2.33.0.json +0 -33
  226. package/releases/2.34.0.json +0 -38
  227. package/releases/2.34.1.json +0 -34
  228. package/releases/2.34.2.json +0 -36
  229. package/releases/2.34.3.json +0 -35
  230. package/releases/2.4.0.json +0 -37
  231. package/releases/2.4.1.json +0 -35
  232. package/releases/2.5.0.json +0 -37
  233. package/releases/2.6.0.json +0 -37
  234. package/releases/2.7.0.json +0 -37
  235. package/releases/2.7.1.json +0 -31
  236. package/releases/2.8.0.json +0 -32
  237. package/releases/2.8.1.json +0 -30
  238. package/releases/2.9.0.json +0 -33
  239. package/releases/2.9.1.json +0 -31
  240. package/releases/2.9.2.json +0 -33
  241. package/releases/2.9.3.json +0 -31
  242. package/releases/2.9.4.json +0 -37
@@ -0,0 +1,204 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { Alert, App, Button, DatePicker, Descriptions, Drawer, Empty, Form, Input, Select, Space, Table, Tag } from 'antd';
4
+ import dayjs from 'dayjs';
5
+ import { executeWorkflowDelegationMutation, listWorkflowDelegationCandidates, listWorkflowDelegations, loadWorkflowDelegation, loadWorkflowDelegationCatalog, loadWorkflowDelegationMutationReceipt, OpenXiangdaPlatformRequestError, previewWorkflowDelegationMutation } from '../../platform-client';
6
+ const stateNames = { active: '生效中', scheduled: '尚未开始', expired: '已过期', revoked: '已撤销', ineligible: '资格失效' };
7
+ const issueNames = { DELEGATOR_ACCOUNT_INELIGIBLE: '原审批人账号已失效', DELEGATE_ACCOUNT_INELIGIBLE: '代理人账号已失效',
8
+ DELEGATOR_MEMBERSHIP_CHANGED: '原审批人的职责或有效期已变更', DELEGATE_MEMBERSHIP_CHANGED: '代理人的职责或有效期已变更', SCOPE_INCOMPATIBLE: '审批范围不兼容', CHAIN_CONFLICT: '存在链式或环形代理' };
9
+ const errorText = (error) => error instanceof Error ? error.message : '读取失败,请重试';
10
+ const time = (value) => value ? dayjs(value).format('YYYY-MM-DD HH:mm:ss') : '—';
11
+ function useRead(key, read) {
12
+ const reader = useRef(read);
13
+ reader.current = read;
14
+ const [attempt, setAttempt] = useState(0), [state, setState] = useState({ attempt: 0, error: '', loading: true });
15
+ useEffect(() => {
16
+ let active = true;
17
+ setState({ key, attempt, error: '', loading: Boolean(key) });
18
+ if (key)
19
+ void reader.current().then(data => { if (active)
20
+ setState({ key, attempt, data, error: '', loading: false }); })
21
+ .catch(error => { if (active)
22
+ setState({ key, attempt, error: errorText(error), loading: false }); });
23
+ return () => { active = false; };
24
+ }, [key, attempt]);
25
+ const current = state.key === key && state.attempt === attempt ? state : { data: undefined, error: '', loading: Boolean(key) };
26
+ return { ...current, reload: () => setAttempt(value => value + 1) };
27
+ }
28
+ /** Personal and administrator maintenance use the same current-user contract. */
29
+ export function WorkflowDelegationManager({ initialAll = false, refreshKey = 0, onDraftStateChange }) {
30
+ const catalog = useRead(`delegation-catalog:${refreshKey}`, loadWorkflowDelegationCatalog);
31
+ const [all, setAll] = useState(initialAll), [page, setPage] = useState(1), [keyword, setKeyword] = useState(''), [search, setSearch] = useState('');
32
+ const [effectiveState, setEffectiveState] = useState(), [workflowCode, setWorkflowCode] = useState(), [edit, setEdit] = useState();
33
+ const [refresh, setRefresh] = useState(0);
34
+ const query = { all: all && Boolean(catalog.data?.canReadAll), limit: 20, offset: (page - 1) * 20, keyword: search,
35
+ ...(effectiveState ? { effectiveState } : {}), ...(workflowCode ? { workflowCode } : {}) };
36
+ const rows = useRead(catalog.data ? JSON.stringify([catalog.data.actorUserId, refreshKey, refresh, query]) : undefined, () => listWorkflowDelegations(query));
37
+ const blocked = Boolean(edit);
38
+ const changed = () => { setRefresh(value => value + 1); catalog.reload(); };
39
+ if (catalog.error && !edit)
40
+ return _jsx(Alert, { type: "error", showIcon: true, title: "\u65E0\u6CD5\u8BFB\u53D6\u4EE3\u7406\u7EF4\u62A4\u6743\u9650", description: catalog.error, action: _jsx(Button, { onClick: catalog.reload, children: "\u91CD\u8BD5" }) });
41
+ return _jsxs("div", { className: "oxa-workflow-delegation-manager", children: [_jsxs("div", { className: "oxa-delegation-toolbar", children: [catalog.data?.canReadAll && _jsx(Select, { "aria-label": "\u4EE3\u7406\u53EF\u89C1\u8303\u56F4", value: all ? 'all' : 'mine', disabled: blocked, options: [{ value: 'mine', label: '与我有关' }, { value: 'all', label: '全应用代理' }], onChange: value => { setAll(value === 'all'); setPage(1); } }), _jsx(Input.Search, { "aria-label": "\u641C\u7D22\u4EE3\u7406\u4EBA\u5458\u6216\u539F\u56E0", placeholder: "\u641C\u7D22\u4EBA\u5458\u59D3\u540D\u6216\u539F\u56E0", value: keyword, allowClear: true, disabled: blocked, maxLength: 80, onChange: event => setKeyword(event.target.value), onSearch: value => { setSearch(value.trim()); setPage(1); } }), _jsx(Select, { "aria-label": "\u4EE3\u7406\u72B6\u6001", value: effectiveState, placeholder: "\u5168\u90E8\u72B6\u6001", allowClear: true, disabled: blocked, options: Object.entries(stateNames).map(([value, label]) => ({ value, label })), onChange: value => { setEffectiveState(value); setPage(1); } }), _jsx(Select, { "aria-label": "\u4EE3\u7406\u9650\u5B9A\u6D41\u7A0B", value: workflowCode, placeholder: "\u5168\u90E8\u6D41\u7A0B", allowClear: true, disabled: blocked, showSearch: true, optionFilterProp: "label", options: catalog.data?.workflows.map(row => ({ value: row.code, label: row.title })), onChange: value => { setWorkflowCode(value); setPage(1); } }), _jsx(Button, { disabled: blocked, onClick: changed, children: "\u5237\u65B0" }), catalog.data?.canCreate && _jsx(Button, { type: "primary", disabled: blocked, onClick: () => setEdit({ operation: 'create', catalog: catalog.data }), children: "\u8BBE\u7F6E\u6211\u7684\u4EE3\u7406" })] }), _jsx("p", { className: "oxa-workflow-config-help", children: "\u5728\u6307\u5B9A\u804C\u8D23\u3001\u6D41\u7A0B\u548C\u65F6\u95F4\u5185\uFF0C\u7531\u7B26\u5408\u8D44\u683C\u7684\u4EBA\u4EE3\u529E\u5BA1\u6279\u3002\u521B\u5EFA\u6216\u64A4\u9500\u89C4\u5219\u53EA\u5F71\u54CD\u540E\u7EED\u5206\u6D3E\uFF0C\u5DF2\u6709\u5F85\u529E\u4FDD\u7559\u539F\u804C\u8D23\u5FEB\u7167\u3002" }), catalog.data && !catalog.data.canCreate && !catalog.data.canReadAll && _jsx(Alert, { showIcon: true, type: "info", title: "\u5F53\u524D\u6CA1\u6709\u53EF\u4EE5\u59D4\u6258\u7684\u5BA1\u6279\u804C\u8D23", description: "\u53EF\u4EE5\u67E5\u770B\u4E0E\u4F60\u6709\u5173\u7684\u4EE3\u7406\u3002\u804C\u8D23\u6210\u5458\u7531\u7BA1\u7406\u5458\u7EF4\u62A4\u3002" }), catalog.data?.canReadAll && _jsx("p", { className: "oxa-workflow-config-help", children: "\u7BA1\u7406\u5458\u53EF\u4EE5\u67E5\u770B\u53CA\u64A4\u9500\u4EE3\u7406\uFF1B\u521B\u5EFA\u9700\u8981\u7531\u539F\u5BA1\u6279\u4EBA\u672C\u4EBA\u64CD\u4F5C\u3002" }), rows.error && _jsx(Alert, { showIcon: true, type: "error", title: "\u4EE3\u7406\u8BFB\u53D6\u5931\u8D25", description: rows.error, action: _jsx(Button, { disabled: blocked, onClick: rows.reload, children: "\u91CD\u8BD5" }) }), _jsx(Table, { rowKey: "id", size: "small", loading: catalog.loading || rows.loading, dataSource: rows.data?.items, scroll: { x: 900 }, locale: { emptyText: _jsx(Empty, { image: Empty.PRESENTED_IMAGE_SIMPLE, description: rows.error ? '读取失败,请重试' : '没有符合筛选条件的代理' }) }, pagination: { current: page, pageSize: 20, total: rows.data?.total, showSizeChanger: false, disabled: blocked, onChange: setPage }, columns: [
42
+ { title: '审批职责与人员', width: 240, render: (_, row) => _jsxs(_Fragment, { children: [_jsxs("b", { children: [row.delegatorDisplayName, " \u2192 ", row.delegateDisplayName] }), _jsx("div", { className: "oxa-workflow-config-help", children: row.roleName })] }) },
43
+ { title: '流程范围', width: 160, render: (_, row) => row.workflowCode ? catalog.data?.workflows.find(flow => flow.code === row.workflowCode)?.title || row.workflowCode : '全部适用流程' },
44
+ { title: '有效时间', width: 190, render: (_, row) => _jsxs(_Fragment, { children: [_jsx("div", { children: time(row.validFrom) }), _jsxs("div", { className: "oxa-workflow-config-help", children: ["\u81F3 ", time(row.validTo)] })] }) },
45
+ { title: '当前状态', width: 120, render: (_, row) => _jsx(Tag, { color: row.effectiveState === 'active' ? 'green' : row.effectiveState === 'ineligible' ? 'error' : undefined, children: stateNames[row.effectiveState] }) },
46
+ { title: '操作', width: 110, render: (_, row) => row.canRevoke ? _jsx(Button, { type: "link", danger: true, disabled: blocked, onClick: () => setEdit({ operation: 'revoke', row, catalog: catalog.data }), children: "\u64A4\u9500\u89C4\u5219" }) : '—' },
47
+ ], expandable: { expandedRowRender: row => _jsx(DelegationDetails, { row: row }) } }), edit && _jsx(DelegationEditor, { edit: edit, catalog: edit.catalog, onClose: () => setEdit(undefined), onChanged: changed, onDraftStateChange: onDraftStateChange }, `${edit.catalog.actorUserId}:${edit.operation}:${edit.operation === 'revoke' ? edit.row.id : 'new'}`)] });
48
+ }
49
+ function DelegationDetails({ row }) {
50
+ return _jsx(Descriptions, { size: "small", column: 1, items: [
51
+ { key: 'reason', label: '设置原因', children: row.reason },
52
+ { key: 'revision', label: '规则修订', children: `r${row.revision}` },
53
+ { key: 'duties', label: '冻结的职责修订', children: `${row.delegatorDisplayName} r${row.delegatorRoleSubjectRevision} / ${row.delegateDisplayName} r${row.delegateRoleSubjectRevision}` },
54
+ { key: 'issues', label: '资格诊断', children: row.issues.length ? row.issues.map(issue => issueNames[issue] || issue).join(';') : '当前资格正常' },
55
+ { key: 'clock', label: '状态核对时间', children: time(row.evaluatedAt) },
56
+ ...(row.revokedAt ? [{ key: 'revoke', label: '撤销记录', children: `${time(row.revokedAt)} · ${row.revokeReason || '—'}` }] : []),
57
+ ] });
58
+ }
59
+ function DelegationEditor({ edit, catalog, onClose, onChanged, onDraftStateChange }) {
60
+ const { modal } = App.useApp();
61
+ const [form] = Form.useForm();
62
+ const [row, setRow] = useState(edit.operation === 'revoke' ? edit.row : undefined), [selected, setSelected] = useState();
63
+ const [sources, setSources] = useState(catalog.sources);
64
+ const [proposal, setProposal] = useState(), [preview, setPreview] = useState(), [receipt, setReceipt] = useState();
65
+ const [busy, setBusy] = useState(false), [unknown, setUnknown] = useState(false), [error, setError] = useState(''), [rejected, setRejected] = useState(false);
66
+ const [term, setTerm] = useState(''), [search, setSearch] = useState(''), [candidatePage, setCandidatePage] = useState(1), [candidateRefresh, setCandidateRefresh] = useState(0);
67
+ const source = Form.useWatch('source', form), from = Form.useWatch('validFrom', form), to = Form.useWatch('validTo', form), workflowCode = Form.useWatch('workflowCode', form);
68
+ const windowReady = source && from && to && to.isAfter(from), locked = busy || unknown || Boolean(receipt);
69
+ const reader = useRead(edit.operation === 'create' && windowReady ? JSON.stringify([catalog.actorUserId, source, from.toISOString(), to.toISOString(), workflowCode, search, candidatePage, candidateRefresh]) : undefined, () => listWorkflowDelegationCandidates({ delegatorRoleSubjectKey: source, validFrom: from.toISOString(), validTo: to.toISOString(), ...(workflowCode ? { workflowCode } : {}), keyword: search, limit: 20, offset: (candidatePage - 1) * 20 }));
70
+ useEffect(() => { const timer = setTimeout(() => { setSearch(term.trim()); setCandidatePage(1); }, 250); return () => clearTimeout(timer); }, [term]);
71
+ const dirty = !receipt;
72
+ useEffect(() => { onDraftStateChange?.({ dirty, busy, unknown }); return () => onDraftStateChange?.({ dirty: false, busy: false, unknown: false }); }, [dirty, busy, unknown, onDraftStateChange]);
73
+ useEffect(() => { if (!dirty)
74
+ return; const beforeUnload = (event) => { event.preventDefault(); event.returnValue = ''; }; window.addEventListener('beforeunload', beforeUnload); return () => window.removeEventListener('beforeunload', beforeUnload); }, [dirty]);
75
+ const changed = () => { if (locked)
76
+ return; setPreview(undefined); setProposal(undefined); setRejected(false); setError(''); };
77
+ const close = () => {
78
+ if (busy)
79
+ return;
80
+ if (dirty)
81
+ modal.confirm({ title: '放弃当前未完成的代理维护?', content: unknown ? '提交结果仍未确认,请保留原操作并先核对回执。' : '当前输入尚未提交。关闭后将丢失本次草稿。', okText: unknown ? '继续核对' : '放弃草稿', cancelText: unknown ? '留在此页' : '继续编辑',
82
+ onOk: unknown ? undefined : onClose });
83
+ else
84
+ onClose();
85
+ };
86
+ const makeProposal = async () => {
87
+ setError('');
88
+ setBusy(true);
89
+ try {
90
+ const values = await form.validateFields();
91
+ let request;
92
+ const base = { schemaVersion: 'openxiangda.workflow-delegation-mutation/v2', operationId: crypto.randomUUID(), environmentKey: catalog.environmentKey, reason: values.reason.trim() };
93
+ if (edit.operation === 'create') {
94
+ const binding = sources.find(item => item.roleSubjectKey === values.source);
95
+ if (!binding || !selected)
96
+ throw new Error('请选择审批职责和符合资格的代理人');
97
+ request = { ...base, operation: 'create', workflowCode: values.workflowCode || null, delegatorRoleSubjectKey: values.source, expectedDelegatorRevision: binding.roleSubjectRevision,
98
+ delegateUserId: selected.userId, delegateRoleSubjectKey: selected.roleSubjectKey, expectedDelegateRevision: selected.roleSubjectRevision, validFrom: values.validFrom.toISOString(), validTo: values.validTo.toISOString() };
99
+ }
100
+ else
101
+ request = { ...base, operation: 'revoke', delegationId: row.id, expectedRevision: row.revision };
102
+ setProposal(request);
103
+ setPreview(undefined);
104
+ setRejected(false);
105
+ const checked = await previewWorkflowDelegationMutation(request);
106
+ if (checked.operationId !== request.operationId || checked.operation !== request.operation)
107
+ throw new Error('代理核对结果不匹配,请重新核对');
108
+ setPreview(checked);
109
+ }
110
+ catch (failure) {
111
+ if (!(failure && typeof failure === 'object' && 'errorFields' in failure))
112
+ setError(errorText(failure));
113
+ }
114
+ finally {
115
+ setBusy(false);
116
+ }
117
+ };
118
+ const accept = (result) => {
119
+ if (!proposal || !preview || result.operationId !== proposal.operationId || result.operation !== proposal.operation || result.requestDigest !== preview.requestDigest || result.actorUserId !== catalog.actorUserId || result.appCode !== catalog.appCode || result.environmentKey !== catalog.environmentKey)
120
+ throw new Error('原操作回执不匹配,结果仍待确认');
121
+ setReceipt(result);
122
+ setUnknown(false);
123
+ setRejected(false);
124
+ onChanged();
125
+ };
126
+ const submit = async () => {
127
+ if (!proposal || !preview)
128
+ return;
129
+ const recovering = unknown;
130
+ setBusy(true);
131
+ setError('');
132
+ try {
133
+ accept(await executeWorkflowDelegationMutation(proposal));
134
+ }
135
+ catch (failure) {
136
+ setError(errorText(failure));
137
+ if (!recovering && failure instanceof OpenXiangdaPlatformRequestError && failure.status >= 400 && failure.status < 500) {
138
+ setRejected(true);
139
+ setPreview(undefined);
140
+ }
141
+ else
142
+ setUnknown(true);
143
+ }
144
+ finally {
145
+ setBusy(false);
146
+ }
147
+ };
148
+ const reconcile = async () => {
149
+ if (!proposal)
150
+ return;
151
+ setBusy(true);
152
+ setError('');
153
+ try {
154
+ accept(await loadWorkflowDelegationMutationReceipt(proposal.operationId));
155
+ }
156
+ catch (failure) {
157
+ setError(failure instanceof OpenXiangdaPlatformRequestError && failure.status === 404 ? '尚未找到原操作回执,提交结果仍未知。可继续核对,或显式重试同一请求。' : errorText(failure));
158
+ setUnknown(true);
159
+ }
160
+ finally {
161
+ setBusy(false);
162
+ }
163
+ };
164
+ const rebase = async () => {
165
+ setBusy(true);
166
+ setError('');
167
+ try {
168
+ if (row)
169
+ setRow(await loadWorkflowDelegation(row.id));
170
+ else {
171
+ const fresh = await loadWorkflowDelegationCatalog();
172
+ if (!fresh.sources.some(item => item.roleSubjectKey === source))
173
+ throw new Error('原审批职责已失效,请关闭草稿后重新选择');
174
+ setSources(fresh.sources);
175
+ if (selected) {
176
+ const current = await listWorkflowDelegationCandidates({ delegatorRoleSubjectKey: source, validFrom: from.toISOString(), validTo: to.toISOString(), ...(workflowCode ? { workflowCode } : {}), keyword: selected.displayName, limit: 50, offset: 0 });
177
+ const target = current.items.find(item => item.roleSubjectKey === selected.roleSubjectKey);
178
+ if (!target)
179
+ throw new Error('原代理人不再符合资格,请保留输入并重新选择');
180
+ setSelected(target);
181
+ }
182
+ setCandidateRefresh(value => value + 1);
183
+ }
184
+ setProposal(undefined);
185
+ setPreview(undefined);
186
+ setRejected(false);
187
+ }
188
+ catch (failure) {
189
+ setError(errorText(failure));
190
+ }
191
+ finally {
192
+ setBusy(false);
193
+ }
194
+ };
195
+ const candidates = new Map(reader.data?.items.map(item => [item.roleSubjectKey, item]) || []);
196
+ if (selected)
197
+ candidates.set(selected.roleSubjectKey, selected);
198
+ return _jsxs(Drawer, { open: true, title: edit.operation === 'create' ? '设置我的审批代理' : '撤销审批代理', size: 640, styles: { wrapper: { maxWidth: '100vw' } }, onClose: close, closable: !busy, mask: { closable: !busy }, keyboard: !busy, className: "oxa-workflow-delegation-editor", footer: _jsx(Space, { wrap: true, children: receipt ? _jsx(Button, { type: "primary", onClick: onClose, children: "\u5B8C\u6210" }) : unknown ? _jsxs(_Fragment, { children: [_jsx(Button, { disabled: busy, loading: busy, onClick: () => void reconcile(), children: "\u6838\u5BF9\u539F\u64CD\u4F5C\u56DE\u6267" }), _jsx(Button, { disabled: busy, onClick: () => void submit(), children: "\u91CD\u8BD5\u539F\u8BF7\u6C42" })] }) : _jsxs(_Fragment, { children: [_jsx(Button, { disabled: busy, onClick: close, children: "\u5173\u95ED" }), rejected && _jsx(Button, { disabled: busy, onClick: () => void rebase(), children: "\u8BFB\u53D6\u5F53\u524D\u57FA\u51C6\uFF0C\u4FDD\u7559\u8F93\u5165" }), _jsx(Button, { disabled: busy || Boolean(row && !row.canRevoke), loading: busy && !preview, onClick: () => void makeProposal(), children: "\u6838\u5BF9\u53D8\u66F4" }), _jsx(Button, { type: "primary", danger: edit.operation === 'revoke', disabled: busy || !preview, loading: busy && Boolean(preview), onClick: () => void submit(), children: edit.operation === 'revoke' ? '确认撤销' : '确认设置' })] }) }), children: [_jsx(Alert, { showIcon: true, type: "info", title: "\u53EA\u5F71\u54CD\u540E\u7EED\u5206\u6D3E", description: "\u5DF2\u6709\u5F85\u529E\u4FDD\u7559\u521B\u5EFA\u65F6\u7684\u539F\u5BA1\u6279\u4EBA\u3001\u4EE3\u7406\u4EBA\u548C\u65F6\u95F4\u5FEB\u7167\uFF1B\u5230\u671F\u53CA\u4EBA\u5458\u8D44\u683C\u4ECD\u5728\u529E\u7406\u65F6\u590D\u6838\u3002" }), row && _jsxs(_Fragment, { children: [_jsxs("p", { children: [_jsxs("b", { children: [row.delegatorDisplayName, " \u2192 ", row.delegateDisplayName] }), " \u00B7 ", row.roleName, " \u00B7 r", row.revision] }), _jsx(DelegationDetails, { row: row })] }), _jsxs(Form, { form: form, layout: "vertical", disabled: locked, initialValues: { source: catalog.sources[0]?.roleSubjectKey, validFrom: dayjs(catalog.evaluatedAt), validTo: dayjs(catalog.evaluatedAt).add(1, 'day') }, onValuesChange: values => { changed(); if ('source' in values || 'workflowCode' in values || 'validFrom' in values || 'validTo' in values) {
199
+ setSelected(undefined);
200
+ setCandidatePage(1);
201
+ } }, children: [edit.operation === 'create' && _jsxs(_Fragment, { children: [_jsx(Form.Item, { name: "source", label: "\u59D4\u6258\u7684\u5BA1\u6279\u804C\u8D23", rules: [{ required: true, message: '请选择本人的审批职责' }], children: _jsx(Select, { "aria-label": "\u59D4\u6258\u7684\u5BA1\u6279\u804C\u8D23", options: sources.map(item => ({ value: item.roleSubjectKey, label: item.roleName })) }) }), _jsx(Form.Item, { name: "workflowCode", label: "\u9650\u5B9A\u6D41\u7A0B", children: _jsx(Select, { "aria-label": "\u8BBE\u7F6E\u4EE3\u7406\u7684\u9650\u5B9A\u6D41\u7A0B", allowClear: true, placeholder: "\u5168\u90E8\u9002\u7528\u6D41\u7A0B", showSearch: true, optionFilterProp: "label", options: catalog.workflows.map(flow => ({ value: flow.code, label: flow.title })) }) }), _jsxs("div", { className: "oxa-delegation-dates", children: [_jsx(Form.Item, { name: "validFrom", label: "\u5F00\u59CB\u65F6\u95F4", rules: [{ required: true, message: '请选择开始时间' }], children: _jsx(DatePicker, { "aria-label": "\u4EE3\u7406\u5F00\u59CB\u65F6\u95F4", showTime: true, format: "YYYY-MM-DD HH:mm:ss" }) }), _jsx(Form.Item, { name: "validTo", label: "\u7ED3\u675F\u65F6\u95F4", rules: [{ required: true, message: '请选择结束时间' }, { validator: async (_, value) => { if (value && from && !value.isAfter(from))
202
+ throw new Error('结束时间必须晚于开始时间'); } }], children: _jsx(DatePicker, { "aria-label": "\u4EE3\u7406\u7ED3\u675F\u65F6\u95F4", showTime: true, format: "YYYY-MM-DD HH:mm:ss" }) })] }), _jsxs(Form.Item, { label: "\u4EE3\u7406\u4EBA", required: true, extra: "\u53EA\u5217\u51FA\u540C\u4E00\u804C\u8D23\u3001\u8303\u56F4\u548C\u6709\u6548\u671F\u517C\u5BB9\u7684\u4EBA\u5458\u3002\u5230\u7ED3\u675F\u65F6\u95F4\u81EA\u52A8\u5931\u6548\u3002", children: [_jsx(Select, { "aria-label": "\u9009\u62E9\u5408\u6CD5\u4EE3\u7406\u4EBA", placeholder: windowReady ? '搜索并选择代理人' : '先选择职责和时间', showSearch: true, filterOption: false, disabled: locked || !windowReady, loading: reader.loading, value: selected?.roleSubjectKey, onSearch: setTerm, allowClear: true, options: [...candidates.values()].map(item => ({ value: item.roleSubjectKey, label: `${item.displayName} · ${item.roleName}` })), onChange: value => { setSelected(candidates.get(value)); changed(); } }), reader.error && _jsx(Alert, { type: "error", showIcon: true, title: "\u4EE3\u7406\u4EBA\u8BFB\u53D6\u5931\u8D25", description: reader.error, action: _jsx(Button, { disabled: locked, onClick: reader.reload, children: "\u91CD\u8BD5" }) }), reader.data && _jsxs("div", { className: "oxa-delegation-candidate-paging", children: ["\u7B2C ", candidatePage, " \u9875\uFF0C\u5171 ", reader.data.total, " \u4F4D\u7B26\u5408\u8D44\u683C\u7684\u4EBA\u5458", _jsx(Button, { size: "small", disabled: locked || reader.loading || candidatePage === 1, onClick: () => setCandidatePage(value => value - 1), children: "\u4E0A\u4E00\u9875" }), _jsx(Button, { size: "small", disabled: locked || reader.loading || candidatePage * 20 >= reader.data.total, onClick: () => setCandidatePage(value => value + 1), children: "\u4E0B\u4E00\u9875" })] })] })] }), _jsx(Form.Item, { name: "reason", label: edit.operation === 'create' ? '设置原因' : '撤销原因', rules: [{ required: true, whitespace: true, message: '请填写原因' }, { max: 2000, message: '原因最多2000字' }], children: _jsx(Input.TextArea, { "aria-label": "\u4EE3\u7406\u7EF4\u62A4\u539F\u56E0", rows: 3, maxLength: 2000 }) })] }), error && _jsx(Alert, { type: unknown ? 'warning' : 'error', showIcon: true, title: unknown ? '提交结果待确认' : '操作未完成', description: error }), preview && !receipt && _jsxs("div", { className: "oxa-delegation-preview", children: [_jsx("h3", { children: "\u6838\u5BF9\u672C\u6B21\u53D8\u66F4" }), _jsxs("p", { children: [preview.after.delegatorDisplayName, " \u2192 ", preview.after.delegateDisplayName, " \u00B7 ", preview.after.roleName] }), _jsx("p", { children: edit.operation === 'create' ? `${time(preview.after.validFrom)} 至 ${time(preview.after.validTo)}` : `规则 r${preview.before?.revision} → r${preview.after.revision},状态变为已撤销` }), _jsx("p", { children: preview.after.reason }), proposal?.operation === 'revoke' && _jsxs("p", { children: ["\u64A4\u9500\u539F\u56E0\uFF1A", proposal.reason] }), _jsx("p", { className: "oxa-workflow-config-help", children: "\u63D0\u4EA4\u524D\u4F1A\u518D\u6B21\u9A8C\u8BC1\u5F53\u524D\u8D44\u683C\u53CA\u4FEE\u8BA2\u3002" })] }), unknown && proposal && _jsxs("p", { className: "oxa-workflow-config-help", children: ["\u539F\u64CD\u4F5C\u7F16\u53F7\uFF1A", _jsx("code", { children: proposal.operationId }), "\u3002\u6838\u5BF9\u672A\u627E\u5230\u56DE\u6267\u65F6\uFF0C\u4E0D\u4EE3\u8868\u5C1A\u672A\u63D0\u4EA4\u3002"] }), receipt && _jsx(Alert, { type: "success", showIcon: true, title: receipt.operation === 'create' ? '代理规则已设置' : '代理规则已撤销', description: `已取得原操作回执,规则修订 r${receipt.delegation.revision}。当前状态请以刷新后的列表为准。` })] });
203
+ }
204
+ //# sourceMappingURL=WorkflowDelegationManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDelegationManager.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowDelegationManager.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { type WorkflowGraphProjection, type WorkflowGraphVisit } from 'openxiangda-contracts/browser';
2
+ export interface WorkflowDiagramProps {
3
+ graph: WorkflowGraphProjection;
4
+ selectedNodeId: string;
5
+ onSelectNode: (nodeId: string) => void;
6
+ /** Only overlay titles from the matching effective configuration or frozen visit. */
7
+ titles?: Record<string, string>;
8
+ /** Optional matching-version summaries, e.g. the effective approval mode. */
9
+ summaries?: Record<string, string>;
10
+ visits?: readonly WorkflowGraphVisit[];
11
+ selectedEdgeId?: string;
12
+ onSelectEdge?: (edgeId: string) => void;
13
+ }
14
+ /** Read-only graph and accessible list share the platform's immutable projection. */
15
+ export declare function WorkflowDiagram({ graph, selectedNodeId, onSelectNode, titles, summaries, visits, selectedEdgeId, onSelectEdge }: WorkflowDiagramProps): import("react/jsx-runtime").JSX.Element;
16
+ //# sourceMappingURL=WorkflowDiagram.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDiagram.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowDiagram.tsx"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AA8BhI,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,6EAA6E;IAC7E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC;AAUD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAoB,EAAE,SAAS,EAAE,MAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,EAAE,oBAAoB,2CA8EjL"}
@@ -0,0 +1,110 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Component, lazy, Suspense, useEffect, useMemo, useRef, useState } from 'react';
3
+ import { formatWorkflowExpression } from 'openxiangda-contracts/browser';
4
+ import { Alert, Button, Empty, Input, Segmented, Select, Skeleton, Space, Switch, Tooltip } from 'antd';
5
+ import { AimOutlined, BorderOutlined, LockOutlined, MinusOutlined, PlusOutlined } from '@ant-design/icons';
6
+ import { WorkflowNodeCard } from './WorkflowNodeCard';
7
+ const FlowCanvas = lazy(() => import('./WorkflowFlowCanvas'));
8
+ const emptyVisits = [];
9
+ const emptyTitles = {};
10
+ function displayNodeOrder(graph) {
11
+ const incoming = new Map(graph.nodes.map(node => [node.id, 0]));
12
+ for (const edge of graph.edges)
13
+ incoming.set(edge.to, (incoming.get(edge.to) || 0) + 1);
14
+ const ready = graph.nodes.filter(node => incoming.get(node.id) === 0);
15
+ ready.sort((left, right) => Number(right.id === graph.startAt) - Number(left.id === graph.startAt));
16
+ const ordered = [];
17
+ while (ready.length) {
18
+ const node = ready.shift();
19
+ ordered.push(node);
20
+ for (const edge of graph.edges.filter(item => item.from === node.id)) {
21
+ incoming.set(edge.to, incoming.get(edge.to) - 1);
22
+ if (incoming.get(edge.to) === 0) {
23
+ const target = graph.nodes.find(item => item.id === edge.to);
24
+ if (target)
25
+ ready.push(target);
26
+ }
27
+ }
28
+ }
29
+ return ordered.length === graph.nodes.length ? ordered : graph.nodes;
30
+ }
31
+ class CanvasBoundary extends Component {
32
+ state = { failed: false };
33
+ static getDerivedStateFromError() { return { failed: true }; }
34
+ render() {
35
+ return this.state.failed ? _jsx(Alert, { type: "error", showIcon: true, title: "\u6D41\u7A0B\u753B\u5E03\u672A\u80FD\u52A0\u8F7D", description: "\u8BF7\u4F7F\u7528\u8282\u70B9\u5217\u8868\u67E5\u770B\u540C\u4E00\u7248\u672C\u7684\u5B8C\u6574\u7ED3\u6784\u3002", action: _jsx(Button, { onClick: this.props.onList, children: "\u67E5\u770B\u8282\u70B9\u5217\u8868" }) }) : this.props.children;
36
+ }
37
+ }
38
+ /** Read-only graph and accessible list share the platform's immutable projection. */
39
+ export function WorkflowDiagram({ graph, selectedNodeId, onSelectNode, titles = emptyTitles, summaries, visits = emptyVisits, selectedEdgeId, onSelectEdge }) {
40
+ const controller = useRef(null);
41
+ const list = useRef(null);
42
+ const listButtons = useRef(new Map());
43
+ const [zoom, setZoom] = useState(1);
44
+ const [keyword, setKeyword] = useState('');
45
+ const [view, setView] = useState('graph');
46
+ const [narrow, setNarrow] = useState(() => typeof window !== 'undefined' && window.matchMedia('(max-width: 700px)').matches);
47
+ const [actualOnly, setActualOnly] = useState(false);
48
+ const [localEdge, setLocalEdge] = useState();
49
+ useEffect(() => {
50
+ const query = window.matchMedia('(max-width: 700px)');
51
+ const changed = () => setNarrow(query.matches);
52
+ query.addEventListener('change', changed);
53
+ changed();
54
+ return () => query.removeEventListener('change', changed);
55
+ }, []);
56
+ const effectiveView = narrow ? 'list' : view;
57
+ const visited = useMemo(() => new Set(visits.map(visit => visit.nodeId)), [visits]);
58
+ const executedEdges = useMemo(() => new Set(visits.flatMap(visit => {
59
+ if (visit.matchedBranch !== undefined)
60
+ return [`${visit.nodeId}:${visit.matchedBranch < 0 ? 'default' : `branch:${visit.matchedBranch}`}`];
61
+ return visit.transition ? [`${visit.nodeId}:${visit.transition}`] : [];
62
+ })), [visits]);
63
+ const shownGraph = useMemo(() => {
64
+ if (!actualOnly)
65
+ return graph;
66
+ const nodes = graph.nodes.filter(node => visited.has(node.id));
67
+ const ids = new Set(nodes.map(node => node.id));
68
+ return { ...graph, nodes, edges: graph.edges.filter(edge => ids.has(edge.from) && ids.has(edge.to) && executedEdges.has(edge.id)) };
69
+ }, [graph, actualOnly, visited, executedEdges]);
70
+ const orderedNodes = useMemo(() => displayNodeOrder(shownGraph), [shownGraph]);
71
+ const title = (id) => titles[id] || graph.nodes.find(node => node.id === id)?.title || id;
72
+ const options = orderedNodes.filter(node => `${title(node.id)} ${node.id}`.toLowerCase().includes(keyword.toLowerCase())).map(node => ({ value: node.id, label: title(node.id) }));
73
+ const locate = (id, focus = false) => {
74
+ onSelectNode(id);
75
+ setLocalEdge(undefined);
76
+ if (effectiveView === 'graph')
77
+ controller.current?.locate(id, focus);
78
+ else {
79
+ const container = list.current, button = listButtons.current.get(id);
80
+ if (!container || !button)
81
+ return;
82
+ const bounds = container.getBoundingClientRect(), target = button.getBoundingClientRect();
83
+ container.scrollTo({ top: container.scrollTop + target.top - bounds.top - 12, behavior: focus ? 'instant' : 'smooth' });
84
+ if (focus)
85
+ button.focus({ preventScroll: true });
86
+ }
87
+ };
88
+ const navigate = (id, key) => {
89
+ const delta = ['ArrowDown', 'ArrowRight'].includes(key) ? 1 : ['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 0;
90
+ const order = orderedNodes.map(node => node.id);
91
+ const target = key === 'Home' ? order[0] : key === 'End' ? order.at(-1) : delta ? order[(order.indexOf(id) + delta + order.length) % order.length] : undefined;
92
+ if (target)
93
+ locate(target, true);
94
+ return !!target;
95
+ };
96
+ const selectEdge = (id) => {
97
+ const edge = graph.edges.find(item => item.id === id);
98
+ if (edge)
99
+ onSelectNode(edge.from);
100
+ setLocalEdge(id);
101
+ onSelectEdge?.(id);
102
+ };
103
+ if (graph.nodes.length > 200)
104
+ return _jsx(Alert, { type: "error", title: "\u6D41\u7A0B\u56FE\u8D85\u51FA 200 \u8282\u70B9\u7684\u663E\u793A\u4E0A\u9650" });
105
+ return _jsxs("section", { className: "oxa-workflow-diagram", "aria-label": "\u56FA\u5B9A\u6D41\u7A0B\u7ED3\u6784", children: [_jsxs("div", { className: "oxa-workflow-diagram-tools", children: [_jsx(Segmented, { "aria-label": "\u6D41\u7A0B\u67E5\u770B\u65B9\u5F0F", value: effectiveView, disabled: narrow, onChange: value => setView(value), options: [{ value: 'graph', label: '流程图' }, { value: 'list', label: '节点列表' }] }), _jsxs("div", { className: "oxa-workflow-node-search", children: [_jsx(Input.Search, { "aria-label": "\u641C\u7D22\u6D41\u7A0B\u8282\u70B9", placeholder: "\u641C\u7D22\u8282\u70B9", value: keyword, allowClear: true, onChange: event => setKeyword(event.target.value), onSearch: () => options[0] && locate(options[0].value) }), _jsx(Select, { "aria-label": "\u5B9A\u4F4D\u6D41\u7A0B\u8282\u70B9", value: shownGraph.nodes.some(node => node.id === selectedNodeId) ? selectedNodeId : undefined, options: options, onChange: id => locate(id), notFoundContent: "\u6CA1\u6709\u5339\u914D\u7684\u8282\u70B9", popupMatchSelectWidth: 300 })] }), visits.length > 0 && _jsxs(Space, { size: "small", children: [_jsx(Switch, { size: "small", checked: actualOnly, onChange: setActualOnly, "aria-label": "\u53EA\u770B\u5DF2\u6267\u884C\u8282\u70B9" }), _jsx("span", { children: "\u5DF2\u6267\u884C\u8DEF\u5F84" })] }), _jsxs("span", { className: "oxa-workflow-readonly", children: [_jsx(LockOutlined, {}), " \u7ED3\u6784\u53EA\u8BFB"] })] }), effectiveView === 'graph' ? _jsxs("div", { className: "oxa-workflow-canvas", children: [!shownGraph.nodes.length ? _jsx(Empty, { description: "\u5C1A\u65E0\u5DF2\u6267\u884C\u8282\u70B9" }) : _jsx(CanvasBoundary, { onList: () => setView('list'), children: _jsx(Suspense, { fallback: _jsx("div", { className: "oxa-workflow-canvas-loading", children: _jsx(Skeleton, { active: true, title: true, paragraph: { rows: 4 } }) }), children: _jsx(FlowCanvas, { graph: shownGraph, selectedNodeId: selectedNodeId, selectedEdgeId: selectedEdgeId || localEdge, onSelectNode: onSelectNode, onSelectEdge: selectEdge, titles: titles, summaries: summaries, visits: visits, executedEdges: executedEdges, onNavigate: navigate, onReady: value => { controller.current = value; }, onZoom: setZoom }) }) }), _jsxs("div", { className: "oxa-workflow-viewport-tools", "aria-label": "\u753B\u5E03\u5BFC\u822A", children: [_jsx(Tooltip, { title: "\u7F29\u5C0F", children: _jsx(Button, { "aria-label": "\u7F29\u5C0F\u6D41\u7A0B\u56FE", icon: _jsx(MinusOutlined, {}), disabled: zoom <= .025, onClick: () => controller.current?.zoomBy(-1) }) }), _jsxs("span", { children: [Math.round(zoom * 100), "%"] }), _jsx(Tooltip, { title: "\u653E\u5927", children: _jsx(Button, { "aria-label": "\u653E\u5927\u6D41\u7A0B\u56FE", icon: _jsx(PlusOutlined, {}), disabled: zoom >= 1.6, onClick: () => controller.current?.zoomBy(1) }) }), _jsx(Tooltip, { title: "\u9002\u5E94\u5168\u56FE", children: _jsx(Button, { "aria-label": "\u9002\u5E94\u5168\u56FE", icon: _jsx(BorderOutlined, {}), onClick: () => controller.current?.fit() }) }), _jsx(Tooltip, { title: "\u805A\u7126\u9009\u4E2D\u8282\u70B9", children: _jsx(Button, { "aria-label": "\u805A\u7126\u9009\u4E2D\u8282\u70B9", icon: _jsx(AimOutlined, {}), onClick: () => locate(selectedNodeId) }) })] }), _jsx("div", { className: "oxa-workflow-graph-help", children: "\u62D6\u52A8\u753B\u5E03\u5E73\u79FB \u00B7 \u6EDA\u8F6E\u7F29\u653E \u00B7 \u65B9\u5411\u952E\u5207\u6362\u8282\u70B9" })] }) : _jsxs("ol", { ref: list, className: "oxa-workflow-node-list", "aria-label": "\u6D41\u7A0B\u8282\u70B9\u5217\u8868", children: [orderedNodes.map(node => _jsxs("li", { children: [_jsx(WorkflowNodeCard, { node: node, title: title(node.id), summary: summaries?.[node.id], selected: selectedNodeId === node.id, start: node.id === graph.startAt, visit: [...visits].reverse().find(visit => visit.nodeId === node.id), onClick: () => onSelectNode(node.id), onNavigate: navigate, buttonRef: element => { if (element)
106
+ listButtons.current.set(node.id, element);
107
+ else
108
+ listButtons.current.delete(node.id); } }), _jsx("ul", { children: shownGraph.edges.filter(edge => edge.from === node.id).map(edge => _jsxs("li", { children: [_jsxs("button", { type: "button", onClick: () => selectEdge(edge.id), children: [edge.priority ? `顺序 ${edge.priority} · ` : '', edge.label, edge.expression ? `:${formatWorkflowExpression(edge.expression, graph.variables)}` : '', " \u2192 ", title(edge.to)] }), _jsx(Button, { size: "small", type: "text", onClick: () => locate(edge.to), "aria-label": `定位${title(edge.to)}`, children: "\u5B9A\u4F4D" })] }, edge.id)) })] }, node.id)), !shownGraph.nodes.length && _jsx("li", { children: _jsx(Empty, { description: "\u5C1A\u65E0\u5DF2\u6267\u884C\u8282\u70B9" }) })] })] });
109
+ }
110
+ //# sourceMappingURL=WorkflowDiagram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowDiagram.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowDiagram.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACxG,OAAO,EAAE,wBAAwB,EAAyD,MAAM,+BAA+B,CAAC;AAChI,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AACxG,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAkC,EAAE,CAAC;AACtD,MAAM,WAAW,GAA2B,EAAE,CAAC;AAE/C,SAAS,gBAAgB,CAAC,KAA8B;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;QAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;IACpG,MAAM,OAAO,GAAqC,EAAE,CAAC;IACrD,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACrE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,GAAG,CAAC,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC7D,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AACvE,CAAC;AAeD,MAAM,cAAe,SAAQ,SAA2E;IACtG,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC1B,MAAM,CAAC,wBAAwB,KAAK,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,IAAI,EAAC,OAAO,EAAC,QAAQ,QAAC,KAAK,EAAC,kDAAU,EAAC,WAAW,EAAC,oHAAqB,EAAC,MAAM,EAAE,KAAC,MAAM,IAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,qDAAiB,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IACnM,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,GAAG,WAAW,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,cAAc,EAAE,YAAY,EAAwB;IAChL,MAAM,UAAU,GAAG,MAAM,CAAsC,IAAI,CAAC,CAAC;IACrE,MAAM,IAAI,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,GAAG,EAA6B,CAAC,CAAC;IACjE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAmB,OAAO,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7H,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,EAAU,CAAC;IACrD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC/C,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,EAAE,CAAC;QACV,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5D,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACpF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACjE,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QAC3I,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACf,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACtI,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/E,MAAM,KAAK,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;IAClG,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnL,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;QAC3C,YAAY,CAAC,EAAE,CAAC,CAAC;QAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,aAAa,KAAK,OAAO;YAAE,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;aAChE,CAAC;YACJ,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM;gBAAE,OAAO;YAClC,MAAM,MAAM,GAAG,SAAS,CAAC,qBAAqB,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC1F,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxH,IAAI,KAAK;gBAAE,MAAM,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,GAAW,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9G,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/J,IAAI,MAAM;YAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,CAAC,CAAC,MAAM,CAAC;IAClB,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,CAAC,EAAU,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI;YAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,YAAY,CAAC,EAAE,CAAC,CAAC;QAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC;IACF,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAC,KAAK,IAAC,IAAI,EAAC,OAAO,EAAC,KAAK,EAAC,+EAAmB,GAAG,CAAC;IACtF,OAAO,mBAAS,SAAS,EAAC,sBAAsB,gBAAY,sCAAQ,aAClE,eAAK,SAAS,EAAC,4BAA4B,aACzC,KAAC,SAAS,kBAAY,sCAAQ,EAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAI,EAC1M,eAAK,SAAS,EAAC,0BAA0B,aAAC,KAAC,KAAK,CAAC,MAAM,kBAAY,sCAAQ,EAAC,WAAW,EAAC,0BAAM,EAAC,KAAK,EAAE,OAAO,EAAE,UAAU,QAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAI,EACrO,KAAC,MAAM,kBAAY,sCAAQ,EAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,eAAe,EAAC,4CAAS,EAAC,qBAAqB,EAAE,GAAG,GAAI,IAAM,EACxO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,MAAC,KAAK,IAAC,IAAI,EAAC,OAAO,aAAC,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,gBAAa,4CAAS,GAAG,EAAA,4DAAkB,IAAQ,EAC9J,gBAAM,SAAS,EAAC,uBAAuB,aAAC,KAAC,YAAY,KAAG,iCAAY,IAChE,EACL,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,eAAK,SAAS,EAAC,qBAAqB,aAC9D,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAC,KAAK,IAAC,WAAW,EAAC,4CAAS,GAAG,CAAC,CAAC,CAAC,KAAC,cAAc,IAAC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,YAAE,KAAC,QAAQ,IAAC,QAAQ,EAAE,cAAK,SAAS,EAAC,6BAA6B,YAAC,KAAC,QAAQ,IAAC,MAAM,QAAC,KAAK,QAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,GAAM,YACnO,KAAC,UAAU,IAAC,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,IAAI,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,GAAI,GACzU,GAAiB,EAC5B,eAAK,SAAS,EAAC,6BAA6B,gBAAY,0BAAM,aAAC,KAAC,OAAO,IAAC,KAAK,EAAC,cAAI,YAAC,KAAC,MAAM,kBAAY,gCAAO,EAAC,IAAI,EAAE,KAAC,aAAa,KAAG,EAAE,QAAQ,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAI,GAAU,EAAA,2BAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,SAAS,EAAA,KAAC,OAAO,IAAC,KAAK,EAAC,cAAI,YAAC,KAAC,MAAM,kBAAY,gCAAO,EAAC,IAAI,EAAE,KAAC,YAAY,KAAG,EAAE,QAAQ,EAAE,IAAI,IAAI,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAI,GAAU,EACtZ,KAAC,OAAO,IAAC,KAAK,EAAC,0BAAM,YAAC,KAAC,MAAM,kBAAY,0BAAM,EAAC,IAAI,EAAE,KAAC,cAAc,KAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAI,GAAU,EAAA,KAAC,OAAO,IAAC,KAAK,EAAC,sCAAQ,YAAC,KAAC,MAAM,kBAAY,sCAAQ,EAAC,IAAI,EAAE,KAAC,WAAW,KAAG,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,GAAI,GAAU,IAAM,EACtQ,cAAK,SAAS,EAAC,yBAAyB,uIAA8B,IAClE,CAAC,CAAC,CAAC,cAAI,GAAG,EAAE,IAAI,EAAE,SAAS,EAAC,wBAAwB,gBAAY,sCAAQ,aAC3E,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAkB,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,cAAc,KAAK,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,OAAO;oCAAE,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;;oCAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAI,EACvc,uBAAK,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,yBAAkB,kBAAQ,IAAI,EAAC,QAAQ,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAC/I,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAU,EAAA,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAc,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,6BAAa,KADhN,IAAI,CAAC,EAAE,CAC8M,CAAC,GAAM,KAF5Q,IAAI,CAAC,EAAE,CAE0Q,CAAC,EACpT,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,uBAAI,KAAC,KAAK,IAAC,WAAW,EAAC,4CAAS,GAAG,GAAK,IAClE,IACG,CAAC;AACb,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { type WorkflowGraphProjection, type WorkflowGraphVisit } from 'openxiangda-contracts/browser';
2
+ import '@xyflow/react/dist/style.css';
3
+ export interface WorkflowFlowCanvasController {
4
+ locate: (id: string, focus?: boolean) => void;
5
+ fit: () => void;
6
+ zoomBy: (direction: number) => void;
7
+ }
8
+ /** Lazy module: loading a CRUD page or the node list does not instantiate React Flow. */
9
+ export default function WorkflowFlowCanvas(props: {
10
+ graph: WorkflowGraphProjection;
11
+ selectedNodeId: string;
12
+ selectedEdgeId?: string;
13
+ titles: Record<string, string>;
14
+ summaries?: Record<string, string>;
15
+ visits: readonly WorkflowGraphVisit[];
16
+ executedEdges: Set<string>;
17
+ onSelectNode: (id: string) => void;
18
+ onSelectEdge: (id: string) => void;
19
+ onNavigate: (id: string, key: string) => boolean;
20
+ onReady: (controller: WorkflowFlowCanvasController | null) => void;
21
+ onZoom: (zoom: number) => void;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
+ //# sourceMappingURL=WorkflowFlowCanvas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowFlowCanvas.d.ts","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowFlowCanvas.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoD,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAGxJ,OAAO,8BAA8B,CAAC;AAGtC,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9C,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AAkCD,yFAAyF;AACzF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE;IAChD,KAAK,EAAE,uBAAuB,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAChF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,MAAM,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtI,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,UAAU,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;IACzH,OAAO,EAAE,CAAC,UAAU,EAAE,4BAA4B,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACpG,2CAsDA"}
@@ -0,0 +1,78 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useMemo, useRef, useState } from 'react';
3
+ import { Background, BaseEdge, EdgeLabelRenderer, Handle, MarkerType, MiniMap, Position, ReactFlow } from '@xyflow/react';
4
+ import { formatWorkflowExpression } from 'openxiangda-contracts/browser';
5
+ import { WorkflowNodeCard } from './WorkflowNodeCard';
6
+ import { workflowFlowLayout } from './workflow-flow-layout';
7
+ import '@xyflow/react/dist/style.css';
8
+ import { Skeleton } from 'antd';
9
+ function DiagramNode({ data, selected }) {
10
+ return _jsxs(_Fragment, { children: [_jsx(Handle, { id: data.input.id, type: "target", position: Position.Top, style: { left: data.input.x }, isConnectable: false }), _jsx(WorkflowNodeCard, { node: data.node, title: data.title, summary: data.summary, selected: selected, start: data.start, visit: data.visit, onClick: data.onSelect, onNavigate: data.onNavigate }), data.outputs.map(port => _jsx(Handle, { id: port.id, type: "source", position: Position.Bottom, style: { left: port.x }, isConnectable: false }, port.id))] });
11
+ }
12
+ function orthogonalPath(points) {
13
+ return points.map((point, index) => `${index ? 'L' : 'M'} ${point.x} ${point.y}`).join(' ');
14
+ }
15
+ function DiagramEdge({ id, data, markerEnd }) {
16
+ if (!data)
17
+ return null;
18
+ return _jsxs(_Fragment, { children: [_jsx(BaseEdge, { id: id, path: orthogonalPath(data.points), markerEnd: markerEnd, interactionWidth: 22, style: { stroke: data.actual ? 'var(--ant-color-success, #389e0d)' : data.highlighted ? 'var(--ant-color-primary, #1677ff)' : '#aab4c1', strokeWidth: data.actual || data.highlighted ? 2 : 1.5 } }), _jsx(EdgeLabelRenderer, { children: _jsxs("button", { type: "button", className: `oxa-workflow-edge-label nodrag nopan ${data.actual ? 'executed' : ''} ${data.highlighted ? 'selected' : ''} ${data.edge.kind === 'branch' ? 'branch' : ''}`, style: { transform: `translate(-50%, -50%) translate(${data.label.x}px, ${data.label.y}px)` }, title: `${data.edge.label}${data.expression ? `:${data.expression}` : ''}`, "aria-pressed": data.selected, "aria-label": `分支:${data.edge.priority ? `顺序 ${data.edge.priority},` : ''}${data.edge.label}${data.expression ? `,${data.expression}` : ''}`, onClick: data.onSelect, children: [_jsxs("span", { children: [data.edge.priority ? _jsx("b", { children: data.edge.priority }) : null, data.edge.label, data.actual && _jsx("small", { children: "\u5DF2\u6267\u884C" })] }), data.expression && _jsx("strong", { children: data.expression })] }) })] });
19
+ }
20
+ const nodeTypes = { workflow: DiagramNode };
21
+ const edgeTypes = { workflow: DiagramEdge };
22
+ /** Lazy module: loading a CRUD page or the node list does not instantiate React Flow. */
23
+ export default function WorkflowFlowCanvas(props) {
24
+ const latest = useRef(props);
25
+ latest.current = props;
26
+ const container = useRef(null);
27
+ const [instance, setInstance] = useState(null);
28
+ const [layoutState, setLayoutState] = useState({ graph: props.graph });
29
+ const positions = layoutState.graph === props.graph ? layoutState.positions : undefined;
30
+ useEffect(() => {
31
+ let active = true;
32
+ void workflowFlowLayout(props.graph).then(value => { if (active)
33
+ setLayoutState({ graph: props.graph, positions: value }); }, error => { if (active)
34
+ setLayoutState({ graph: props.graph, error: error instanceof Error ? error : new Error(String(error)) }); });
35
+ return () => { active = false; };
36
+ }, [props.graph]);
37
+ const nodes = useMemo(() => positions ? props.graph.nodes.map(node => {
38
+ const point = positions.nodes.get(node.id);
39
+ return { id: node.id, type: 'workflow', position: { x: point.x, y: point.y }, width: point.width, height: point.height,
40
+ style: { width: point.width, height: point.height }, selected: props.selectedNodeId === node.id, draggable: false, connectable: false, deletable: false,
41
+ data: { node, title: props.titles[node.id] || node.title, summary: props.summaries?.[node.id], start: node.id === props.graph.startAt,
42
+ visit: [...props.visits].reverse().find(visit => visit.nodeId === node.id), input: point.input, outputs: point.outputs,
43
+ onSelect: () => latest.current.onSelectNode(node.id), onNavigate: (id, key) => latest.current.onNavigate(id, key) } };
44
+ }) : [], [props.graph, props.selectedNodeId, props.titles, props.summaries, props.visits, positions]);
45
+ const edges = useMemo(() => positions ? props.graph.edges.map(edge => {
46
+ const position = positions.edges.get(edge.id);
47
+ const actual = props.executedEdges.has(edge.id), selected = props.selectedEdgeId === edge.id;
48
+ const highlighted = props.selectedEdgeId ? selected : edge.from === props.selectedNodeId;
49
+ return { id: edge.id, source: edge.from, sourceHandle: `out:${edge.id}`, target: edge.to, targetHandle: `in:${edge.to}`, type: 'workflow', deletable: false, reconnectable: false,
50
+ markerEnd: { type: MarkerType.ArrowClosed, width: 16, height: 16, color: actual ? '#389e0d' : highlighted ? '#1677ff' : '#aab4c1' },
51
+ data: { edge, expression: edge.expression ? formatWorkflowExpression(edge.expression, props.graph.variables) : '', points: position.points, label: position.label, actual, highlighted, selected, onSelect: () => latest.current.onSelectEdge(edge.id) } };
52
+ }) : [], [props.graph, props.executedEdges, props.selectedNodeId, props.selectedEdgeId, positions]);
53
+ useEffect(() => {
54
+ if (!instance || !positions)
55
+ return;
56
+ const locate = (id, focus = false) => {
57
+ const point = positions.nodes.get(id);
58
+ if (!point)
59
+ return;
60
+ void instance.setCenter(point.x + point.width / 2, point.y + point.height / 2, { zoom: .95, duration: focus ? 0 : 180 }).then(() => {
61
+ if (focus)
62
+ requestAnimationFrame(() => container.current?.querySelector(`.react-flow__node[data-id="${CSS.escape(id)}"] button`)?.focus({ preventScroll: true }));
63
+ });
64
+ };
65
+ latest.current.onReady({ locate, fit: () => { void instance.fitView({ padding: .18, maxZoom: 1, minZoom: .025, duration: 200 }); }, zoomBy: direction => { void instance.zoomTo(Math.max(.025, Math.min(1.6, instance.getZoom() * (direction > 0 ? 1.25 : .8))), { duration: 120 }); } });
66
+ if (latest.current.graph.nodes.length > 14)
67
+ locate(latest.current.selectedNodeId);
68
+ else
69
+ void instance.fitView({ padding: .2, maxZoom: 1, minZoom: .025 });
70
+ return () => latest.current.onReady(null);
71
+ }, [instance, positions]);
72
+ if (layoutState.graph === props.graph && layoutState.error)
73
+ throw layoutState.error;
74
+ if (!positions)
75
+ return _jsx("div", { className: "oxa-workflow-canvas-loading", children: _jsx(Skeleton, { active: true, title: true, paragraph: { rows: 4 } }) });
76
+ return _jsx("div", { ref: container, className: "oxa-workflow-reactflow", children: _jsxs(ReactFlow, { nodes: nodes, edges: edges, nodeTypes: nodeTypes, edgeTypes: edgeTypes, onInit: setInstance, nodesDraggable: false, nodesConnectable: false, nodesFocusable: false, edgesFocusable: false, edgesReconnectable: false, deleteKeyCode: null, disableKeyboardA11y: true, selectionOnDrag: false, selectionKeyCode: null, zoomOnDoubleClick: false, minZoom: .025, maxZoom: 1.6, onlyRenderVisibleElements: true, onMoveEnd: (_event, viewport) => props.onZoom(viewport.zoom), onEdgeClick: (_event, edge) => props.onSelectEdge(edge.id), "aria-label": "\u53EA\u8BFB\u6D41\u7A0B\u753B\u5E03", children: [_jsx(Background, { color: "#d6dde5", gap: 22, size: 1 }), _jsx(MiniMap, { pannable: true, zoomable: true, position: "bottom-right", "aria-label": "\u6D41\u7A0B\u7F29\u7565\u5BFC\u822A", style: { width: 150, height: 94 }, nodeColor: node => node.selected ? '#1677ff' : '#b7c2cf', maskColor: "rgba(243, 246, 250, .72)" })] }) });
77
+ }
78
+ //# sourceMappingURL=WorkflowFlowCanvas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkflowFlowCanvas.js","sourceRoot":"","sources":["../../../../src/browser/components/workflow/WorkflowFlowCanvas.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAClB,MAAM,eAAe,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAiF,MAAM,+BAA+B,CAAC;AACxJ,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,8BAA8B,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAkBhC,SAAS,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAuB;IAC1D,OAAO,8BAAE,KAAC,MAAM,IAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,GAAI,EAC/H,KAAC,gBAAgB,IAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,GAAI,EAC7L,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,KAAC,MAAM,IAAe,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,IAA5G,IAAI,CAAC,EAAE,CAAyG,CAAC,IAAI,CAAC;AACjK,CAAC;AAED,SAAS,cAAc,CAAC,MAAe;IACrC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAuB;IAC/D,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,8BAAE,KAAC,QAAQ,IAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAI,EAC7S,KAAC,iBAAiB,cAAC,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,wCAAwC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,EAC9M,KAAK,EAAE,EAAE,SAAS,EAAE,mCAAmC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAC7F,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,kBAAgB,IAAI,CAAC,QAAQ,gBAAc,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,aAC3Q,2BAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,iDAAkB,IAAQ,EAAC,IAAI,CAAC,UAAU,IAAI,2BAAS,IAAI,CAAC,UAAU,GAAU,IACzK,GAAoB,IAAG,CAAC;AACrC,CAAC;AACD,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAC5C,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AAE5C,yFAAyF;AACzF,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAK1C;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAA+C,IAAI,CAAC,CAAC;IAC7F,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAgH,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACtL,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACxF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,KAAK,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,MAAM;YAAE,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAC1H,KAAK,CAAC,EAAE,GAAG,IAAI,MAAM;YAAE,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtI,OAAO,GAAG,EAAE,GAAG,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,OAAO,CAAa,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/E,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;QAC5C,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM;YACpH,KAAK,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;YACvJ,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO;gBACnI,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtH,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IAC5H,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IACtG,MAAM,KAAK,GAAG,OAAO,CAAa,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;QAC/E,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC,cAAc,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7F,MAAM,WAAW,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,cAAc,CAAC;QACzF,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK;YAC/K,SAAS,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE;YACnI,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;IAC/P,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;IACpG,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;YAAE,OAAO;QACpC,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,KAAK,GAAG,KAAK,EAAE,EAAE;YAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,KAAK,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACjI,IAAI,KAAK;oBAAE,qBAAqB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,aAAa,CAAoB,8BAA8B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACvL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,KAAK,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1R,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;YAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;;YAC7E,KAAK,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;IAC1B,IAAI,WAAW,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,IAAI,WAAW,CAAC,KAAK;QAAE,MAAM,WAAW,CAAC,KAAK,CAAC;IACpF,IAAI,CAAC,SAAS;QAAE,OAAO,cAAK,SAAS,EAAC,6BAA6B,YAAC,KAAC,QAAQ,IAAC,MAAM,QAAC,KAAK,QAAC,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAI,GAAM,CAAC;IAC5H,OAAO,cAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAC,wBAAwB,YAC5D,MAAC,SAAS,IAAqB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EACxH,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EACvH,aAAa,EAAE,IAAI,EAAE,mBAAmB,QAAC,eAAe,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EACjH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,yBAAyB,QAAC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EACnH,WAAW,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAa,sCAAQ,aAC/E,KAAC,UAAU,IAAC,KAAK,EAAC,SAAS,EAAC,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,GAAI,EAChD,KAAC,OAAO,IAAC,QAAQ,QAAC,QAAQ,QAAC,QAAQ,EAAC,cAAc,gBAAY,sCAAQ,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,EAAC,0BAA0B,GAAG,IACjM,GACR,CAAC;AACT,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Ref } from 'react';
2
+ import type { WorkflowGraphProjection, WorkflowGraphVisit } from 'openxiangda-contracts/browser';
3
+ export declare const workflowNodeModes: Record<string, string>;
4
+ export declare function WorkflowNodeCard({ node, title, summary, selected, start, visit, onClick, onNavigate, buttonRef }: {
5
+ node: WorkflowGraphProjection['nodes'][number];
6
+ title: string;
7
+ summary?: string;
8
+ selected: boolean;
9
+ start: boolean;
10
+ visit?: WorkflowGraphVisit;
11
+ onClick: () => void;
12
+ onNavigate: (id: string, key: string) => boolean;
13
+ buttonRef?: Ref<HTMLButtonElement>;
14
+ }): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=WorkflowNodeCard.d.ts.map