@nocobase/flow-engine 2.0.0-alpha.7 → 2.0.0-alpha.71

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 (589) hide show
  1. package/lib/BlockScopedFlowEngine.d.ts +23 -0
  2. package/lib/BlockScopedFlowEngine.js +91 -0
  3. package/lib/FlowContextProvider.d.ts +2 -2
  4. package/lib/FlowContextProvider.js +3 -3
  5. package/lib/FlowDefinition.d.ts +6 -4
  6. package/lib/JSRunner.d.ts +6 -0
  7. package/lib/JSRunner.js +27 -1
  8. package/lib/ViewScopedFlowEngine.d.ts +1 -1
  9. package/lib/ViewScopedFlowEngine.js +18 -1
  10. package/lib/acl/Acl.d.ts +12 -12
  11. package/lib/acl/Acl.js +88 -30
  12. package/lib/components/DynamicFlowsEditor.js +2 -4
  13. package/lib/components/FieldModelRenderer.js +17 -9
  14. package/lib/components/FieldSkeleton.d.ts +10 -0
  15. package/lib/components/FieldSkeleton.js +64 -0
  16. package/lib/components/FlowContextSelector.js +19 -3
  17. package/lib/components/FlowModelRenderer.d.ts +4 -6
  18. package/lib/components/FlowModelRenderer.js +35 -53
  19. package/lib/components/FormItem.js +5 -1
  20. package/lib/components/MobilePopup.d.ts +20 -0
  21. package/lib/components/MobilePopup.js +102 -0
  22. package/lib/components/MobilePopup.style.d.ts +17 -0
  23. package/lib/components/MobilePopup.style.js +186 -0
  24. package/lib/components/common/withFlowDesignMode.d.ts +1 -1
  25. package/lib/components/common/withFlowDesignMode.js +5 -5
  26. package/lib/components/dnd/gridDragPlanner.d.ts +1 -0
  27. package/lib/components/dnd/gridDragPlanner.js +53 -1
  28. package/lib/components/index.d.ts +1 -0
  29. package/lib/components/index.js +3 -1
  30. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +71 -53
  31. package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +19 -0
  32. package/lib/components/settings/wrappers/component/SelectWithTitle.js +136 -0
  33. package/lib/components/settings/wrappers/component/SwitchWithTitle.d.ts +10 -0
  34. package/lib/components/settings/wrappers/component/SwitchWithTitle.js +111 -0
  35. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +233 -97
  36. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +71 -54
  37. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
  38. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +63 -23
  39. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +13 -2
  40. package/lib/components/settings/wrappers/embedded/FlowSettings.js +42 -28
  41. package/lib/components/settings/wrappers/embedded/FlowsSettings.js +3 -3
  42. package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +52 -32
  43. package/lib/components/subModel/AddSubModelButton.d.ts +7 -0
  44. package/lib/components/subModel/AddSubModelButton.js +78 -8
  45. package/lib/components/subModel/LazyDropdown.js +14 -15
  46. package/lib/components/subModel/utils.d.ts +1 -1
  47. package/lib/components/subModel/utils.js +21 -11
  48. package/lib/components/variables/VariableInput.js +26 -6
  49. package/lib/components/variables/VariableTag.js +43 -2
  50. package/lib/components/variables/types.d.ts +2 -0
  51. package/lib/components/variables/utils.js +4 -2
  52. package/lib/data-source/index.d.ts +23 -4
  53. package/lib/data-source/index.js +135 -14
  54. package/lib/data-source/jioToJoiSchema.js +1 -0
  55. package/lib/emitter.d.ts +6 -0
  56. package/lib/emitter.js +12 -0
  57. package/lib/executor/FlowExecutor.d.ts +6 -6
  58. package/lib/executor/FlowExecutor.js +302 -99
  59. package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
  60. package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
  61. package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
  62. package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
  63. package/lib/flowContext.d.ts +105 -6
  64. package/lib/flowContext.js +447 -139
  65. package/lib/flowEngine.d.ts +71 -1
  66. package/lib/flowEngine.js +319 -16
  67. package/lib/flowSettings.d.ts +4 -3
  68. package/lib/flowSettings.js +45 -21
  69. package/lib/hooks/useApplyAutoFlows.d.ts +1 -0
  70. package/lib/hooks/useApplyAutoFlows.js +3 -2
  71. package/lib/index.d.ts +14 -3
  72. package/lib/index.js +54 -7
  73. package/lib/locale/de-DE.json +62 -0
  74. package/lib/locale/en-US.json +57 -45
  75. package/lib/locale/es-ES.json +62 -0
  76. package/lib/locale/fr-FR.json +62 -0
  77. package/lib/locale/hu-HU.json +62 -0
  78. package/lib/locale/id-ID.json +62 -0
  79. package/lib/locale/index.d.ts +114 -90
  80. package/lib/locale/it-IT.json +62 -0
  81. package/lib/locale/ja-JP.json +62 -0
  82. package/lib/locale/ko-KR.json +62 -0
  83. package/lib/locale/nl-NL.json +62 -0
  84. package/lib/locale/pt-BR.json +62 -0
  85. package/lib/locale/ru-RU.json +62 -0
  86. package/lib/locale/tr-TR.json +62 -0
  87. package/lib/locale/uk-UA.json +62 -0
  88. package/lib/locale/vi-VN.json +62 -0
  89. package/lib/locale/zh-CN.json +58 -46
  90. package/lib/locale/zh-TW.json +62 -0
  91. package/lib/models/CollectionFieldModel.d.ts +7 -2
  92. package/lib/models/CollectionFieldModel.js +63 -16
  93. package/lib/models/flowModel.d.ts +76 -32
  94. package/lib/models/flowModel.js +300 -112
  95. package/lib/models/forkFlowModel.d.ts +8 -4
  96. package/lib/models/forkFlowModel.js +38 -8
  97. package/lib/provider.d.ts +3 -1
  98. package/lib/provider.js +14 -11
  99. package/lib/reactive/index.d.ts +10 -0
  100. package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → reactive/index.js} +14 -15
  101. package/lib/reactive/observer.d.ts +19 -0
  102. package/lib/reactive/observer.js +109 -0
  103. package/lib/resources/baseRecordResource.d.ts +6 -0
  104. package/lib/resources/baseRecordResource.js +38 -3
  105. package/lib/resources/multiRecordResource.d.ts +5 -2
  106. package/lib/resources/multiRecordResource.js +26 -10
  107. package/lib/resources/singleRecordResource.js +8 -3
  108. package/lib/resources/sqlResource.d.ts +5 -3
  109. package/lib/resources/sqlResource.js +30 -28
  110. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
  111. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +37 -20
  112. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
  113. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
  114. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
  115. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
  116. package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
  117. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  118. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.d.ts +16 -0
  119. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +125 -0
  120. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
  121. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
  122. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
  123. package/lib/runjs-context/contexts/JSItemRunJSContext.js +34 -20
  124. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
  125. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
  126. package/lib/runjs-context/contexts/base.d.ts +9 -0
  127. package/lib/runjs-context/contexts/base.js +879 -0
  128. package/lib/runjs-context/contributions.d.ts +33 -0
  129. package/lib/runjs-context/contributions.js +88 -0
  130. package/lib/runjs-context/helpers.d.ts +5 -2
  131. package/lib/runjs-context/helpers.js +36 -27
  132. package/lib/runjs-context/registry.d.ts +7 -4
  133. package/lib/runjs-context/registry.js +10 -42
  134. package/lib/runjs-context/setup.d.ts +9 -0
  135. package/lib/runjs-context/setup.js +88 -0
  136. package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
  137. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  138. package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
  139. package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
  140. package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
  141. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
  142. package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
  143. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
  144. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
  145. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  146. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  147. package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
  148. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
  149. package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
  150. package/lib/runjs-context/snippets/index.d.ts +24 -3
  151. package/lib/runjs-context/snippets/index.js +183 -40
  152. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  153. package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
  154. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  155. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  156. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  157. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  158. package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
  159. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
  160. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
  161. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  162. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
  163. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  164. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  165. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  166. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
  167. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
  168. package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
  169. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  170. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
  171. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  172. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
  173. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  174. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
  175. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  176. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  177. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  178. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  179. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  180. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  181. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  182. package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
  183. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  184. package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
  185. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  186. package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
  187. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  188. package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
  189. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  190. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  191. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  192. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  193. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  194. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  195. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  196. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  197. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  198. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  199. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  200. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  201. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  202. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  203. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  204. package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
  205. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  206. package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
  207. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  208. package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
  209. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  210. package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
  211. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  212. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  213. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  214. package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
  215. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  216. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  217. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  218. package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
  219. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  220. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  221. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  222. package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
  223. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  224. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  225. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  226. package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
  227. package/lib/runjs-context/snippets/types.d.ts +9 -1
  228. package/lib/runjsLibs.d.ts +28 -0
  229. package/lib/runjsLibs.js +532 -0
  230. package/lib/scheduler/ModelOperationScheduler.d.ts +53 -0
  231. package/lib/scheduler/ModelOperationScheduler.js +262 -0
  232. package/lib/types.d.ts +66 -7
  233. package/lib/types.js +4 -3
  234. package/lib/utils/associationObjectVariable.d.ts +32 -0
  235. package/lib/utils/associationObjectVariable.js +157 -0
  236. package/lib/utils/createCollectionContextMeta.d.ts +1 -1
  237. package/lib/utils/createCollectionContextMeta.js +9 -4
  238. package/lib/utils/createEphemeralContext.d.ts +13 -0
  239. package/lib/utils/createEphemeralContext.js +140 -0
  240. package/lib/utils/flows.d.ts +10 -0
  241. package/lib/{runjs-context/snippets/global/console-log-ctx.snippet.js → utils/flows.js} +21 -14
  242. package/lib/utils/index.d.ts +9 -3
  243. package/lib/utils/index.js +30 -2
  244. package/lib/utils/jsxTransform.d.ts +15 -0
  245. package/lib/utils/jsxTransform.js +68 -0
  246. package/lib/utils/params-resolvers.js +19 -12
  247. package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
  248. package/lib/utils/parsePathnameToViewParams.js +41 -5
  249. package/lib/utils/pruneFilter.d.ts +21 -0
  250. package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
  251. package/lib/utils/resolveModuleUrl.d.ts +58 -0
  252. package/lib/utils/resolveModuleUrl.js +65 -0
  253. package/lib/utils/runjsModuleLoader.d.ts +58 -0
  254. package/lib/utils/runjsModuleLoader.js +422 -0
  255. package/lib/utils/runjsTemplateCompat.d.ts +35 -0
  256. package/lib/utils/runjsTemplateCompat.js +743 -0
  257. package/lib/utils/safeGlobals.d.ts +6 -8
  258. package/lib/utils/safeGlobals.js +169 -14
  259. package/lib/utils/schema-utils.d.ts +6 -0
  260. package/lib/utils/schema-utils.js +71 -6
  261. package/lib/utils/serverContextParams.d.ts +4 -0
  262. package/lib/utils/serverContextParams.js +2 -0
  263. package/lib/utils/translation.d.ts +4 -1
  264. package/lib/utils/translation.js +6 -2
  265. package/lib/utils/variablesParams.d.ts +22 -5
  266. package/lib/utils/variablesParams.js +141 -61
  267. package/lib/views/DialogComponent.js +1 -5
  268. package/lib/views/DrawerComponent.js +18 -9
  269. package/lib/views/PageComponent.js +5 -5
  270. package/lib/views/ViewNavigation.d.ts +11 -15
  271. package/lib/views/ViewNavigation.js +37 -19
  272. package/lib/views/createViewMeta.d.ts +27 -5
  273. package/lib/views/createViewMeta.js +338 -72
  274. package/lib/views/index.d.ts +1 -1
  275. package/lib/views/index.js +4 -0
  276. package/lib/views/useDialog.d.ts +10 -9
  277. package/lib/views/useDialog.js +46 -34
  278. package/lib/views/useDrawer.d.ts +10 -9
  279. package/lib/views/useDrawer.js +74 -48
  280. package/lib/views/usePage.d.ts +14 -9
  281. package/lib/views/usePage.js +82 -33
  282. package/lib/views/usePopover.js +4 -1
  283. package/lib/views/viewEvents.d.ts +17 -0
  284. package/lib/views/viewEvents.js +90 -0
  285. package/package.json +6 -3
  286. package/src/BlockScopedFlowEngine.ts +85 -0
  287. package/src/FlowContextProvider.tsx +4 -2
  288. package/src/JSRunner.ts +39 -1
  289. package/src/ViewScopedFlowEngine.ts +21 -1
  290. package/src/__tests__/JSRunner.test.ts +125 -52
  291. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  292. package/src/__tests__/createViewMeta.popup.test.ts +203 -0
  293. package/src/__tests__/flow-engine.test.ts +3 -0
  294. package/src/__tests__/flowContext.test.ts +160 -0
  295. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  296. package/src/__tests__/flowEngine.dataSourceDirty.test.ts +63 -0
  297. package/src/__tests__/flowEngine.destroyModel.test.ts +74 -0
  298. package/src/__tests__/flowEngine.moveModel.test.ts +43 -0
  299. package/src/__tests__/flowEngine.removeModel.test.ts +72 -0
  300. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  301. package/src/__tests__/flowModel.openView.navigation.test.ts +31 -2
  302. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  303. package/src/__tests__/flowSettings.open.test.tsx +71 -15
  304. package/src/__tests__/flowSettings.test.ts +2 -0
  305. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  306. package/src/__tests__/modelOperationScheduler.test.ts +346 -0
  307. package/src/__tests__/objectVariable.test.ts +464 -0
  308. package/src/__tests__/provider.test.tsx +0 -5
  309. package/src/__tests__/runjsContext.test.ts +219 -35
  310. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  311. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  312. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  313. package/src/__tests__/runjsExternalLibs.test.ts +242 -0
  314. package/src/__tests__/runjsLibsLazyLoading.test.ts +44 -0
  315. package/src/__tests__/runjsLocales.test.ts +39 -0
  316. package/src/__tests__/runjsPreprocessDefault.test.ts +49 -0
  317. package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
  318. package/src/__tests__/runjsSnippets.test.ts +140 -0
  319. package/src/__tests__/viewScopedFlowEngine.test.ts +101 -3
  320. package/src/acl/Acl.tsx +85 -31
  321. package/src/acl/__tests__/Acl.test.tsx +43 -1
  322. package/src/components/DynamicFlowsEditor.tsx +0 -10
  323. package/src/components/FieldModelRenderer.tsx +22 -9
  324. package/src/components/FieldSkeleton.tsx +27 -0
  325. package/src/components/FlowContextSelector.tsx +20 -2
  326. package/src/components/FlowModelRenderer.tsx +52 -84
  327. package/src/components/FormItem.tsx +8 -1
  328. package/src/components/MobilePopup.style.ts +220 -0
  329. package/src/components/MobilePopup.tsx +86 -0
  330. package/src/components/__tests__/FlowModelRenderer.test.tsx +89 -0
  331. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
  332. package/src/components/__tests__/gridDragPlanner.test.ts +141 -1
  333. package/src/components/common/withFlowDesignMode.tsx +5 -5
  334. package/src/components/dnd/gridDragPlanner.ts +60 -0
  335. package/src/components/index.ts +1 -0
  336. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +34 -17
  337. package/src/components/settings/wrappers/component/SelectWithTitle.tsx +110 -0
  338. package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +83 -0
  339. package/src/components/settings/wrappers/component/__tests__/InlineControls.test.tsx +74 -0
  340. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +272 -125
  341. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +34 -18
  342. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +56 -18
  343. package/src/components/settings/wrappers/contextual/StepSettings.tsx +1 -2
  344. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +13 -1
  345. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +624 -0
  346. package/src/components/settings/wrappers/embedded/FlowSettings.tsx +47 -35
  347. package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +1 -1
  348. package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +64 -42
  349. package/src/components/subModel/AddSubModelButton.tsx +104 -9
  350. package/src/components/subModel/LazyDropdown.tsx +14 -14
  351. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +168 -7
  352. package/src/components/subModel/__tests__/utils.test.ts +12 -12
  353. package/src/components/subModel/utils.ts +25 -6
  354. package/src/components/variables/VariableInput.tsx +32 -6
  355. package/src/components/variables/VariableTag.tsx +54 -2
  356. package/src/components/variables/types.ts +2 -0
  357. package/src/components/variables/utils.ts +7 -3
  358. package/src/data-source/index.ts +143 -12
  359. package/src/data-source/jioToJoiSchema.ts +1 -0
  360. package/src/emitter.ts +14 -0
  361. package/src/executor/FlowExecutor.ts +383 -119
  362. package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
  363. package/src/executor/__tests__/flowExecutor.test.ts +217 -5
  364. package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
  365. package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
  366. package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
  367. package/src/flowContext.ts +646 -158
  368. package/src/flowEngine.ts +385 -14
  369. package/src/flowSettings.ts +59 -30
  370. package/src/hooks/useApplyAutoFlows.ts +5 -3
  371. package/src/index.ts +26 -3
  372. package/src/locale/de-DE.json +62 -0
  373. package/src/locale/en-US.json +57 -45
  374. package/src/locale/es-ES.json +62 -0
  375. package/src/locale/fr-FR.json +62 -0
  376. package/src/locale/hu-HU.json +62 -0
  377. package/src/locale/id-ID.json +62 -0
  378. package/src/locale/it-IT.json +62 -0
  379. package/src/locale/ja-JP.json +62 -0
  380. package/src/locale/ko-KR.json +62 -0
  381. package/src/locale/nl-NL.json +62 -0
  382. package/src/locale/pt-BR.json +62 -0
  383. package/src/locale/ru-RU.json +62 -0
  384. package/src/locale/tr-TR.json +62 -0
  385. package/src/locale/uk-UA.json +62 -0
  386. package/src/locale/vi-VN.json +62 -0
  387. package/src/locale/zh-CN.json +58 -46
  388. package/src/locale/zh-TW.json +62 -0
  389. package/src/models/CollectionFieldModel.tsx +82 -18
  390. package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
  391. package/src/models/__tests__/dispatchEvent.when.test.ts +356 -0
  392. package/src/models/__tests__/flowEngine.resolveUse.test.ts +170 -0
  393. package/src/models/__tests__/flowModel.clone.test.ts +416 -0
  394. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
  395. package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
  396. package/src/models/__tests__/flowModel.test.ts +296 -119
  397. package/src/models/__tests__/forkFlowModel.test.ts +40 -7
  398. package/src/models/flowModel.tsx +426 -148
  399. package/src/models/forkFlowModel.ts +48 -8
  400. package/src/provider.tsx +18 -14
  401. package/src/reactive/__tests__/observer.test.tsx +211 -0
  402. package/src/reactive/index.ts +11 -0
  403. package/src/reactive/observer.tsx +101 -0
  404. package/src/resources/__tests__/multiRecordResource.test.ts +44 -0
  405. package/src/resources/__tests__/sqlResource.test.ts +60 -0
  406. package/src/resources/baseRecordResource.ts +46 -3
  407. package/src/resources/multiRecordResource.ts +28 -12
  408. package/src/resources/singleRecordResource.ts +9 -3
  409. package/src/resources/sqlResource.ts +33 -32
  410. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +38 -21
  411. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +50 -34
  412. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
  413. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  414. package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +106 -0
  415. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
  416. package/src/runjs-context/contexts/JSItemRunJSContext.ts +35 -21
  417. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
  418. package/src/runjs-context/contexts/base.ts +871 -0
  419. package/src/runjs-context/contributions.ts +88 -0
  420. package/src/runjs-context/helpers.ts +32 -30
  421. package/src/runjs-context/registry.ts +16 -47
  422. package/src/runjs-context/setup.ts +57 -0
  423. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  424. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  425. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  426. package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
  427. package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
  428. package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
  429. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
  430. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
  431. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  432. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  433. package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
  434. package/src/runjs-context/snippets/index.ts +212 -39
  435. package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
  436. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  437. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  438. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  439. package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
  440. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
  441. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  442. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
  443. package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
  444. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
  445. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
  446. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
  447. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  448. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  449. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  450. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  451. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  452. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  453. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  454. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  455. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  456. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  457. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  458. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  459. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  460. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  461. package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
  462. package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
  463. package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
  464. package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
  465. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  466. package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
  467. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  468. package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
  469. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  470. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  471. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  472. package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
  473. package/src/runjs-context/snippets/types.ts +5 -1
  474. package/src/runjsLibs.ts +622 -0
  475. package/src/scheduler/ModelOperationScheduler.ts +306 -0
  476. package/src/types.ts +86 -5
  477. package/src/utils/__tests__/createCollectionContextMeta.test.ts +51 -0
  478. package/src/utils/__tests__/flows.test.ts +65 -0
  479. package/src/utils/__tests__/jsxTransform.test.ts +38 -0
  480. package/src/utils/__tests__/params-resolvers.test.ts +40 -0
  481. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
  482. package/src/utils/__tests__/pruneFilter.test.ts +38 -0
  483. package/src/utils/__tests__/runjsRequireAsyncAutoWhitelist.test.ts +38 -0
  484. package/src/utils/__tests__/runjsTemplateCompat.test.ts +159 -0
  485. package/src/utils/__tests__/safeGlobals.test.ts +79 -2
  486. package/src/utils/__tests__/utils.test.ts +114 -15
  487. package/src/utils/__tests__/variablesParams.test.ts +120 -0
  488. package/src/utils/associationObjectVariable.ts +180 -0
  489. package/src/utils/createCollectionContextMeta.ts +9 -3
  490. package/src/utils/createEphemeralContext.ts +142 -0
  491. package/src/utils/flows.ts +23 -0
  492. package/src/utils/index.ts +17 -3
  493. package/src/utils/jsxTransform.ts +39 -0
  494. package/src/utils/params-resolvers.ts +25 -11
  495. package/src/utils/parsePathnameToViewParams.ts +50 -6
  496. package/src/utils/pruneFilter.ts +41 -0
  497. package/src/utils/resolveModuleUrl.ts +91 -0
  498. package/src/utils/runjsModuleLoader.ts +553 -0
  499. package/src/utils/runjsTemplateCompat.ts +828 -0
  500. package/src/utils/safeGlobals.ts +181 -15
  501. package/src/utils/schema-utils.ts +81 -3
  502. package/src/utils/serverContextParams.ts +6 -0
  503. package/src/utils/translation.ts +7 -2
  504. package/src/utils/variablesParams.ts +164 -72
  505. package/src/views/DialogComponent.tsx +1 -4
  506. package/src/views/DrawerComponent.tsx +19 -7
  507. package/src/views/PageComponent.tsx +3 -5
  508. package/src/views/ViewNavigation.ts +49 -43
  509. package/src/views/__tests__/FlowView.usePage.test.tsx +186 -0
  510. package/src/views/__tests__/ViewNavigation.test.ts +54 -34
  511. package/src/views/__tests__/useDialog.closeDestroy.test.tsx +159 -0
  512. package/src/views/__tests__/viewEvents.resolveOpenerEngine.test.ts +28 -0
  513. package/src/views/createViewMeta.ts +402 -73
  514. package/src/views/index.tsx +1 -1
  515. package/src/views/useDialog.tsx +52 -31
  516. package/src/views/useDrawer.tsx +99 -55
  517. package/src/views/usePage.tsx +101 -33
  518. package/src/views/usePopover.tsx +4 -1
  519. package/src/views/viewEvents.ts +55 -0
  520. package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
  521. package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
  522. package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
  523. package/lib/runjs-context/index.d.ts +0 -19
  524. package/lib/runjs-context/index.js +0 -57
  525. package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
  526. package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
  527. package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
  528. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
  529. package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
  530. package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
  531. package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
  532. package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
  533. package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
  534. package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
  535. package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
  536. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
  537. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
  538. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
  539. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
  540. package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
  541. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
  542. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
  543. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
  544. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
  545. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
  546. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
  547. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
  548. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
  549. package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
  550. package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
  551. package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
  552. package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
  553. package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
  554. package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
  555. package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
  556. package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
  557. package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
  558. package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
  559. package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
  560. package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
  561. package/src/runjs-context/index.ts +0 -20
  562. package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
  563. package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
  564. package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
  565. package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
  566. package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
  567. package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
  568. package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
  569. package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
  570. package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
  571. package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
  572. package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
  573. package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
  574. package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
  575. package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
  576. package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
  577. package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
  578. package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
  579. package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
  580. package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
  581. package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
  582. package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
  583. package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
  584. package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
  585. /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
  586. /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
  587. /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
  588. /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
  589. /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
@@ -13,6 +13,7 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
13
  var __getOwnPropNames = Object.getOwnPropertyNames;
14
14
  var __getProtoOf = Object.getPrototypeOf;
15
15
  var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
16
17
  var __export = (target, all) => {
17
18
  for (var name in all)
18
19
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -39,50 +40,69 @@ __export(FlowsSettingsContent_exports, {
39
40
  default: () => FlowsSettingsContent_default
40
41
  });
41
42
  module.exports = __toCommonJS(FlowsSettingsContent_exports);
42
- var import_react = require("@formily/react");
43
43
  var import_antd = require("antd");
44
- var import_react2 = __toESM(require("react"));
44
+ var import_react = __toESM(require("react"));
45
+ var import_utils = require("../../../../utils");
45
46
  var import_FlowSettings = require("./FlowSettings");
47
+ var import_reactive = require("../../../../reactive");
46
48
  const { Panel } = import_antd.Collapse;
47
- const FlowsSettingsContent = (0, import_react.observer)(({ model, expandAll = false }) => {
49
+ const FlowsSettingsContent = (0, import_reactive.observer)(({ model, expandAll = false }) => {
48
50
  const flows = model.getFlows();
49
- const filterFlows = Array.from(flows.values()).filter((flow) => {
50
- const configurableSteps = Object.entries(flow.steps).map(([stepKey, actionStep]) => {
51
- var _a, _b;
52
- if (actionStep.hideInSettings) {
53
- return null;
54
- }
55
- const stepUiSchema = actionStep.uiSchema || {};
56
- let actionUiSchema = {};
57
- if (actionStep.use) {
58
- const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
59
- if (action && action.uiSchema) {
60
- actionUiSchema = action.uiSchema;
51
+ const [filterFlows, setFilterFlows] = (0, import_react.useState)([]);
52
+ (0, import_react.useEffect)(() => {
53
+ let mounted = true;
54
+ const buildFilterFlows = /* @__PURE__ */ __name(async () => {
55
+ const result = [];
56
+ for (const flow of Array.from(flows.values())) {
57
+ const configurableSteps = await Promise.all(
58
+ Object.entries(flow.steps).map(async ([stepKey, actionStep]) => {
59
+ var _a, _b;
60
+ if (await (0, import_utils.shouldHideStepInSettings)(model, flow, actionStep)) {
61
+ return null;
62
+ }
63
+ const stepUiSchema = actionStep.uiSchema || {};
64
+ let actionUiSchema = {};
65
+ if (actionStep.use) {
66
+ const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
67
+ if (action && action.uiSchema) {
68
+ actionUiSchema = action.uiSchema;
69
+ }
70
+ }
71
+ const mergedUiSchema = { ...actionUiSchema };
72
+ Object.entries(stepUiSchema).forEach(([fieldKey, schema]) => {
73
+ if (mergedUiSchema[fieldKey]) {
74
+ mergedUiSchema[fieldKey] = { ...mergedUiSchema[fieldKey], ...schema };
75
+ } else {
76
+ mergedUiSchema[fieldKey] = schema;
77
+ }
78
+ });
79
+ if (Object.keys(mergedUiSchema).length === 0) {
80
+ return null;
81
+ }
82
+ return { stepKey, step: actionStep, uiSchema: mergedUiSchema };
83
+ })
84
+ ).then((steps) => steps.filter(Boolean));
85
+ if (configurableSteps.length > 0) {
86
+ result.push(flow);
61
87
  }
62
88
  }
63
- const mergedUiSchema = { ...actionUiSchema };
64
- Object.entries(stepUiSchema).forEach(([fieldKey, schema]) => {
65
- if (mergedUiSchema[fieldKey]) {
66
- mergedUiSchema[fieldKey] = { ...mergedUiSchema[fieldKey], ...schema };
67
- } else {
68
- mergedUiSchema[fieldKey] = schema;
69
- }
70
- });
71
- if (Object.keys(mergedUiSchema).length === 0) {
72
- return null;
89
+ if (mounted) {
90
+ setFilterFlows(result);
73
91
  }
74
- return { stepKey, step: actionStep, uiSchema: mergedUiSchema };
75
- }).filter(Boolean);
76
- return configurableSteps.length > 0;
77
- });
92
+ }, "buildFilterFlows");
93
+ buildFilterFlows();
94
+ return () => {
95
+ mounted = false;
96
+ };
97
+ }, [model, flows]);
78
98
  const flowKeys = filterFlows.map((flow) => flow.key);
79
99
  if (flowKeys.length === 0) {
80
- return /* @__PURE__ */ import_react2.default.createElement(import_antd.Empty, { description: "\u6CA1\u6709\u53EF\u7528\u7684\u6D41\u7A0B" });
100
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.Empty, { description: "\u6CA1\u6709\u53EF\u7528\u7684\u6D41\u7A0B" });
81
101
  }
82
102
  const defaultActiveKey = expandAll ? flowKeys : void 0;
83
- return /* @__PURE__ */ import_react2.default.createElement(import_antd.Card, { title: "Flows\u8BBE\u7F6E" }, /* @__PURE__ */ import_react2.default.createElement(import_antd.Collapse, { defaultActiveKey }, flowKeys.map((flowKey) => {
103
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.Card, { title: "Flows\u8BBE\u7F6E" }, /* @__PURE__ */ import_react.default.createElement(import_antd.Collapse, { defaultActiveKey }, flowKeys.map((flowKey) => {
84
104
  var _a;
85
- return /* @__PURE__ */ import_react2.default.createElement(Panel, { header: ((_a = flows.get(flowKey)) == null ? void 0 : _a.title) || flowKey, key: flowKey }, /* @__PURE__ */ import_react2.default.createElement(import_FlowSettings.FlowSettings, { model, flowKey }));
105
+ return /* @__PURE__ */ import_react.default.createElement(Panel, { header: ((_a = flows.get(flowKey)) == null ? void 0 : _a.title) || flowKey, key: flowKey }, /* @__PURE__ */ import_react.default.createElement(import_FlowSettings.FlowSettings, { model, flowKey }));
86
106
  })));
87
107
  });
88
108
  var FlowsSettingsContent_default = FlowsSettingsContent;
@@ -15,11 +15,18 @@ type CreateModelOptionsStringUse = Omit<CreateModelOptions, 'use'> & {
15
15
  use?: string;
16
16
  };
17
17
  type CreateModelOptionsFn = (ctx: FlowModelContext, extra?: any) => CreateModelOptionsStringUse | Promise<CreateModelOptionsStringUse>;
18
+ type HideOrFactory = boolean | ((ctx: FlowModelContext) => boolean | Promise<boolean>);
18
19
  export interface SubModelItem {
19
20
  key?: string;
20
21
  label?: string | React.ReactNode;
21
22
  type?: 'group' | 'divider';
22
23
  disabled?: boolean;
24
+ /**
25
+ * 动态隐藏菜单项(支持异步)。与模型 meta.hide 语义一致。
26
+ * - `true` 表示隐藏
27
+ * - function(ctx) 返回 true 表示隐藏
28
+ */
29
+ hide?: HideOrFactory;
23
30
  icon?: React.ReactNode;
24
31
  children?: false | SubModelItemsType;
25
32
  createModelOptions?: CreateModelOptionsStringUse | CreateModelOptionsFn;
@@ -114,6 +114,7 @@ const hasToggleItems = /* @__PURE__ */ __name((items) => {
114
114
  const walk = /* @__PURE__ */ __name((nodes) => {
115
115
  for (const node of nodes) {
116
116
  if (!node) continue;
117
+ if (typeof node.hide === "function") return true;
117
118
  if (!node.children && (node.toggleDetector || node.toggleable)) return true;
118
119
  if (Array.isArray(node.children)) {
119
120
  if (walk(node.children)) return true;
@@ -125,14 +126,70 @@ const hasToggleItems = /* @__PURE__ */ __name((items) => {
125
126
  }, "walk");
126
127
  return walk(items);
127
128
  }, "hasToggleItems");
129
+ const isHidden = /* @__PURE__ */ __name(async (item, ctx) => {
130
+ const hide = item.hide;
131
+ if (!hide) return false;
132
+ if (typeof hide === "function") {
133
+ return !!await hide(ctx);
134
+ }
135
+ return !!hide;
136
+ }, "isHidden");
137
+ const hasVisibleSubModelItems = /* @__PURE__ */ __name(async (items, ctx) => {
138
+ for (const item of items) {
139
+ if (!item) continue;
140
+ try {
141
+ if (await isHidden(item, ctx)) continue;
142
+ } catch (e) {
143
+ console.error("[NocoBase]: Failed to resolve item.hide:", e);
144
+ }
145
+ if (Array.isArray(item.children)) {
146
+ const hasVisibleChildren = await hasVisibleSubModelItems(item.children, ctx);
147
+ if (hasVisibleChildren) return true;
148
+ if (item.type === "group" || !item.createModelOptions) {
149
+ continue;
150
+ }
151
+ return true;
152
+ }
153
+ if (typeof item.children === "function") {
154
+ return true;
155
+ }
156
+ return true;
157
+ }
158
+ return false;
159
+ }, "hasVisibleSubModelItems");
128
160
  const transformSubModelItems = /* @__PURE__ */ __name(async (items, model, subModelKey, subModelType) => {
129
161
  if (items.length === 0) return [];
162
+ const hidden = await Promise.all(
163
+ items.map(async (item) => {
164
+ if (!item) return true;
165
+ try {
166
+ return await isHidden(item, model.context);
167
+ } catch (e) {
168
+ console.error("[NocoBase]: Failed to resolve item.hide:", e);
169
+ return false;
170
+ }
171
+ })
172
+ );
173
+ const visibleItems = items.filter((item, idx) => !!item && !hidden[idx]);
174
+ if (visibleItems.length === 0) return [];
130
175
  const toggleItems = [];
131
- for (let i = 0; i < items.length; i++) {
132
- const item = items[i];
133
- if (item.toggleable && item.useModel) {
176
+ for (let i = 0; i < visibleItems.length; i++) {
177
+ const item = visibleItems[i];
178
+ let resolvedUseModel = item.useModel;
179
+ if (!resolvedUseModel && item.toggleable) {
180
+ try {
181
+ const createOpts = await getCreateModelOptions(item, model.context);
182
+ resolvedUseModel = createOpts == null ? void 0 : createOpts.use;
183
+ if (resolvedUseModel) {
184
+ item.useModel = resolvedUseModel;
185
+ }
186
+ } catch (error) {
187
+ console.error("[NocoBase]: Failed to resolve useModel for toggleable item:", error);
188
+ }
189
+ }
190
+ if (item.toggleable && resolvedUseModel) {
134
191
  item.toggleDetector = (ctx) => {
135
- const C = ctx.engine.getModelClass(item.useModel);
192
+ const C = ctx.engine.getModelClass(resolvedUseModel);
136
193
  const r = ctx.model.findSubModel(subModelKey, (m) => {
137
194
  if (item.toggleable === true) {
138
195
  return m.constructor === C;
@@ -143,7 +200,7 @@ const transformSubModelItems = /* @__PURE__ */ __name(async (items, model, subMo
143
200
  return !!r;
144
201
  };
145
202
  item.customRemove = async (ctx, item2) => {
146
- const C = ctx.engine.getModelClass(item2.useModel);
203
+ const C = ctx.engine.getModelClass(resolvedUseModel);
147
204
  const r = ctx.model.findSubModel(subModelKey, (m) => {
148
205
  if (item2.toggleable === true) {
149
206
  return m.constructor === C;
@@ -168,7 +225,7 @@ const transformSubModelItems = /* @__PURE__ */ __name(async (items, model, subMo
168
225
  const result = toggleResults[i];
169
226
  toggleMap.set(index, result.status === "fulfilled" ? result.value : false);
170
227
  });
171
- const transformPromises = items.map(async (item, index) => {
228
+ const transformPromises = visibleItems.map(async (item, index) => {
172
229
  const transformedItem = {
173
230
  key: item.key,
174
231
  label: item.label,
@@ -191,12 +248,24 @@ const transformSubModelItems = /* @__PURE__ */ __name(async (items, model, subMo
191
248
  const staticChildren = item.children;
192
249
  const childHasToggle = hasToggleItems(staticChildren);
193
250
  if (childHasToggle) {
194
- transformedItem.children = async () => transformSubModelItems(staticChildren, model, subModelKey, subModelType);
251
+ const hasVisibleChildren = await hasVisibleSubModelItems(staticChildren, model.context);
252
+ if (!hasVisibleChildren) {
253
+ if (item.type === "group" || !item.createModelOptions) {
254
+ return null;
255
+ }
256
+ } else {
257
+ transformedItem.children = async () => transformSubModelItems(staticChildren, model, subModelKey, subModelType);
258
+ }
195
259
  } else {
196
260
  transformedItem.children = await transformSubModelItems(staticChildren, model, subModelKey, subModelType);
197
261
  }
198
262
  }
199
263
  }
264
+ if (Array.isArray(transformedItem.children) && transformedItem.children.length === 0) {
265
+ if (item.type === "group" || !item.createModelOptions) {
266
+ return null;
267
+ }
268
+ }
200
269
  if (item.toggleDetector && !item.children) {
201
270
  const isToggled = toggleMap.get(index) || false;
202
271
  const originalLabel = model.translate(item.label) || "";
@@ -206,7 +275,8 @@ const transformSubModelItems = /* @__PURE__ */ __name(async (items, model, subMo
206
275
  }
207
276
  return transformedItem;
208
277
  });
209
- return Promise.all(transformPromises);
278
+ const transformed = await Promise.all(transformPromises);
279
+ return transformed.filter((item) => !!item);
210
280
  }, "transformSubModelItems");
211
281
  const transformItems = /* @__PURE__ */ __name((items, model, subModelKey, subModelType) => {
212
282
  if (typeof items === "function") {
@@ -342,20 +342,18 @@ const LazyDropdown = /* @__PURE__ */ __name(({ menu, ...props }) => {
342
342
  }
343
343
  setRootItems(resolvedItems);
344
344
  }, "loadRootItems");
345
- if (menuVisible) {
346
- loadRootItems();
347
- }
348
- }, [menuVisible, stateVersion, menuItems]);
345
+ loadRootItems();
346
+ }, [stateVersion, menuItems]);
349
347
  function buildSearchChildren(children, item, keyPath, path, menuVisible2, resolve) {
350
348
  const searchKey = keyPath;
351
349
  const currentSearchValue = searchValues[searchKey] || "";
352
- const filteredChildren = currentSearchValue ? (/* @__PURE__ */ __name(function deepFilter(items) {
350
+ const filteredChildren = currentSearchValue ? (/* @__PURE__ */ __name(function deepFilter(items2) {
353
351
  const searchText = currentSearchValue.toLowerCase();
354
352
  const tryString = /* @__PURE__ */ __name((v) => {
355
353
  if (!v) return "";
356
354
  return typeof v === "string" ? v : String(v);
357
355
  }, "tryString");
358
- return items.map((child) => {
356
+ return items2.map((child) => {
359
357
  const labelStr = tryString(child.label).toLowerCase();
360
358
  const selfMatch = labelStr.includes(searchText) || child.key && String(child.key).toLowerCase().includes(searchText);
361
359
  if (child.type === "group" && Array.isArray(child.children)) {
@@ -377,8 +375,8 @@ const LazyDropdown = /* @__PURE__ */ __name(({ menu, ...props }) => {
377
375
  return [searchItem, dividerItem, ...resolvedFiltered];
378
376
  }
379
377
  __name(buildSearchChildren, "buildSearchChildren");
380
- const resolveItems = /* @__PURE__ */ __name((items, path = []) => {
381
- return items.map((item) => {
378
+ const resolveItems = /* @__PURE__ */ __name((items2, path = []) => {
379
+ return items2.map((item) => {
382
380
  const keyPath = getKeyPath(path, item.key);
383
381
  const isGroup = item.type === "group";
384
382
  const hasAsyncChildren = typeof item.children === "function";
@@ -483,6 +481,13 @@ const LazyDropdown = /* @__PURE__ */ __name(({ menu, ...props }) => {
483
481
  }
484
482
  `;
485
483
  }, [dropdownMaxHeight]);
484
+ const items = rootLoading && rootItems.length === 0 ? [
485
+ {
486
+ key: "root-loading",
487
+ label: /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { size: "small" }),
488
+ disabled: true
489
+ }
490
+ ] : resolveItems(rootItems);
486
491
  return /* @__PURE__ */ import_react.default.createElement(
487
492
  import_antd.Dropdown,
488
493
  {
@@ -493,13 +498,7 @@ const LazyDropdown = /* @__PURE__ */ __name(({ menu, ...props }) => {
493
498
  placement: "bottomLeft",
494
499
  menu: {
495
500
  ...dropdownMenuProps,
496
- items: rootLoading && rootItems.length === 0 ? [
497
- {
498
- key: "root-loading",
499
- label: /* @__PURE__ */ import_react.default.createElement(import_antd.Spin, { size: "small" }),
500
- disabled: true
501
- }
502
- ] : resolveItems(rootItems),
501
+ items,
503
502
  onClick: /* @__PURE__ */ __name(() => {
504
503
  }, "onClick"),
505
504
  style: {
@@ -10,7 +10,7 @@ import type { Collection } from '../../data-source';
10
10
  import { FlowModelContext } from '../../flowContext';
11
11
  import { ModelConstructor } from '../../types';
12
12
  import { SubModelItem } from './AddSubModelButton';
13
- export declare function buildSubModelItem(M: ModelConstructor, ctx: FlowModelContext, skipHide?: boolean): SubModelItem;
13
+ export declare function buildSubModelItem(M: ModelConstructor, ctx: FlowModelContext, skipHide?: boolean): Promise<SubModelItem | undefined>;
14
14
  export declare function buildItems(subModelBaseClass: string | ModelConstructor): (ctx: FlowModelContext) => Promise<any>;
15
15
  export declare function buildSubModelItems(subModelBaseClass: string | ModelConstructor, exclude?: any[]): (ctx: FlowModelContext) => Promise<SubModelItem[]>;
16
16
  export declare function buildSubModelGroups(subModelBaseClasses?: (string | ModelConstructor)[]): (ctx: FlowModelContext) => Promise<SubModelItem[]>;
@@ -46,9 +46,16 @@ __export(utils_exports, {
46
46
  module.exports = __toCommonJS(utils_exports);
47
47
  var _ = __toESM(require("lodash"));
48
48
  var import_utils = require("../../utils");
49
- function buildSubModelItem(M, ctx, skipHide = false) {
49
+ async function callHideFunction(hide, ctx) {
50
+ if (typeof hide === "function") {
51
+ return await hide(ctx);
52
+ }
53
+ return hide;
54
+ }
55
+ __name(callHideFunction, "callHideFunction");
56
+ async function buildSubModelItem(M, ctx, skipHide = false) {
50
57
  const meta = M.meta ?? {};
51
- if (meta.hide && !skipHide) {
58
+ if (await callHideFunction(meta.hide, ctx) && !skipHide) {
52
59
  return;
53
60
  }
54
61
  const item = {
@@ -127,12 +134,15 @@ function buildItems(subModelBaseClass) {
127
134
  __name(buildItems, "buildItems");
128
135
  function buildSubModelItems(subModelBaseClass, exclude = []) {
129
136
  return async (ctx) => {
130
- var _a;
137
+ var _a, _b;
131
138
  const SubModelClasses = ctx.engine.getSubclassesOf(subModelBaseClass);
132
- let candidates = Array.from(SubModelClasses.values()).filter((C) => {
133
- var _a2;
134
- return !((_a2 = C.meta) == null ? void 0 : _a2.hide);
135
- }).filter((C) => {
139
+ let candidates = [];
140
+ for (const C of Array.from(SubModelClasses.values())) {
141
+ if (!await callHideFunction((_a = C.meta) == null ? void 0 : _a.hide, ctx)) {
142
+ candidates.push(C);
143
+ }
144
+ }
145
+ candidates = candidates.filter((C) => {
136
146
  for (const P of exclude) {
137
147
  if (typeof P === "string") {
138
148
  if (C.name === P) return false;
@@ -142,18 +152,18 @@ function buildSubModelItems(subModelBaseClass, exclude = []) {
142
152
  }
143
153
  return true;
144
154
  }).sort((A, B) => {
145
- var _a2, _b;
146
- return (((_a2 = A.meta) == null ? void 0 : _a2.sort) ?? 1e3) - (((_b = B.meta) == null ? void 0 : _b.sort) ?? 1e3);
155
+ var _a2, _b2;
156
+ return (((_a2 = A.meta) == null ? void 0 : _a2.sort) ?? 1e3) - (((_b2 = B.meta) == null ? void 0 : _b2.sort) ?? 1e3);
147
157
  });
148
158
  if (candidates.length === 0) {
149
159
  const BaseClass = typeof subModelBaseClass === "string" ? ctx.engine.getModelClass(subModelBaseClass) : subModelBaseClass;
150
- if (BaseClass && !((_a = BaseClass.meta) == null ? void 0 : _a.hide)) {
160
+ if (BaseClass && !await callHideFunction((_b = BaseClass.meta) == null ? void 0 : _b.hide, ctx)) {
151
161
  candidates = [BaseClass];
152
162
  }
153
163
  }
154
164
  const items = [];
155
165
  for (const M of candidates) {
156
- const item = buildSubModelItem(M, ctx);
166
+ const item = await buildSubModelItem(M, ctx);
157
167
  if (item) items.push(item);
158
168
  }
159
169
  return items;
@@ -94,6 +94,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
94
94
  showValueComponent = true,
95
95
  onlyLeafSelectable = false,
96
96
  clearValue,
97
+ ignoreFieldNames,
97
98
  ...restProps
98
99
  }) => {
99
100
  const [currentMetaTreeNode, setCurrentMetaTreeNode] = (0, import_react.useState)(null);
@@ -143,7 +144,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
143
144
  }, [currentMetaTreeNode, innerValue, resolvedMetaTree, resolvePathFromValue]);
144
145
  (0, import_react.useEffect)(() => {
145
146
  const restoreFromValue = /* @__PURE__ */ __name(async () => {
146
- if (!Array.isArray(resolvedMetaTree) || !value) return;
147
+ if (!Array.isArray(resolvedMetaTree) || value == null) return;
147
148
  if (currentMetaTreeNode) {
148
149
  return;
149
150
  }
@@ -196,7 +197,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
196
197
  }, [renderInputComponent, resolvedMetaTreeNode, innerValue]);
197
198
  (0, import_react.useEffect)(() => {
198
199
  if (!resolvedMetaTreeNode) return;
199
- if (!Array.isArray(resolvedMetaTree) || !innerValue) return;
200
+ if (!Array.isArray(resolvedMetaTree) || innerValue == null) return;
200
201
  const finalValue = (resolveValueFromPath == null ? void 0 : resolveValueFromPath(resolvedMetaTreeNode)) || innerValue;
201
202
  emitChange(finalValue, resolvedMetaTreeNode);
202
203
  setCurrentMetaTreeNode(resolvedMetaTreeNode);
@@ -229,30 +230,48 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
229
230
  );
230
231
  const handleVariableSelect = (0, import_react.useCallback)(
231
232
  (variableValue, metaTreeNode) => {
233
+ if (!metaTreeNode && variableValue === "") {
234
+ const cleared = clearValue !== void 0 ? clearValue : null;
235
+ setInnerValue(cleared);
236
+ emitChange(cleared);
237
+ return;
238
+ }
232
239
  setCurrentMetaTreeNode(metaTreeNode);
233
240
  const finalValue = (resolveValueFromPath == null ? void 0 : resolveValueFromPath(metaTreeNode)) || variableValue;
234
241
  setInnerValue(finalValue);
235
242
  emitChange(finalValue, metaTreeNode);
236
243
  },
237
- [emitChange, resolveValueFromPath]
244
+ [emitChange, resolveValueFromPath, clearValue]
238
245
  );
239
246
  const { disabled } = restProps;
240
247
  const handleClear = (0, import_react.useCallback)(() => {
241
248
  if (disabled) {
242
249
  return;
243
250
  }
244
- setCurrentMetaTreeNode(null);
245
251
  const cleared = clearValue !== void 0 ? clearValue : null;
246
252
  setInnerValue(cleared);
253
+ try {
254
+ const path = resolvePathFromValue == null ? void 0 : resolvePathFromValue(cleared);
255
+ if (Array.isArray(resolvedMetaTree) && path && path.length > 0) {
256
+ const node = findMetaTreeNodeByPath(resolvedMetaTree, path);
257
+ if (node) {
258
+ setCurrentMetaTreeNode(node);
259
+ emitChange(cleared, node);
260
+ return;
261
+ }
262
+ }
263
+ } catch (_) {
264
+ }
265
+ setCurrentMetaTreeNode(null);
247
266
  emitChange(cleared);
248
- }, [emitChange, disabled, clearValue]);
267
+ }, [emitChange, disabled, clearValue, resolvedMetaTree, resolvePathFromValue]);
249
268
  const stableProps = (0, import_react.useMemo)(() => {
250
269
  const { style, onFocus, onBlur, disabled: disabled2, ...otherProps } = restProps;
251
270
  return { style, onFocus, onBlur, otherProps };
252
271
  }, [restProps]);
253
272
  const inputProps = (0, import_react.useMemo)(() => {
254
273
  const baseProps = {
255
- value: innerValue || "",
274
+ value: ValueComponent === import_antd.Input ? innerValue ?? "" : innerValue,
256
275
  onChange: handleInputChange,
257
276
  disabled
258
277
  };
@@ -311,6 +330,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
311
330
  parseValueToPath: resolvePathFromValue,
312
331
  formatPathToValue: resolveValueFromPath,
313
332
  onlyLeafSelectable,
333
+ ignoreFieldNames,
314
334
  ...!showValueComponent && { children: null, placeholder: restProps == null ? void 0 : restProps.placeholder }
315
335
  }
316
336
  ));
@@ -63,8 +63,49 @@ const VariableTagComponent = /* @__PURE__ */ __name(({
63
63
  return metaTreeNode.parentTitles ? [...metaTreeNode.parentTitles, metaTreeNode.title].map(ctx.t).join("/") : ctx.t(metaTreeNode.title) || "";
64
64
  }
65
65
  if (!value) return String(value);
66
- const path = (0, import_utils.parseValueToPath)(value);
67
- return path ? path.join("/") : String(value);
66
+ const rawPath = (0, import_utils.parseValueToPath)(value);
67
+ if (!rawPath || !Array.isArray(resolvedMetaTree)) {
68
+ return Array.isArray(rawPath) ? rawPath.join("/") : String(value);
69
+ }
70
+ const topNames = new Set((resolvedMetaTree || []).map((n) => String(n == null ? void 0 : n.name)));
71
+ const path = !topNames.has(String(rawPath[0])) ? rawPath.slice(1) : rawPath;
72
+ if (!path.length) return "";
73
+ let nodes = resolvedMetaTree;
74
+ let deepest = null;
75
+ let matchedCount = 0;
76
+ for (let i = 0; i < path.length; i++) {
77
+ if (!nodes) break;
78
+ const seg = String(path[i]);
79
+ const node = nodes.find((n) => String(n == null ? void 0 : n.name) === seg);
80
+ if (!node) break;
81
+ deepest = node;
82
+ matchedCount = i + 1;
83
+ if (i < path.length - 1) {
84
+ if (Array.isArray(node.children)) {
85
+ nodes = node.children;
86
+ } else if (typeof node.children === "function") {
87
+ try {
88
+ const childNodes = await node.children();
89
+ node.children = childNodes;
90
+ nodes = childNodes;
91
+ } catch {
92
+ nodes = void 0;
93
+ }
94
+ } else {
95
+ nodes = void 0;
96
+ }
97
+ }
98
+ }
99
+ if (deepest) {
100
+ const titles = deepest.parentTitles ? [...deepest.parentTitles, deepest.title] : [deepest.title];
101
+ let label = titles.map(ctx.t).join("/");
102
+ if (matchedCount < path.length) {
103
+ const tail = path.slice(matchedCount).join("/");
104
+ label = tail ? `${label}/${tail}` : label;
105
+ }
106
+ return label;
107
+ }
108
+ return path.join("/");
68
109
  },
69
110
  { refreshDeps: [resolvedMetaTree, value, metaTreeNode] }
70
111
  );
@@ -18,6 +18,7 @@ export interface FlowContextSelectorProps extends Omit<CascaderProps<ContextSele
18
18
  formatPathToValue?: (item: MetaTreeNode) => string;
19
19
  open?: boolean;
20
20
  onlyLeafSelectable?: boolean;
21
+ ignoreFieldNames?: string[];
21
22
  }
22
23
  export interface ContextSelectorItem {
23
24
  label: React.ReactNode;
@@ -62,6 +63,7 @@ export interface VariableInputProps {
62
63
  * 默认行为为 null;可设置为 '' 等,以便清空后默认切换为“常量-空字符串”。
63
64
  */
64
65
  clearValue?: any;
66
+ ignoreFieldNames?: string[];
65
67
  [key: string]: any;
66
68
  }
67
69
  export interface VariableTagProps {
@@ -92,6 +92,8 @@ const buildContextSelectorItems = /* @__PURE__ */ __name((metaTree) => {
92
92
  return [];
93
93
  }
94
94
  const convertNode = /* @__PURE__ */ __name((node) => {
95
+ const hidden = !!(typeof node.hidden === "function" ? node.hidden() : node.hidden);
96
+ if (hidden) return null;
95
97
  const hasChildren = !!(node.children && (typeof node.children === "function" || Array.isArray(node.children) && node.children.length > 0));
96
98
  const disabled = !!(typeof node.disabled === "function" ? node.disabled() : node.disabled);
97
99
  const option = {
@@ -103,11 +105,11 @@ const buildContextSelectorItems = /* @__PURE__ */ __name((metaTree) => {
103
105
  disabled
104
106
  };
105
107
  if (Array.isArray(node.children) && node.children.length > 0) {
106
- option.children = node.children.map((child) => convertNode(child));
108
+ option.children = node.children.map((child) => convertNode(child)).filter((item) => item !== null);
107
109
  }
108
110
  return option;
109
111
  }, "convertNode");
110
- return metaTree.map((node) => convertNode(node));
112
+ return metaTree.map((node) => convertNode(node)).filter((item) => item !== null);
111
113
  }, "buildContextSelectorItems");
112
114
  const preloadContextSelectorPath = /* @__PURE__ */ __name(async (options, pathSegments, triggerUpdate) => {
113
115
  if (!options || !Array.isArray(options) || !pathSegments || pathSegments.length === 0) return;
@@ -49,7 +49,9 @@ export declare class DataSource {
49
49
  addCollection(collection: Collection | CollectionOptions): void;
50
50
  updateCollection(newOptions: CollectionOptions): void;
51
51
  upsertCollection(options: CollectionOptions): Collection;
52
- upsertCollections(collections: CollectionOptions[]): void;
52
+ upsertCollections(collections: CollectionOptions[], options?: {
53
+ clearFields?: boolean;
54
+ }): void;
53
55
  removeCollection(name: string): void;
54
56
  clearCollections(): void;
55
57
  setOptions(newOptions?: any): void;
@@ -64,18 +66,30 @@ export interface CollectionOptions {
64
66
  export declare class CollectionManager {
65
67
  dataSource: DataSource;
66
68
  collections: Map<string, Collection>;
69
+ allCollectionsInheritChain: string[];
70
+ protected childrenCollectionsName: {
71
+ supportView?: string[];
72
+ notSupportView?: string[];
73
+ };
67
74
  constructor(dataSource: DataSource);
68
75
  get flowEngine(): FlowEngine;
69
76
  addCollection(collection: Collection | CollectionOptions): void;
70
77
  removeCollection(name: string): void;
71
- updateCollection(newOptions: CollectionOptions): void;
78
+ updateCollection(newOptions: CollectionOptions, options?: {
79
+ clearFields?: boolean;
80
+ }): void;
72
81
  upsertCollection(options: CollectionOptions): Collection;
73
- upsertCollections(collections: CollectionOptions[]): void;
82
+ upsertCollections(collections: CollectionOptions[], options?: {
83
+ clearFields?: boolean;
84
+ }): void;
74
85
  sortCollectionsByInherits(collections: CollectionOptions[]): CollectionOptions[];
75
86
  getCollection(name: string): Collection | undefined;
76
87
  getCollections(): Collection[];
77
88
  clearCollections(): void;
78
89
  getAssociation(associationName: string): CollectionField | undefined;
90
+ getChildrenCollections(name: any): any[];
91
+ getChildrenCollectionsName(name: any, isSupportView?: boolean): string[];
92
+ getAllCollectionsInheritChain(name: any): string[];
79
93
  }
80
94
  export declare class Collection {
81
95
  fields: Map<string, CollectionField>;
@@ -83,7 +97,9 @@ export declare class Collection {
83
97
  inherits: Map<string, Collection>;
84
98
  dataSource: DataSource;
85
99
  constructor(options?: Record<string, any>);
100
+ clone(): Collection;
86
101
  getFilterByTK(record: any): any;
102
+ get titleableFields(): CollectionField[];
87
103
  get hidden(): any;
88
104
  get flowEngine(): FlowEngine;
89
105
  get collectionManager(): CollectionManager;
@@ -97,7 +113,9 @@ export declare class Collection {
97
113
  get titleCollectionField(): CollectionField;
98
114
  initInherits(): void;
99
115
  setDataSource(dataSource: DataSource): void;
100
- setOptions(newOptions?: any): void;
116
+ setOptions(newOptions?: any, options?: {
117
+ clearFields?: boolean;
118
+ }): void;
101
119
  getFields(): CollectionField[];
102
120
  getToOneAssociationFields(): CollectionField[];
103
121
  getAssociationFields(types?: any[]): CollectionField[];
@@ -140,6 +158,7 @@ export declare class CollectionField {
140
158
  get resourceName(): string;
141
159
  get collectionName(): any;
142
160
  get readonly(): any;
161
+ get titleable(): boolean;
143
162
  get fullpath(): string;
144
163
  get name(): any;
145
164
  get type(): any;