@nocobase/flow-engine 2.0.0-alpha.3 → 2.0.0-alpha.30

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 (418) hide show
  1. package/lib/BlockScopedFlowEngine.d.ts +23 -0
  2. package/lib/BlockScopedFlowEngine.js +90 -0
  3. package/lib/FlowContextProvider.d.ts +2 -2
  4. package/lib/FlowContextProvider.js +3 -3
  5. package/lib/FlowDefinition.d.ts +4 -2
  6. package/lib/JSRunner.js +3 -0
  7. package/lib/ViewScopedFlowEngine.d.ts +1 -1
  8. package/lib/components/FieldModelRenderer.js +10 -4
  9. package/lib/components/FieldSkeleton.d.ts +10 -0
  10. package/lib/components/FieldSkeleton.js +64 -0
  11. package/lib/components/FlowContextSelector.js +7 -2
  12. package/lib/components/FlowModelRenderer.d.ts +2 -5
  13. package/lib/components/FlowModelRenderer.js +16 -47
  14. package/lib/components/FormItem.js +5 -1
  15. package/lib/{runjs-context/snippets/global/requireAsync.snippet.d.ts → components/dnd/findModelUidPosition.d.ts} +4 -7
  16. package/lib/{runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js → components/dnd/findModelUidPosition.js} +23 -19
  17. package/lib/components/dnd/gridDragPlanner.d.ts +130 -0
  18. package/lib/components/dnd/gridDragPlanner.js +497 -0
  19. package/lib/components/dnd/index.d.ts +2 -2
  20. package/lib/components/dnd/index.js +5 -5
  21. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +2 -2
  22. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +17 -5
  23. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +2 -2
  24. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
  25. package/lib/components/variables/VariableInput.js +16 -2
  26. package/lib/components/variables/VariableTag.js +43 -2
  27. package/lib/components/variables/types.d.ts +2 -0
  28. package/lib/data-source/index.d.ts +12 -4
  29. package/lib/data-source/index.js +19 -13
  30. package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
  31. package/lib/data-source/sortCollectionsByInherits.js +71 -0
  32. package/lib/executor/FlowExecutor.d.ts +4 -5
  33. package/lib/executor/FlowExecutor.js +135 -100
  34. package/lib/flowContext.d.ts +33 -5
  35. package/lib/flowContext.js +193 -76
  36. package/lib/flowEngine.d.ts +8 -1
  37. package/lib/flowEngine.js +18 -6
  38. package/lib/flowSettings.d.ts +2 -1
  39. package/lib/flowSettings.js +12 -8
  40. package/lib/hooks/useApplyAutoFlows.js +2 -1
  41. package/lib/index.d.ts +7 -1
  42. package/lib/index.js +32 -3
  43. package/lib/locale/en-US.json +4 -2
  44. package/lib/locale/index.d.ts +4 -0
  45. package/lib/locale/zh-CN.json +4 -2
  46. package/lib/models/CollectionFieldModel.d.ts +2 -0
  47. package/lib/models/CollectionFieldModel.js +43 -3
  48. package/lib/models/flowModel.d.ts +28 -29
  49. package/lib/models/flowModel.js +114 -92
  50. package/lib/models/forkFlowModel.d.ts +4 -4
  51. package/lib/models/forkFlowModel.js +32 -8
  52. package/lib/provider.d.ts +3 -1
  53. package/lib/provider.js +7 -5
  54. package/lib/resources/multiRecordResource.js +2 -0
  55. package/lib/resources/singleRecordResource.js +1 -0
  56. package/lib/resources/sqlResource.d.ts +1 -0
  57. package/lib/resources/sqlResource.js +20 -24
  58. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
  59. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
  60. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
  61. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
  62. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
  63. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
  64. package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
  65. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  66. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
  67. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
  68. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
  69. package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
  70. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
  71. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
  72. package/lib/runjs-context/contexts/base.d.ts +9 -0
  73. package/lib/runjs-context/contexts/base.js +183 -0
  74. package/lib/runjs-context/helpers.d.ts +5 -2
  75. package/lib/runjs-context/helpers.js +36 -27
  76. package/lib/runjs-context/registry.d.ts +7 -4
  77. package/lib/runjs-context/registry.js +10 -42
  78. package/lib/runjs-context/setup.d.ts +9 -0
  79. package/lib/runjs-context/setup.js +82 -0
  80. package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
  81. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  82. package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
  83. package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
  84. package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
  85. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
  86. package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
  87. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
  88. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
  89. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  90. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  91. package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
  92. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
  93. package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
  94. package/lib/runjs-context/snippets/index.d.ts +14 -3
  95. package/lib/runjs-context/snippets/index.js +161 -40
  96. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  97. package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
  98. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  99. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  100. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  101. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  102. package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
  103. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  104. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
  105. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  106. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  107. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  108. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
  109. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
  110. package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
  111. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  112. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
  113. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  114. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
  115. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  116. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
  117. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  118. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  119. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  120. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  121. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  122. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  123. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  124. package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
  125. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  126. package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
  127. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  128. package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
  129. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  130. package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
  131. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  132. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  133. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  134. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  135. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  136. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  137. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  138. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  139. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  140. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  141. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  142. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  143. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  144. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  145. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  146. package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
  147. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  148. package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
  149. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  150. package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
  151. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  152. package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
  153. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  154. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  155. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  156. package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
  157. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  158. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  159. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  160. package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
  161. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  162. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  163. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  164. package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
  165. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  166. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  167. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  168. package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
  169. package/lib/runjs-context/snippets/types.d.ts +9 -1
  170. package/lib/types.d.ts +28 -3
  171. package/lib/types.js +4 -3
  172. package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
  173. package/lib/utils/buildSettingsViewInputArgs.js +75 -0
  174. package/lib/utils/createEphemeralContext.d.ts +13 -0
  175. package/lib/utils/createEphemeralContext.js +140 -0
  176. package/lib/utils/index.d.ts +3 -2
  177. package/lib/utils/index.js +5 -2
  178. package/lib/utils/jsxTransform.d.ts +15 -0
  179. package/lib/utils/jsxTransform.js +68 -0
  180. package/lib/utils/params-resolvers.js +3 -3
  181. package/lib/utils/safeGlobals.d.ts +5 -3
  182. package/lib/utils/safeGlobals.js +40 -0
  183. package/lib/utils/schema-utils.js +2 -2
  184. package/lib/utils/serverContextParams.d.ts +1 -0
  185. package/lib/utils/variablesParams.d.ts +9 -5
  186. package/lib/utils/variablesParams.js +47 -36
  187. package/lib/views/PageComponent.js +2 -1
  188. package/lib/views/createViewMeta.d.ts +29 -1
  189. package/lib/views/createViewMeta.js +338 -72
  190. package/lib/views/index.d.ts +1 -0
  191. package/lib/views/index.js +3 -0
  192. package/lib/views/useDialog.d.ts +8 -8
  193. package/lib/views/useDialog.js +8 -7
  194. package/lib/views/useDrawer.d.ts +8 -8
  195. package/lib/views/useDrawer.js +40 -26
  196. package/lib/views/usePage.d.ts +8 -8
  197. package/lib/views/usePage.js +8 -7
  198. package/package.json +5 -3
  199. package/src/BlockScopedFlowEngine.ts +86 -0
  200. package/src/FlowContextProvider.tsx +4 -2
  201. package/src/JSRunner.ts +3 -0
  202. package/src/ViewScopedFlowEngine.ts +1 -1
  203. package/src/__tests__/JSRunner.test.ts +62 -53
  204. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  205. package/src/__tests__/createViewMeta.popup.test.ts +132 -0
  206. package/src/__tests__/flow-engine.test.ts +3 -0
  207. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  208. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  209. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  210. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  211. package/src/__tests__/runjsContext.test.ts +216 -35
  212. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  213. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  214. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  215. package/src/__tests__/runjsLocales.test.ts +36 -0
  216. package/src/__tests__/runjsRuntimeFeatures.test.ts +449 -0
  217. package/src/__tests__/runjsSnippets.test.ts +140 -0
  218. package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
  219. package/src/components/DynamicFlowsEditor.tsx +3 -4
  220. package/src/components/FieldModelRenderer.tsx +16 -5
  221. package/src/components/FieldSkeleton.tsx +27 -0
  222. package/src/components/FlowContextSelector.tsx +6 -2
  223. package/src/components/FlowModelRenderer.tsx +30 -78
  224. package/src/components/FormItem.tsx +8 -1
  225. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +5 -5
  226. package/src/components/__tests__/gridDragPlanner.test.ts +494 -0
  227. package/src/components/dnd/README.md +149 -0
  228. package/src/components/dnd/findModelUidPosition.ts +26 -0
  229. package/src/components/dnd/gridDragPlanner.ts +659 -0
  230. package/src/components/dnd/index.tsx +3 -3
  231. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +1 -1
  232. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +17 -4
  233. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +1 -1
  234. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
  235. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +424 -0
  236. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
  237. package/src/components/variables/VariableInput.tsx +22 -2
  238. package/src/components/variables/VariableTag.tsx +54 -2
  239. package/src/components/variables/types.ts +2 -0
  240. package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
  241. package/src/data-source/index.ts +17 -11
  242. package/src/data-source/sortCollectionsByInherits.ts +61 -0
  243. package/src/executor/FlowExecutor.ts +178 -121
  244. package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
  245. package/src/executor/__tests__/flowExecutor.test.ts +151 -5
  246. package/src/flowContext.ts +266 -97
  247. package/src/flowEngine.ts +21 -6
  248. package/src/flowSettings.ts +9 -4
  249. package/src/hooks/useApplyAutoFlows.ts +3 -1
  250. package/src/index.ts +12 -1
  251. package/src/locale/en-US.json +4 -2
  252. package/src/locale/zh-CN.json +4 -2
  253. package/src/models/CollectionFieldModel.tsx +43 -4
  254. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +4 -4
  255. package/src/models/__tests__/flowModel.test.ts +234 -111
  256. package/src/models/__tests__/forkFlowModel.test.ts +22 -7
  257. package/src/models/flowModel.tsx +149 -125
  258. package/src/models/forkFlowModel.ts +41 -8
  259. package/src/provider.tsx +10 -7
  260. package/src/resources/multiRecordResource.ts +2 -0
  261. package/src/resources/singleRecordResource.ts +1 -0
  262. package/src/resources/sqlResource.ts +20 -25
  263. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
  264. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
  265. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
  266. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  267. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
  268. package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
  269. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
  270. package/src/runjs-context/contexts/base.ts +171 -0
  271. package/src/runjs-context/helpers.ts +32 -30
  272. package/src/runjs-context/registry.ts +16 -47
  273. package/src/runjs-context/setup.ts +51 -0
  274. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  275. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  276. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  277. package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
  278. package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
  279. package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
  280. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
  281. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
  282. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  283. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  284. package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
  285. package/src/runjs-context/snippets/index.ts +177 -39
  286. package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
  287. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  288. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  289. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  290. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
  291. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  292. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
  293. package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
  294. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
  295. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
  296. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
  297. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  298. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  299. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  300. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  301. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  302. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  303. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  304. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  305. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  306. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  307. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  308. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  309. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  310. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  311. package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
  312. package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
  313. package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
  314. package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
  315. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  316. package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
  317. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  318. package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
  319. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  320. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  321. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  322. package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
  323. package/src/runjs-context/snippets/types.ts +5 -1
  324. package/src/types.ts +34 -0
  325. package/src/utils/__tests__/jsxTransform.test.ts +38 -0
  326. package/src/utils/__tests__/safeGlobals.test.ts +22 -1
  327. package/src/utils/buildSettingsViewInputArgs.ts +72 -0
  328. package/src/utils/createEphemeralContext.ts +142 -0
  329. package/src/utils/index.ts +2 -2
  330. package/src/utils/jsxTransform.ts +39 -0
  331. package/src/utils/params-resolvers.ts +2 -2
  332. package/src/utils/safeGlobals.ts +49 -3
  333. package/src/utils/schema-utils.ts +1 -1
  334. package/src/utils/serverContextParams.ts +1 -0
  335. package/src/utils/variablesParams.ts +50 -38
  336. package/src/views/PageComponent.tsx +1 -1
  337. package/src/views/createViewMeta.ts +393 -70
  338. package/src/views/index.tsx +1 -0
  339. package/src/views/useDialog.tsx +12 -10
  340. package/src/views/useDrawer.tsx +60 -36
  341. package/src/views/usePage.tsx +13 -10
  342. package/lib/components/dnd/getMousePositionOnElement.d.ts +0 -50
  343. package/lib/components/dnd/getMousePositionOnElement.js +0 -95
  344. package/lib/components/dnd/moveBlock.d.ts +0 -33
  345. package/lib/components/dnd/moveBlock.js +0 -302
  346. package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
  347. package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
  348. package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
  349. package/lib/runjs-context/index.d.ts +0 -19
  350. package/lib/runjs-context/index.js +0 -57
  351. package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
  352. package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
  353. package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
  354. package/lib/runjs-context/snippets/global/api-request-post.snippet.js +0 -42
  355. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
  356. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
  357. package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
  358. package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
  359. package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
  360. package/lib/runjs-context/snippets/global/try-catch-async.snippet.js +0 -44
  361. package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
  362. package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
  363. package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
  364. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
  365. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
  366. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
  367. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
  368. package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
  369. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
  370. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
  371. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
  372. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
  373. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
  374. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
  375. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
  376. package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
  377. package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
  378. package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
  379. package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
  380. package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
  381. package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
  382. package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
  383. package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
  384. package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
  385. package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
  386. package/src/components/dnd/getMousePositionOnElement.ts +0 -115
  387. package/src/components/dnd/moveBlock.ts +0 -379
  388. package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
  389. package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
  390. package/src/runjs-context/index.ts +0 -20
  391. package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
  392. package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
  393. package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
  394. package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
  395. package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
  396. package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
  397. package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
  398. package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
  399. package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
  400. package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
  401. package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
  402. package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
  403. package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
  404. package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
  405. package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
  406. package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
  407. package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
  408. package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
  409. package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
  410. package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
  411. package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
  412. package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
  413. package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
  414. /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
  415. /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
  416. /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
  417. /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
  418. /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
@@ -103,12 +103,24 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
103
103
  const dropdownMaxHeight = (0, import_hooks.useNiceDropdownMaxHeight)([visible]);
104
104
  const copyUidToClipboard = (0, import_react.useCallback)(
105
105
  async (uid) => {
106
+ var _a;
106
107
  try {
107
108
  await navigator.clipboard.writeText(uid);
108
109
  message.success(t("UID copied to clipboard"));
109
110
  } catch (error) {
110
111
  console.error(t("Copy failed"), ":", error);
111
- message.error(t("Copy failed, please copy [{{uid}}] manually.", { uid }));
112
+ const isHttps = typeof window !== "undefined" && ((_a = window.location) == null ? void 0 : _a.protocol) === "https:";
113
+ if (!isHttps) {
114
+ message.error(
115
+ t(
116
+ "Copy failed under HTTP. Clipboard API is unavailable on non-HTTPS pages. Please copy [{{uid}}] manually.",
117
+ { uid }
118
+ )
119
+ );
120
+ return;
121
+ } else {
122
+ message.error(t("Copy failed, please copy [{{uid}}] manually.", { uid }));
123
+ }
112
124
  }
113
125
  },
114
126
  [message, t]
@@ -216,13 +228,13 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
216
228
  const getModelConfigurableFlowsAndSteps = (0, import_react.useCallback)(
217
229
  async (targetModel, modelKey) => {
218
230
  try {
219
- const flows = targetModel.getFlows();
231
+ const flows = targetModel.constructor.globalFlowRegistry.getFlows();
220
232
  const flowsArray = Array.from(flows.values());
221
233
  const flowsWithSteps = await Promise.all(
222
234
  flowsArray.map(async (flow) => {
223
235
  const configurableSteps = await Promise.all(
224
236
  Object.entries(flow.steps).map(async ([stepKey, stepDefinition]) => {
225
- var _a, _b;
237
+ var _a;
226
238
  const actionStep = stepDefinition;
227
239
  if (actionStep.hideInSettings) {
228
240
  return null;
@@ -232,9 +244,9 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
232
244
  let stepTitle = actionStep.title;
233
245
  if (actionStep.use) {
234
246
  try {
235
- const action = (_b = (_a = targetModel.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
247
+ const action = (_a = targetModel.getAction) == null ? void 0 : _a.call(targetModel, actionStep.use);
236
248
  hasActionUiSchema = action && action.uiSchema != null;
237
- stepTitle = stepTitle || action.title;
249
+ stepTitle = stepTitle || (action == null ? void 0 : action.title);
238
250
  } catch (error) {
239
251
  console.warn(t("Failed to get action {{action}}", { action: actionStep.use }), ":", error);
240
252
  }
@@ -122,7 +122,7 @@ const FlowsContextMenuWithModel = (0, import_react.observer)(
122
122
  const flowsArray = Array.from(flows.values());
123
123
  return flowsArray.map((flow) => {
124
124
  const configurableSteps = Object.entries(flow.steps).map(([stepKey, stepDefinition]) => {
125
- var _a, _b;
125
+ var _a;
126
126
  const actionStep = stepDefinition;
127
127
  if (actionStep.hideInSettings) {
128
128
  return null;
@@ -130,7 +130,7 @@ const FlowsContextMenuWithModel = (0, import_react.observer)(
130
130
  const stepUiSchema = actionStep.uiSchema || {};
131
131
  let actionUiSchema = {};
132
132
  if (actionStep.use) {
133
- const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
133
+ const action = (_a = model.getAction) == null ? void 0 : _a.call(model, actionStep.use);
134
134
  if (action && action.uiSchema) {
135
135
  actionUiSchema = action.uiSchema;
136
136
  }
@@ -59,7 +59,7 @@ const openStepSettingsDialog = /* @__PURE__ */ __name(async ({
59
59
  uiModeProps,
60
60
  cleanup
61
61
  }) => {
62
- var _a, _b, _c, _d;
62
+ var _a, _b, _c, _d, _e, _f;
63
63
  const t = (0, import_utils.getT)(model);
64
64
  const message = model.context.message;
65
65
  if (!model) {
@@ -132,6 +132,12 @@ const openStepSettingsDialog = /* @__PURE__ */ __name(async ({
132
132
  width: dialogWidth,
133
133
  destroyOnClose: true,
134
134
  ...(0, import_reactive.toJS)(uiModeProps),
135
+ // 透传 navigation,便于变量元信息根据真实视图栈推断父级弹窗
136
+ inputArgs: (0, import_utils.buildSettingsViewInputArgs)(
137
+ model,
138
+ { ...((_e = (0, import_reactive.toJS)(uiModeProps)) == null ? void 0 : _e.inputArgs) || {}, __isSettingsPopup: true },
139
+ { navigationOverride: (_f = ctx == null ? void 0 : ctx.view) == null ? void 0 : _f.navigation }
140
+ ),
135
141
  onClose: /* @__PURE__ */ __name(() => {
136
142
  if (cleanup) {
137
143
  cleanup();
@@ -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);
@@ -241,11 +242,23 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
241
242
  if (disabled) {
242
243
  return;
243
244
  }
244
- setCurrentMetaTreeNode(null);
245
245
  const cleared = clearValue !== void 0 ? clearValue : null;
246
246
  setInnerValue(cleared);
247
+ try {
248
+ const path = resolvePathFromValue == null ? void 0 : resolvePathFromValue(cleared);
249
+ if (Array.isArray(resolvedMetaTree) && path && path.length > 0) {
250
+ const node = findMetaTreeNodeByPath(resolvedMetaTree, path);
251
+ if (node) {
252
+ setCurrentMetaTreeNode(node);
253
+ emitChange(cleared, node);
254
+ return;
255
+ }
256
+ }
257
+ } catch (_) {
258
+ }
259
+ setCurrentMetaTreeNode(null);
247
260
  emitChange(cleared);
248
- }, [emitChange, disabled, clearValue]);
261
+ }, [emitChange, disabled, clearValue, resolvedMetaTree, resolvePathFromValue]);
249
262
  const stableProps = (0, import_react.useMemo)(() => {
250
263
  const { style, onFocus, onBlur, disabled: disabled2, ...otherProps } = restProps;
251
264
  return { style, onFocus, onBlur, otherProps };
@@ -311,6 +324,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
311
324
  parseValueToPath: resolvePathFromValue,
312
325
  formatPathToValue: resolveValueFromPath,
313
326
  onlyLeafSelectable,
327
+ ignoreFieldNames,
314
328
  ...!showValueComponent && { children: null, placeholder: restProps == null ? void 0 : restProps.placeholder }
315
329
  }
316
330
  ));
@@ -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 {
@@ -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;
@@ -68,9 +70,13 @@ export declare class CollectionManager {
68
70
  get flowEngine(): FlowEngine;
69
71
  addCollection(collection: Collection | CollectionOptions): void;
70
72
  removeCollection(name: string): void;
71
- updateCollection(newOptions: CollectionOptions): void;
73
+ updateCollection(newOptions: CollectionOptions, options?: {
74
+ clearFields?: boolean;
75
+ }): void;
72
76
  upsertCollection(options: CollectionOptions): Collection;
73
- upsertCollections(collections: CollectionOptions[]): void;
77
+ upsertCollections(collections: CollectionOptions[], options?: {
78
+ clearFields?: boolean;
79
+ }): void;
74
80
  sortCollectionsByInherits(collections: CollectionOptions[]): CollectionOptions[];
75
81
  getCollection(name: string): Collection | undefined;
76
82
  getCollections(): Collection[];
@@ -97,7 +103,9 @@ export declare class Collection {
97
103
  get titleCollectionField(): CollectionField;
98
104
  initInherits(): void;
99
105
  setDataSource(dataSource: DataSource): void;
100
- setOptions(newOptions?: any): void;
106
+ setOptions(newOptions?: any, options?: {
107
+ clearFields?: boolean;
108
+ }): void;
101
109
  getFields(): CollectionField[];
102
110
  getToOneAssociationFields(): CollectionField[];
103
111
  getAssociationFields(types?: any[]): CollectionField[];
@@ -49,6 +49,7 @@ module.exports = __toCommonJS(data_source_exports);
49
49
  var import_reactive = require("@formily/reactive");
50
50
  var import_lodash = __toESM(require("lodash"));
51
51
  var import_jioToJoiSchema = require("./jioToJoiSchema");
52
+ var import_sortCollectionsByInherits = require("./sortCollectionsByInherits");
52
53
  const _DataSourceManager = class _DataSourceManager {
53
54
  dataSources;
54
55
  flowEngine;
@@ -152,8 +153,8 @@ const _DataSource = class _DataSource {
152
153
  upsertCollection(options) {
153
154
  return this.collectionManager.upsertCollection(options);
154
155
  }
155
- upsertCollections(collections) {
156
- return this.collectionManager.upsertCollections(collections);
156
+ upsertCollections(collections, options = {}) {
157
+ return this.collectionManager.upsertCollections(collections, options);
157
158
  }
158
159
  removeCollection(name) {
159
160
  return this.collectionManager.removeCollection(name);
@@ -204,12 +205,12 @@ const _CollectionManager = class _CollectionManager {
204
205
  removeCollection(name) {
205
206
  this.collections.delete(name);
206
207
  }
207
- updateCollection(newOptions) {
208
+ updateCollection(newOptions, options = {}) {
208
209
  const collection = this.getCollection(newOptions.name);
209
210
  if (!collection) {
210
211
  throw new Error(`Collection ${newOptions.name} not found`);
211
212
  }
212
- collection.setOptions(newOptions);
213
+ collection.setOptions(newOptions, options);
213
214
  }
214
215
  upsertCollection(options) {
215
216
  if (this.collections.has(options.name)) {
@@ -219,10 +220,10 @@ const _CollectionManager = class _CollectionManager {
219
220
  }
220
221
  return this.getCollection(options.name);
221
222
  }
222
- upsertCollections(collections) {
223
- for (const collection of this.sortCollectionsByInherits(collections)) {
223
+ upsertCollections(collections, options = {}) {
224
+ for (const collection of (0, import_sortCollectionsByInherits.sortCollectionsByInherits)(collections)) {
224
225
  if (this.collections.has(collection.name)) {
225
- this.updateCollection(collection);
226
+ this.updateCollection(collection, options);
226
227
  } else {
227
228
  this.addCollection(collection);
228
229
  }
@@ -368,7 +369,8 @@ const _Collection = class _Collection {
368
369
  for (const inherit of this.options.inherits || []) {
369
370
  const collection = this.collectionManager.getCollection(inherit);
370
371
  if (!collection) {
371
- throw new Error(`Collection ${inherit} not found`);
372
+ console.warn(`Warning: Collection ${inherit} not found for collection ${this.name}`);
373
+ continue;
372
374
  }
373
375
  this.inherits.set(inherit, collection);
374
376
  }
@@ -376,10 +378,13 @@ const _Collection = class _Collection {
376
378
  setDataSource(dataSource) {
377
379
  this.dataSource = dataSource;
378
380
  }
379
- setOptions(newOptions = {}) {
381
+ setOptions(newOptions = {}, options = {}) {
380
382
  Object.keys(this.options).forEach((key) => delete this.options[key]);
381
383
  Object.assign(this.options, newOptions);
382
384
  this.initInherits();
385
+ if (options.clearFields) {
386
+ this.clearFields();
387
+ }
383
388
  this.upsertFields(this.options.fields || []);
384
389
  }
385
390
  getFields() {
@@ -438,7 +443,7 @@ const _Collection = class _Collection {
438
443
  if (otherKeys.length === 0) {
439
444
  return field;
440
445
  }
441
- if (!field.targetCollection) {
446
+ if (!(field == null ? void 0 : field.targetCollection)) {
442
447
  return null;
443
448
  }
444
449
  return field.targetCollection.getFieldByPath(otherKeys.join("."));
@@ -584,7 +589,7 @@ const _CollectionField = class _CollectionField {
584
589
  }
585
590
  get title() {
586
591
  var _a, _b, _c;
587
- const titleValue = ((_a = this.options) == null ? void 0 : _a.title) || ((_c = (_b = this.options) == null ? void 0 : _b.uiSchema) == null ? void 0 : _c.title) || this.options.name;
592
+ const titleValue = ((_b = (_a = this.options) == null ? void 0 : _a.uiSchema) == null ? void 0 : _b.title) || ((_c = this.options) == null ? void 0 : _c.title) || this.options.name;
588
593
  return this.flowEngine.translate(titleValue);
589
594
  }
590
595
  set title(value) {
@@ -618,7 +623,7 @@ const _CollectionField = class _CollectionField {
618
623
  return this.options.validation;
619
624
  }
620
625
  getComponentProps() {
621
- var _a;
626
+ var _a, _b;
622
627
  const { type, target } = this.options;
623
628
  const componentProps = import_lodash.default.omitBy(
624
629
  {
@@ -627,7 +632,8 @@ const _CollectionField = class _CollectionField {
627
632
  mode: this.type === "array" ? "multiple" : void 0,
628
633
  multiple: target ? ["belongsToMany", "hasMany", "belongsToArray"].includes(type) : void 0,
629
634
  maxCount: target && !["belongsToMany", "hasMany", "belongsToArray"].includes(type) ? 1 : void 0,
630
- target
635
+ target,
636
+ template: (_b = this.targetCollection) == null ? void 0 : _b.template
631
637
  },
632
638
  import_lodash.default.isUndefined
633
639
  );
@@ -0,0 +1,10 @@
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
+ import { CollectionOptions } from '.';
10
+ export declare function sortCollectionsByInherits(collections: CollectionOptions[]): CollectionOptions[];
@@ -0,0 +1,71 @@
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 __defProp = Object.defineProperty;
11
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
+ var __getOwnPropNames = Object.getOwnPropertyNames;
13
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
14
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
15
+ var __export = (target, all) => {
16
+ for (var name in all)
17
+ __defProp(target, name, { get: all[name], enumerable: true });
18
+ };
19
+ var __copyProps = (to, from, except, desc) => {
20
+ if (from && typeof from === "object" || typeof from === "function") {
21
+ for (let key of __getOwnPropNames(from))
22
+ if (!__hasOwnProp.call(to, key) && key !== except)
23
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
24
+ }
25
+ return to;
26
+ };
27
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
+ var sortCollectionsByInherits_exports = {};
29
+ __export(sortCollectionsByInherits_exports, {
30
+ sortCollectionsByInherits: () => sortCollectionsByInherits
31
+ });
32
+ module.exports = __toCommonJS(sortCollectionsByInherits_exports);
33
+ function sortCollectionsByInherits(collections) {
34
+ const sorted = [];
35
+ const visited = /* @__PURE__ */ new Set();
36
+ const visiting = /* @__PURE__ */ new Set();
37
+ const map = /* @__PURE__ */ new Map();
38
+ collections.forEach((col) => {
39
+ map.set(col.name, col);
40
+ });
41
+ const addToSorted = /* @__PURE__ */ __name((col) => {
42
+ if (visiting.has(col.name)) {
43
+ throw new Error(`Circular dependency detected: ${col.name} inherits from itself through a chain`);
44
+ }
45
+ if (visited.has(col.name)) {
46
+ return;
47
+ }
48
+ visiting.add(col.name);
49
+ const inherits = col.inherits || [];
50
+ for (const inheritName of inherits) {
51
+ const inheritCol = map.get(inheritName);
52
+ if (!inheritCol) {
53
+ console.warn(`Warning: Collection ${inheritName}, inherited by ${col.name}, not found.`);
54
+ continue;
55
+ }
56
+ addToSorted(inheritCol);
57
+ }
58
+ visiting.delete(col.name);
59
+ visited.add(col.name);
60
+ sorted.push(col);
61
+ }, "addToSorted");
62
+ for (const col of collections) {
63
+ addToSorted(col);
64
+ }
65
+ return sorted;
66
+ }
67
+ __name(sortCollectionsByInherits, "sortCollectionsByInherits");
68
+ // Annotate the CommonJS export names for ESM import in node:
69
+ 0 && (module.exports = {
70
+ sortCollectionsByInherits
71
+ });
@@ -8,19 +8,18 @@
8
8
  */
9
9
  import { FlowEngine } from '../flowEngine';
10
10
  import type { FlowModel } from '../models';
11
+ import type { DispatchEventOptions } from '../types';
11
12
  export declare class FlowExecutor {
12
13
  private readonly engine;
13
14
  constructor(engine: FlowEngine);
15
+ /** Cache wrapper for applyFlow cache lifecycle */
16
+ private withApplyFlowCache;
14
17
  /**
15
18
  * Execute a single flow on model.
16
19
  */
17
20
  runFlow(model: FlowModel, flowKey: string, inputArgs?: Record<string, any>, runId?: string): Promise<any>;
18
- /**
19
- * Execute all auto-apply flows for model.
20
- */
21
- runAutoFlows(model: FlowModel, inputArgs?: Record<string, any>, useCache?: boolean): Promise<any[]>;
22
21
  /**
23
22
  * Dispatch an event to flows bound via flow.on and execute them.
24
23
  */
25
- dispatchEvent(model: FlowModel, eventName: string, inputArgs?: Record<string, any>): Promise<void>;
24
+ dispatchEvent(model: FlowModel, eventName: string, inputArgs?: Record<string, any>, options?: DispatchEventOptions): Promise<any>;
26
25
  }