@nocobase/flow-engine 2.0.0-alpha.10

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 (638) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +30 -0
  3. package/lib/ContextPathProxy.d.ts +17 -0
  4. package/lib/ContextPathProxy.js +65 -0
  5. package/lib/ElementProxy.d.ts +17 -0
  6. package/lib/ElementProxy.js +93 -0
  7. package/lib/FlowContextProvider.d.ts +24 -0
  8. package/lib/FlowContextProvider.js +82 -0
  9. package/lib/FlowDefinition.d.ts +423 -0
  10. package/lib/FlowDefinition.js +257 -0
  11. package/lib/JSRunner.d.ts +32 -0
  12. package/lib/JSRunner.js +95 -0
  13. package/lib/ReactView.d.ts +20 -0
  14. package/lib/ReactView.js +120 -0
  15. package/lib/ViewScopedFlowEngine.d.ts +23 -0
  16. package/lib/ViewScopedFlowEngine.js +81 -0
  17. package/lib/acl/Acl.d.ts +31 -0
  18. package/lib/acl/Acl.js +115 -0
  19. package/lib/action-registry/BaseActionRegistry.d.ts +23 -0
  20. package/lib/action-registry/BaseActionRegistry.js +57 -0
  21. package/lib/action-registry/EngineActionRegistry.d.ts +20 -0
  22. package/lib/action-registry/EngineActionRegistry.js +47 -0
  23. package/lib/action-registry/ModelActionRegistry.d.ts +34 -0
  24. package/lib/action-registry/ModelActionRegistry.js +79 -0
  25. package/lib/components/DynamicFlowsEditor.d.ts +17 -0
  26. package/lib/components/DynamicFlowsEditor.js +49 -0
  27. package/lib/components/FieldModelRenderer.d.ts +10 -0
  28. package/lib/components/FieldModelRenderer.js +100 -0
  29. package/lib/components/FlowContextSelector.d.ts +11 -0
  30. package/lib/components/FlowContextSelector.js +221 -0
  31. package/lib/components/FlowErrorFallback.d.ts +25 -0
  32. package/lib/components/FlowErrorFallback.js +264 -0
  33. package/lib/components/FlowModelRenderer.d.ts +61 -0
  34. package/lib/components/FlowModelRenderer.js +214 -0
  35. package/lib/components/FormItem.d.ts +18 -0
  36. package/lib/components/FormItem.js +151 -0
  37. package/lib/components/common/FlowSettingsButton.d.ts +11 -0
  38. package/lib/components/common/FlowSettingsButton.js +66 -0
  39. package/lib/components/common/index.d.ts +9 -0
  40. package/lib/components/common/index.js +30 -0
  41. package/lib/components/common/withFlowDesignMode.d.ts +26 -0
  42. package/lib/components/common/withFlowDesignMode.js +61 -0
  43. package/lib/components/dnd/findModelUidPosition.d.ts +13 -0
  44. package/lib/components/dnd/findModelUidPosition.js +50 -0
  45. package/lib/components/dnd/gridDragPlanner.d.ts +130 -0
  46. package/lib/components/dnd/gridDragPlanner.js +497 -0
  47. package/lib/components/dnd/index.d.ts +24 -0
  48. package/lib/components/dnd/index.js +164 -0
  49. package/lib/components/index.d.ts +18 -0
  50. package/lib/components/index.js +48 -0
  51. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.d.ts +46 -0
  52. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +225 -0
  53. package/lib/components/settings/independents/dropdown/index.d.ts +9 -0
  54. package/lib/components/settings/independents/dropdown/index.js +30 -0
  55. package/lib/components/settings/independents/index.d.ts +1 -0
  56. package/lib/components/settings/independents/index.js +30 -0
  57. package/lib/components/settings/index.d.ts +10 -0
  58. package/lib/components/settings/index.js +32 -0
  59. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.d.ts +24 -0
  60. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +501 -0
  61. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.d.ts +45 -0
  62. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +231 -0
  63. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +111 -0
  64. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +484 -0
  65. package/lib/components/settings/wrappers/contextual/StepRequiredSettingsDialog.d.ts +26 -0
  66. package/lib/components/settings/wrappers/contextual/StepRequiredSettingsDialog.js +342 -0
  67. package/lib/components/settings/wrappers/contextual/StepSettings.d.ts +23 -0
  68. package/lib/components/settings/wrappers/contextual/StepSettings.js +110 -0
  69. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.d.ts +20 -0
  70. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +212 -0
  71. package/lib/components/settings/wrappers/contextual/StepSettingsDrawer.d.ts +20 -0
  72. package/lib/components/settings/wrappers/contextual/StepSettingsDrawer.js +47 -0
  73. package/lib/components/settings/wrappers/contextual/index.d.ts +14 -0
  74. package/lib/components/settings/wrappers/contextual/index.js +40 -0
  75. package/lib/components/settings/wrappers/embedded/FlowSettings.d.ts +33 -0
  76. package/lib/components/settings/wrappers/embedded/FlowSettings.js +207 -0
  77. package/lib/components/settings/wrappers/embedded/FlowsSettings.d.ts +41 -0
  78. package/lib/components/settings/wrappers/embedded/FlowsSettings.js +84 -0
  79. package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.d.ts +16 -0
  80. package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +88 -0
  81. package/lib/components/settings/wrappers/embedded/index.d.ts +10 -0
  82. package/lib/components/settings/wrappers/embedded/index.js +32 -0
  83. package/lib/components/settings/wrappers/index.d.ts +2 -0
  84. package/lib/components/settings/wrappers/index.js +32 -0
  85. package/lib/components/subModel/AddSubModelButton.d.ts +62 -0
  86. package/lib/components/subModel/AddSubModelButton.js +415 -0
  87. package/lib/components/subModel/LazyDropdown.d.ts +55 -0
  88. package/lib/components/subModel/LazyDropdown.js +524 -0
  89. package/lib/components/subModel/index.d.ts +10 -0
  90. package/lib/components/subModel/index.js +32 -0
  91. package/lib/components/subModel/utils.d.ts +34 -0
  92. package/lib/components/subModel/utils.js +287 -0
  93. package/lib/components/variables/InlineVariableTag.d.ts +21 -0
  94. package/lib/components/variables/InlineVariableTag.js +123 -0
  95. package/lib/components/variables/SlateVariableEditor.d.ts +46 -0
  96. package/lib/components/variables/SlateVariableEditor.js +302 -0
  97. package/lib/components/variables/VariableInput.d.ts +11 -0
  98. package/lib/components/variables/VariableInput.js +334 -0
  99. package/lib/components/variables/VariableTag.d.ts +11 -0
  100. package/lib/components/variables/VariableTag.js +189 -0
  101. package/lib/components/variables/VariableTrigger.d.ts +20 -0
  102. package/lib/components/variables/VariableTrigger.js +136 -0
  103. package/lib/components/variables/index.d.ts +15 -0
  104. package/lib/components/variables/index.js +53 -0
  105. package/lib/components/variables/types.d.ts +93 -0
  106. package/lib/components/variables/types.js +24 -0
  107. package/lib/components/variables/useResolvedMetaTree.d.ts +19 -0
  108. package/lib/components/variables/useResolvedMetaTree.js +91 -0
  109. package/lib/components/variables/utils.d.ts +22 -0
  110. package/lib/components/variables/utils.js +177 -0
  111. package/lib/data-source/index.d.ts +180 -0
  112. package/lib/data-source/index.js +737 -0
  113. package/lib/data-source/jioToJoiSchema.d.ts +19 -0
  114. package/lib/data-source/jioToJoiSchema.js +114 -0
  115. package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
  116. package/lib/data-source/sortCollectionsByInherits.js +71 -0
  117. package/lib/decorators/index.d.ts +9 -0
  118. package/lib/decorators/index.js +36 -0
  119. package/lib/decorators/largeField.d.ts +9 -0
  120. package/lib/decorators/largeField.js +42 -0
  121. package/lib/emitter.d.ts +16 -0
  122. package/lib/emitter.js +58 -0
  123. package/lib/event-registry/BaseEventRegistry.d.ts +22 -0
  124. package/lib/event-registry/BaseEventRegistry.js +57 -0
  125. package/lib/event-registry/EngineEventRegistry.d.ts +19 -0
  126. package/lib/event-registry/EngineEventRegistry.js +47 -0
  127. package/lib/event-registry/ModelEventRegistry.d.ts +33 -0
  128. package/lib/event-registry/ModelEventRegistry.js +79 -0
  129. package/lib/executor/FlowExecutor.d.ts +25 -0
  130. package/lib/executor/FlowExecutor.js +290 -0
  131. package/lib/flow-registry/BaseFlowRegistry.d.ts +46 -0
  132. package/lib/flow-registry/BaseFlowRegistry.js +86 -0
  133. package/lib/flow-registry/GlobalFlowRegistry.d.ts +22 -0
  134. package/lib/flow-registry/GlobalFlowRegistry.js +95 -0
  135. package/lib/flow-registry/InstanceFlowRegistry.d.ts +21 -0
  136. package/lib/flow-registry/InstanceFlowRegistry.js +59 -0
  137. package/lib/flow-registry/index.d.ts +11 -0
  138. package/lib/flow-registry/index.js +34 -0
  139. package/lib/flowContext.d.ts +243 -0
  140. package/lib/flowContext.js +1337 -0
  141. package/lib/flowEngine.d.ts +340 -0
  142. package/lib/flowEngine.js +781 -0
  143. package/lib/flowI18n.d.ts +46 -0
  144. package/lib/flowI18n.js +117 -0
  145. package/lib/flowSettings.d.ts +266 -0
  146. package/lib/flowSettings.js +850 -0
  147. package/lib/hooks/index.d.ts +14 -0
  148. package/lib/hooks/index.js +40 -0
  149. package/lib/hooks/useApplyAutoFlows.d.ts +21 -0
  150. package/lib/hooks/useApplyAutoFlows.js +63 -0
  151. package/lib/hooks/useFlowModel.d.ts +29 -0
  152. package/lib/hooks/useFlowModel.js +72 -0
  153. package/lib/hooks/useFlowModelById.d.ts +11 -0
  154. package/lib/hooks/useFlowModelById.js +61 -0
  155. package/lib/hooks/useFlowSettingsContext.d.ts +20 -0
  156. package/lib/hooks/useFlowSettingsContext.js +61 -0
  157. package/lib/hooks/useFlowStep.d.ts +17 -0
  158. package/lib/hooks/useFlowStep.js +56 -0
  159. package/lib/hooks/useNiceDropdownMaxHeight.d.ts +13 -0
  160. package/lib/hooks/useNiceDropdownMaxHeight.js +52 -0
  161. package/lib/index.d.ts +30 -0
  162. package/lib/index.js +93 -0
  163. package/lib/locale/en-US.json +61 -0
  164. package/lib/locale/index.d.ts +141 -0
  165. package/lib/locale/index.js +70 -0
  166. package/lib/locale/zh-CN.json +61 -0
  167. package/lib/models/CollectionFieldModel.d.ts +52 -0
  168. package/lib/models/CollectionFieldModel.js +280 -0
  169. package/lib/models/DisplayItemModel.d.ts +12 -0
  170. package/lib/models/DisplayItemModel.js +41 -0
  171. package/lib/models/EditableItemModel.d.ts +12 -0
  172. package/lib/models/EditableItemModel.js +41 -0
  173. package/lib/models/FilterableItemModel.d.ts +12 -0
  174. package/lib/models/FilterableItemModel.js +41 -0
  175. package/lib/models/flowModel.d.ts +342 -0
  176. package/lib/models/flowModel.js +1154 -0
  177. package/lib/models/forkFlowModel.d.ts +83 -0
  178. package/lib/models/forkFlowModel.js +280 -0
  179. package/lib/models/index.d.ts +14 -0
  180. package/lib/models/index.js +40 -0
  181. package/lib/provider.d.ts +22 -0
  182. package/lib/provider.js +115 -0
  183. package/lib/resources/apiResource.d.ts +34 -0
  184. package/lib/resources/apiResource.js +153 -0
  185. package/lib/resources/baseRecordResource.d.ts +61 -0
  186. package/lib/resources/baseRecordResource.js +264 -0
  187. package/lib/resources/filterItem.d.ts +33 -0
  188. package/lib/resources/filterItem.js +93 -0
  189. package/lib/resources/flowResource.d.ts +45 -0
  190. package/lib/resources/flowResource.js +146 -0
  191. package/lib/resources/index.d.ts +15 -0
  192. package/lib/resources/index.js +42 -0
  193. package/lib/resources/multiRecordResource.d.ts +53 -0
  194. package/lib/resources/multiRecordResource.js +230 -0
  195. package/lib/resources/singleRecordResource.d.ts +23 -0
  196. package/lib/resources/singleRecordResource.js +111 -0
  197. package/lib/resources/sqlResource.d.ts +73 -0
  198. package/lib/resources/sqlResource.js +294 -0
  199. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +11 -0
  200. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +73 -0
  201. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +11 -0
  202. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +91 -0
  203. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +11 -0
  204. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +58 -0
  205. package/lib/runjs-context/contexts/JSColumnRunJSContext.d.ts +15 -0
  206. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  207. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +11 -0
  208. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +74 -0
  209. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +11 -0
  210. package/lib/runjs-context/contexts/JSItemRunJSContext.js +70 -0
  211. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +11 -0
  212. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +60 -0
  213. package/lib/runjs-context/contexts/base.d.ts +9 -0
  214. package/lib/runjs-context/contexts/base.js +169 -0
  215. package/lib/runjs-context/helpers.d.ts +20 -0
  216. package/lib/runjs-context/helpers.js +88 -0
  217. package/lib/runjs-context/registry.d.ts +20 -0
  218. package/lib/runjs-context/registry.js +61 -0
  219. package/lib/runjs-context/setup.d.ts +9 -0
  220. package/lib/runjs-context/setup.js +82 -0
  221. package/lib/runjs-context/snippets/global/api-request.snippet.d.ts +11 -0
  222. package/lib/runjs-context/snippets/global/api-request.snippet.js +57 -0
  223. package/lib/runjs-context/snippets/global/import-esm.snippet.d.ts +11 -0
  224. package/lib/runjs-context/snippets/global/import-esm.snippet.js +58 -0
  225. package/lib/runjs-context/snippets/global/message-error.snippet.d.ts +11 -0
  226. package/lib/runjs-context/snippets/global/message-error.snippet.js +47 -0
  227. package/lib/runjs-context/snippets/global/message-success.snippet.d.ts +11 -0
  228. package/lib/runjs-context/snippets/global/message-success.snippet.js +47 -0
  229. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +11 -0
  230. package/lib/runjs-context/snippets/global/notification-open.snippet.js +50 -0
  231. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.d.ts +11 -0
  232. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +54 -0
  233. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.d.ts +11 -0
  234. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +54 -0
  235. package/lib/runjs-context/snippets/global/query-selector.snippet.d.ts +11 -0
  236. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  237. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  238. package/lib/runjs-context/snippets/global/require-amd.snippet.js +49 -0
  239. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +11 -0
  240. package/lib/runjs-context/snippets/global/window-open.snippet.js +48 -0
  241. package/lib/runjs-context/snippets/index.d.ts +22 -0
  242. package/lib/runjs-context/snippets/index.js +213 -0
  243. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  244. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.js +55 -0
  245. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  246. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  247. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  248. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  249. package/lib/runjs-context/snippets/scene/block/echarts-init.snippet.d.ts +11 -0
  250. package/lib/runjs-context/snippets/scene/block/echarts-init.snippet.js +63 -0
  251. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  252. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.js +52 -0
  253. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  254. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  255. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  256. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +72 -0
  257. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  258. package/lib/runjs-context/snippets/scene/block/render-react.snippet.js +57 -0
  259. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  260. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +100 -0
  261. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  262. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +85 -0
  263. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  264. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  265. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  266. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  267. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  268. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  269. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  270. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.js +52 -0
  271. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  272. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.js +64 -0
  273. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  274. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.js +51 -0
  275. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  276. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.js +50 -0
  277. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  278. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  279. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  280. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  281. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  282. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  283. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  284. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  285. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  286. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  287. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  288. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  289. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  290. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  291. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  292. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.js +53 -0
  293. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  294. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.js +69 -0
  295. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  296. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.js +68 -0
  297. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  298. package/lib/runjs-context/snippets/scene/form/set-required.snippet.js +69 -0
  299. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  300. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  301. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  302. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.js +69 -0
  303. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  304. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  305. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  306. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.js +53 -0
  307. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  308. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  309. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  310. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.js +55 -0
  311. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  312. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  313. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  314. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.js +52 -0
  315. package/lib/runjs-context/snippets/types.d.ts +24 -0
  316. package/lib/runjs-context/snippets/types.js +24 -0
  317. package/lib/types.d.ts +407 -0
  318. package/lib/types.js +43 -0
  319. package/lib/utils/autoFlowError.d.ts +16 -0
  320. package/lib/utils/autoFlowError.js +53 -0
  321. package/lib/utils/constants.d.ts +29 -0
  322. package/lib/utils/constants.js +77 -0
  323. package/lib/utils/context.d.ts +40 -0
  324. package/lib/utils/context.js +63 -0
  325. package/lib/utils/createCollectionContextMeta.d.ts +11 -0
  326. package/lib/utils/createCollectionContextMeta.js +117 -0
  327. package/lib/utils/exceptions.d.ts +22 -0
  328. package/lib/utils/exceptions.js +62 -0
  329. package/lib/utils/flow-definitions.d.ts +11 -0
  330. package/lib/utils/flow-definitions.js +40 -0
  331. package/lib/utils/index.d.ts +22 -0
  332. package/lib/utils/index.js +115 -0
  333. package/lib/utils/inheritance.d.ts +16 -0
  334. package/lib/utils/inheritance.js +53 -0
  335. package/lib/utils/params-resolvers.d.ts +51 -0
  336. package/lib/utils/params-resolvers.js +309 -0
  337. package/lib/utils/parsePathnameToViewParams.d.ts +34 -0
  338. package/lib/utils/parsePathnameToViewParams.js +84 -0
  339. package/lib/utils/safeGlobals.d.ts +16 -0
  340. package/lib/utils/safeGlobals.js +179 -0
  341. package/lib/utils/schema-utils.d.ts +40 -0
  342. package/lib/utils/schema-utils.js +161 -0
  343. package/lib/utils/serverContextParams.d.ts +29 -0
  344. package/lib/utils/serverContextParams.js +106 -0
  345. package/lib/utils/setupRuntimeContextSteps.d.ts +19 -0
  346. package/lib/utils/setupRuntimeContextSteps.js +88 -0
  347. package/lib/utils/translation.d.ts +18 -0
  348. package/lib/utils/translation.js +58 -0
  349. package/lib/utils/variablesParams.d.ts +52 -0
  350. package/lib/utils/variablesParams.js +161 -0
  351. package/lib/views/DialogComponent.d.ts +22 -0
  352. package/lib/views/DialogComponent.js +98 -0
  353. package/lib/views/DrawerComponent.d.ts +11 -0
  354. package/lib/views/DrawerComponent.js +101 -0
  355. package/lib/views/FlowView.d.ts +76 -0
  356. package/lib/views/FlowView.js +81 -0
  357. package/lib/views/PageComponent.d.ts +10 -0
  358. package/lib/views/PageComponent.js +168 -0
  359. package/lib/views/ViewNavigation.d.ts +45 -0
  360. package/lib/views/ViewNavigation.js +97 -0
  361. package/lib/views/createViewMeta.d.ts +44 -0
  362. package/lib/views/createViewMeta.js +377 -0
  363. package/lib/views/index.d.ts +14 -0
  364. package/lib/views/index.js +51 -0
  365. package/lib/views/useDialog.d.ts +32 -0
  366. package/lib/views/useDialog.js +200 -0
  367. package/lib/views/useDrawer.d.ts +33 -0
  368. package/lib/views/useDrawer.js +220 -0
  369. package/lib/views/usePage.d.ts +32 -0
  370. package/lib/views/usePage.js +194 -0
  371. package/lib/views/usePatchElement.d.ts +10 -0
  372. package/lib/views/usePatchElement.js +54 -0
  373. package/lib/views/usePopover.d.ts +17 -0
  374. package/lib/views/usePopover.js +159 -0
  375. package/package.json +37 -0
  376. package/src/ContextPathProxy.ts +45 -0
  377. package/src/ElementProxy.ts +69 -0
  378. package/src/FlowContextProvider.tsx +42 -0
  379. package/src/FlowDefinition.ts +275 -0
  380. package/src/JSRunner.ts +84 -0
  381. package/src/ReactView.tsx +104 -0
  382. package/src/ViewScopedFlowEngine.ts +75 -0
  383. package/src/__tests__/ElementProxy.test.ts +51 -0
  384. package/src/__tests__/JSRunner.test.ts +92 -0
  385. package/src/__tests__/ReactView.test.tsx +63 -0
  386. package/src/__tests__/context-path-proxy.test.ts +35 -0
  387. package/src/__tests__/flow-engine.test.ts +189 -0
  388. package/src/__tests__/flowContext.test.ts +2012 -0
  389. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  390. package/src/__tests__/flowEngine.saveModel.test.ts +171 -0
  391. package/src/__tests__/flowI18n.test.ts +28 -0
  392. package/src/__tests__/flowModel.getFlows.test.ts +61 -0
  393. package/src/__tests__/flowModel.openView.navigation.test.ts +78 -0
  394. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  395. package/src/__tests__/flowRuntimeContext.test.ts +187 -0
  396. package/src/__tests__/flowSettings.open.test.tsx +1920 -0
  397. package/src/__tests__/flowSettings.test.ts +566 -0
  398. package/src/__tests__/globalFlowRegistry.test.ts +77 -0
  399. package/src/__tests__/isFieldInterfaceMatch.test.ts +51 -0
  400. package/src/__tests__/metaTreeNodeCache.test.ts +234 -0
  401. package/src/__tests__/path-aggregation.test.ts +85 -0
  402. package/src/__tests__/provider.test.tsx +28 -0
  403. package/src/__tests__/renderHiddenInConfig.test.tsx +91 -0
  404. package/src/__tests__/runjsContext.test.ts +241 -0
  405. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  406. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  407. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  408. package/src/__tests__/runjsLocales.test.ts +36 -0
  409. package/src/__tests__/runjsRuntimeFeatures.test.ts +449 -0
  410. package/src/__tests__/runjsSnippets.test.ts +140 -0
  411. package/src/__tests__/viewScopedFlowEngine.test.ts +212 -0
  412. package/src/acl/Acl.tsx +109 -0
  413. package/src/acl/__tests__/Acl.test.tsx +72 -0
  414. package/src/action-registry/BaseActionRegistry.ts +46 -0
  415. package/src/action-registry/EngineActionRegistry.ts +32 -0
  416. package/src/action-registry/ModelActionRegistry.ts +75 -0
  417. package/src/action-registry/__tests__/engineActionRegistry.test.ts +43 -0
  418. package/src/action-registry/__tests__/modelActionRegistry.test.ts +107 -0
  419. package/src/components/DynamicFlowsEditor.tsx +318 -0
  420. package/src/components/FieldModelRenderer.tsx +68 -0
  421. package/src/components/FlowContextSelector.tsx +255 -0
  422. package/src/components/FlowErrorFallback.tsx +316 -0
  423. package/src/components/FlowModelRenderer.tsx +362 -0
  424. package/src/components/FormItem.tsx +136 -0
  425. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +226 -0
  426. package/src/components/__tests__/gridDragPlanner.test.ts +494 -0
  427. package/src/components/common/FlowSettingsButton.tsx +30 -0
  428. package/src/components/common/index.ts +10 -0
  429. package/src/components/common/withFlowDesignMode.tsx +49 -0
  430. package/src/components/dnd/README.md +149 -0
  431. package/src/components/dnd/findModelUidPosition.ts +26 -0
  432. package/src/components/dnd/gridDragPlanner.ts +659 -0
  433. package/src/components/dnd/index.tsx +128 -0
  434. package/src/components/index.ts +20 -0
  435. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +279 -0
  436. package/src/components/settings/independents/dropdown/index.ts +10 -0
  437. package/src/components/settings/independents/index.ts +2 -0
  438. package/src/components/settings/index.ts +11 -0
  439. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +617 -0
  440. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +292 -0
  441. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +655 -0
  442. package/src/components/settings/wrappers/contextual/StepRequiredSettingsDialog.tsx +446 -0
  443. package/src/components/settings/wrappers/contextual/StepSettings.tsx +109 -0
  444. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +223 -0
  445. package/src/components/settings/wrappers/contextual/StepSettingsDrawer.tsx +32 -0
  446. package/src/components/settings/wrappers/contextual/index.ts +15 -0
  447. package/src/components/settings/wrappers/embedded/FlowSettings.tsx +258 -0
  448. package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +111 -0
  449. package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +96 -0
  450. package/src/components/settings/wrappers/embedded/index.ts +11 -0
  451. package/src/components/settings/wrappers/index.ts +5 -0
  452. package/src/components/subModel/AddSubModelButton.tsx +575 -0
  453. package/src/components/subModel/LazyDropdown.tsx +714 -0
  454. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +1185 -0
  455. package/src/components/subModel/__tests__/buildWrapperFieldChildren.test.ts +192 -0
  456. package/src/components/subModel/__tests__/utils.test.ts +425 -0
  457. package/src/components/subModel/index.ts +12 -0
  458. package/src/components/subModel/utils.ts +278 -0
  459. package/src/components/variables/InlineVariableTag.tsx +97 -0
  460. package/src/components/variables/SlateVariableEditor.tsx +384 -0
  461. package/src/components/variables/VariableInput.tsx +360 -0
  462. package/src/components/variables/VariableTag.tsx +175 -0
  463. package/src/components/variables/VariableTrigger.tsx +116 -0
  464. package/src/components/variables/__tests__/FlowContextSelector.test.tsx +553 -0
  465. package/src/components/variables/__tests__/VariableInput.test.tsx +550 -0
  466. package/src/components/variables/__tests__/VariableTag.test.tsx +347 -0
  467. package/src/components/variables/__tests__/test-utils.tsx +62 -0
  468. package/src/components/variables/__tests__/utils.test.ts +310 -0
  469. package/src/components/variables/index.ts +16 -0
  470. package/src/components/variables/types.ts +100 -0
  471. package/src/components/variables/useResolvedMetaTree.ts +76 -0
  472. package/src/components/variables/utils.ts +192 -0
  473. package/src/data-source/__tests__/collection.test.ts +58 -0
  474. package/src/data-source/__tests__/index.test.ts +82 -0
  475. package/src/data-source/__tests__/jioToJoiSchema.test.ts +56 -0
  476. package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
  477. package/src/data-source/index.ts +816 -0
  478. package/src/data-source/jioToJoiSchema.ts +103 -0
  479. package/src/data-source/sortCollectionsByInherits.ts +61 -0
  480. package/src/decorators/index.ts +10 -0
  481. package/src/decorators/largeField.ts +14 -0
  482. package/src/emitter.ts +33 -0
  483. package/src/event-registry/BaseEventRegistry.ts +40 -0
  484. package/src/event-registry/EngineEventRegistry.ts +26 -0
  485. package/src/event-registry/ModelEventRegistry.ts +69 -0
  486. package/src/event-registry/__tests__/engineEventRegistry.test.ts +48 -0
  487. package/src/executor/FlowExecutor.ts +302 -0
  488. package/src/executor/__tests__/eventStep.test.ts +157 -0
  489. package/src/executor/__tests__/flowExecutor.test.ts +309 -0
  490. package/src/flow-registry/BaseFlowRegistry.ts +91 -0
  491. package/src/flow-registry/GlobalFlowRegistry.ts +82 -0
  492. package/src/flow-registry/InstanceFlowRegistry.ts +39 -0
  493. package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +141 -0
  494. package/src/flow-registry/__tests__/instance-and-global-registry.test.ts +67 -0
  495. package/src/flow-registry/__tests__/instanceFlowRegistry.test.ts +83 -0
  496. package/src/flow-registry/index.ts +12 -0
  497. package/src/flowContext.ts +1742 -0
  498. package/src/flowEngine.ts +905 -0
  499. package/src/flowI18n.ts +96 -0
  500. package/src/flowSettings.ts +1045 -0
  501. package/src/hooks/index.ts +15 -0
  502. package/src/hooks/useApplyAutoFlows.ts +53 -0
  503. package/src/hooks/useFlowModel.tsx +59 -0
  504. package/src/hooks/useFlowModelById.ts +37 -0
  505. package/src/hooks/useFlowSettingsContext.tsx +37 -0
  506. package/src/hooks/useFlowStep.tsx +19 -0
  507. package/src/hooks/useNiceDropdownMaxHeight.ts +34 -0
  508. package/src/index.ts +46 -0
  509. package/src/locale/en-US.json +61 -0
  510. package/src/locale/index.ts +38 -0
  511. package/src/locale/zh-CN.json +61 -0
  512. package/src/models/CollectionFieldModel.tsx +306 -0
  513. package/src/models/DisplayItemModel.tsx +13 -0
  514. package/src/models/EditableItemModel.tsx +13 -0
  515. package/src/models/FilterableItemModel.tsx +13 -0
  516. package/src/models/__tests__/CollectionFieldModel.test.ts +122 -0
  517. package/src/models/__tests__/defaultParams-on-create.test.ts +83 -0
  518. package/src/models/__tests__/flow-model-oninit.test.ts +44 -0
  519. package/src/models/__tests__/flowModel.actions.integration.test.ts +100 -0
  520. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +100 -0
  521. package/src/models/__tests__/flowModel.test.ts +2869 -0
  522. package/src/models/__tests__/flowRegistry.test.ts +512 -0
  523. package/src/models/__tests__/forkFlowModel.test.ts +1047 -0
  524. package/src/models/__tests__/model-actions.test.ts +70 -0
  525. package/src/models/__tests__/model-events.test.ts +69 -0
  526. package/src/models/flowModel.tsx +1421 -0
  527. package/src/models/forkFlowModel.ts +319 -0
  528. package/src/models/index.ts +17 -0
  529. package/src/provider.tsx +103 -0
  530. package/src/resources/__tests__/apiResource.test.ts +201 -0
  531. package/src/resources/__tests__/baseRecordResource.test.ts +262 -0
  532. package/src/resources/__tests__/filterItem.test.ts +260 -0
  533. package/src/resources/__tests__/flowResource.test.ts +127 -0
  534. package/src/resources/apiResource.ts +148 -0
  535. package/src/resources/baseRecordResource.ts +279 -0
  536. package/src/resources/filterItem.ts +74 -0
  537. package/src/resources/flowResource.ts +143 -0
  538. package/src/resources/index.ts +17 -0
  539. package/src/resources/multiRecordResource.ts +219 -0
  540. package/src/resources/singleRecordResource.ts +83 -0
  541. package/src/resources/sqlResource.ts +299 -0
  542. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +46 -0
  543. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +64 -0
  544. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +31 -0
  545. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  546. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +48 -0
  547. package/src/runjs-context/contexts/JSItemRunJSContext.ts +43 -0
  548. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +33 -0
  549. package/src/runjs-context/contexts/base.ts +155 -0
  550. package/src/runjs-context/helpers.ts +58 -0
  551. package/src/runjs-context/registry.ts +34 -0
  552. package/src/runjs-context/setup.ts +51 -0
  553. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  554. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  555. package/src/runjs-context/snippets/global/message-error.snippet.ts +26 -0
  556. package/src/runjs-context/snippets/global/message-success.snippet.ts +26 -0
  557. package/src/runjs-context/snippets/global/notification-open.snippet.ts +31 -0
  558. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +33 -0
  559. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +33 -0
  560. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  561. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  562. package/src/runjs-context/snippets/global/window-open.snippet.ts +29 -0
  563. package/src/runjs-context/snippets/index.ts +195 -0
  564. package/src/runjs-context/snippets/scene/block/add-event-listener.snippet.ts +41 -0
  565. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  566. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  567. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  568. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +33 -0
  569. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  570. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +53 -0
  571. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
  572. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +81 -0
  573. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +66 -0
  574. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  575. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  576. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  577. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  578. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  579. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  580. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  581. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  582. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  583. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  584. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  585. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  586. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  587. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  588. package/src/runjs-context/snippets/scene/form/render-basic.snippet.ts +39 -0
  589. package/src/runjs-context/snippets/scene/form/set-disabled.snippet.ts +50 -0
  590. package/src/runjs-context/snippets/scene/form/set-field-value.snippet.ts +49 -0
  591. package/src/runjs-context/snippets/scene/form/set-required.snippet.ts +50 -0
  592. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  593. package/src/runjs-context/snippets/scene/form/toggle-visible.snippet.ts +50 -0
  594. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  595. package/src/runjs-context/snippets/scene/table/collection-selected-count.snippet.ts +34 -0
  596. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  597. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  598. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  599. package/src/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.ts +33 -0
  600. package/src/runjs-context/snippets/types.ts +21 -0
  601. package/src/types.ts +484 -0
  602. package/src/utils/__tests__/context.test.ts +93 -0
  603. package/src/utils/__tests__/params-resolvers.test.ts +652 -0
  604. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +104 -0
  605. package/src/utils/__tests__/safeGlobals.test.ts +29 -0
  606. package/src/utils/__tests__/utils.test.ts +1021 -0
  607. package/src/utils/__tests__/variablesParams.test.ts +52 -0
  608. package/src/utils/autoFlowError.ts +29 -0
  609. package/src/utils/constants.ts +60 -0
  610. package/src/utils/context.ts +70 -0
  611. package/src/utils/createCollectionContextMeta.ts +122 -0
  612. package/src/utils/exceptions.ts +36 -0
  613. package/src/utils/flow-definitions.ts +16 -0
  614. package/src/utils/index.ts +62 -0
  615. package/src/utils/inheritance.ts +39 -0
  616. package/src/utils/params-resolvers.ts +482 -0
  617. package/src/utils/parsePathnameToViewParams.ts +103 -0
  618. package/src/utils/safeGlobals.ts +188 -0
  619. package/src/utils/schema-utils.ts +201 -0
  620. package/src/utils/serverContextParams.ts +112 -0
  621. package/src/utils/setupRuntimeContextSteps.ts +89 -0
  622. package/src/utils/translation.ts +37 -0
  623. package/src/utils/variablesParams.ts +184 -0
  624. package/src/views/DialogComponent.tsx +79 -0
  625. package/src/views/DrawerComponent.tsx +72 -0
  626. package/src/views/FlowView.tsx +103 -0
  627. package/src/views/PageComponent.tsx +150 -0
  628. package/src/views/ViewNavigation.ts +122 -0
  629. package/src/views/__tests__/FlowView.test.ts +31 -0
  630. package/src/views/__tests__/ViewNavigation.test.ts +191 -0
  631. package/src/views/__tests__/usePatchElement.test.tsx +28 -0
  632. package/src/views/createViewMeta.ts +402 -0
  633. package/src/views/index.tsx +15 -0
  634. package/src/views/useDialog.tsx +194 -0
  635. package/src/views/useDrawer.tsx +229 -0
  636. package/src/views/usePage.tsx +185 -0
  637. package/src/views/usePatchElement.tsx +27 -0
  638. package/src/views/usePopover.tsx +131 -0
@@ -0,0 +1,1154 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __typeError = (msg) => {
17
+ throw TypeError(msg);
18
+ };
19
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
20
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
21
+ var __export = (target, all) => {
22
+ for (var name in all)
23
+ __defProp(target, name, { get: all[name], enumerable: true });
24
+ };
25
+ var __copyProps = (to, from, except, desc) => {
26
+ if (from && typeof from === "object" || typeof from === "function") {
27
+ for (let key of __getOwnPropNames(from))
28
+ if (!__hasOwnProp.call(to, key) && key !== except)
29
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
30
+ }
31
+ return to;
32
+ };
33
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
34
+ // If the importer is in node compatibility mode or this is not an ESM
35
+ // file that has been converted to a CommonJS file using a Babel-
36
+ // compatible transform (i.e. "__esModule" has not been set), then set
37
+ // "default" to the CommonJS "module.exports" for node compatibility.
38
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
39
+ mod
40
+ ));
41
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
42
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
43
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
44
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
45
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
46
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
47
+ var flowModel_exports = {};
48
+ __export(flowModel_exports, {
49
+ ErrorFlowModel: () => ErrorFlowModel,
50
+ FlowModel: () => FlowModel,
51
+ ModelRenderMode: () => ModelRenderMode,
52
+ defineFlow: () => defineFlow
53
+ });
54
+ module.exports = __toCommonJS(flowModel_exports);
55
+ var import_reactive = require("@formily/reactive");
56
+ var import_reactive_react = require("@formily/reactive-react");
57
+ var import_lodash = __toESM(require("lodash"));
58
+ var import_react = __toESM(require("react"));
59
+ var import_secure = require("uid/secure");
60
+ var import_StepRequiredSettingsDialog = require("../components/settings/wrappers/contextual/StepRequiredSettingsDialog");
61
+ var import_StepSettingsDialog = require("../components/settings/wrappers/contextual/StepSettingsDialog");
62
+ var import_emitter = require("../emitter");
63
+ var import_InstanceFlowRegistry = require("../flow-registry/InstanceFlowRegistry");
64
+ var import_flowContext = require("../flowContext");
65
+ var import_utils = require("../utils");
66
+ var import_lib = require("antd/lib");
67
+ var import_ModelActionRegistry = require("../action-registry/ModelActionRegistry");
68
+ var import_utils2 = require("../components/subModel/utils");
69
+ var import_ModelEventRegistry = require("../event-registry/ModelEventRegistry");
70
+ var import_GlobalFlowRegistry = require("../flow-registry/GlobalFlowRegistry");
71
+ var import_forkFlowModel = require("./forkFlowModel");
72
+ var _flowContext;
73
+ const classActionRegistries = /* @__PURE__ */ new WeakMap();
74
+ const classEventRegistries = /* @__PURE__ */ new WeakMap();
75
+ const modelMetas = /* @__PURE__ */ new WeakMap();
76
+ const modelGlobalRegistries = /* @__PURE__ */ new WeakMap();
77
+ var ModelRenderMode = /* @__PURE__ */ ((ModelRenderMode2) => {
78
+ ModelRenderMode2["ReactElement"] = "reactElement";
79
+ ModelRenderMode2["RenderFunction"] = "renderFunction";
80
+ return ModelRenderMode2;
81
+ })(ModelRenderMode || {});
82
+ const _FlowModel = class _FlowModel {
83
+ constructor(options) {
84
+ __publicField(this, "uid");
85
+ __publicField(this, "sortIndex");
86
+ __publicField(this, "hidden", false);
87
+ __publicField(this, "props", {});
88
+ __publicField(this, "stepParams", {});
89
+ __publicField(this, "flowEngine");
90
+ __publicField(this, "parent");
91
+ __publicField(this, "subModels");
92
+ __publicField(this, "_options");
93
+ __publicField(this, "_title");
94
+ __publicField(this, "isNew", false);
95
+ // 标记是否为新建状态
96
+ /**
97
+ * 所有 fork 实例的引用集合。
98
+ * 使用 Set 便于在销毁时主动遍历并调用 dispose,避免悬挂引用。
99
+ */
100
+ __publicField(this, "forks", /* @__PURE__ */ new Set());
101
+ __publicField(this, "emitter", new import_emitter.Emitter());
102
+ /**
103
+ * 基于 key 的 fork 实例缓存,用于复用 fork 实例
104
+ */
105
+ __publicField(this, "forkCache", /* @__PURE__ */ new Map());
106
+ /**
107
+ * 上一次 beforeRender 的执行参数
108
+ */
109
+ __publicField(this, "_lastAutoRunParams", null);
110
+ __publicField(this, "observerDispose");
111
+ __privateAdd(this, _flowContext);
112
+ /**
113
+ * 原始 render 方法的引用
114
+ */
115
+ __publicField(this, "_originalRender", null);
116
+ /**
117
+ * 缓存的响应式包装器组件(每个实例一个)
118
+ */
119
+ __publicField(this, "_reactiveWrapperCache");
120
+ __publicField(this, "flowRegistry");
121
+ __publicField(this, "_cleanRun");
122
+ __publicField(this, "_dispatchEventWithDebounce", import_lodash.default.debounce(
123
+ async (eventName, inputArgs, options) => {
124
+ return this._dispatchEvent(eventName, inputArgs, options);
125
+ },
126
+ 100
127
+ ));
128
+ /**
129
+ * 重新执行上一次的 beforeRender,保持参数一致
130
+ * 如果之前没有执行过,则直接跳过
131
+ * 使用 lodash debounce 避免频繁调用
132
+ */
133
+ __publicField(this, "_rerunLastAutoRun", import_lodash.default.debounce(async () => {
134
+ if (this._lastAutoRunParams) {
135
+ try {
136
+ const [inputArgs] = this._lastAutoRunParams;
137
+ await this.dispatchEvent("beforeRender", inputArgs);
138
+ } catch (error) {
139
+ console.error("FlowModel._rerunLastAutoRun: Error during rerun:", error);
140
+ }
141
+ }
142
+ }, 100));
143
+ if (!options.flowEngine) {
144
+ throw new Error("FlowModel must be initialized with a FlowEngine instance.");
145
+ }
146
+ this.flowEngine = options.flowEngine;
147
+ if (this.flowEngine.getModel(options.uid)) {
148
+ return this.flowEngine.getModel(options.uid);
149
+ }
150
+ if (!options.uid) {
151
+ options.uid = (0, import_secure.uid)();
152
+ }
153
+ this.uid = options.uid;
154
+ this.props = {
155
+ ...options.props
156
+ };
157
+ this.stepParams = options.stepParams || {};
158
+ this.subModels = {};
159
+ this.sortIndex = options.sortIndex || 0;
160
+ this._options = options;
161
+ (0, import_reactive.define)(this, {
162
+ hidden: import_reactive.observable,
163
+ props: import_reactive.observable,
164
+ subModels: import_reactive.observable.shallow,
165
+ stepParams: import_reactive.observable,
166
+ // setProps: action,
167
+ setProps: import_reactive.batch,
168
+ // setStepParams: action,
169
+ setStepParams: import_reactive.batch
170
+ });
171
+ this.flowRegistry = new import_InstanceFlowRegistry.InstanceFlowRegistry(this);
172
+ this.flowRegistry.addFlows(options.flowRegistry);
173
+ this.observerDispose = (0, import_reactive.observe)(this.stepParams, (changed) => {
174
+ if (changed.type === "set" && import_lodash.default.isEqual(changed.value, changed.oldValue)) {
175
+ return;
176
+ }
177
+ if (this.flowEngine) {
178
+ this.invalidateFlowCache("beforeRender");
179
+ }
180
+ this._rerunLastAutoRun();
181
+ this.forks.forEach((fork) => {
182
+ fork.rerender();
183
+ });
184
+ });
185
+ try {
186
+ this.setupReactiveRender();
187
+ } catch (error) {
188
+ console.error(`Failed to setup reactive render for ${this.constructor.name}:`, error);
189
+ if (typeof this.render !== "function") {
190
+ this.render = () => import_react.default.createElement("div", null, "Render method not available");
191
+ }
192
+ }
193
+ this._cleanRun = !!options["cleanRun"];
194
+ }
195
+ /**
196
+ * 当 flowSettings.enabled 且 model.hidden 为 true 时用于渲染设置态组件(实例方法,子类可覆盖)。
197
+ * 基类默认仅返回一个透明度降低的占位元素
198
+ */
199
+ renderHiddenInConfig() {
200
+ var _a;
201
+ return /* @__PURE__ */ import_react.default.createElement("span", { style: { opacity: 0.5 } }, ((_a = this.translate) == null ? void 0 : _a.call(this, "Hidden")) || "Hidden");
202
+ }
203
+ /**
204
+ * 对外暴露的上下文:
205
+ */
206
+ get context() {
207
+ if (!__privateGet(this, _flowContext)) {
208
+ __privateSet(this, _flowContext, new import_flowContext.FlowModelContext(this));
209
+ }
210
+ return __privateGet(this, _flowContext);
211
+ }
212
+ on(eventName, listener) {
213
+ this.emitter.on(eventName, listener);
214
+ }
215
+ onInit(options) {
216
+ }
217
+ /**
218
+ * 通过 AddSubModelButton 添加为子模型后调用(子类可覆盖)
219
+ */
220
+ async afterAddAsSubModel() {
221
+ }
222
+ get async() {
223
+ return this._options.async || false;
224
+ }
225
+ get use() {
226
+ return this._options.use;
227
+ }
228
+ get subKey() {
229
+ return this._options.subKey;
230
+ }
231
+ get subType() {
232
+ return this._options.subType;
233
+ }
234
+ get reactView() {
235
+ return this.flowEngine.reactView;
236
+ }
237
+ get parentId() {
238
+ return this._options.parentId;
239
+ }
240
+ static get meta() {
241
+ return modelMetas.get(this);
242
+ }
243
+ static get globalFlowRegistry() {
244
+ const Cls = this;
245
+ let reg = modelGlobalRegistries.get(Cls);
246
+ if (!reg) {
247
+ reg = new import_GlobalFlowRegistry.GlobalFlowRegistry(Cls);
248
+ modelGlobalRegistries.set(Cls, reg);
249
+ }
250
+ return reg;
251
+ }
252
+ // 获取当前类的动作注册表(含父子链注入),按类缓存
253
+ static get actionRegistry() {
254
+ const ModelClass = this;
255
+ let registry = classActionRegistries.get(ModelClass);
256
+ if (!registry) {
257
+ let parentRegistry = null;
258
+ const ParentClass = Object.getPrototypeOf(ModelClass);
259
+ if (ParentClass && ParentClass !== Function.prototype && ParentClass !== Object.prototype) {
260
+ const isSubclassOfFlowModel = ParentClass === _FlowModel || (0, import_utils.isInheritedFrom)(ParentClass, _FlowModel);
261
+ if (isSubclassOfFlowModel) {
262
+ parentRegistry = ParentClass.actionRegistry;
263
+ }
264
+ }
265
+ registry = new import_ModelActionRegistry.ModelActionRegistry(ModelClass, parentRegistry);
266
+ classActionRegistries.set(ModelClass, registry);
267
+ }
268
+ return registry;
269
+ }
270
+ // 获取当前类的事件注册表(含父子链注入),按类缓存
271
+ static get eventRegistry() {
272
+ const ModelClass = this;
273
+ let registry = classEventRegistries.get(ModelClass);
274
+ if (!registry) {
275
+ let parentRegistry = null;
276
+ const ParentClass = Object.getPrototypeOf(ModelClass);
277
+ if (ParentClass && ParentClass !== Function.prototype && ParentClass !== Object.prototype) {
278
+ const isSubclassOfFlowModel = ParentClass === _FlowModel || (0, import_utils.isInheritedFrom)(ParentClass, _FlowModel);
279
+ if (isSubclassOfFlowModel) {
280
+ parentRegistry = ParentClass.eventRegistry;
281
+ }
282
+ }
283
+ registry = new import_ModelEventRegistry.ModelEventRegistry(ModelClass, parentRegistry);
284
+ classEventRegistries.set(ModelClass, registry);
285
+ }
286
+ return registry;
287
+ }
288
+ /**
289
+ * 注册仅当前 FlowModel 类及其子类可用的 Action。
290
+ * 该注册是类级别的,不会影响全局(FlowEngine)的 Action 注册。
291
+ */
292
+ static registerAction(definition) {
293
+ this.actionRegistry.registerAction(definition);
294
+ }
295
+ /**
296
+ * 批量注册仅当前 FlowModel 类及其子类可用的 Actions。
297
+ */
298
+ static registerActions(actions) {
299
+ this.actionRegistry.registerActions(actions);
300
+ }
301
+ /**
302
+ * 注册仅当前 FlowModel 类及其子类可用的 Event。
303
+ * 该注册是类级别的,不会影响全局(FlowEngine)的 Event 注册。
304
+ */
305
+ static registerEvent(definition) {
306
+ this.eventRegistry.registerEvent(definition);
307
+ }
308
+ /**
309
+ * 批量注册仅当前 FlowModel 类及其子类可用的 Events。
310
+ */
311
+ static registerEvents(events) {
312
+ this.eventRegistry.registerEvents(events);
313
+ }
314
+ static buildChildrenFromModels(ctx, Models) {
315
+ return Models.map((M) => (0, import_utils2.buildSubModelItem)(M, ctx, true));
316
+ }
317
+ get title() {
318
+ var _a;
319
+ return this.translate(this._title) || this.translate((_a = this.constructor["meta"]) == null ? void 0 : _a.label);
320
+ }
321
+ setTitle(value) {
322
+ this._title = value;
323
+ }
324
+ setHidden(value) {
325
+ this.hidden = !!value;
326
+ }
327
+ _createSubModels(subModels) {
328
+ let mergedSubModels = subModels || {};
329
+ try {
330
+ const Cls = this.constructor;
331
+ const meta = Cls.meta;
332
+ const metaCreate = meta == null ? void 0 : meta.createModelOptions;
333
+ if (metaCreate && typeof metaCreate === "object" && metaCreate.subModels) {
334
+ mergedSubModels = import_lodash.default.merge({}, import_lodash.default.cloneDeep(metaCreate.subModels || {}), import_lodash.default.cloneDeep(subModels || {}));
335
+ }
336
+ } catch (e) {
337
+ }
338
+ Object.entries(mergedSubModels || {}).forEach(([key, value]) => {
339
+ if (Array.isArray(value)) {
340
+ value.sort((a, b) => (a.sortIndex || 0) - (b.sortIndex || 0)).forEach((item) => {
341
+ this.addSubModel(key, item);
342
+ });
343
+ } else {
344
+ this.setSubModel(key, value);
345
+ }
346
+ });
347
+ }
348
+ /**
349
+ * 失效指定事件的流程缓存;未指定 eventName 时,失效当前模型全部事件缓存。
350
+ * - 默认 beforeRender 与其它事件共享同一缓存体系:prefix=`event:${scope}`,flowKey=`eventName`,uid=`model.uid`
351
+ */
352
+ invalidateFlowCache(eventName, deep = false) {
353
+ if (this.flowEngine) {
354
+ const scope = `event:${this.getFlowCacheScope(eventName || "beforeRender")}`;
355
+ const cache = this.flowEngine.applyFlowCache;
356
+ if (eventName) {
357
+ const altScope = scope.replace(/:/g, "-");
358
+ const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
359
+ const eventSegments = [`:${eventName}:`, `-${eventName}-`];
360
+ for (const key of cache.keys()) {
361
+ const startMatches = key.startsWith(scope) || key.startsWith(altScope);
362
+ const endMatches = uidSuffixes.some((s) => key.endsWith(s));
363
+ const eventMatches = eventSegments.some((seg) => key.includes(seg));
364
+ if (startMatches && endMatches && eventMatches) {
365
+ cache.delete(key);
366
+ }
367
+ }
368
+ } else {
369
+ const altScope = `${scope}:`.replace(/:/g, "-");
370
+ const prefixes = [`${scope}:`, altScope];
371
+ const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
372
+ for (const key of cache.keys()) {
373
+ const startMatches = prefixes.some((p) => key.startsWith(p));
374
+ const endMatches = uidSuffixes.some((s) => key.endsWith(s));
375
+ if (startMatches && endMatches) cache.delete(key);
376
+ }
377
+ }
378
+ this.forks.forEach((fork) => {
379
+ var _a;
380
+ const forkScope = `event:${((_a = fork.getFlowCacheScope) == null ? void 0 : _a.call(fork, eventName || "beforeRender")) ?? String(fork["forkId"])}`;
381
+ const altForkScope = forkScope.replace(/:/g, "-");
382
+ const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
383
+ if (eventName) {
384
+ const eventSegments = [`:${eventName}:`, `-${eventName}-`];
385
+ for (const key of this.flowEngine.applyFlowCache.keys()) {
386
+ const startMatches = key.startsWith(forkScope) || key.startsWith(altForkScope);
387
+ const endMatches = uidSuffixes.some((s) => key.endsWith(s));
388
+ const eventMatches = eventSegments.some((seg) => key.includes(seg));
389
+ if (startMatches && endMatches && eventMatches) this.flowEngine.applyFlowCache.delete(key);
390
+ }
391
+ } else {
392
+ const prefixes = [`${forkScope}:`, `${altForkScope}-`];
393
+ for (const key of this.flowEngine.applyFlowCache.keys()) {
394
+ const startMatches = prefixes.some((p) => key.startsWith(p));
395
+ const endMatches = uidSuffixes.some((s) => key.endsWith(s));
396
+ if (startMatches && endMatches) this.flowEngine.applyFlowCache.delete(key);
397
+ }
398
+ }
399
+ });
400
+ }
401
+ if (deep) {
402
+ const subModelKeys = Object.keys(this.subModels);
403
+ for (const subModelKey of subModelKeys) {
404
+ const subModelValue = this.subModels[subModelKey];
405
+ if (Array.isArray(subModelValue)) {
406
+ for (const subModel of subModelValue) {
407
+ subModel.invalidateFlowCache(eventName, deep);
408
+ }
409
+ } else if (subModelValue instanceof _FlowModel) {
410
+ subModelValue.invalidateFlowCache(eventName, deep);
411
+ }
412
+ }
413
+ }
414
+ }
415
+ /**
416
+ * 设置FlowEngine实例
417
+ * @param {FlowEngine} flowEngine FlowEngine实例
418
+ */
419
+ setFlowEngine(flowEngine) {
420
+ }
421
+ static define(meta) {
422
+ modelMetas.set(this, meta);
423
+ }
424
+ /**
425
+ * 注册一个 Flow。
426
+ * @template TModel 具体的FlowModel子类类型
427
+ * @param {string | FlowDefinitionOptions<TModel>} keyOrDefinition 流程的 Key 或 FlowDefinitionOptions 对象。
428
+ * 如果为字符串,则为流程 Key,需要配合 flowDefinition 参数。
429
+ * 如果为对象,则为包含 key 属性的完整 FlowDefinitionOptions。
430
+ * @param {FlowDefinitionOptions<TModel>} [flowDefinition] 当第一个参数为流程 Key 时,此参数为流程的定义。
431
+ * @returns {void}
432
+ */
433
+ static registerFlow(keyOrDefinition, flowDefinition) {
434
+ const Cls = this;
435
+ if (typeof keyOrDefinition === "string") {
436
+ Cls.globalFlowRegistry.addFlow(keyOrDefinition, flowDefinition);
437
+ } else {
438
+ Cls.globalFlowRegistry.addFlow(keyOrDefinition.key, keyOrDefinition);
439
+ }
440
+ }
441
+ // /**
442
+ // * 清空所有注册的流程定义。在测试中用来清理已注册的流,防止对其它测试产生影响。
443
+ // */
444
+ // public static clearFlows(): void {
445
+ // modelFlows = new WeakMap<typeof FlowModel, Map<string, FlowDefinition>>();
446
+ // }
447
+ /**
448
+ * 获取已注册的流程定义。
449
+ * 如果当前类不存在对应的flow,会继续往父类查找。
450
+ * @param {string} key 流程 Key。
451
+ * @returns {FlowDefinition | undefined} 流程定义,如果未找到则返回 undefined。
452
+ */
453
+ getFlow(key) {
454
+ if (this.flowRegistry.hasFlow(key)) {
455
+ return this.flowRegistry.getFlow(key);
456
+ }
457
+ const Cls = this.constructor;
458
+ return Cls.globalFlowRegistry.getFlow(key);
459
+ }
460
+ /**
461
+ * 注册一个实例级别的流程定义。
462
+ * @template TModel 具体的FlowModel子类类型
463
+ * @param {string | FlowDefinitionOptions<TModel>} keyOrDefinition 流程的 Key 或 FlowDefinitionOptions 对象。
464
+ * @param {FlowDefinitionOptions<TModel>} [flowDefinition] 当第一个参数为流程 Key 时,此参数为流程的定义。
465
+ * @returns {FlowDefinition} 注册的流程定义实例
466
+ */
467
+ registerFlow(keyOrDefinition, flowDefinition) {
468
+ if (typeof keyOrDefinition === "string") {
469
+ return this.flowRegistry.addFlow(keyOrDefinition, flowDefinition);
470
+ } else {
471
+ return this.flowRegistry.addFlow(keyOrDefinition.key, keyOrDefinition);
472
+ }
473
+ }
474
+ /**
475
+ * 获取当前模型可用的所有 Actions:
476
+ * - 包含全局(FlowEngine)注册的 Actions;
477
+ * - 合并类级(FlowModel.registerAction(s))注册的 Actions,并考虑继承(子类覆盖父类同名 Action)。
478
+ */
479
+ getActions() {
480
+ var _a;
481
+ const ModelClass = this.constructor;
482
+ const merged = ModelClass.actionRegistry.getActions();
483
+ const actions = /* @__PURE__ */ new Map();
484
+ const globalActions = (_a = this.flowEngine) == null ? void 0 : _a.getActions();
485
+ if (globalActions) for (const [k, v] of globalActions) actions.set(k, v);
486
+ for (const [k, v] of merged) actions.set(k, v);
487
+ return actions;
488
+ }
489
+ /**
490
+ * 获取当前模型可用的所有 Events:
491
+ * - 包含全局(FlowEngine)注册的 Events;
492
+ * - 合并类级(FlowModel.registerEvent(s))注册的 Events,并考虑继承(子类覆盖父类同名 Event)。
493
+ */
494
+ getEvents() {
495
+ var _a;
496
+ const ModelClass = this.constructor;
497
+ const merged = ModelClass.eventRegistry.getEvents();
498
+ const events = /* @__PURE__ */ new Map();
499
+ const globalEvents = (_a = this.flowEngine) == null ? void 0 : _a.getEvents();
500
+ if (globalEvents) for (const [k, v] of globalEvents) events.set(k, v);
501
+ for (const [k, v] of merged) events.set(k, v);
502
+ return events;
503
+ }
504
+ /**
505
+ * 获取指定名称的 Event(优先返回类级注册的,未找到则回退到全局)。
506
+ */
507
+ getEvent(name) {
508
+ var _a;
509
+ const ModelClass = this.constructor;
510
+ const own = ModelClass.eventRegistry.getEvent(name);
511
+ if (own) return own;
512
+ return (_a = this.flowEngine) == null ? void 0 : _a.getEvent(name);
513
+ }
514
+ /**
515
+ * 获取指定名称的 Action(优先返回类级注册的,未找到则回退到全局)。
516
+ */
517
+ getAction(name) {
518
+ var _a;
519
+ const ModelClass = this.constructor;
520
+ const own = ModelClass.actionRegistry.getAction(name);
521
+ if (own) return own;
522
+ return (_a = this.flowEngine) == null ? void 0 : _a.getAction(name);
523
+ }
524
+ getFlows() {
525
+ const instanceFlows = this.flowRegistry.getFlows();
526
+ const staticFlows = this.constructor.globalFlowRegistry.getFlows();
527
+ const instanceKeys = new Set(instanceFlows.keys());
528
+ const staticEntries = Array.from(staticFlows.entries()).filter(([key]) => !instanceKeys.has(key));
529
+ const instanceEntries = Array.from(instanceFlows.entries());
530
+ const allEntries = [...staticEntries, ...instanceEntries];
531
+ allEntries.sort(([, a], [, b]) => {
532
+ const sa = a.sort ?? 0;
533
+ const sb = b.sort ?? 0;
534
+ if (sa !== sb) return sa - sb;
535
+ return 0;
536
+ });
537
+ return new Map(allEntries);
538
+ }
539
+ setProps(props, value) {
540
+ if (typeof props === "string") {
541
+ this.props[props] = value;
542
+ } else {
543
+ this.props = { ...this.props, ...props };
544
+ }
545
+ }
546
+ getProps() {
547
+ return this.props;
548
+ }
549
+ setStepParams(flowKeyOrAllParams, stepKeyOrStepsParams, params) {
550
+ if (typeof flowKeyOrAllParams === "string") {
551
+ const flowKey = flowKeyOrAllParams;
552
+ if (typeof stepKeyOrStepsParams === "string" && params !== void 0) {
553
+ if (!this.stepParams[flowKey]) {
554
+ this.stepParams[flowKey] = {};
555
+ }
556
+ this.stepParams[flowKey][stepKeyOrStepsParams] = {
557
+ ...this.stepParams[flowKey][stepKeyOrStepsParams],
558
+ ...params
559
+ };
560
+ } else if (typeof stepKeyOrStepsParams === "object" && stepKeyOrStepsParams !== null) {
561
+ this.stepParams[flowKey] = { ...this.stepParams[flowKey] || {}, ...stepKeyOrStepsParams };
562
+ }
563
+ } else if (typeof flowKeyOrAllParams === "object" && flowKeyOrAllParams !== null) {
564
+ for (const fk in flowKeyOrAllParams) {
565
+ if (Object.prototype.hasOwnProperty.call(flowKeyOrAllParams, fk)) {
566
+ this.stepParams[fk] = { ...this.stepParams[fk] || {}, ...flowKeyOrAllParams[fk] };
567
+ }
568
+ }
569
+ }
570
+ }
571
+ getStepParams(flowKey, stepKey) {
572
+ var _a;
573
+ if (flowKey && stepKey) {
574
+ return (_a = this.stepParams[flowKey]) == null ? void 0 : _a[stepKey];
575
+ }
576
+ if (flowKey) {
577
+ return this.stepParams[flowKey];
578
+ }
579
+ return this.stepParams;
580
+ }
581
+ async applyFlow(flowKey, inputArgs, runId) {
582
+ const currentFlowEngine = this.flowEngine;
583
+ if (!currentFlowEngine) {
584
+ console.warn("FlowEngine not available on this model for applyFlow. Check and model.flowEngine setup.");
585
+ return Promise.reject(new Error("FlowEngine not available for applyFlow. Please set flowEngine on the model."));
586
+ }
587
+ const isFork = this.isFork === true;
588
+ const target = this;
589
+ console.log(
590
+ `[FlowModel] applyFlow: uid=${this.uid}, flowKey=${flowKey}, isFork=${isFork}, cleanRun=${this.cleanRun}, targetIsFork=${(target == null ? void 0 : target.isFork) === true}`
591
+ );
592
+ return currentFlowEngine.executor.runFlow(target, flowKey, inputArgs, runId);
593
+ }
594
+ async _dispatchEvent(eventName, inputArgs, options) {
595
+ const currentFlowEngine = this.flowEngine;
596
+ if (!currentFlowEngine) {
597
+ console.warn("FlowEngine not available on this model for dispatchEvent. Please set flowEngine on the model.");
598
+ return;
599
+ }
600
+ const isFork = this.isFork === true;
601
+ const target = this;
602
+ console.log(
603
+ `[FlowModel] dispatchEvent: uid=${this.uid}, event=${eventName}, isFork=${isFork}, cleanRun=${this.cleanRun}, targetIsFork=${(target == null ? void 0 : target.isFork) === true}`
604
+ );
605
+ return await currentFlowEngine.executor.dispatchEvent(target, eventName, inputArgs, options);
606
+ }
607
+ async dispatchEvent(eventName, inputArgs, options) {
608
+ const isBeforeRender = eventName === "beforeRender";
609
+ const defaults = isBeforeRender ? { sequential: true, useCache: true } : {};
610
+ const execOptions = {
611
+ sequential: (options == null ? void 0 : options.sequential) ?? defaults.sequential,
612
+ useCache: (options == null ? void 0 : options.useCache) ?? defaults.useCache
613
+ };
614
+ if (isBeforeRender) {
615
+ this._lastAutoRunParams = [inputArgs, execOptions.useCache];
616
+ }
617
+ if (options == null ? void 0 : options.debounce) {
618
+ return this._dispatchEventWithDebounce(eventName, inputArgs, execOptions);
619
+ }
620
+ return this._dispatchEvent(eventName, inputArgs, execOptions);
621
+ }
622
+ /**
623
+ * 按事件名获取对应的流程集合(保持 getFlows 的顺序,即按 sort 排序)。
624
+ * - beforeRender 兼容:除显式 on: 'beforeRender' 外,包含未声明 on 且 manual !== true 的流程。
625
+ */
626
+ getEventFlows(eventName) {
627
+ const allFlows = this.getFlows();
628
+ const beforeRender = eventName === "beforeRender";
629
+ const isMatch = /* @__PURE__ */ __name((flow) => {
630
+ var _a;
631
+ if (beforeRender) {
632
+ if (flow.manual === true) return false;
633
+ if (!flow.on) return true;
634
+ return typeof flow.on === "string" ? flow.on === "beforeRender" : ((_a = flow.on) == null ? void 0 : _a.eventName) === "beforeRender";
635
+ }
636
+ const on = flow.on;
637
+ if (!on) return false;
638
+ return typeof on === "string" ? on === eventName : (on == null ? void 0 : on.eventName) === eventName;
639
+ }, "isMatch");
640
+ return Array.from(allFlows.values()).filter(isMatch);
641
+ }
642
+ /**
643
+ * 通用事件分发钩子:开始
644
+ * 子类可覆盖;beforeRender 事件可通过抛出 FlowExitException 提前终止。
645
+ */
646
+ async onDispatchEventStart(eventName, options, inputArgs) {
647
+ }
648
+ /**
649
+ * 通用事件分发钩子:结束
650
+ * 子类可覆盖。
651
+ */
652
+ async onDispatchEventEnd(eventName, options, inputArgs, results) {
653
+ }
654
+ /**
655
+ * 通用事件分发钩子:错误
656
+ * 子类可覆盖。
657
+ */
658
+ async onDispatchEventError(eventName, options, inputArgs, error) {
659
+ }
660
+ useHooksBeforeRender() {
661
+ }
662
+ /**
663
+ * 智能检测是否应该跳过响应式包装
664
+ * 说明:
665
+ * - 仅基于标记判断,不会执行 render,避免出现“预调用 render”带来的副作用和双调用问题。
666
+ * - 当子类需要返回函数(如表格列的单元格渲染器),应在子类上设置静态属性 `renderReturnsFunction = true`。
667
+ */
668
+ shouldSkipReactiveWrapping() {
669
+ if (this.render.__isReactiveWrapped) {
670
+ return true;
671
+ }
672
+ const Cls = this.constructor;
673
+ if (Cls.renderMode === "renderFunction" /* RenderFunction */) {
674
+ return true;
675
+ }
676
+ return false;
677
+ }
678
+ /**
679
+ * 设置 render 方法的响应式包装
680
+ * @private
681
+ */
682
+ setupReactiveRender() {
683
+ if (typeof this.render !== "function") {
684
+ return;
685
+ }
686
+ try {
687
+ const originalRender = this.render;
688
+ this._originalRender = originalRender;
689
+ if (typeof originalRender !== "function") {
690
+ console.error(`FlowModel ${this.constructor.name}: original render method is not a function`, originalRender);
691
+ return;
692
+ }
693
+ if (this.shouldSkipReactiveWrapping()) {
694
+ const wrappedNonReactive = /* @__PURE__ */ __name(function() {
695
+ var _a, _b, _c;
696
+ const isConfigMode = !!((_b = (_a = this == null ? void 0 : this.flowEngine) == null ? void 0 : _a.flowSettings) == null ? void 0 : _b.enabled);
697
+ if (this.hidden) {
698
+ if (!isConfigMode) return null;
699
+ const rendered = (_c = this.renderHiddenInConfig) == null ? void 0 : _c.call(this);
700
+ const Cls = this.constructor;
701
+ const returnsFunction = Cls.renderMode === "renderFunction" /* RenderFunction */;
702
+ return returnsFunction ? typeof rendered === "function" ? rendered : () => rendered : rendered;
703
+ }
704
+ return originalRender.call(this);
705
+ }, "wrappedNonReactive");
706
+ wrappedNonReactive.__originalRender = originalRender;
707
+ this.render = wrappedNonReactive;
708
+ return;
709
+ }
710
+ const createReactiveWrapper = /* @__PURE__ */ __name((modelInstance) => {
711
+ const ReactiveWrapper = (0, import_reactive_react.observer)(() => {
712
+ var _a, _b, _c;
713
+ const renderTarget = modelInstance;
714
+ if (renderTarget !== modelInstance && (renderTarget == null ? void 0 : renderTarget.localProps) !== void 0) {
715
+ renderTarget.localProps;
716
+ modelInstance.props;
717
+ } else {
718
+ modelInstance.props;
719
+ }
720
+ import_react.default.useEffect(() => {
721
+ if (typeof renderTarget.onMount === "function") {
722
+ renderTarget.onMount();
723
+ }
724
+ return () => {
725
+ if (typeof renderTarget.onUnmount === "function") {
726
+ renderTarget.onUnmount();
727
+ }
728
+ };
729
+ }, [renderTarget]);
730
+ const isConfigMode = !!((_b = (_a = modelInstance == null ? void 0 : modelInstance.flowEngine) == null ? void 0 : _a.flowSettings) == null ? void 0 : _b.enabled);
731
+ if (modelInstance.hidden) {
732
+ if (!isConfigMode) {
733
+ return null;
734
+ }
735
+ return (_c = modelInstance.renderHiddenInConfig) == null ? void 0 : _c.call(modelInstance);
736
+ }
737
+ modelInstance.stepParams;
738
+ return originalRender.call(renderTarget);
739
+ });
740
+ ReactiveWrapper.displayName = `ReactiveWrapper(${modelInstance.constructor.name})`;
741
+ return ReactiveWrapper;
742
+ }, "createReactiveWrapper");
743
+ const wrappedRender = /* @__PURE__ */ __name(function() {
744
+ if (!this._reactiveWrapperCache) {
745
+ this._reactiveWrapperCache = createReactiveWrapper(this);
746
+ }
747
+ return import_react.default.createElement(this._reactiveWrapperCache);
748
+ }, "wrappedRender");
749
+ wrappedRender.__isReactiveWrapped = true;
750
+ wrappedRender.__originalRender = originalRender;
751
+ this.render = wrappedRender;
752
+ } catch (error) {
753
+ console.error(`FlowModel ${this.constructor.name}: Error during render method wrapping:`, error);
754
+ }
755
+ }
756
+ get cleanRun() {
757
+ return true;
758
+ }
759
+ setCleanRun(value) {
760
+ const prev = this._cleanRun;
761
+ this._cleanRun = !!value;
762
+ }
763
+ /**
764
+ * 组件挂载时的生命周期钩子
765
+ * 子类可以重写此方法来添加挂载时的逻辑
766
+ * @protected
767
+ */
768
+ // eslint-disable-next-line no-empty
769
+ onMount() {
770
+ }
771
+ /**
772
+ * 组件卸载时的生命周期钩子
773
+ * 子类可以重写此方法来添加卸载时的逻辑
774
+ * @protected
775
+ */
776
+ onUnmount() {
777
+ }
778
+ /**
779
+ * 有权限时的渲染逻辑。
780
+ * 这是一个抽象方法,所有子类都必须实现,用于返回自己的正常 UI。
781
+ *
782
+ * @returns {React.ReactNode} 有权限时的渲染结果
783
+ */
784
+ render() {
785
+ return /* @__PURE__ */ import_react.default.createElement("div", { ...this.props });
786
+ }
787
+ async rerender() {
788
+ var _a;
789
+ await this.dispatchEvent("beforeRender", (_a = this._lastAutoRunParams) == null ? void 0 : _a[0], { useCache: false });
790
+ }
791
+ /**
792
+ * 事件缓存的作用域标识;可按事件区分(默认与事件无关的 scope 返回 'default')。
793
+ */
794
+ getFlowCacheScope(eventName) {
795
+ return String(eventName);
796
+ }
797
+ setParent(parent) {
798
+ const isValidParent = parent && (parent.constructor === _FlowModel || (0, import_utils.isInheritedFrom)(parent.constructor, _FlowModel));
799
+ if (!isValidParent) {
800
+ throw new Error("Parent must be an instance of FlowModel.");
801
+ }
802
+ this.parent = parent;
803
+ this._options.parentId = parent.uid;
804
+ if (this._options.delegateToParent !== false) {
805
+ this.context.addDelegate(this.parent.context);
806
+ }
807
+ }
808
+ removeParentDelegate() {
809
+ if (!this.parent) {
810
+ return;
811
+ }
812
+ this.context.removeDelegate(this.parent.context);
813
+ }
814
+ addSubModel(subKey, options) {
815
+ var _a;
816
+ const actualParent = this["master"] || this;
817
+ let model;
818
+ if (options instanceof _FlowModel) {
819
+ const hasParent = !!options.parent;
820
+ const parentUid = (_a = options.parent) == null ? void 0 : _a.uid;
821
+ if (hasParent && parentUid && parentUid !== actualParent.uid) {
822
+ throw new Error("Sub model already has a parent.");
823
+ }
824
+ model = options;
825
+ } else {
826
+ model = actualParent.flowEngine.createModel({
827
+ ...options,
828
+ parentId: actualParent.uid,
829
+ subKey,
830
+ subType: "array"
831
+ });
832
+ }
833
+ model.setParent(actualParent);
834
+ const subModels = actualParent.subModels;
835
+ if (!Array.isArray(subModels[subKey])) {
836
+ subModels[subKey] = import_reactive.observable.shallow([]);
837
+ }
838
+ const maxSortIndex = Math.max(...subModels[subKey].map((item) => item.sortIndex || 0), 0);
839
+ model.sortIndex = maxSortIndex + 1;
840
+ subModels[subKey].push(model);
841
+ actualParent.emitter.emit("onSubModelAdded", model);
842
+ return model;
843
+ }
844
+ setSubModel(subKey, options) {
845
+ var _a;
846
+ const actualParent = this["master"] || this;
847
+ let model;
848
+ if (options instanceof _FlowModel) {
849
+ const hasParent = !!options.parent;
850
+ const parentUid = (_a = options.parent) == null ? void 0 : _a.uid;
851
+ if (hasParent && parentUid && parentUid !== actualParent.uid) {
852
+ throw new Error("Sub model already has a parent.");
853
+ }
854
+ model = options;
855
+ } else {
856
+ model = actualParent.flowEngine.createModel({
857
+ ...options,
858
+ parentId: actualParent.uid,
859
+ subKey,
860
+ subType: "object"
861
+ });
862
+ }
863
+ model.setParent(actualParent);
864
+ actualParent.subModels[subKey] = model;
865
+ actualParent.emitter.emit("onSubModelAdded", model);
866
+ return model;
867
+ }
868
+ filterSubModels(subKey, callback) {
869
+ const model = this.subModels[subKey];
870
+ if (!model) {
871
+ return [];
872
+ }
873
+ const results = [];
874
+ import_lodash.default.castArray(model).sort((a, b) => (a.sortIndex || 0) - (b.sortIndex || 0)).forEach((item, index) => {
875
+ const result = callback(item, index);
876
+ if (result) {
877
+ results.push(item);
878
+ }
879
+ });
880
+ return results;
881
+ }
882
+ mapSubModels(subKey, callback) {
883
+ const model = this.subModels[subKey];
884
+ if (!model) {
885
+ return [];
886
+ }
887
+ const results = [];
888
+ import_lodash.default.castArray(model).sort((a, b) => (a.sortIndex || 0) - (b.sortIndex || 0)).forEach((item, index) => {
889
+ const result = callback(item, index);
890
+ results.push(result);
891
+ });
892
+ return results;
893
+ }
894
+ hasSubModel(subKey) {
895
+ const subModel = this.subModels[subKey];
896
+ if (!subModel) {
897
+ return false;
898
+ }
899
+ return import_lodash.default.castArray(subModel).length > 0;
900
+ }
901
+ findSubModel(subKey, callback) {
902
+ const model = this.subModels[subKey];
903
+ if (!model) {
904
+ return null;
905
+ }
906
+ return import_lodash.default.castArray(model).find((item) => {
907
+ return callback(item);
908
+ }) || null;
909
+ }
910
+ createRootModel(options) {
911
+ return this.flowEngine.createModel(options);
912
+ }
913
+ /**
914
+ * 对指定子模型派发 beforeRender 事件(顺序执行并使用缓存)。
915
+ */
916
+ async applySubModelsBeforeRenderFlows(subKey, inputArgs, shared) {
917
+ await Promise.all(
918
+ this.mapSubModels(subKey, async (sub) => {
919
+ await sub.dispatchEvent("beforeRender", inputArgs);
920
+ })
921
+ );
922
+ }
923
+ /**
924
+ * 创建一个 fork 实例,实现"一份数据(master)多视图(fork)"的能力。
925
+ * @param {IModelComponentProps} [localProps={}] fork 专属的局部 props,优先级高于 master.props
926
+ * @param {string} [key] 可选的 key,用于复用 fork 实例。如果提供了 key,会尝试复用已存在的 fork
927
+ * @returns {ForkFlowModel<this>} 创建的 fork 实例
928
+ */
929
+ createFork(localProps, key, options) {
930
+ if (key) {
931
+ const cachedFork = this.forkCache.get(key);
932
+ if (cachedFork && !cachedFork.disposed) {
933
+ cachedFork.setProps(localProps || {});
934
+ return cachedFork;
935
+ }
936
+ }
937
+ const forkId = this.forks.size;
938
+ const fork = new import_forkFlowModel.ForkFlowModel(this, localProps, forkId);
939
+ if ((options == null ? void 0 : options.register) !== false) {
940
+ this.forks.add(fork);
941
+ }
942
+ if (key && (options == null ? void 0 : options.register) !== false) {
943
+ this.forkCache.set(key, fork);
944
+ }
945
+ return fork;
946
+ }
947
+ clearForks() {
948
+ var _a;
949
+ console.log(`FlowModel ${this.uid} clearing all forks.`);
950
+ if ((_a = this.forks) == null ? void 0 : _a.size) {
951
+ this.forks.forEach((fork) => fork.dispose());
952
+ this.forks.clear();
953
+ }
954
+ this.forkCache.clear();
955
+ }
956
+ getFork(key) {
957
+ return this.forkCache.get(key);
958
+ }
959
+ /**
960
+ * 移动当前模型到目标模型的位置
961
+ * @param {FlowModel} targetModel 目标模型
962
+ * @param {PersistOptions} [options] 可选的持久化选项
963
+ * @returns {boolean} 是否成功移动
964
+ */
965
+ moveTo(targetModel, options) {
966
+ if (!this.flowEngine) {
967
+ throw new Error("FlowEngine is not set on this model. Please set flowEngine before saving.");
968
+ }
969
+ return this.flowEngine.moveModel(this.uid, targetModel.uid, options);
970
+ }
971
+ remove() {
972
+ if (!this.flowEngine) {
973
+ throw new Error("FlowEngine is not set on this model. Please set flowEngine before saving.");
974
+ }
975
+ this.observerDispose();
976
+ this.invalidateFlowCache("beforeRender", true);
977
+ return this.flowEngine.removeModel(this.uid);
978
+ }
979
+ async save() {
980
+ if (!this.flowEngine) {
981
+ throw new Error("FlowEngine is not set on this model. Please set flowEngine before saving.");
982
+ }
983
+ return this.flowEngine.saveModel(this);
984
+ }
985
+ async saveStepParams() {
986
+ return this.flowEngine.saveModel(this, { onlyStepParams: true });
987
+ }
988
+ async destroy() {
989
+ if (!this.flowEngine) {
990
+ throw new Error("FlowEngine is not set on this model. Please set flowEngine before deleting.");
991
+ }
992
+ this.observerDispose();
993
+ this.invalidateFlowCache("beforeRender", true);
994
+ return this.flowEngine.destroyModel(this.uid);
995
+ }
996
+ /**
997
+ * @deprecated
998
+ * 打开步骤设置对话框
999
+ * 用于配置流程中特定步骤的参数和设置
1000
+ * @param {string} flowKey 流程的唯一标识符
1001
+ * @param {string} stepKey 步骤的唯一标识符
1002
+ * @returns {void}
1003
+ */
1004
+ openStepSettingsDialog(flowKey, stepKey) {
1005
+ var _a;
1006
+ const flow = this.getFlow(flowKey);
1007
+ const step = (_a = flow == null ? void 0 : flow.steps) == null ? void 0 : _a[stepKey];
1008
+ if (!flow || !step) {
1009
+ console.error(`Flow ${flowKey} or step ${stepKey} not found`);
1010
+ return;
1011
+ }
1012
+ const ctx = new import_flowContext.FlowRuntimeContext(this, flowKey, "settings");
1013
+ (0, import_utils.setupRuntimeContextSteps)(ctx, flow.steps, this, flowKey);
1014
+ ctx.defineProperty("currentStep", { value: step });
1015
+ return (0, import_StepSettingsDialog.openStepSettingsDialog)({
1016
+ model: this,
1017
+ flowKey,
1018
+ stepKey,
1019
+ ctx
1020
+ });
1021
+ }
1022
+ /**
1023
+ * 配置必填步骤参数
1024
+ * 用于在一个分步表单中配置所有需要参数的步骤
1025
+ * @param {number | string} [dialogWidth=800] 对话框宽度,默认为800
1026
+ * @param {string} [dialogTitle='步骤参数配置'] 对话框标题,默认为'步骤参数配置'
1027
+ * @returns {Promise<any>} 返回表单提交的值
1028
+ */
1029
+ async configureRequiredSteps(dialogWidth, dialogTitle) {
1030
+ return (0, import_StepRequiredSettingsDialog.openRequiredParamsStepFormDialog)({
1031
+ model: this,
1032
+ dialogWidth,
1033
+ dialogTitle
1034
+ });
1035
+ }
1036
+ /**
1037
+ * @deprecated
1038
+ * @param dialogWidth
1039
+ * @param dialogTitle
1040
+ * @returns
1041
+ */
1042
+ async openPresetStepSettingsDialog(dialogWidth, dialogTitle) {
1043
+ return this.configureRequiredSteps(dialogWidth, dialogTitle);
1044
+ }
1045
+ async openFlowStepSettingsDialog(options) {
1046
+ }
1047
+ get translate() {
1048
+ return this.flowEngine.translate.bind(this.flowEngine);
1049
+ }
1050
+ // TODO: 不完整,需要考虑 sub-model 的情况
1051
+ serialize() {
1052
+ const data = {
1053
+ uid: this.uid,
1054
+ ...import_lodash.default.omit(this._options, ["flowEngine"]),
1055
+ stepParams: this.stepParams,
1056
+ sortIndex: this.sortIndex
1057
+ };
1058
+ const subModels = this.subModels;
1059
+ for (const subModelKey in subModels) {
1060
+ data.subModels = data.subModels || {};
1061
+ if (Array.isArray(subModels[subModelKey])) {
1062
+ data.subModels[subModelKey] = subModels[subModelKey].map((model, index) => ({
1063
+ ...model.serialize(),
1064
+ sortIndex: index
1065
+ }));
1066
+ } else if (subModels[subModelKey] instanceof _FlowModel) {
1067
+ data.subModels[subModelKey] = subModels[subModelKey].serialize();
1068
+ }
1069
+ }
1070
+ for (const [key, flow] of this.flowRegistry.getFlows()) {
1071
+ data["flowRegistry"] = data["flowRegistry"] || {};
1072
+ data["flowRegistry"][key] = flow.toData();
1073
+ }
1074
+ return data;
1075
+ }
1076
+ /**
1077
+ * Opens the flow settings dialog for this flow model.
1078
+ * @param options - Configuration options for opening flow settings, excluding the model property
1079
+ * @returns A promise that resolves when the flow settings dialog is opened
1080
+ */
1081
+ async openFlowSettings(options) {
1082
+ return this.flowEngine.flowSettings.open({
1083
+ model: this,
1084
+ ...options
1085
+ });
1086
+ }
1087
+ // =============================
1088
+ // Dynamic flows (disabled)
1089
+ // The following APIs are kept as comments to preserve context
1090
+ // =============================
1091
+ /*
1092
+ async openDynamicFlowsEditor(
1093
+ options?: Omit<FlowSettingsOpenOptions, 'model' | 'flowKey' | 'flowKeys' | 'stepKey' | 'preset'>,
1094
+ ) {
1095
+ return this.flowEngine.flowSettings.openDynamicFlowsEditor({
1096
+ model: this,
1097
+ ...options,
1098
+ });
1099
+ }
1100
+
1101
+ #dynamicFlows: FlowDefinition[] = [];
1102
+
1103
+ async loadDynamicFlows(): Promise<FlowDefinition[]> {
1104
+ return JSON.parse(localStorage.getItem('DYNAMIC_FLOWS') || '[]');
1105
+ }
1106
+
1107
+ async saveDynamicFlows(): Promise<void> {
1108
+ localStorage.setItem('DYNAMIC_FLOWS', JSON.stringify(this.#dynamicFlows));
1109
+ }
1110
+
1111
+ setDynamicFlows(flows: FlowDefinition[]): void {
1112
+ this.#dynamicFlows = flows;
1113
+ flows.forEach((flow) => {
1114
+ // @ts-ignore
1115
+ this.constructor.registerFlow(flow);
1116
+ });
1117
+ }
1118
+
1119
+ getDynamicFlows(): FlowDefinitionOptions[] {
1120
+ return this.#dynamicFlows;
1121
+ }
1122
+ */
1123
+ };
1124
+ _flowContext = new WeakMap();
1125
+ __name(_FlowModel, "FlowModel");
1126
+ /**
1127
+ * 声明渲染模式:
1128
+ * - 'renderElement': render 返回 React 节点,框架会用 observer 包装以获得响应式;
1129
+ * - 'renderFunction': render 返回渲染函数(例如表格单元格渲染器),不做包装也不预调用;
1130
+ */
1131
+ __publicField(_FlowModel, "renderMode", "reactElement" /* ReactElement */);
1132
+ let FlowModel = _FlowModel;
1133
+ const _ErrorFlowModel = class _ErrorFlowModel extends FlowModel {
1134
+ errorMessage;
1135
+ setErrorMessage(msg) {
1136
+ this.errorMessage = msg;
1137
+ }
1138
+ render() {
1139
+ return /* @__PURE__ */ import_react.default.createElement(import_lib.Typography.Text, { type: "danger" }, this.errorMessage);
1140
+ }
1141
+ };
1142
+ __name(_ErrorFlowModel, "ErrorFlowModel");
1143
+ let ErrorFlowModel = _ErrorFlowModel;
1144
+ function defineFlow(definition) {
1145
+ return definition;
1146
+ }
1147
+ __name(defineFlow, "defineFlow");
1148
+ // Annotate the CommonJS export names for ESM import in node:
1149
+ 0 && (module.exports = {
1150
+ ErrorFlowModel,
1151
+ FlowModel,
1152
+ ModelRenderMode,
1153
+ defineFlow
1154
+ });