@vef-framework-react/approval-flow-editor 2.2.2 → 2.4.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 (217) hide show
  1. package/dist/cjs/components/accent-icon-badge.cjs +1 -0
  2. package/dist/cjs/components/approval-flow-editor.cjs +1 -1
  3. package/dist/cjs/components/config/approval-node-config.cjs +1 -1
  4. package/dist/cjs/components/config/assignee-list.cjs +1 -1
  5. package/dist/cjs/components/config/basic-node-config.cjs +1 -1
  6. package/dist/cjs/components/config/cc-list.cjs +1 -1
  7. package/dist/cjs/components/config/cc-node-config.cjs +1 -1
  8. package/dist/cjs/components/config/condition-config.cjs +1 -1
  9. package/dist/cjs/components/config/condition-editor-modal.cjs +1 -1
  10. package/dist/cjs/components/config/condition-rule-item.cjs +1 -1
  11. package/dist/cjs/components/config/field-permission-table.cjs +1 -1
  12. package/dist/cjs/components/config/handle-node-config.cjs +1 -1
  13. package/dist/cjs/components/config/principal-picker.cjs +1 -0
  14. package/dist/cjs/components/config/shared.cjs +1 -1
  15. package/dist/cjs/components/config-panel.cjs +1 -1
  16. package/dist/cjs/components/edges/approval-edge.cjs +1 -1
  17. package/dist/cjs/components/edges/index.cjs +1 -1
  18. package/dist/cjs/components/editor-toolbar.cjs +1 -1
  19. package/dist/cjs/components/nodes/approval-node.cjs +1 -1
  20. package/dist/cjs/components/nodes/base-node.cjs +1 -1
  21. package/dist/cjs/components/nodes/cc-node.cjs +1 -1
  22. package/dist/cjs/components/nodes/condition-node.cjs +1 -1
  23. package/dist/cjs/components/nodes/end-node.cjs +1 -1
  24. package/dist/cjs/components/nodes/handle-node.cjs +1 -1
  25. package/dist/cjs/components/nodes/index.cjs +1 -1
  26. package/dist/cjs/components/nodes/node-shell.cjs +1 -1
  27. package/dist/cjs/components/nodes/start-node.cjs +1 -1
  28. package/dist/cjs/components/validation-indicator.cjs +1 -0
  29. package/dist/cjs/components/zoom-control.cjs +1 -1
  30. package/dist/cjs/constants.cjs +1 -1
  31. package/dist/cjs/hooks/use-auto-layout.cjs +1 -1
  32. package/dist/cjs/hooks/use-connection-validation.cjs +1 -1
  33. package/dist/cjs/hooks/use-drag-drop.cjs +1 -1
  34. package/dist/cjs/hooks/use-history-shortcuts.cjs +1 -0
  35. package/dist/cjs/hooks/use-row-keys.cjs +1 -0
  36. package/dist/cjs/icons.cjs +1 -1
  37. package/dist/cjs/index.cjs +1 -1
  38. package/dist/cjs/plugins/context.cjs +1 -1
  39. package/dist/cjs/plugins/index.cjs +1 -1
  40. package/dist/cjs/shared/connection-rules.cjs +1 -1
  41. package/dist/cjs/shared/flow-validation.cjs +1 -0
  42. package/dist/cjs/shared/node-placement.cjs +1 -0
  43. package/dist/cjs/shared/normalize-node-data.cjs +1 -0
  44. package/dist/cjs/shared/seed-flow.cjs +1 -0
  45. package/dist/cjs/shared/serialization.cjs +1 -1
  46. package/dist/cjs/specifications/approval.cjs +1 -1
  47. package/dist/cjs/specifications/cc.cjs +1 -1
  48. package/dist/cjs/specifications/condition.cjs +1 -1
  49. package/dist/cjs/specifications/end.cjs +1 -1
  50. package/dist/cjs/specifications/handle.cjs +1 -1
  51. package/dist/cjs/specifications/index.cjs +1 -1
  52. package/dist/cjs/specifications/start.cjs +1 -1
  53. package/dist/cjs/store/editor.cjs +1 -1
  54. package/dist/cjs/store/flow-slice.cjs +1 -1
  55. package/dist/cjs/store/graph-slice.cjs +1 -1
  56. package/dist/cjs/store/history-slice.cjs +1 -0
  57. package/dist/cjs/store/index.cjs +1 -1
  58. package/dist/cjs/store/interaction-slice.cjs +1 -1
  59. package/dist/cjs/store/validation-slice.cjs +1 -0
  60. package/dist/cjs/styles/base.cjs +1 -1
  61. package/dist/cjs/styles/index.cjs +1 -1
  62. package/dist/cjs/styles/node-colors.cjs +1 -0
  63. package/dist/cjs/styles/theme.cjs +1 -1
  64. package/dist/cjs/types.cjs +1 -0
  65. package/dist/es/components/accent-icon-badge.js +31 -0
  66. package/dist/es/components/approval-flow-editor.js +171 -98
  67. package/dist/es/components/config/approval-node-config.js +189 -180
  68. package/dist/es/components/config/assignee-list.js +41 -98
  69. package/dist/es/components/config/basic-node-config.js +10 -10
  70. package/dist/es/components/config/cc-list.js +56 -109
  71. package/dist/es/components/config/cc-node-config.js +31 -27
  72. package/dist/es/components/config/condition-config.js +122 -117
  73. package/dist/es/components/config/condition-editor-modal.js +133 -117
  74. package/dist/es/components/config/condition-operators.js +1 -1
  75. package/dist/es/components/config/condition-rule-item.js +134 -103
  76. package/dist/es/components/config/field-permission-table.js +5 -4
  77. package/dist/es/components/config/handle-node-config.js +145 -127
  78. package/dist/es/components/config/principal-picker.js +27 -0
  79. package/dist/es/components/config/shared.js +60 -27
  80. package/dist/es/components/config-panel.js +63 -57
  81. package/dist/es/components/edges/approval-edge.js +31 -27
  82. package/dist/es/components/edges/index.js +1 -1
  83. package/dist/es/components/editor-toolbar.js +116 -47
  84. package/dist/es/components/nodes/approval-node.js +11 -9
  85. package/dist/es/components/nodes/base-node.js +35 -40
  86. package/dist/es/components/nodes/cc-node.js +11 -9
  87. package/dist/es/components/nodes/condition-node.js +54 -55
  88. package/dist/es/components/nodes/end-node.js +10 -8
  89. package/dist/es/components/nodes/handle-node.js +11 -9
  90. package/dist/es/components/nodes/index.js +1 -1
  91. package/dist/es/components/nodes/node-shell.js +43 -16
  92. package/dist/es/components/nodes/start-node.js +10 -8
  93. package/dist/es/components/validation-indicator.js +162 -0
  94. package/dist/es/components/zoom-control.js +70 -65
  95. package/dist/es/constants.js +56 -21
  96. package/dist/es/hooks/use-auto-layout.js +30 -21
  97. package/dist/es/hooks/use-connection-validation.js +1 -1
  98. package/dist/es/hooks/use-drag-drop.js +26 -19
  99. package/dist/es/hooks/use-history-shortcuts.js +30 -0
  100. package/dist/es/hooks/use-row-keys.js +16 -0
  101. package/dist/es/icons.js +1 -1
  102. package/dist/es/index.js +11 -8
  103. package/dist/es/plugins/context.js +1 -1
  104. package/dist/es/plugins/index.js +1 -1
  105. package/dist/es/shared/connection-rules.js +6 -3
  106. package/dist/es/shared/flow-validation.js +470 -0
  107. package/dist/es/shared/node-placement.js +13 -0
  108. package/dist/es/shared/normalize-node-data.js +59 -0
  109. package/dist/es/shared/seed-flow.js +33 -0
  110. package/dist/es/shared/serialization.js +101 -21
  111. package/dist/es/specifications/approval.js +5 -4
  112. package/dist/es/specifications/cc.js +5 -4
  113. package/dist/es/specifications/condition.js +5 -4
  114. package/dist/es/specifications/end.js +6 -6
  115. package/dist/es/specifications/handle.js +5 -4
  116. package/dist/es/specifications/index.js +22 -21
  117. package/dist/es/specifications/start.js +6 -6
  118. package/dist/es/store/editor.js +12 -8
  119. package/dist/es/store/flow-slice.js +11 -9
  120. package/dist/es/store/graph-slice.js +128 -109
  121. package/dist/es/store/history-slice.js +53 -0
  122. package/dist/es/store/index.js +1 -1
  123. package/dist/es/store/interaction-slice.js +5 -5
  124. package/dist/es/store/validation-slice.js +18 -0
  125. package/dist/es/styles/base.js +2 -2
  126. package/dist/es/styles/index.js +2 -1
  127. package/dist/es/styles/node-colors.js +13 -0
  128. package/dist/es/styles/theme.js +59 -28
  129. package/dist/es/types.js +12 -0
  130. package/dist/types/src/components/accent-icon-badge.d.ts +24 -0
  131. package/dist/types/src/components/approval-flow-editor.d.ts +41 -0
  132. package/dist/types/src/components/config/assignee-list.d.ts +14 -0
  133. package/dist/types/{components → src/components}/config/condition-editor-modal.d.ts +1 -2
  134. package/dist/types/src/components/config/condition-operators.d.ts +6 -0
  135. package/dist/types/{components → src/components}/config/condition-rule-item.d.ts +1 -2
  136. package/dist/types/src/components/config/principal-picker.d.ts +16 -0
  137. package/dist/types/src/components/config/shared.d.ts +48 -0
  138. package/dist/types/src/components/edges/approval-edge.d.ts +3 -0
  139. package/dist/types/src/components/nodes/approval-node.d.ts +4 -0
  140. package/dist/types/src/components/nodes/cc-node.d.ts +4 -0
  141. package/dist/types/src/components/nodes/condition-node.d.ts +4 -0
  142. package/dist/types/src/components/nodes/end-node.d.ts +4 -0
  143. package/dist/types/src/components/nodes/handle-node.d.ts +4 -0
  144. package/dist/types/src/components/nodes/start-node.d.ts +4 -0
  145. package/dist/types/src/components/validation-indicator.d.ts +8 -0
  146. package/dist/types/src/constants.d.ts +76 -0
  147. package/dist/types/src/hooks/use-history-shortcuts.d.ts +18 -0
  148. package/dist/types/src/hooks/use-row-keys.d.ts +16 -0
  149. package/dist/types/src/index.d.ts +11 -0
  150. package/dist/types/src/plugins/types.d.ts +27 -0
  151. package/dist/types/src/shared/connection-rules.d.ts +23 -0
  152. package/dist/types/src/shared/flow-validation.d.ts +41 -0
  153. package/dist/types/src/shared/node-placement.d.ts +8 -0
  154. package/dist/types/src/shared/normalize-node-data.d.ts +63 -0
  155. package/dist/types/src/shared/seed-flow.d.ts +12 -0
  156. package/dist/types/src/shared/serialization.d.ts +26 -0
  157. package/dist/types/{specifications → src/specifications}/index.d.ts +2 -2
  158. package/dist/types/{specifications → src/specifications}/types.d.ts +7 -7
  159. package/dist/types/{store → src/store}/editor.d.ts +1 -1
  160. package/dist/types/src/store/history-slice.d.ts +12 -0
  161. package/dist/types/src/store/index.d.ts +2 -0
  162. package/dist/types/src/store/types.d.ts +134 -0
  163. package/dist/types/src/store/validation-slice.d.ts +9 -0
  164. package/dist/types/src/styles/index.d.ts +3 -0
  165. package/dist/types/src/styles/node-colors.d.ts +12 -0
  166. package/dist/types/{styles → src/styles}/theme.d.ts +10 -0
  167. package/dist/types/{types.d.ts → src/types.d.ts} +84 -43
  168. package/package.json +9 -7
  169. package/dist/types/components/approval-flow-editor.d.ts +0 -33
  170. package/dist/types/components/config/assignee-list.d.ts +0 -6
  171. package/dist/types/components/config/condition-operators.d.ts +0 -5
  172. package/dist/types/components/config/shared.d.ts +0 -17
  173. package/dist/types/components/edges/approval-edge.d.ts +0 -3
  174. package/dist/types/components/nodes/approval-node.d.ts +0 -4
  175. package/dist/types/components/nodes/cc-node.d.ts +0 -4
  176. package/dist/types/components/nodes/condition-node.d.ts +0 -4
  177. package/dist/types/components/nodes/end-node.d.ts +0 -4
  178. package/dist/types/components/nodes/handle-node.d.ts +0 -4
  179. package/dist/types/components/nodes/start-node.d.ts +0 -4
  180. package/dist/types/constants.d.ts +0 -24
  181. package/dist/types/index.d.ts +0 -8
  182. package/dist/types/plugins/types.d.ts +0 -31
  183. package/dist/types/shared/connection-rules.d.ts +0 -11
  184. package/dist/types/shared/serialization.d.ts +0 -12
  185. package/dist/types/store/index.d.ts +0 -2
  186. package/dist/types/store/types.d.ts +0 -53
  187. package/dist/types/styles/index.d.ts +0 -2
  188. /package/dist/types/{components → src/components}/config/approval-node-config.d.ts +0 -0
  189. /package/dist/types/{components → src/components}/config/basic-node-config.d.ts +0 -0
  190. /package/dist/types/{components → src/components}/config/cc-list.d.ts +0 -0
  191. /package/dist/types/{components → src/components}/config/cc-node-config.d.ts +0 -0
  192. /package/dist/types/{components → src/components}/config/condition-config.d.ts +0 -0
  193. /package/dist/types/{components → src/components}/config/field-permission-table.d.ts +0 -0
  194. /package/dist/types/{components → src/components}/config/handle-node-config.d.ts +0 -0
  195. /package/dist/types/{components → src/components}/config-panel.d.ts +0 -0
  196. /package/dist/types/{components → src/components}/edges/index.d.ts +0 -0
  197. /package/dist/types/{components → src/components}/editor-toolbar.d.ts +0 -0
  198. /package/dist/types/{components → src/components}/nodes/base-node.d.ts +0 -0
  199. /package/dist/types/{components → src/components}/nodes/index.d.ts +0 -0
  200. /package/dist/types/{components → src/components}/nodes/node-shell.d.ts +0 -0
  201. /package/dist/types/{components → src/components}/zoom-control.d.ts +0 -0
  202. /package/dist/types/{hooks → src/hooks}/use-auto-layout.d.ts +0 -0
  203. /package/dist/types/{hooks → src/hooks}/use-connection-validation.d.ts +0 -0
  204. /package/dist/types/{hooks → src/hooks}/use-drag-drop.d.ts +0 -0
  205. /package/dist/types/{icons.d.ts → src/icons.d.ts} +0 -0
  206. /package/dist/types/{plugins → src/plugins}/context.d.ts +0 -0
  207. /package/dist/types/{plugins → src/plugins}/index.d.ts +0 -0
  208. /package/dist/types/{specifications → src/specifications}/approval.d.ts +0 -0
  209. /package/dist/types/{specifications → src/specifications}/cc.d.ts +0 -0
  210. /package/dist/types/{specifications → src/specifications}/condition.d.ts +0 -0
  211. /package/dist/types/{specifications → src/specifications}/end.d.ts +0 -0
  212. /package/dist/types/{specifications → src/specifications}/handle.d.ts +0 -0
  213. /package/dist/types/{specifications → src/specifications}/start.d.ts +0 -0
  214. /package/dist/types/{store → src/store}/flow-slice.d.ts +0 -0
  215. /package/dist/types/{store → src/store}/graph-slice.d.ts +0 -0
  216. /package/dist/types/{store → src/store}/interaction-slice.d.ts +0 -0
  217. /package/dist/types/{styles → src/styles}/base.d.ts +0 -0
@@ -1,12 +1,13 @@
1
- /*! @vef-framework-react/approval-flow-editor v2.2.2 made by Venus | 2026-05-18T12:44:01.943Z */
2
- import { useEditorPlugins as e } from "../../plugins/context.js";
3
- import { CheckboxList as t, ConfigSection as n, FormField as r } from "./shared.js";
4
- import { AssigneeList as i } from "./assignee-list.js";
5
- import { CcList as a } from "./cc-list.js";
6
- import { FieldPermissionTable as o } from "./field-permission-table.js";
7
- import { useEditorStore as s } from "../../store/editor.js";
8
- import { css as c } from "@emotion/react";
9
- import { Checkbox as l, Input as u, InputNumber as d, Segmented as f, Select as p, globalCssVars as m } from "@vef-framework-react/components";
1
+ /*! @vef-framework-react/approval-flow-editor v2.4.0 made by Venus | 2026-06-15T15:10:33.978Z */
2
+ import { useEditorStore as e } from "../../store/editor.js";
3
+ import { PrincipalPicker as t } from "./principal-picker.js";
4
+ import { CheckboxList as n, ConfigSection as r, FormField as i } from "./shared.js";
5
+ import { AssigneeList as a } from "./assignee-list.js";
6
+ import { CcList as o } from "./cc-list.js";
7
+ import { FieldPermissionTable as s } from "./field-permission-table.js";
8
+ import { Checkbox as c, Input as l, InputNumber as u, Segmented as d, Select as f } from "@vef-framework-react/components";
9
+ import { useMemo as p } from "react";
10
+ import { useShallow as m } from "@vef-framework-react/core";
10
11
  import { Fragment as h, jsx as g, jsxs as _ } from "@emotion/react/jsx-runtime";
11
12
  //#region src/components/config/approval-node-config.tsx
12
13
  var v = [
@@ -14,10 +15,6 @@ var v = [
14
15
  label: "人工审批",
15
16
  value: "manual"
16
17
  },
17
- {
18
- label: "自动审批",
19
- value: "auto"
20
- },
21
18
  {
22
19
  label: "自动通过",
23
20
  value: "auto_pass"
@@ -34,7 +31,7 @@ var v = [
34
31
  value: "parallel"
35
32
  }], b = [
36
33
  {
37
- label: "全部通过",
34
+ label: "全部通过(一票否决)",
38
35
  value: "all"
39
36
  },
40
37
  {
@@ -44,10 +41,6 @@ var v = [
44
41
  {
45
42
  label: "按比例通过",
46
43
  value: "ratio"
47
- },
48
- {
49
- label: "任一人驳回",
50
- value: "any_reject"
51
44
  }
52
45
  ], x = [
53
46
  {
@@ -170,286 +163,302 @@ var v = [
170
163
  "before",
171
164
  "after",
172
165
  "parallel"
173
- ], M = /* @__PURE__ */ c({
174
- fontSize: 13,
175
- color: m.colorTextQuaternary,
176
- padding: "8px 0"
177
- }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwcHJvdmFsLW5vZGUtY29uZmlnLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwRitCIiwiZmlsZSI6ImFwcHJvdmFsLW5vZGUtY29uZmlnLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRkMgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGRBc3NpZ25lZVR5cGUsIEFwcHJvdmFsTm9kZURhdGEsIEZpZWxkUGVybWlzc2lvbiB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBjc3MgfSBmcm9tIFwiQGVtb3Rpb24vcmVhY3RcIjtcbmltcG9ydCB7IENoZWNrYm94LCBnbG9iYWxDc3NWYXJzLCBJbnB1dCwgSW5wdXROdW1iZXIsIFNlZ21lbnRlZCwgU2VsZWN0IH0gZnJvbSBcIkB2ZWYtZnJhbWV3b3JrLXJlYWN0L2NvbXBvbmVudHNcIjtcblxuaW1wb3J0IHsgdXNlRWRpdG9yUGx1Z2lucyB9IGZyb20gXCIuLi8uLi9wbHVnaW5zXCI7XG5pbXBvcnQgeyB1c2VFZGl0b3JTdG9yZSB9IGZyb20gXCIuLi8uLi9zdG9yZVwiO1xuaW1wb3J0IHsgQXNzaWduZWVMaXN0IH0gZnJvbSBcIi4vYXNzaWduZWUtbGlzdFwiO1xuaW1wb3J0IHsgQ2NMaXN0IH0gZnJvbSBcIi4vY2MtbGlzdFwiO1xuaW1wb3J0IHsgRmllbGRQZXJtaXNzaW9uVGFibGUgfSBmcm9tIFwiLi9maWVsZC1wZXJtaXNzaW9uLXRhYmxlXCI7XG5pbXBvcnQgeyBDaGVja2JveExpc3QsIENvbmZpZ1NlY3Rpb24sIEZvcm1GaWVsZCB9IGZyb20gXCIuL3NoYXJlZFwiO1xuXG5jb25zdCBFWEVDVVRJT05fVFlQRV9PUFRJT05TID0gW1xuICB7IGxhYmVsOiBcIuS6uuW3peWuoeaJuVwiLCB2YWx1ZTogXCJtYW51YWxcIiB9LFxuICB7IGxhYmVsOiBcIuiHquWKqOWuoeaJuVwiLCB2YWx1ZTogXCJhdXRvXCIgfSxcbiAgeyBsYWJlbDogXCLoh6rliqjpgJrov4dcIiwgdmFsdWU6IFwiYXV0b19wYXNzXCIgfSxcbiAgeyBsYWJlbDogXCLoh6rliqjmi5Lnu51cIiwgdmFsdWU6IFwiYXV0b19yZWplY3RcIiB9XG5dO1xuXG5jb25zdCBBUFBST1ZBTF9NRVRIT0RfT1BUSU9OUyA9IFtcbiAgeyBsYWJlbDogXCLkvp3mrKHlrqHmiblcIiwgdmFsdWU6IFwic2VxdWVudGlhbFwiIH0sXG4gIHsgbGFiZWw6IFwi5bm26KGM5a6h5om5XCIsIHZhbHVlOiBcInBhcmFsbGVsXCIgfVxuXTtcblxuY29uc3QgUEFTU19SVUxFX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi5YWo6YOo6YCa6L+HXCIsIHZhbHVlOiBcImFsbFwiIH0sXG4gIHsgbGFiZWw6IFwi5Lu75LiA5Lq66YCa6L+HXCIsIHZhbHVlOiBcImFueVwiIH0sXG4gIHsgbGFiZWw6IFwi5oyJ5q+U5L6L6YCa6L+HXCIsIHZhbHVlOiBcInJhdGlvXCIgfSxcbiAgeyBsYWJlbDogXCLku7vkuIDkurrpqbPlm55cIiwgdmFsdWU6IFwiYW55X3JlamVjdFwiIH1cbl07XG5cbmNvbnN0IEVNUFRZX0hBTkRMRVJfT1BUSU9OUyA9IFtcbiAgeyBsYWJlbDogXCLoh6rliqjpgJrov4dcIiwgdmFsdWU6IFwiYXV0b19wYXNzXCIgfSxcbiAgeyBsYWJlbDogXCLovazkuqTnrqHnkIblkZhcIiwgdmFsdWU6IFwidHJhbnNmZXJfYWRtaW5cIiB9LFxuICB7IGxhYmVsOiBcIui9rOS6pOS4iue6p+S4u+euoVwiLCB2YWx1ZTogXCJ0cmFuc2Zlcl9zdXBlcmlvclwiIH0sXG4gIHsgbGFiZWw6IFwi6L2s5Lqk5Y+R6LW35Lq6XCIsIHZhbHVlOiBcInRyYW5zZmVyX2FwcGxpY2FudFwiIH0sXG4gIHsgbGFiZWw6IFwi6L2s5Lqk5oyH5a6a5Lq65ZGYXCIsIHZhbHVlOiBcInRyYW5zZmVyX3NwZWNpZmllZFwiIH1cbl07XG5cbmNvbnN0IFNBTUVfQVBQTElDQU5UX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi6Ieq5Yqo6YCa6L+HXCIsIHZhbHVlOiBcImF1dG9fcGFzc1wiIH0sXG4gIHsgbGFiZWw6IFwi55Sx5pys5Lq65a6h5om5XCIsIHZhbHVlOiBcInNlbGZfYXBwcm92ZVwiIH0sXG4gIHsgbGFiZWw6IFwi6L2s5Lqk5LiK57qn5Li7566hXCIsIHZhbHVlOiBcInRyYW5zZmVyX3N1cGVyaW9yXCIgfVxuXTtcblxuY29uc3QgRFVQTElDQVRFX0hBTkRMRVJfT1BUSU9OUyA9IFtcbiAgeyBsYWJlbDogXCLml6Dmk43kvZxcIiwgdmFsdWU6IFwibm9uZVwiIH0sXG4gIHsgbGFiZWw6IFwi6Ieq5Yqo6YCa6L+HXCIsIHZhbHVlOiBcImF1dG9fcGFzc1wiIH1cbl07XG5cbmNvbnN0IEFERF9BU1NJR05FRV9UWVBFX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi5YmN5Yqg562+XCIsIHZhbHVlOiBcImJlZm9yZVwiIH0sXG4gIHsgbGFiZWw6IFwi5ZCO5Yqg562+XCIsIHZhbHVlOiBcImFmdGVyXCIgfSxcbiAgeyBsYWJlbDogXCLlubbooYzliqDnrb5cIiwgdmFsdWU6IFwicGFyYWxsZWxcIiB9XG5dO1xuXG5jb25zdCBST0xMQkFDS19UWVBFX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi5Zue6YCA5LiK5LiA6IqC54K5XCIsIHZhbHVlOiBcInByZXZpb3VzXCIgfSxcbiAgeyBsYWJlbDogXCLlm57pgIDlj5HotbfkurpcIiwgdmFsdWU6IFwic3RhcnRcIiB9LFxuICB7IGxhYmVsOiBcIuWbnumAgOaMh+WumuiKgueCuVwiLCB2YWx1ZTogXCJzcGVjaWZpZWRcIiB9LFxuICB7IGxhYmVsOiBcIuWbnumAgOS7u+aEj+iKgueCuVwiLCB2YWx1ZTogXCJhbnlcIiB9XG5dO1xuXG5jb25zdCBST0xMQkFDS19EQVRBX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi5riF6Zmk6KGo5Y2V5pWw5o2uXCIsIHZhbHVlOiBcImNsZWFyXCIgfSxcbiAgeyBsYWJlbDogXCLkv53nlZnljoblj7LmlbDmja5cIiwgdmFsdWU6IFwia2VlcFwiIH1cbl07XG5cbmNvbnN0IFRJTUVPVVRfQUNUSU9OX09QVElPTlMgPSBbXG4gIHsgbGFiZWw6IFwi5LuF5qCH6K6w6LaF5pe2XCIsIHZhbHVlOiBcIm5vbmVcIiB9LFxuICB7IGxhYmVsOiBcIuiHquWKqOmAmui/h1wiLCB2YWx1ZTogXCJhdXRvX3Bhc3NcIiB9LFxuICB7IGxhYmVsOiBcIuiHquWKqOaLkue7nVwiLCB2YWx1ZTogXCJhdXRvX3JlamVjdFwiIH0sXG4gIHsgbGFiZWw6IFwi5LuF5Y+R6YCB6YCa55+lXCIsIHZhbHVlOiBcIm5vdGlmeVwiIH0sXG4gIHsgbGFiZWw6IFwi6L2s5Lqk566h55CG5ZGYXCIsIHZhbHVlOiBcInRyYW5zZmVyX2FkbWluXCIgfVxuXTtcblxuY29uc3QgQVBQUk9WQUxfRklFTERfUEVSTUlTU0lPTlM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IEZpZWxkUGVybWlzc2lvbiB9PiA9IFtcbiAgeyBsYWJlbDogXCLlj6/op4FcIiwgdmFsdWU6IFwidmlzaWJsZVwiIH0sXG4gIHsgbGFiZWw6IFwi5Y+v57yW6L6RXCIsIHZhbHVlOiBcImVkaXRhYmxlXCIgfSxcbiAgeyBsYWJlbDogXCLpmpDol49cIiwgdmFsdWU6IFwiaGlkZGVuXCIgfSxcbiAgeyBsYWJlbDogXCLlv4XloatcIiwgdmFsdWU6IFwicmVxdWlyZWRcIiB9XG5dO1xuXG4vLyBIb2lzdGVkIHN0YWJsZSByZWZlcmVuY2VzIHRvIHByZXZlbnQgcmUtcmVuZGVyc1xuY29uc3QgRlVMTF9XSURUSF9TVFlMRSA9IHsgd2lkdGg6IFwiMTAwJVwiIH0gYXMgY29uc3Q7XG5jb25zdCBURVhUX0FSRUFfQVVUT19TSVpFID0geyBtaW5Sb3dzOiAyLCBtYXhSb3dzOiA0IH0gYXMgY29uc3Q7XG5jb25zdCBERUZBVUxUX0FERF9BU1NJR05FRV9UWVBFUzogQWRkQXNzaWduZWVUeXBlW10gPSBbXCJiZWZvcmVcIiwgXCJhZnRlclwiLCBcInBhcmFsbGVsXCJdO1xuXG5jb25zdCBwbHVnaW5QbGFjZWhvbGRlclN0eWxlID0gY3NzKHtcbiAgZm9udFNpemU6IDEzLFxuICBjb2xvcjogZ2xvYmFsQ3NzVmFycy5jb2xvclRleHRRdWF0ZXJuYXJ5LFxuICBwYWRkaW5nOiBcIjhweCAwXCJcbn0pO1xuXG5pbnRlcmZhY2UgQXBwcm92YWxOb2RlQ29uZmlnUHJvcHMge1xuICBub2RlSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IEFwcHJvdmFsTm9kZUNvbmZpZzogRkM8QXBwcm92YWxOb2RlQ29uZmlnUHJvcHM+ID0gKHsgbm9kZUlkIH0pID0+IHtcbiAgY29uc3Qgbm9kZSA9IHVzZUVkaXRvclN0b3JlKHMgPT4gcy5ub2Rlcy5maW5kKG4gPT4gbi5pZCA9PT0gbm9kZUlkKSk7XG4gIGNvbnN0IHJlYWRvbmx5ID0gdXNlRWRpdG9yU3RvcmUocyA9PiBzLnJlYWRvbmx5KTtcbiAgY29uc3QgdXBkYXRlTm9kZURhdGEgPSB1c2VFZGl0b3JTdG9yZShzID0+IHMudXBkYXRlTm9kZURhdGEpO1xuICBjb25zdCBwbHVnaW5zID0gdXNlRWRpdG9yUGx1Z2lucygpO1xuXG4gIGlmICghbm9kZSB8fCBub2RlLnR5cGUgIT09IFwiYXBwcm92YWxcIikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgeyBkYXRhIH0gPSBub2RlO1xuXG4gIGNvbnN0IHVwZGF0ZSA9IChwYXJ0aWFsOiBQYXJ0aWFsPEFwcHJvdmFsTm9kZURhdGE+KSA9PiB7XG4gICAgdXBkYXRlTm9kZURhdGEobm9kZUlkLCBwYXJ0aWFsKTtcbiAgfTtcblxuICBjb25zdCBVc2VyUGlja2VyID0gcGx1Z2lucy51c2VyUGlja2VyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiDilIDilIAgQmFzaWMgSW5mbyDilIDilIAgKi99XG4gICAgICA8Q29uZmlnU2VjdGlvbiB0aXRsZT1cIuWfuuacrOS/oeaBr1wiPlxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi6IqC54K55ZCN56ewXCI+XG4gICAgICAgICAgPElucHV0XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWuoeaJueiKgueCueWQjeensFwiXG4gICAgICAgICAgICB2YWx1ZT17ZGF0YS5sYWJlbCA/PyBcIlwifVxuICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHVwZGF0ZSh7IGxhYmVsOiBldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLoioLngrnmj4/ov7BcIj5cbiAgICAgICAgICA8SW5wdXQuVGV4dEFyZWFcbiAgICAgICAgICAgIGF1dG9TaXplPXtURVhUX0FSRUFfQVVUT19TSVpFfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCLlj6/pgInnmoToioLngrnmj4/ov7BcIlxuICAgICAgICAgICAgdmFsdWU9e2RhdGEuZGVzY3JpcHRpb24gPz8gXCJcIn1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiB1cGRhdGUoeyBkZXNjcmlwdGlvbjogZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgIDwvQ29uZmlnU2VjdGlvbj5cblxuICAgICAgey8qIOKUgOKUgCBBcHByb3ZhbCBTZXR0aW5ncyDilIDilIAgKi99XG4gICAgICA8Q29uZmlnU2VjdGlvbiB0aXRsZT1cIuWuoeaJueiuvue9rlwiPlxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi5omn6KGM57G75Z6LXCI+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgb3B0aW9ucz17RVhFQ1VUSU9OX1RZUEVfT1BUSU9OU31cbiAgICAgICAgICAgIHN0eWxlPXtGVUxMX1dJRFRIX1NUWUxFfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGEuZXhlY3V0aW9uVHlwZSA/PyBcIm1hbnVhbFwifVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHVwZGF0ZSh7IGV4ZWN1dGlvblR5cGU6IHZhbHVlIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLlrqHmibnmlrnlvI9cIj5cbiAgICAgICAgICA8U2VnbWVudGVkXG4gICAgICAgICAgICBibG9ja1xuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgb3B0aW9ucz17QVBQUk9WQUxfTUVUSE9EX09QVElPTlN9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0YS5hcHByb3ZhbE1ldGhvZCA/PyBcInBhcmFsbGVsXCJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17KHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWV0aG9kID0gU3RyaW5nKHZhbHVlKSBhcyBBcHByb3ZhbE5vZGVEYXRhW1wiYXBwcm92YWxNZXRob2RcIl07XG5cbiAgICAgICAgICAgICAgaWYgKG1ldGhvZCA9PT0gXCJzZXF1ZW50aWFsXCIpIHtcbiAgICAgICAgICAgICAgICB1cGRhdGUoe1xuICAgICAgICAgICAgICAgICAgYXBwcm92YWxNZXRob2Q6IG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgIHBhc3NSdWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBwYXNzUmF0aW86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHVwZGF0ZSh7IGFwcHJvdmFsTWV0aG9kOiBtZXRob2QgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG5cbiAgICAgICAge2RhdGEuYXBwcm92YWxNZXRob2QgPT09IFwicGFyYWxsZWxcIiAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLpgJrov4fop4TliJlcIj5cbiAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgICAgICBvcHRpb25zPXtQQVNTX1JVTEVfT1BUSU9OU31cbiAgICAgICAgICAgICAgICBzdHlsZT17RlVMTF9XSURUSF9TVFlMRX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0YS5wYXNzUnVsZSA/PyBcImFsbFwifVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB1cGRhdGUoeyBwYXNzUnVsZTogdmFsdWUgfSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0Zvcm1GaWVsZD5cblxuICAgICAgICAgICAge2RhdGEucGFzc1J1bGUgPT09IFwicmF0aW9cIiAmJiAoXG4gICAgICAgICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLpgJrov4fmr5TkvosgKCUpXCI+XG4gICAgICAgICAgICAgICAgPElucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAgICAgICBtYXg9ezEwMH1cbiAgICAgICAgICAgICAgICAgIG1pbj17MX1cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtGVUxMX1dJRFRIX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e01hdGgucm91bmQoKGRhdGEucGFzc1JhdGlvID8/IDEpICogMTAwKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB1cGRhdGUoeyBwYXNzUmF0aW86ICh2YWx1ZSA/PyAxMDApIC8gMTAwIH0pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvQ29uZmlnU2VjdGlvbj5cblxuICAgICAgey8qIOKUgOKUgCBBc3NpZ25lZXMg4pSA4pSAICovfVxuICAgICAgPENvbmZpZ1NlY3Rpb24gdGl0bGU9XCLlrqHmibnkurpcIj5cbiAgICAgICAgPEFzc2lnbmVlTGlzdCBub2RlSWQ9e25vZGVJZH0gLz5cbiAgICAgIDwvQ29uZmlnU2VjdGlvbj5cblxuICAgICAgey8qIOKUgOKUgCBQZXJzb25uZWwgU2V0dGluZ3Mg4pSA4pSAICovfVxuICAgICAgPENvbmZpZ1NlY3Rpb24gdGl0bGU9XCLkurrlkZjorr7nva5cIj5cbiAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cIuaXoOWuoeaJueS6uuaXtlwiPlxuICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIG9wdGlvbnM9e0VNUFRZX0hBTkRMRVJfT1BUSU9OU31cbiAgICAgICAgICAgIHN0eWxlPXtGVUxMX1dJRFRIX1NUWUxFfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGEuZW1wdHlIYW5kbGVyID8/IFwiYXV0b19wYXNzXCJ9XG4gICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gdXBkYXRlKHsgZW1wdHlIYW5kbGVyOiB2YWx1ZSB9KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0Zvcm1GaWVsZD5cblxuICAgICAgICB7ZGF0YS5lbXB0eUhhbmRsZXIgPT09IFwidHJhbnNmZXJfc3BlY2lmaWVkXCIgJiYgKFxuICAgICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLmjIflrprovazkuqTkurpcIj5cbiAgICAgICAgICAgIHtVc2VyUGlja2VyXG4gICAgICAgICAgICAgID8gKFxuICAgICAgICAgICAgICAgICAgPFVzZXJQaWNrZXJcbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0YS5mYWxsYmFja1VzZXJJZHMgPz8gW119XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtpZHMgPT4gdXBkYXRlKHsgZmFsbGJhY2tVc2VySWRzOiBpZHMgfSl9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgOiA8ZGl2IGNzcz17cGx1Z2luUGxhY2Vob2xkZXJTdHlsZX0+5pyq5o+Q5L6b55So5oi36YCJ5oup5Zmo5o+S5Lu2PC9kaXY+fVxuICAgICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgICApfVxuXG4gICAgICAgIHtkYXRhLmVtcHR5SGFuZGxlciA9PT0gXCJ0cmFuc2Zlcl9hZG1pblwiICYmIChcbiAgICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi6IqC54K5566h55CG5ZGYXCI+XG4gICAgICAgICAgICB7VXNlclBpY2tlclxuICAgICAgICAgICAgICA/IChcbiAgICAgICAgICAgICAgICAgIDxVc2VyUGlja2VyXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGEuYWRtaW5Vc2VySWRzID8/IFtdfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aWRzID0+IHVwZGF0ZSh7IGFkbWluVXNlcklkczogaWRzIH0pfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIDogPGRpdiBjc3M9e3BsdWdpblBsYWNlaG9sZGVyU3R5bGV9PuacquaPkOS+m+eUqOaIt+mAieaLqeWZqOaPkuS7tjwvZGl2Pn1cbiAgICAgICAgICA8L0Zvcm1GaWVsZD5cbiAgICAgICAgKX1cblxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi5a6h5om55Lq65LiO5Y+R6LW35Lq655u45ZCMXCI+XG4gICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgb3B0aW9ucz17U0FNRV9BUFBMSUNBTlRfT1BUSU9OU31cbiAgICAgICAgICAgIHN0eWxlPXtGVUxMX1dJRFRIX1NUWUxFfVxuICAgICAgICAgICAgdmFsdWU9e2RhdGEuc2FtZUFwcGxpY2FudEFjdGlvbiA/PyBcInNlbGZfYXBwcm92ZVwifVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHVwZGF0ZSh7IHNhbWVBcHBsaWNhbnRBY3Rpb246IHZhbHVlIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgIDxGb3JtRmllbGQgbGFiZWw9XCLph43lpI3lrqHmibnkurpcIj5cbiAgICAgICAgICA8U2VsZWN0XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICBvcHRpb25zPXtEVVBMSUNBVEVfSEFORExFUl9PUFRJT05TfVxuICAgICAgICAgICAgc3R5bGU9e0ZVTExfV0lEVEhfU1RZTEV9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0YS5kdXBsaWNhdGVIYW5kbGVyQWN0aW9uID8/IFwibm9uZVwifVxuICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHVwZGF0ZSh7IGR1cGxpY2F0ZUhhbmRsZXJBY3Rpb246IHZhbHVlIH0pfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgPC9Db25maWdTZWN0aW9uPlxuXG4gICAgICB7Lyog4pSA4pSAIENDcyDilIDilIAgKi99XG4gICAgICA8Q29uZmlnU2VjdGlvbiB0aXRsZT1cIuaKhOmAgeS6ulwiPlxuICAgICAgICA8Q2NMaXN0XG4gICAgICAgICAgc2hvd1RpbWluZ1xuICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICB2YWx1ZT17ZGF0YS5jY3MgPz8gW119XG4gICAgICAgICAgb25DaGFuZ2U9e2NjcyA9PiB1cGRhdGUoeyBjY3MgfSl9XG4gICAgICAgIC8+XG4gICAgICA8L0NvbmZpZ1NlY3Rpb24+XG5cbiAgICAgIHsvKiDilIDilIAgUGVybWlzc2lvbnMg4pSA4pSAICovfVxuICAgICAgPENvbmZpZ1NlY3Rpb24gdGl0bGU9XCLmnYPpmZDphY3nva5cIj5cbiAgICAgICAgPENoZWNrYm94TGlzdD5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGNoZWNrZWQ9e2RhdGEuaXNSb2xsYmFja0FsbG93ZWQgPz8gdHJ1ZX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiB1cGRhdGUoeyBpc1JvbGxiYWNrQWxsb3dlZDogZXZlbnQudGFyZ2V0LmNoZWNrZWQgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAg5YWB6K645Zue6YCAXG4gICAgICAgICAgPC9DaGVja2JveD5cblxuICAgICAgICAgIHsoZGF0YS5pc1JvbGxiYWNrQWxsb3dlZCA/PyB0cnVlKSAmJiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi5Zue6YCA57G75Z6LXCI+XG4gICAgICAgICAgICAgICAgPFNlbGVjdFxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgICAgICAgb3B0aW9ucz17Uk9MTEJBQ0tfVFlQRV9PUFRJT05TfVxuICAgICAgICAgICAgICAgICAgc3R5bGU9e0ZVTExfV0lEVEhfU1RZTEV9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0YS5yb2xsYmFja1R5cGUgPz8gXCJwcmV2aW91c1wifVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHVwZGF0ZSh7IHJvbGxiYWNrVHlwZTogdmFsdWUgfSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Gb3JtRmllbGQ+XG5cbiAgICAgICAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cIuWbnumAgOaVsOaNruetlueVpVwiPlxuICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e1JPTExCQUNLX0RBVEFfT1BUSU9OU31cbiAgICAgICAgICAgICAgICAgIHN0eWxlPXtGVUxMX1dJRFRIX1NUWUxFfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e2RhdGEucm9sbGJhY2tEYXRhU3RyYXRlZ3kgPz8gXCJrZWVwXCJ9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17dmFsdWUgPT4gdXBkYXRlKHsgcm9sbGJhY2tEYXRhU3RyYXRlZ3k6IHZhbHVlIH0pfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvRm9ybUZpZWxkPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgY2hlY2tlZD17ZGF0YS5pc1RyYW5zZmVyQWxsb3dlZCA/PyB0cnVlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHVwZGF0ZSh7IGlzVHJhbnNmZXJBbGxvd2VkOiBldmVudC50YXJnZXQuY2hlY2tlZCB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICDlhYHorrjovazlip5cbiAgICAgICAgICA8L0NoZWNrYm94PlxuXG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBjaGVja2VkPXtkYXRhLmlzQWRkQXNzaWduZWVBbGxvd2VkID8/IHRydWV9XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gdXBkYXRlKHsgaXNBZGRBc3NpZ25lZUFsbG93ZWQ6IGV2ZW50LnRhcmdldC5jaGVja2VkIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIOWFgeiuuOWKoOetvlxuICAgICAgICAgIDwvQ2hlY2tib3g+XG5cbiAgICAgICAgICB7KGRhdGEuaXNBZGRBc3NpZ25lZUFsbG93ZWQgPz8gdHJ1ZSkgJiYgKFxuICAgICAgICAgICAgPEZvcm1GaWVsZCBsYWJlbD1cIuWKoOetvuexu+Wei1wiPlxuICAgICAgICAgICAgICA8Q2hlY2tib3guR3JvdXBcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17QUREX0FTU0lHTkVFX1RZUEVfT1BUSU9OU31cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0YS5hZGRBc3NpZ25lZVR5cGVzID8/IERFRkFVTFRfQUREX0FTU0lHTkVFX1RZUEVTfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZXMgPT4gdXBkYXRlKHsgYWRkQXNzaWduZWVUeXBlczogdmFsdWVzIGFzIEFkZEFzc2lnbmVlVHlwZVtdIH0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICAgICAgKX1cblxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgY2hlY2tlZD17ZGF0YS5pc1JlbW92ZUFzc2lnbmVlQWxsb3dlZCA/PyB0cnVlfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IHVwZGF0ZSh7IGlzUmVtb3ZlQXNzaWduZWVBbGxvd2VkOiBldmVudC50YXJnZXQuY2hlY2tlZCB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICDlhYHorrjlh4/nrb5cbiAgICAgICAgICA8L0NoZWNrYm94PlxuXG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBjaGVja2VkPXtkYXRhLmlzTWFudWFsQ2NBbGxvd2VkID8/IHRydWV9XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gdXBkYXRlKHsgaXNNYW51YWxDY0FsbG93ZWQ6IGV2ZW50LnRhcmdldC5jaGVja2VkIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIOWFgeiuuOaJi+WKqOaKhOmAgVxuICAgICAgICAgIDwvQ2hlY2tib3g+XG5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGNoZWNrZWQ9e2RhdGEuaXNPcGluaW9uUmVxdWlyZWQgPz8gZmFsc2V9XG4gICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICBvbkNoYW5nZT17ZXZlbnQgPT4gdXBkYXRlKHsgaXNPcGluaW9uUmVxdWlyZWQ6IGV2ZW50LnRhcmdldC5jaGVja2VkIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIOaEj+ingeW/heWhq1xuICAgICAgICAgIDwvQ2hlY2tib3g+XG4gICAgICAgIDwvQ2hlY2tib3hMaXN0PlxuICAgICAgPC9Db25maWdTZWN0aW9uPlxuXG4gICAgICB7Lyog4pSA4pSAIFRpbWVvdXQg4pSA4pSAICovfVxuICAgICAgPENvbmZpZ1NlY3Rpb24gZGVmYXVsdE9wZW49e2ZhbHNlfSB0aXRsZT1cIui2heaXtuiuvue9rlwiPlxuICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi6LaF5pe25pe26Ze0KOWwj+aXtilcIj5cbiAgICAgICAgICA8SW5wdXROdW1iZXJcbiAgICAgICAgICAgIGRpc2FibGVkPXtyZWFkb25seX1cbiAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiMCDooajnpLrkuI3pmZDml7ZcIlxuICAgICAgICAgICAgcHJlY2lzaW9uPXswfVxuICAgICAgICAgICAgc3R5bGU9e0ZVTExfV0lEVEhfU1RZTEV9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0YS50aW1lb3V0SG91cnMgPz8gMH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB1cGRhdGUoeyB0aW1lb3V0SG91cnM6IHZhbHVlID8/IDAgfSl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Gb3JtRmllbGQ+XG5cbiAgICAgICAgeyhkYXRhLnRpbWVvdXRIb3VycyA/PyAwKSA+IDAgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi6LaF5pe25aSE55CGXCI+XG4gICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgICAgICAgb3B0aW9ucz17VElNRU9VVF9BQ1RJT05fT1BUSU9OU31cbiAgICAgICAgICAgICAgICBzdHlsZT17RlVMTF9XSURUSF9TVFlMRX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17ZGF0YS50aW1lb3V0QWN0aW9uID8/IFwibm9uZVwifVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB1cGRhdGUoeyB0aW1lb3V0QWN0aW9uOiB2YWx1ZSB9KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi5o+Q5YmN5o+Q6YaSKOWwj+aXtilcIj5cbiAgICAgICAgICAgICAgPElucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICBwcmVjaXNpb249ezB9XG4gICAgICAgICAgICAgICAgc3R5bGU9e0ZVTExfV0lEVEhfU1RZTEV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2RhdGEudGltZW91dE5vdGlmeUJlZm9yZUhvdXJzID8/IDB9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e3ZhbHVlID0+IHVwZGF0ZSh7IHRpbWVvdXROb3RpZnlCZWZvcmVIb3VyczogdmFsdWUgPz8gMCB9KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvRm9ybUZpZWxkPlxuXG4gICAgICAgICAgICA8Rm9ybUZpZWxkIGxhYmVsPVwi5YKs5Yqe5Ya35Y20KOWIhumSnylcIj5cbiAgICAgICAgICAgICAgPElucHV0TnVtYmVyXG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3JlYWRvbmx5fVxuICAgICAgICAgICAgICAgIG1pbj17MH1cbiAgICAgICAgICAgICAgICBwcmVjaXNpb249ezB9XG4gICAgICAgICAgICAgICAgc3R5bGU9e0ZVTExfV0lEVEhfU1RZTEV9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2RhdGEudXJnZUNvb2xkb3duTWludXRlcyA/PyAwfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXt2YWx1ZSA9PiB1cGRhdGUoeyB1cmdlQ29vbGRvd25NaW51dGVzOiB2YWx1ZSA/PyAwIH0pfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Gb3JtRmllbGQ+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L0NvbmZpZ1NlY3Rpb24+XG5cbiAgICAgIHsvKiDilIDilIAgRmllbGQgUGVybWlzc2lvbnMg4pSA4pSAICovfVxuICAgICAgPENvbmZpZ1NlY3Rpb24gZGVmYXVsdE9wZW49e2ZhbHNlfSB0aXRsZT1cIuihqOWNleadg+mZkFwiPlxuICAgICAgICA8RmllbGRQZXJtaXNzaW9uVGFibGVcbiAgICAgICAgICBkaXNhYmxlZD17cmVhZG9ubHl9XG4gICAgICAgICAgcGVybWlzc2lvbnM9e0FQUFJPVkFMX0ZJRUxEX1BFUk1JU1NJT05TfVxuICAgICAgICAgIHZhbHVlPXtkYXRhLmZpZWxkUGVybWlzc2lvbnMgPz8ge319XG4gICAgICAgICAgb25DaGFuZ2U9e2ZpZWxkUGVybWlzc2lvbnMgPT4gdXBkYXRlKHsgZmllbGRQZXJtaXNzaW9ucyB9KX1cbiAgICAgICAgLz5cbiAgICAgIDwvQ29uZmlnU2VjdGlvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXX0= */"), N = ({ nodeId: c }) => {
178
- let m = s((e) => e.nodes.find((e) => e.id === c)), N = s((e) => e.readonly), P = s((e) => e.updateNodeData), F = e();
179
- if (!m || m.type !== "approval") return null;
180
- let { data: I } = m, L = (e) => {
181
- P(c, e);
182
- }, R = F.userPicker;
166
+ ], M = [], N = ({ nodeId: N }) => {
167
+ let P = e((e) => {
168
+ let t = e.nodes.find((e) => e.id === N);
169
+ return t?.type === "approval" ? t.data : void 0;
170
+ }), F = e((e) => e.readonly), I = e((e) => e.updateNodeData), L = e(m((e) => {
171
+ let t = e.nodes.find((e) => e.id === N);
172
+ return !t || t.type !== "approval" || t.data.rollbackType !== "specified" ? M : e.nodes.filter((e) => e.id !== N && (e.type === "approval" || e.type === "handle"));
173
+ })), R = p(() => L.map((e) => ({
174
+ label: e.data.name ?? e.id,
175
+ value: e.id
176
+ })), [L]);
177
+ if (!P) return null;
178
+ let z = (e) => {
179
+ I(N, e);
180
+ };
183
181
  return /* @__PURE__ */ _(h, { children: [
184
- /* @__PURE__ */ _(n, {
182
+ /* @__PURE__ */ _(r, {
185
183
  title: "基本信息",
186
- children: [/* @__PURE__ */ g(r, {
184
+ children: [/* @__PURE__ */ g(i, {
187
185
  label: "节点名称",
188
- children: /* @__PURE__ */ g(u, {
189
- disabled: N,
186
+ children: /* @__PURE__ */ g(l, {
187
+ disabled: F,
190
188
  placeholder: "请输入审批节点名称",
191
- value: I.label ?? "",
192
- onChange: (e) => L({ label: e.currentTarget.value })
189
+ value: P.name ?? "",
190
+ onChange: (e) => z({ name: e.currentTarget.value })
193
191
  })
194
- }), /* @__PURE__ */ g(r, {
192
+ }), /* @__PURE__ */ g(i, {
195
193
  label: "节点描述",
196
- children: /* @__PURE__ */ g(u.TextArea, {
194
+ children: /* @__PURE__ */ g(l.TextArea, {
197
195
  autoSize: A,
198
- disabled: N,
196
+ disabled: F,
199
197
  placeholder: "可选的节点描述",
200
- value: I.description ?? "",
201
- onChange: (e) => L({ description: e.currentTarget.value })
198
+ value: P.description ?? "",
199
+ onChange: (e) => z({ description: e.currentTarget.value })
202
200
  })
203
201
  })]
204
202
  }),
205
- /* @__PURE__ */ _(n, {
203
+ /* @__PURE__ */ _(r, {
206
204
  title: "审批设置",
207
205
  children: [
208
- /* @__PURE__ */ g(r, {
206
+ /* @__PURE__ */ g(i, {
209
207
  label: "执行类型",
210
- children: /* @__PURE__ */ g(p, {
211
- disabled: N,
208
+ children: /* @__PURE__ */ g(f, {
209
+ disabled: F,
212
210
  options: v,
213
211
  style: k,
214
- value: I.executionType ?? "manual",
215
- onChange: (e) => L({ executionType: e })
212
+ value: P.executionType ?? "manual",
213
+ onChange: (e) => z({ executionType: e })
216
214
  })
217
215
  }),
218
- /* @__PURE__ */ g(r, {
216
+ /* @__PURE__ */ g(i, {
219
217
  label: "审批方式",
220
- children: /* @__PURE__ */ g(f, {
218
+ children: /* @__PURE__ */ g(d, {
221
219
  block: !0,
222
- disabled: N,
220
+ disabled: F,
223
221
  options: y,
224
- value: I.approvalMethod ?? "parallel",
222
+ value: P.approvalMethod ?? "parallel",
225
223
  onChange: (e) => {
226
- let t = String(e);
227
- L(t === "sequential" ? {
228
- approvalMethod: t,
229
- passRule: void 0,
230
- passRatio: void 0
231
- } : { approvalMethod: t });
224
+ (e === "sequential" || e === "parallel") && z({ approvalMethod: e });
232
225
  }
233
226
  })
234
227
  }),
235
- I.approvalMethod === "parallel" && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(r, {
228
+ P.approvalMethod === "parallel" && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(i, {
236
229
  label: "通过规则",
237
- children: /* @__PURE__ */ g(p, {
238
- disabled: N,
230
+ children: /* @__PURE__ */ g(f, {
231
+ disabled: F,
239
232
  options: b,
240
233
  style: k,
241
- value: I.passRule ?? "all",
242
- onChange: (e) => L({ passRule: e })
234
+ value: P.passRule ?? "all",
235
+ onChange: (e) => z({ passRule: e })
243
236
  })
244
- }), I.passRule === "ratio" && /* @__PURE__ */ g(r, {
237
+ }), P.passRule === "ratio" && /* @__PURE__ */ g(i, {
245
238
  label: "通过比例 (%)",
246
- children: /* @__PURE__ */ g(d, {
247
- disabled: N,
239
+ children: /* @__PURE__ */ g(u, {
240
+ disabled: F,
248
241
  max: 100,
249
242
  min: 1,
250
243
  style: k,
251
- value: Math.round((I.passRatio ?? 1) * 100),
252
- onChange: (e) => L({ passRatio: (e ?? 100) / 100 })
244
+ value: P.passRatio ?? 100,
245
+ onChange: (e) => z({ passRatio: e ?? 100 })
253
246
  })
254
247
  })] })
255
248
  ]
256
249
  }),
257
- /* @__PURE__ */ g(n, {
250
+ /* @__PURE__ */ g(r, {
258
251
  title: "审批人",
259
- children: /* @__PURE__ */ g(i, { nodeId: c })
252
+ children: /* @__PURE__ */ g(a, {
253
+ disabled: F,
254
+ value: P.assignees ?? [],
255
+ onChange: (e) => z({ assignees: e })
256
+ })
260
257
  }),
261
- /* @__PURE__ */ _(n, {
258
+ /* @__PURE__ */ _(r, {
262
259
  title: "人员设置",
263
260
  children: [
264
- /* @__PURE__ */ g(r, {
261
+ /* @__PURE__ */ g(i, {
265
262
  label: "无审批人时",
266
- children: /* @__PURE__ */ g(p, {
267
- disabled: N,
263
+ children: /* @__PURE__ */ g(f, {
264
+ disabled: F,
268
265
  options: x,
269
266
  style: k,
270
- value: I.emptyHandler ?? "auto_pass",
271
- onChange: (e) => L({ emptyHandler: e })
267
+ value: P.emptyAssigneeAction ?? "auto_pass",
268
+ onChange: (e) => z({ emptyAssigneeAction: e })
272
269
  })
273
270
  }),
274
- I.emptyHandler === "transfer_specified" && /* @__PURE__ */ g(r, {
271
+ P.emptyAssigneeAction === "transfer_specified" && /* @__PURE__ */ g(i, {
275
272
  label: "指定转交人",
276
- children: R ? /* @__PURE__ */ g(R, {
277
- disabled: N,
278
- value: I.fallbackUserIds ?? [],
279
- onChange: (e) => L({ fallbackUserIds: e })
280
- }) : /* @__PURE__ */ g("div", {
281
- css: M,
282
- children: "未提供用户选择器插件"
273
+ children: /* @__PURE__ */ g(t, {
274
+ disabled: F,
275
+ kind: "user",
276
+ value: P.fallbackUserIds ?? [],
277
+ onChange: (e) => z({ fallbackUserIds: e })
283
278
  })
284
279
  }),
285
- I.emptyHandler === "transfer_admin" && /* @__PURE__ */ g(r, {
280
+ P.emptyAssigneeAction === "transfer_admin" && /* @__PURE__ */ g(i, {
286
281
  label: "节点管理员",
287
- children: R ? /* @__PURE__ */ g(R, {
288
- disabled: N,
289
- value: I.adminUserIds ?? [],
290
- onChange: (e) => L({ adminUserIds: e })
291
- }) : /* @__PURE__ */ g("div", {
292
- css: M,
293
- children: "未提供用户选择器插件"
282
+ children: /* @__PURE__ */ g(t, {
283
+ disabled: F,
284
+ kind: "user",
285
+ value: P.adminUserIds ?? [],
286
+ onChange: (e) => z({ adminUserIds: e })
294
287
  })
295
288
  }),
296
- /* @__PURE__ */ g(r, {
289
+ /* @__PURE__ */ g(i, {
297
290
  label: "审批人与发起人相同",
298
- children: /* @__PURE__ */ g(p, {
299
- disabled: N,
291
+ children: /* @__PURE__ */ g(f, {
292
+ disabled: F,
300
293
  options: S,
301
294
  style: k,
302
- value: I.sameApplicantAction ?? "self_approve",
303
- onChange: (e) => L({ sameApplicantAction: e })
295
+ value: P.sameApplicantAction ?? "self_approve",
296
+ onChange: (e) => z({ sameApplicantAction: e })
304
297
  })
305
298
  }),
306
- /* @__PURE__ */ g(r, {
299
+ /* @__PURE__ */ g(i, {
307
300
  label: "重复审批人",
308
- children: /* @__PURE__ */ g(p, {
309
- disabled: N,
301
+ children: /* @__PURE__ */ g(f, {
302
+ disabled: F,
310
303
  options: C,
311
304
  style: k,
312
- value: I.duplicateHandlerAction ?? "none",
313
- onChange: (e) => L({ duplicateHandlerAction: e })
305
+ value: P.consecutiveApproverAction ?? "none",
306
+ onChange: (e) => z({ consecutiveApproverAction: e })
314
307
  })
315
308
  })
316
309
  ]
317
310
  }),
318
- /* @__PURE__ */ g(n, {
311
+ /* @__PURE__ */ g(r, {
319
312
  title: "抄送人",
320
- children: /* @__PURE__ */ g(a, {
313
+ children: /* @__PURE__ */ g(o, {
321
314
  showTiming: !0,
322
- disabled: N,
323
- value: I.ccs ?? [],
324
- onChange: (e) => L({ ccs: e })
315
+ disabled: F,
316
+ value: P.ccs ?? [],
317
+ onChange: (e) => z({ ccs: e })
325
318
  })
326
319
  }),
327
- /* @__PURE__ */ g(n, {
320
+ /* @__PURE__ */ g(r, {
328
321
  title: "权限配置",
329
- children: /* @__PURE__ */ _(t, { children: [
330
- /* @__PURE__ */ g(l, {
331
- checked: I.isRollbackAllowed ?? !0,
332
- disabled: N,
333
- onChange: (e) => L({ isRollbackAllowed: e.target.checked }),
322
+ children: /* @__PURE__ */ _(n, { children: [
323
+ /* @__PURE__ */ g(c, {
324
+ checked: P.isRollbackAllowed ?? !0,
325
+ disabled: F,
326
+ onChange: (e) => z({ isRollbackAllowed: e.target.checked }),
334
327
  children: "允许回退"
335
328
  }),
336
- (I.isRollbackAllowed ?? !0) && /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(r, {
337
- label: "回退类型",
338
- children: /* @__PURE__ */ g(p, {
339
- disabled: N,
340
- options: T,
341
- style: k,
342
- value: I.rollbackType ?? "previous",
343
- onChange: (e) => L({ rollbackType: e })
344
- })
345
- }), /* @__PURE__ */ g(r, {
346
- label: "回退数据策略",
347
- children: /* @__PURE__ */ g(p, {
348
- disabled: N,
349
- options: E,
350
- style: k,
351
- value: I.rollbackDataStrategy ?? "keep",
352
- onChange: (e) => L({ rollbackDataStrategy: e })
329
+ (P.isRollbackAllowed ?? !0) && /* @__PURE__ */ _(h, { children: [
330
+ /* @__PURE__ */ g(i, {
331
+ label: "回退类型",
332
+ children: /* @__PURE__ */ g(f, {
333
+ disabled: F,
334
+ options: T,
335
+ style: k,
336
+ value: P.rollbackType ?? "previous",
337
+ onChange: (e) => z({ rollbackType: e })
338
+ })
339
+ }),
340
+ /* @__PURE__ */ g(i, {
341
+ label: "回退数据策略",
342
+ children: /* @__PURE__ */ g(f, {
343
+ disabled: F,
344
+ options: E,
345
+ style: k,
346
+ value: P.rollbackDataStrategy ?? "keep",
347
+ onChange: (e) => z({ rollbackDataStrategy: e })
348
+ })
349
+ }),
350
+ P.rollbackType === "specified" && /* @__PURE__ */ g(i, {
351
+ label: "回退目标节点",
352
+ children: /* @__PURE__ */ g(f, {
353
+ disabled: F,
354
+ mode: "multiple",
355
+ options: R,
356
+ placeholder: "选择可回退到的节点",
357
+ style: k,
358
+ value: P.rollbackTargetKeys ?? [],
359
+ onChange: (e) => z({ rollbackTargetKeys: e })
360
+ })
353
361
  })
354
- })] }),
355
- /* @__PURE__ */ g(l, {
356
- checked: I.isTransferAllowed ?? !0,
357
- disabled: N,
358
- onChange: (e) => L({ isTransferAllowed: e.target.checked }),
362
+ ] }),
363
+ /* @__PURE__ */ g(c, {
364
+ checked: P.isTransferAllowed ?? !0,
365
+ disabled: F,
366
+ onChange: (e) => z({ isTransferAllowed: e.target.checked }),
359
367
  children: "允许转办"
360
368
  }),
361
- /* @__PURE__ */ g(l, {
362
- checked: I.isAddAssigneeAllowed ?? !0,
363
- disabled: N,
364
- onChange: (e) => L({ isAddAssigneeAllowed: e.target.checked }),
369
+ /* @__PURE__ */ g(c, {
370
+ checked: P.isAddAssigneeAllowed ?? !0,
371
+ disabled: F,
372
+ onChange: (e) => z({ isAddAssigneeAllowed: e.target.checked }),
365
373
  children: "允许加签"
366
374
  }),
367
- (I.isAddAssigneeAllowed ?? !0) && /* @__PURE__ */ g(r, {
375
+ (P.isAddAssigneeAllowed ?? !0) && /* @__PURE__ */ g(i, {
368
376
  label: "加签类型",
369
- children: /* @__PURE__ */ g(l.Group, {
370
- disabled: N,
377
+ children: /* @__PURE__ */ g(c.Group, {
378
+ disabled: F,
371
379
  options: w,
372
- value: I.addAssigneeTypes ?? j,
373
- onChange: (e) => L({ addAssigneeTypes: e })
380
+ value: P.addAssigneeTypes ?? j,
381
+ onChange: (e) => z({ addAssigneeTypes: e })
374
382
  })
375
383
  }),
376
- /* @__PURE__ */ g(l, {
377
- checked: I.isRemoveAssigneeAllowed ?? !0,
378
- disabled: N,
379
- onChange: (e) => L({ isRemoveAssigneeAllowed: e.target.checked }),
384
+ /* @__PURE__ */ g(c, {
385
+ checked: P.isRemoveAssigneeAllowed ?? !0,
386
+ disabled: F,
387
+ onChange: (e) => z({ isRemoveAssigneeAllowed: e.target.checked }),
380
388
  children: "允许减签"
381
389
  }),
382
- /* @__PURE__ */ g(l, {
383
- checked: I.isManualCcAllowed ?? !0,
384
- disabled: N,
385
- onChange: (e) => L({ isManualCcAllowed: e.target.checked }),
390
+ /* @__PURE__ */ g(c, {
391
+ checked: P.isManualCcAllowed ?? !0,
392
+ disabled: F,
393
+ onChange: (e) => z({ isManualCcAllowed: e.target.checked }),
386
394
  children: "允许手动抄送"
387
395
  }),
388
- /* @__PURE__ */ g(l, {
389
- checked: I.isOpinionRequired ?? !1,
390
- disabled: N,
391
- onChange: (e) => L({ isOpinionRequired: e.target.checked }),
396
+ /* @__PURE__ */ g(c, {
397
+ checked: P.isOpinionRequired ?? !1,
398
+ disabled: F,
399
+ onChange: (e) => z({ isOpinionRequired: e.target.checked }),
392
400
  children: "意见必填"
393
401
  })
394
402
  ] })
395
403
  }),
396
- /* @__PURE__ */ _(n, {
404
+ /* @__PURE__ */ _(r, {
397
405
  defaultOpen: !1,
398
406
  title: "超时设置",
399
- children: [/* @__PURE__ */ g(r, {
407
+ children: [/* @__PURE__ */ g(i, {
400
408
  label: "超时时间(小时)",
401
- children: /* @__PURE__ */ g(d, {
402
- disabled: N,
409
+ children: /* @__PURE__ */ g(u, {
410
+ disabled: F,
403
411
  min: 0,
404
412
  placeholder: "0 表示不限时",
405
413
  precision: 0,
406
414
  style: k,
407
- value: I.timeoutHours ?? 0,
408
- onChange: (e) => L({ timeoutHours: e ?? 0 })
415
+ value: P.timeoutHours ?? 0,
416
+ onChange: (e) => z({ timeoutHours: e ?? 0 })
409
417
  })
410
- }), (I.timeoutHours ?? 0) > 0 && /* @__PURE__ */ _(h, { children: [
411
- /* @__PURE__ */ g(r, {
418
+ }), (P.timeoutHours ?? 0) > 0 && /* @__PURE__ */ _(h, { children: [
419
+ /* @__PURE__ */ g(i, {
412
420
  label: "超时处理",
413
- children: /* @__PURE__ */ g(p, {
414
- disabled: N,
421
+ children: /* @__PURE__ */ g(f, {
422
+ disabled: F,
415
423
  options: D,
416
424
  style: k,
417
- value: I.timeoutAction ?? "none",
418
- onChange: (e) => L({ timeoutAction: e })
425
+ value: P.timeoutAction ?? "none",
426
+ onChange: (e) => z({ timeoutAction: e })
419
427
  })
420
428
  }),
421
- /* @__PURE__ */ g(r, {
429
+ /* @__PURE__ */ g(i, {
422
430
  label: "提前提醒(小时)",
423
- children: /* @__PURE__ */ g(d, {
424
- disabled: N,
431
+ children: /* @__PURE__ */ g(u, {
432
+ disabled: F,
425
433
  min: 0,
426
434
  precision: 0,
427
435
  style: k,
428
- value: I.timeoutNotifyBeforeHours ?? 0,
429
- onChange: (e) => L({ timeoutNotifyBeforeHours: e ?? 0 })
436
+ value: P.timeoutNotifyBeforeHours ?? 0,
437
+ onChange: (e) => z({ timeoutNotifyBeforeHours: e ?? 0 })
430
438
  })
431
439
  }),
432
- /* @__PURE__ */ g(r, {
440
+ /* @__PURE__ */ g(i, {
433
441
  label: "催办冷却(分钟)",
434
- children: /* @__PURE__ */ g(d, {
435
- disabled: N,
442
+ children: /* @__PURE__ */ g(u, {
443
+ disabled: F,
436
444
  min: 0,
445
+ placeholder: "0 表示使用默认值 30 分钟",
437
446
  precision: 0,
438
447
  style: k,
439
- value: I.urgeCooldownMinutes ?? 0,
440
- onChange: (e) => L({ urgeCooldownMinutes: e ?? 0 })
448
+ value: P.urgeCooldownMinutes ?? 0,
449
+ onChange: (e) => z({ urgeCooldownMinutes: e ?? 0 })
441
450
  })
442
451
  })
443
452
  ] })]
444
453
  }),
445
- /* @__PURE__ */ g(n, {
454
+ /* @__PURE__ */ g(r, {
446
455
  defaultOpen: !1,
447
456
  title: "表单权限",
448
- children: /* @__PURE__ */ g(o, {
449
- disabled: N,
457
+ children: /* @__PURE__ */ g(s, {
458
+ disabled: F,
450
459
  permissions: O,
451
- value: I.fieldPermissions ?? {},
452
- onChange: (e) => L({ fieldPermissions: e })
460
+ value: P.fieldPermissions ?? {},
461
+ onChange: (e) => z({ fieldPermissions: e })
453
462
  })
454
463
  })
455
464
  ] });