@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
@@ -0,0 +1,64 @@
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 __export = (target, all) => {
15
+ for (var name in all)
16
+ __defProp(target, name, { get: all[name], enumerable: true });
17
+ };
18
+ var __copyProps = (to, from, except, desc) => {
19
+ if (from && typeof from === "object" || typeof from === "function") {
20
+ for (let key of __getOwnPropNames(from))
21
+ if (!__hasOwnProp.call(to, key) && key !== except)
22
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
+ }
24
+ return to;
25
+ };
26
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
+ var export_selected_json_snippet_exports = {};
28
+ __export(export_selected_json_snippet_exports, {
29
+ default: () => export_selected_json_snippet_default
30
+ });
31
+ module.exports = __toCommonJS(export_selected_json_snippet_exports);
32
+ var import_JSCollectionActionRunJSContext = require("../../../contexts/JSCollectionActionRunJSContext");
33
+ const snippet = {
34
+ contexts: [import_JSCollectionActionRunJSContext.JSCollectionActionRunJSContext],
35
+ prefix: "sn-act-export",
36
+ label: "Export selected rows as JSON",
37
+ description: "Download selected rows as a JSON file",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u5BFC\u51FA\u9009\u4E2D\u884C\u4E3A JSON",
41
+ description: "\u5C06\u9009\u4E2D\u7684\u884C\u5BFC\u51FA\u4E3A JSON \u6587\u4EF6\u4E0B\u8F7D"
42
+ }
43
+ },
44
+ content: `
45
+ const rows = ctx.resource?.getSelectedRows?.() || [];
46
+ if (!rows.length) {
47
+ ctx.message.warning(ctx.t('Please select at least one row'));
48
+ return;
49
+ }
50
+
51
+ // Create JSON file and download
52
+ const jsonStr = JSON.stringify(rows, null, 2);
53
+ const blob = new Blob([jsonStr], { type: 'application/json' });
54
+ const url = URL.createObjectURL(blob);
55
+ const link = document.createElement('a');
56
+ link.href = url;
57
+ link.download = \`export-\${new Date().toISOString().split('T')[0]}.json\`;
58
+ link.click();
59
+ URL.revokeObjectURL(url);
60
+
61
+ ctx.message.success(ctx.t('Exported {{count}} records', { count: rows.length }));
62
+ `
63
+ };
64
+ var export_selected_json_snippet_default = snippet;
@@ -0,0 +1,11 @@
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 type { SnippetModule } from '../../types';
10
+ declare const snippet: SnippetModule;
11
+ export default snippet;
@@ -29,10 +29,18 @@ __export(iterate_selected_rows_snippet_exports, {
29
29
  default: () => iterate_selected_rows_snippet_default
30
30
  });
31
31
  module.exports = __toCommonJS(iterate_selected_rows_snippet_exports);
32
- var iterate_selected_rows_snippet_default = {
33
- contexts: ["JSCollectionActionRunJSContext"],
32
+ var import_JSCollectionActionRunJSContext = require("../../../contexts/JSCollectionActionRunJSContext");
33
+ const snippet = {
34
+ contexts: [import_JSCollectionActionRunJSContext.JSCollectionActionRunJSContext],
34
35
  prefix: "sn-act-iterate",
35
36
  label: "Iterate selected rows",
37
+ description: "Loop through selected rows and process each record",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u904D\u5386\u9009\u4E2D\u884C",
41
+ description: "\u904D\u5386\u9009\u4E2D\u884C\u5E76\u5904\u7406\u6BCF\u6761\u8BB0\u5F55"
42
+ }
43
+ },
36
44
  content: `
37
45
  const rows = ctx.resource?.getSelectedRows?.() || [];
38
46
  for (const row of rows) {
@@ -41,3 +49,4 @@ for (const row of rows) {
41
49
  ctx.message.success(ctx.t('Processed {{count}} rows', { count: rows.length }));
42
50
  `
43
51
  };
52
+ var iterate_selected_rows_snippet_default = snippet;
@@ -6,11 +6,19 @@
6
6
  * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
+ export type SnippetContextSpecifier = string | {
10
+ name: string;
11
+ } | (new (...args: any[]) => any);
9
12
  export type SnippetModule = {
10
13
  content: string;
11
- contexts?: string[];
14
+ contexts?: SnippetContextSpecifier[];
12
15
  versions?: string[];
16
+ scenes?: string[];
13
17
  prefix?: string;
14
18
  label?: string;
15
19
  description?: string;
20
+ locales?: Record<string, {
21
+ label?: string;
22
+ description?: string;
23
+ }>;
16
24
  };
package/lib/types.d.ts CHANGED
@@ -10,6 +10,7 @@
10
10
  import { ISchema } from '@formily/json-schema';
11
11
  import { SubModelItem } from './components';
12
12
  import { FlowContext, FlowModelContext, FlowRuntimeContext, FlowSettingsContext } from './flowContext';
13
+ import type { PropertyOptions } from './flowContext';
13
14
  import type { FlowEngine } from './flowEngine';
14
15
  import type { FlowModel } from './models';
15
16
  /**
@@ -110,12 +111,14 @@ export declare enum ActionScene {
110
111
  BLOCK_LINKAGE_RULES = 1,
111
112
  /** 表单字段级联动规则可用 */
112
113
  FIELD_LINKAGE_RULES = 2,
114
+ /** 子表单字段级联动规则可用 */
115
+ SUB_FORM_FIELD_LINKAGE_RULES = 3,
113
116
  /** 详情字段级联动规则可用 */
114
- DETAILS_FIELD_LINKAGE_RULES = 3,
117
+ DETAILS_FIELD_LINKAGE_RULES = 4,
115
118
  /** 按钮级联动规则可用 */
116
- ACTION_LINKAGE_RULES = 4,
119
+ ACTION_LINKAGE_RULES = 5,
117
120
  /** 动态事件流可用 */
118
- DYNAMIC_EVENT_FLOW = 5
121
+ DYNAMIC_EVENT_FLOW = 6
119
122
  }
120
123
  /**
121
124
  * Defines a reusable action with generic model type support.
@@ -132,6 +135,18 @@ export interface ActionDefinition<TModel extends FlowModel = FlowModel, TCtx ext
132
135
  uiMode?: StepUIMode | ((ctx: FlowRuntimeContext<TModel>) => StepUIMode | Promise<StepUIMode>);
133
136
  scene?: ActionScene | ActionScene[];
134
137
  sort?: number;
138
+ /**
139
+ * 在执行 Action 前为 ctx 定义临时属性。
140
+ * - 仅支持 PropertyOptions 形态(例如:{ foo: { value: 5 } });
141
+ * - 或函数形式(接收 ctx,返回 PropertyOptions 对象;支持 Promise)。
142
+ */
143
+ defineProperties?: Record<string, PropertyOptions> | ((ctx: TCtx) => Record<string, PropertyOptions> | Promise<Record<string, PropertyOptions>>);
144
+ /**
145
+ * 在执行 Action 前为 ctx 定义临时方法。
146
+ * - 支持 JSON 形式(对象的值应为函数)
147
+ * - 或函数形式(接收 ctx,返回方法对象;支持 Promise)
148
+ */
149
+ defineMethods?: Record<string, (this: TCtx, ...args: any[]) => any> | ((ctx: TCtx) => Record<string, (this: TCtx, ...args: any[]) => any> | Promise<Record<string, (this: TCtx, ...args: any[]) => any>>);
135
150
  }
136
151
  /**
137
152
  * Flow 事件名称集合。
@@ -146,6 +161,15 @@ export type FlowEvent<TModel extends FlowModel = FlowModel> = FlowEventName | {
146
161
  eventName: FlowEventName;
147
162
  defaultParams?: Record<string, any>;
148
163
  };
164
+ /**
165
+ * 事件分发选项。
166
+ */
167
+ export interface DispatchEventOptions {
168
+ /** 是否顺序执行(默认并行) */
169
+ sequential?: boolean;
170
+ /** 是否使用缓存(默认 false;beforeRender 的默认值为 true,可覆盖) */
171
+ useCache?: boolean;
172
+ }
149
173
  /**
150
174
  * 事件定义:用于事件注册表(全局/模型类级)。
151
175
  */
@@ -240,6 +264,7 @@ export interface IFlowModelRepository<T extends FlowModel = FlowModel> {
240
264
  }): Promise<Record<string, any>>;
241
265
  destroy(uid: string): Promise<boolean>;
242
266
  move(sourceId: string, targetId: string, position: 'before' | 'after'): Promise<void>;
267
+ duplicate(uid: string): Promise<Record<string, any> | null>;
243
268
  }
244
269
  /**
245
270
  * 步骤设置对话框的属性接口
package/lib/types.js CHANGED
@@ -32,9 +32,10 @@ module.exports = __toCommonJS(types_exports);
32
32
  var ActionScene = /* @__PURE__ */ ((ActionScene2) => {
33
33
  ActionScene2[ActionScene2["BLOCK_LINKAGE_RULES"] = 1] = "BLOCK_LINKAGE_RULES";
34
34
  ActionScene2[ActionScene2["FIELD_LINKAGE_RULES"] = 2] = "FIELD_LINKAGE_RULES";
35
- ActionScene2[ActionScene2["DETAILS_FIELD_LINKAGE_RULES"] = 3] = "DETAILS_FIELD_LINKAGE_RULES";
36
- ActionScene2[ActionScene2["ACTION_LINKAGE_RULES"] = 4] = "ACTION_LINKAGE_RULES";
37
- ActionScene2[ActionScene2["DYNAMIC_EVENT_FLOW"] = 5] = "DYNAMIC_EVENT_FLOW";
35
+ ActionScene2[ActionScene2["SUB_FORM_FIELD_LINKAGE_RULES"] = 3] = "SUB_FORM_FIELD_LINKAGE_RULES";
36
+ ActionScene2[ActionScene2["DETAILS_FIELD_LINKAGE_RULES"] = 4] = "DETAILS_FIELD_LINKAGE_RULES";
37
+ ActionScene2[ActionScene2["ACTION_LINKAGE_RULES"] = 5] = "ACTION_LINKAGE_RULES";
38
+ ActionScene2[ActionScene2["DYNAMIC_EVENT_FLOW"] = 6] = "DYNAMIC_EVENT_FLOW";
38
39
  return ActionScene2;
39
40
  })(ActionScene || {});
40
41
  // Annotate the CommonJS export names for ESM import in node:
@@ -0,0 +1,19 @@
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 type { FlowModel } from '../models';
10
+ /**
11
+ * 统一构造设置弹窗 openView 的 inputArgs:
12
+ * - collectionName/dataSourceKey/filterByTk:优先从 model.context 推断;否则回退父视图 inputArgs
13
+ * - sourceId:优先从 resource.getSourceId();否则回退父视图 inputArgs
14
+ * - associationName:来自 association.resourceName 或 resource.getResourceName()
15
+ * - navigation:父视图 navigation 或传入的 navigationOverride
16
+ */
17
+ export declare function buildSettingsViewInputArgs(model: FlowModel, extra?: Record<string, any>, options?: {
18
+ navigationOverride?: any;
19
+ }): Record<string, any>;
@@ -0,0 +1,75 @@
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 buildSettingsViewInputArgs_exports = {};
29
+ __export(buildSettingsViewInputArgs_exports, {
30
+ buildSettingsViewInputArgs: () => buildSettingsViewInputArgs
31
+ });
32
+ module.exports = __toCommonJS(buildSettingsViewInputArgs_exports);
33
+ var import_variablesParams = require("./variablesParams");
34
+ function buildSettingsViewInputArgs(model, extra, options) {
35
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
36
+ const defaults = {};
37
+ try {
38
+ const ref = (0, import_variablesParams.inferRecordRef)(model.context);
39
+ if (ref == null ? void 0 : ref.collection) {
40
+ defaults.collectionName = ref.collection;
41
+ defaults.dataSourceKey = ref.dataSourceKey || "main";
42
+ defaults.filterByTk = ref.filterByTk;
43
+ }
44
+ const parentArgs = ((_b = (_a = model == null ? void 0 : model.context) == null ? void 0 : _a.view) == null ? void 0 : _b.inputArgs) || {};
45
+ if (!defaults.collectionName && (parentArgs == null ? void 0 : parentArgs.collectionName)) {
46
+ defaults.collectionName = parentArgs.collectionName;
47
+ defaults.dataSourceKey = parentArgs.dataSourceKey || defaults.dataSourceKey || "main";
48
+ }
49
+ if (defaults.filterByTk == null && (parentArgs == null ? void 0 : parentArgs.filterByTk) != null) {
50
+ defaults.filterByTk = parentArgs.filterByTk;
51
+ }
52
+ if (defaults.sourceId == null && (parentArgs == null ? void 0 : parentArgs.sourceId) != null) {
53
+ defaults.sourceId = parentArgs.sourceId;
54
+ }
55
+ const nav = (options == null ? void 0 : options.navigationOverride) ?? ((_d = (_c = model == null ? void 0 : model.context) == null ? void 0 : _c.view) == null ? void 0 : _d.navigation);
56
+ if (nav) {
57
+ defaults.navigation = nav;
58
+ }
59
+ const sid = (_g = (_f = (_e = model == null ? void 0 : model.context) == null ? void 0 : _e.resource) == null ? void 0 : _f.getSourceId) == null ? void 0 : _g.call(_f);
60
+ if (sid !== void 0 && sid !== null && String(sid) !== "") {
61
+ defaults.sourceId = sid;
62
+ }
63
+ const assocName = ((_i = (_h = model == null ? void 0 : model.context) == null ? void 0 : _h.association) == null ? void 0 : _i.resourceName) || ((_l = (_k = (_j = model == null ? void 0 : model.context) == null ? void 0 : _j.resource) == null ? void 0 : _k.getResourceName) == null ? void 0 : _l.call(_k));
64
+ if (typeof assocName === "string" && assocName) {
65
+ defaults.associationName = assocName;
66
+ }
67
+ } catch (_) {
68
+ }
69
+ return { ...defaults, ...extra || {} };
70
+ }
71
+ __name(buildSettingsViewInputArgs, "buildSettingsViewInputArgs");
72
+ // Annotate the CommonJS export names for ESM import in node:
73
+ 0 && (module.exports = {
74
+ buildSettingsViewInputArgs
75
+ });
@@ -0,0 +1,13 @@
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 { FlowContext } from '../flowContext';
10
+ import type { ActionDefinition } from '../types';
11
+ type ContextDefsLike<TCtx extends FlowContext> = Partial<Pick<ActionDefinition<any, TCtx>, 'defineProperties' | 'defineMethods'>> | null | undefined;
12
+ export declare function createEphemeralContext<TCtx extends FlowContext>(parent: TCtx, contextDefs?: ContextDefsLike<TCtx>): Promise<TCtx>;
13
+ export {};
@@ -0,0 +1,140 @@
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 createEphemeralContext_exports = {};
29
+ __export(createEphemeralContext_exports, {
30
+ createEphemeralContext: () => createEphemeralContext
31
+ });
32
+ module.exports = __toCommonJS(createEphemeralContext_exports);
33
+ var import_flowContext = require("../flowContext");
34
+ async function createEphemeralContext(parent, contextDefs) {
35
+ if (contextDefs == null || !contextDefs.defineProperties && !contextDefs.defineMethods) {
36
+ return parent;
37
+ }
38
+ const scoped = new import_flowContext.FlowContext();
39
+ scoped.addDelegate(parent);
40
+ const scopedProxy = scoped.createProxy();
41
+ const scopedObj = scopedProxy;
42
+ const parentObj = parent;
43
+ const getFromParent = /* @__PURE__ */ __name((key) => {
44
+ const val = Reflect.get(parentObj, key, parentObj);
45
+ return typeof val === "function" ? val.bind(parent) : val;
46
+ }, "getFromParent");
47
+ const hasInScopedOrParent = /* @__PURE__ */ __name((key) => key === "defineProperty" || key === "defineMethod" || Reflect.has(scopedObj, key) || Reflect.has(parentObj, key), "hasInScopedOrParent");
48
+ const injectionProxy = new Proxy(scopedProxy, {
49
+ get(_t, key, receiver) {
50
+ if (typeof key === "string") {
51
+ if (key === "defineProperty") {
52
+ return (propKey, options) => scoped.defineProperty(propKey, options);
53
+ }
54
+ if (key === "defineMethod") {
55
+ return (name, fn, des) => scoped.defineMethod(name, fn, des);
56
+ }
57
+ if (Reflect.has(scopedObj, key)) {
58
+ return Reflect.get(scopedObj, key, receiver);
59
+ }
60
+ return getFromParent(key);
61
+ }
62
+ return Reflect.get(scopedObj, key, receiver);
63
+ },
64
+ set(_t, key, value) {
65
+ return Reflect.set(parentObj, key, value);
66
+ },
67
+ has(_t, key) {
68
+ return hasInScopedOrParent(key);
69
+ },
70
+ getOwnPropertyDescriptor(_t, key) {
71
+ return Object.getOwnPropertyDescriptor(scopedObj, key) || Object.getOwnPropertyDescriptor(parentObj, key);
72
+ }
73
+ });
74
+ if (contextDefs) {
75
+ const defs = Array.isArray(contextDefs) ? contextDefs : [contextDefs];
76
+ for (const defLike of defs) {
77
+ if (!defLike) continue;
78
+ const dp = defLike.defineProperties;
79
+ if (dp) {
80
+ const raw = typeof dp === "function" ? await dp(injectionProxy) : dp;
81
+ if (!raw || typeof raw !== "object") {
82
+ throw new TypeError("defineProperties must return an object of PropertyOptions");
83
+ }
84
+ const propsDef = raw;
85
+ for (const [key, options] of Object.entries(propsDef)) {
86
+ if (!options || typeof options !== "object") {
87
+ throw new TypeError(`defineProperties['${key}'] must be a PropertyOptions object`);
88
+ }
89
+ scoped.defineProperty(key, options);
90
+ }
91
+ }
92
+ const dm = defLike.defineMethods;
93
+ if (dm) {
94
+ const raw = typeof dm === "function" ? await dm(injectionProxy) : dm;
95
+ if (!raw || typeof raw !== "object") {
96
+ throw new TypeError("defineMethods must return an object of functions");
97
+ }
98
+ const methodsDef = raw;
99
+ for (const [key, fn] of Object.entries(methodsDef)) {
100
+ if (typeof fn !== "function") {
101
+ throw new TypeError(`defineMethods['${key}'] must be a function`);
102
+ }
103
+ scoped.defineMethod(key, fn);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ const outerProxy = new Proxy(scopedProxy, {
109
+ get(_t, key, receiver) {
110
+ if (typeof key === "string") {
111
+ if (key === "defineProperty") {
112
+ return (propKey, options) => parent.defineProperty(propKey, options);
113
+ }
114
+ if (key === "defineMethod") {
115
+ return (name, fn, des) => parent.defineMethod(name, fn, des);
116
+ }
117
+ if (Reflect.has(scopedObj, key)) {
118
+ return Reflect.get(scopedObj, key, receiver);
119
+ }
120
+ return getFromParent(key);
121
+ }
122
+ return Reflect.get(scopedObj, key, receiver);
123
+ },
124
+ set(_t, key, value) {
125
+ return Reflect.set(parentObj, key, value);
126
+ },
127
+ has(_t, key) {
128
+ return hasInScopedOrParent(key);
129
+ },
130
+ getOwnPropertyDescriptor(_t, key) {
131
+ return Object.getOwnPropertyDescriptor(scopedObj, key) || Object.getOwnPropertyDescriptor(parentObj, key);
132
+ }
133
+ });
134
+ return outerProxy;
135
+ }
136
+ __name(createEphemeralContext, "createEphemeralContext");
137
+ // Annotate the CommonJS export names for ESM import in node:
138
+ 0 && (module.exports = {
139
+ createEphemeralContext
140
+ });
@@ -15,8 +15,9 @@ export { resolveCreateModelOptions, resolveDefaultParams, resolveExpressions } f
15
15
  export { compileUiSchema, resolveStepUiSchema, resolveUiMode } from './schema-utils';
16
16
  export { setupRuntimeContextSteps } from './setupRuntimeContextSteps';
17
17
  export { createCollectionContextMeta } from './createCollectionContextMeta';
18
- export { buildRecordMeta, collectContextParamsForTemplate, createCurrentRecordMetaFactory, createRecordMetaFactory, extractUsedVariableNames, extractUsedVariablePaths, inferParentRecordRef, inferRecordRef, type RecordParamsBuilder, } from './variablesParams';
18
+ export { buildRecordMeta, collectContextParamsForTemplate, createCurrentRecordMetaFactory, createRecordMetaFactory, extractUsedVariableNames, extractUsedVariablePaths, inferRecordRef, type RecordParamsBuilder, } from './variablesParams';
19
19
  export { extractPropertyPath, formatPathToVariable, isVariableExpression } from './context';
20
20
  export { clearAutoFlowError, getAutoFlowError, setAutoFlowError, type AutoFlowError } from './autoFlowError';
21
21
  export { parsePathnameToViewParams, type ViewParam } from './parsePathnameToViewParams';
22
- export { createSafeDocument, createSafeWindow } from './safeGlobals';
22
+ export { buildSettingsViewInputArgs } from './buildSettingsViewInputArgs';
23
+ export { createSafeDocument, createSafeWindow, createSafeNavigator } from './safeGlobals';
@@ -32,6 +32,7 @@ __export(utils_exports, {
32
32
  FlowExitException: () => import_exceptions.FlowExitException,
33
33
  MENU_KEYS: () => import_constants.MENU_KEYS,
34
34
  buildRecordMeta: () => import_variablesParams.buildRecordMeta,
35
+ buildSettingsViewInputArgs: () => import_buildSettingsViewInputArgs.buildSettingsViewInputArgs,
35
36
  clearAutoFlowError: () => import_autoFlowError.clearAutoFlowError,
36
37
  collectContextParamsForTemplate: () => import_variablesParams.collectContextParamsForTemplate,
37
38
  compileUiSchema: () => import_schema_utils.compileUiSchema,
@@ -39,6 +40,7 @@ __export(utils_exports, {
39
40
  createCurrentRecordMetaFactory: () => import_variablesParams.createCurrentRecordMetaFactory,
40
41
  createRecordMetaFactory: () => import_variablesParams.createRecordMetaFactory,
41
42
  createSafeDocument: () => import_safeGlobals.createSafeDocument,
43
+ createSafeNavigator: () => import_safeGlobals.createSafeNavigator,
42
44
  createSafeWindow: () => import_safeGlobals.createSafeWindow,
43
45
  defineAction: () => import_flow_definitions.defineAction,
44
46
  escapeT: () => import_translation.escapeT,
@@ -48,7 +50,6 @@ __export(utils_exports, {
48
50
  formatPathToVariable: () => import_context.formatPathToVariable,
49
51
  getAutoFlowError: () => import_autoFlowError.getAutoFlowError,
50
52
  getT: () => import_translation.getT,
51
- inferParentRecordRef: () => import_variablesParams.inferParentRecordRef,
52
53
  inferRecordRef: () => import_variablesParams.inferRecordRef,
53
54
  isInheritedFrom: () => import_inheritance.isInheritedFrom,
54
55
  isVariableExpression: () => import_context.isVariableExpression,
@@ -76,6 +77,7 @@ var import_variablesParams = require("./variablesParams");
76
77
  var import_context = require("./context");
77
78
  var import_autoFlowError = require("./autoFlowError");
78
79
  var import_parsePathnameToViewParams = require("./parsePathnameToViewParams");
80
+ var import_buildSettingsViewInputArgs = require("./buildSettingsViewInputArgs");
79
81
  var import_safeGlobals = require("./safeGlobals");
80
82
  // Annotate the CommonJS export names for ESM import in node:
81
83
  0 && (module.exports = {
@@ -85,6 +87,7 @@ var import_safeGlobals = require("./safeGlobals");
85
87
  FlowExitException,
86
88
  MENU_KEYS,
87
89
  buildRecordMeta,
90
+ buildSettingsViewInputArgs,
88
91
  clearAutoFlowError,
89
92
  collectContextParamsForTemplate,
90
93
  compileUiSchema,
@@ -92,6 +95,7 @@ var import_safeGlobals = require("./safeGlobals");
92
95
  createCurrentRecordMetaFactory,
93
96
  createRecordMetaFactory,
94
97
  createSafeDocument,
98
+ createSafeNavigator,
95
99
  createSafeWindow,
96
100
  defineAction,
97
101
  escapeT,
@@ -101,7 +105,6 @@ var import_safeGlobals = require("./safeGlobals");
101
105
  formatPathToVariable,
102
106
  getAutoFlowError,
103
107
  getT,
104
- inferParentRecordRef,
105
108
  inferRecordRef,
106
109
  isInheritedFrom,
107
110
  isVariableExpression,
@@ -0,0 +1,15 @@
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
+ * Lightweight JSX -> JS compiler for RunJS user code.
11
+ * - Uses sucrase via dynamic import (lazy; avoids static cycles and cost when not needed)
12
+ * - Maps JSX to ctx.React.createElement / ctx.React.Fragment so no global React is required
13
+ * - If sucrase is unavailable or transform throws, returns original code as graceful fallback
14
+ */
15
+ export declare function compileRunJs(code: string): Promise<string>;
@@ -0,0 +1,68 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ var __export = (target, all) => {
18
+ for (var name in all)
19
+ __defProp(target, name, { get: all[name], enumerable: true });
20
+ };
21
+ var __copyProps = (to, from, except, desc) => {
22
+ if (from && typeof from === "object" || typeof from === "function") {
23
+ for (let key of __getOwnPropNames(from))
24
+ if (!__hasOwnProp.call(to, key) && key !== except)
25
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
+ }
27
+ return to;
28
+ };
29
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
+ // If the importer is in node compatibility mode or this is not an ESM
31
+ // file that has been converted to a CommonJS file using a Babel-
32
+ // compatible transform (i.e. "__esModule" has not been set), then set
33
+ // "default" to the CommonJS "module.exports" for node compatibility.
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var jsxTransform_exports = {};
39
+ __export(jsxTransform_exports, {
40
+ compileRunJs: () => compileRunJs
41
+ });
42
+ module.exports = __toCommonJS(jsxTransform_exports);
43
+ async function compileRunJs(code) {
44
+ var _a;
45
+ const maybeJSX = /<[A-Za-z]|<\//.test(code);
46
+ if (!maybeJSX) return code;
47
+ try {
48
+ const mod = await import("sucrase");
49
+ const transform = (mod == null ? void 0 : mod.transform) || ((_a = mod == null ? void 0 : mod.default) == null ? void 0 : _a.transform);
50
+ if (typeof transform !== "function") return code;
51
+ const res = transform(code, {
52
+ transforms: ["jsx"],
53
+ jsxPragma: "ctx.React.createElement",
54
+ jsxFragmentPragma: "ctx.React.Fragment",
55
+ // Keep ES syntax as-is; JSRunner runs in modern engines
56
+ disableESTransforms: true,
57
+ production: true
58
+ });
59
+ return (res && (res.code || (res == null ? void 0 : res.output))) ?? code;
60
+ } catch (_e) {
61
+ return code;
62
+ }
63
+ }
64
+ __name(compileRunJs, "compileRunJs");
65
+ // Annotate the CommonJS export names for ESM import in node:
66
+ 0 && (module.exports = {
67
+ compileRunJs
68
+ });
@@ -44,8 +44,8 @@ __export(params_resolvers_exports, {
44
44
  resolveExpressions: () => resolveExpressions
45
45
  });
46
46
  module.exports = __toCommonJS(params_resolvers_exports);
47
+ var import_shared = require("@nocobase/shared");
47
48
  var import_lodash = __toESM(require("lodash"));
48
- var import_client = require("@nocobase/utils/client");
49
49
  async function resolveDefaultParams(defaultParams, ctx) {
50
50
  if (!defaultParams) {
51
51
  return {};
@@ -275,9 +275,9 @@ async function compileExpression(expression, ctx) {
275
275
  if (!first) return void 0;
276
276
  const base = await ctx[first];
277
277
  if (segs.length === 0) return base;
278
- return (0, import_client.getValuesByPath)(base, segs.join("."));
278
+ return (0, import_shared.getValuesByPath)(base, segs.join("."));
279
279
  }, "resolveDotOnlyPath");
280
- const singleMatch = expression.match(/^\{\{\s*(.+)\s*\}\}$/);
280
+ const singleMatch = expression.match(/^\s*\{\{\s*([^{}]+?)\s*\}\}\s*$/);
281
281
  if (singleMatch) {
282
282
  const inner = singleMatch[1];
283
283
  const dotPath = matchDotOnly(inner);
@@ -7,10 +7,12 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
  /**
10
- * 统一的安全全局对象代理:window/document
11
- * - 默认仅允许常用的定时器、console、Math、Date、addEventListener(绑定原 window)
12
- * - document 仅允许 createElement/querySelector/querySelectorAll
10
+ * 统一的安全全局对象代理:window/document/navigator
11
+ * - window:仅允许常用的定时器、console、Math、Date、addEventListener、open(安全包装)、location(安全代理)
12
+ * - document:仅允许 createElement/querySelector/querySelectorAll
13
+ * - navigator:仅提供极少量低风险能力(clipboard.writeText、onLine、language、languages)
13
14
  * - 不允许随意访问未声明的属性,最小权限原则
14
15
  */
15
16
  export declare function createSafeWindow(extra?: Record<string, any>): {};
16
17
  export declare function createSafeDocument(extra?: Record<string, any>): {};
18
+ export declare function createSafeNavigator(extra?: Record<string, any>): {};