@nocobase/flow-engine 2.0.0-alpha.4 → 2.0.0-alpha.41

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 (466) 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/ViewScopedFlowEngine.js +12 -0
  9. package/lib/acl/Acl.d.ts +1 -0
  10. package/lib/acl/Acl.js +11 -0
  11. package/lib/components/FieldModelRenderer.js +14 -6
  12. package/lib/components/FieldSkeleton.d.ts +10 -0
  13. package/lib/components/FieldSkeleton.js +64 -0
  14. package/lib/components/FlowContextSelector.js +7 -2
  15. package/lib/components/FlowModelRenderer.d.ts +3 -6
  16. package/lib/components/FlowModelRenderer.js +16 -47
  17. package/lib/components/FormItem.js +5 -1
  18. package/lib/components/MobilePopup.d.ts +20 -0
  19. package/lib/components/MobilePopup.js +102 -0
  20. package/lib/components/MobilePopup.style.d.ts +17 -0
  21. package/lib/components/MobilePopup.style.js +186 -0
  22. package/lib/components/index.d.ts +1 -0
  23. package/lib/components/index.js +3 -1
  24. package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +2 -2
  25. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +17 -5
  26. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +2 -2
  27. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
  28. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +35 -6
  29. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
  30. package/lib/components/variables/VariableInput.js +19 -5
  31. package/lib/components/variables/VariableTag.js +43 -2
  32. package/lib/components/variables/types.d.ts +2 -0
  33. package/lib/data-source/index.d.ts +15 -4
  34. package/lib/data-source/index.js +42 -13
  35. package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
  36. package/lib/data-source/sortCollectionsByInherits.js +71 -0
  37. package/lib/emitter.d.ts +6 -0
  38. package/lib/emitter.js +12 -0
  39. package/lib/executor/FlowExecutor.d.ts +4 -5
  40. package/lib/executor/FlowExecutor.js +168 -99
  41. package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
  42. package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
  43. package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
  44. package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
  45. package/lib/flowContext.d.ts +37 -5
  46. package/lib/flowContext.js +224 -87
  47. package/lib/flowEngine.d.ts +24 -1
  48. package/lib/flowEngine.js +81 -8
  49. package/lib/flowSettings.d.ts +2 -1
  50. package/lib/flowSettings.js +16 -8
  51. package/lib/hooks/useApplyAutoFlows.js +2 -1
  52. package/lib/index.d.ts +7 -1
  53. package/lib/index.js +32 -3
  54. package/lib/locale/en-US.json +4 -2
  55. package/lib/locale/index.d.ts +4 -0
  56. package/lib/locale/zh-CN.json +4 -2
  57. package/lib/models/CollectionFieldModel.d.ts +3 -0
  58. package/lib/models/CollectionFieldModel.js +52 -6
  59. package/lib/models/flowModel.d.ts +30 -29
  60. package/lib/models/flowModel.js +153 -100
  61. package/lib/models/forkFlowModel.d.ts +8 -4
  62. package/lib/models/forkFlowModel.js +38 -8
  63. package/lib/provider.d.ts +3 -1
  64. package/lib/provider.js +7 -5
  65. package/lib/resources/multiRecordResource.js +25 -1
  66. package/lib/resources/singleRecordResource.js +19 -1
  67. package/lib/resources/sqlResource.d.ts +1 -0
  68. package/lib/resources/sqlResource.js +20 -24
  69. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
  70. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
  71. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
  72. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
  73. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
  74. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
  75. package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
  76. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  77. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
  78. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
  79. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
  80. package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
  81. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
  82. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
  83. package/lib/runjs-context/contexts/base.d.ts +9 -0
  84. package/lib/runjs-context/contexts/base.js +205 -0
  85. package/lib/runjs-context/helpers.d.ts +5 -2
  86. package/lib/runjs-context/helpers.js +36 -27
  87. package/lib/runjs-context/registry.d.ts +7 -4
  88. package/lib/runjs-context/registry.js +10 -42
  89. package/lib/runjs-context/setup.d.ts +9 -0
  90. package/lib/runjs-context/setup.js +82 -0
  91. package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
  92. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  93. package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
  94. package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
  95. package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
  96. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
  97. package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
  98. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
  99. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
  100. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  101. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  102. package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
  103. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
  104. package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
  105. package/lib/runjs-context/snippets/index.d.ts +14 -3
  106. package/lib/runjs-context/snippets/index.js +162 -40
  107. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  108. package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
  109. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  110. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  111. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  112. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  113. package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
  114. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
  115. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
  116. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  117. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
  118. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  119. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  120. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  121. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
  122. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
  123. package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
  124. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  125. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
  126. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  127. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
  128. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  129. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
  130. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  131. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  132. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  133. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  134. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  135. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  136. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  137. package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
  138. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  139. package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
  140. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  141. package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
  142. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  143. package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
  144. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  145. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  146. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  147. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  148. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  149. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  150. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  151. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  152. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  153. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  154. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  155. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  156. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  157. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  158. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  159. package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
  160. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  161. package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
  162. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  163. package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
  164. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  165. package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
  166. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  167. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  168. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  169. package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
  170. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  171. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  172. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  173. package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
  174. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  175. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  176. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  177. package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
  178. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  179. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  180. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  181. package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
  182. package/lib/runjs-context/snippets/types.d.ts +9 -1
  183. package/lib/scheduler/ModelOperationScheduler.d.ts +51 -0
  184. package/lib/scheduler/ModelOperationScheduler.js +262 -0
  185. package/lib/types.d.ts +28 -3
  186. package/lib/types.js +4 -3
  187. package/lib/utils/associationObjectVariable.d.ts +32 -0
  188. package/lib/utils/associationObjectVariable.js +157 -0
  189. package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
  190. package/lib/utils/buildSettingsViewInputArgs.js +75 -0
  191. package/lib/utils/createEphemeralContext.d.ts +13 -0
  192. package/lib/utils/createEphemeralContext.js +140 -0
  193. package/lib/utils/flows.d.ts +10 -0
  194. package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → utils/flows.js} +21 -15
  195. package/lib/utils/index.d.ts +7 -2
  196. package/lib/utils/index.js +21 -2
  197. package/lib/utils/jsxTransform.d.ts +15 -0
  198. package/lib/utils/jsxTransform.js +68 -0
  199. package/lib/utils/params-resolvers.js +3 -3
  200. package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
  201. package/lib/utils/parsePathnameToViewParams.js +41 -5
  202. package/lib/utils/pruneFilter.d.ts +21 -0
  203. package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
  204. package/lib/utils/safeGlobals.d.ts +5 -3
  205. package/lib/utils/safeGlobals.js +40 -0
  206. package/lib/utils/schema-utils.js +2 -2
  207. package/lib/utils/serverContextParams.d.ts +1 -0
  208. package/lib/utils/translation.d.ts +4 -1
  209. package/lib/utils/translation.js +6 -2
  210. package/lib/utils/variablesParams.d.ts +22 -5
  211. package/lib/utils/variablesParams.js +132 -36
  212. package/lib/views/DrawerComponent.js +21 -2
  213. package/lib/views/PageComponent.js +2 -1
  214. package/lib/views/ViewNavigation.d.ts +3 -9
  215. package/lib/views/ViewNavigation.js +16 -2
  216. package/lib/views/createViewMeta.d.ts +29 -1
  217. package/lib/views/createViewMeta.js +338 -72
  218. package/lib/views/index.d.ts +1 -0
  219. package/lib/views/index.js +3 -0
  220. package/lib/views/useDialog.d.ts +9 -8
  221. package/lib/views/useDialog.js +19 -14
  222. package/lib/views/useDrawer.d.ts +9 -8
  223. package/lib/views/useDrawer.js +54 -35
  224. package/lib/views/usePage.d.ts +9 -8
  225. package/lib/views/usePage.js +20 -14
  226. package/package.json +6 -3
  227. package/src/BlockScopedFlowEngine.ts +86 -0
  228. package/src/FlowContextProvider.tsx +4 -2
  229. package/src/JSRunner.ts +3 -0
  230. package/src/ViewScopedFlowEngine.ts +15 -1
  231. package/src/__tests__/JSRunner.test.ts +62 -53
  232. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  233. package/src/__tests__/createViewMeta.popup.test.ts +132 -0
  234. package/src/__tests__/flow-engine.test.ts +3 -0
  235. package/src/__tests__/flowContext.test.ts +52 -0
  236. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  237. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  238. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  239. package/src/__tests__/flowSettings.open.test.tsx +2 -0
  240. package/src/__tests__/flowSettings.test.ts +2 -0
  241. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  242. package/src/__tests__/modelOperationScheduler.test.ts +346 -0
  243. package/src/__tests__/objectVariable.test.ts +464 -0
  244. package/src/__tests__/runjsContext.test.ts +216 -35
  245. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  246. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  247. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  248. package/src/__tests__/runjsLocales.test.ts +36 -0
  249. package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
  250. package/src/__tests__/runjsSnippets.test.ts +140 -0
  251. package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
  252. package/src/acl/Acl.tsx +14 -0
  253. package/src/acl/__tests__/Acl.test.tsx +43 -0
  254. package/src/components/DynamicFlowsEditor.tsx +3 -4
  255. package/src/components/FieldModelRenderer.tsx +20 -7
  256. package/src/components/FieldSkeleton.tsx +27 -0
  257. package/src/components/FlowContextSelector.tsx +6 -2
  258. package/src/components/FlowModelRenderer.tsx +33 -81
  259. package/src/components/FormItem.tsx +8 -1
  260. package/src/components/MobilePopup.style.ts +220 -0
  261. package/src/components/MobilePopup.tsx +86 -0
  262. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
  263. package/src/components/index.ts +1 -0
  264. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +1 -1
  265. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +17 -4
  266. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +1 -1
  267. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +39 -10
  268. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
  269. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +425 -0
  270. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
  271. package/src/components/variables/VariableInput.tsx +25 -5
  272. package/src/components/variables/VariableTag.tsx +54 -2
  273. package/src/components/variables/types.ts +2 -0
  274. package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
  275. package/src/data-source/index.ts +42 -11
  276. package/src/data-source/sortCollectionsByInherits.ts +61 -0
  277. package/src/emitter.ts +14 -0
  278. package/src/executor/FlowExecutor.ts +213 -119
  279. package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
  280. package/src/executor/__tests__/flowExecutor.test.ts +151 -5
  281. package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
  282. package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
  283. package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
  284. package/src/flowContext.ts +303 -104
  285. package/src/flowEngine.ts +96 -6
  286. package/src/flowSettings.ts +12 -4
  287. package/src/hooks/useApplyAutoFlows.ts +3 -1
  288. package/src/index.ts +12 -1
  289. package/src/locale/en-US.json +4 -2
  290. package/src/locale/zh-CN.json +4 -2
  291. package/src/models/CollectionFieldModel.tsx +60 -8
  292. package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
  293. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
  294. package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
  295. package/src/models/__tests__/flowModel.test.ts +234 -111
  296. package/src/models/__tests__/forkFlowModel.test.ts +40 -7
  297. package/src/models/flowModel.tsx +197 -132
  298. package/src/models/forkFlowModel.ts +48 -8
  299. package/src/provider.tsx +10 -7
  300. package/src/resources/multiRecordResource.ts +28 -1
  301. package/src/resources/singleRecordResource.ts +19 -1
  302. package/src/resources/sqlResource.ts +20 -25
  303. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
  304. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
  305. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
  306. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  307. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
  308. package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
  309. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
  310. package/src/runjs-context/contexts/base.ts +196 -0
  311. package/src/runjs-context/helpers.ts +32 -30
  312. package/src/runjs-context/registry.ts +16 -47
  313. package/src/runjs-context/setup.ts +51 -0
  314. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  315. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  316. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  317. package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
  318. package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
  319. package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
  320. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
  321. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
  322. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  323. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  324. package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
  325. package/src/runjs-context/snippets/index.ts +178 -39
  326. package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
  327. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  328. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  329. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  330. package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
  331. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
  332. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  333. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
  334. package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
  335. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
  336. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
  337. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
  338. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  339. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  340. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  341. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  342. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  343. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  344. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  345. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  346. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  347. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  348. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  349. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  350. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  351. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  352. package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
  353. package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
  354. package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
  355. package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
  356. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  357. package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
  358. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  359. package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
  360. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  361. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  362. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  363. package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
  364. package/src/runjs-context/snippets/types.ts +5 -1
  365. package/src/scheduler/ModelOperationScheduler.ts +304 -0
  366. package/src/types.ts +34 -0
  367. package/src/utils/__tests__/flows.test.ts +65 -0
  368. package/src/utils/__tests__/jsxTransform.test.ts +38 -0
  369. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
  370. package/src/utils/__tests__/pruneFilter.test.ts +38 -0
  371. package/src/utils/__tests__/safeGlobals.test.ts +22 -1
  372. package/src/utils/__tests__/variablesParams.test.ts +63 -0
  373. package/src/utils/associationObjectVariable.ts +180 -0
  374. package/src/utils/buildSettingsViewInputArgs.ts +72 -0
  375. package/src/utils/createEphemeralContext.ts +142 -0
  376. package/src/utils/flows.ts +23 -0
  377. package/src/utils/index.ts +11 -2
  378. package/src/utils/jsxTransform.ts +39 -0
  379. package/src/utils/params-resolvers.ts +2 -2
  380. package/src/utils/parsePathnameToViewParams.ts +50 -6
  381. package/src/utils/pruneFilter.ts +41 -0
  382. package/src/utils/safeGlobals.ts +49 -3
  383. package/src/utils/schema-utils.ts +1 -1
  384. package/src/utils/serverContextParams.ts +1 -0
  385. package/src/utils/translation.ts +7 -2
  386. package/src/utils/variablesParams.ts +156 -38
  387. package/src/views/DrawerComponent.tsx +21 -2
  388. package/src/views/PageComponent.tsx +1 -1
  389. package/src/views/ViewNavigation.ts +20 -12
  390. package/src/views/__tests__/ViewNavigation.test.ts +10 -0
  391. package/src/views/createViewMeta.ts +393 -70
  392. package/src/views/index.tsx +1 -0
  393. package/src/views/useDialog.tsx +24 -18
  394. package/src/views/useDrawer.tsx +74 -45
  395. package/src/views/usePage.tsx +26 -17
  396. package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
  397. package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
  398. package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
  399. package/lib/runjs-context/index.d.ts +0 -19
  400. package/lib/runjs-context/index.js +0 -57
  401. package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
  402. package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
  403. package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
  404. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
  405. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
  406. package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
  407. package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
  408. package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
  409. package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
  410. package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
  411. package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
  412. package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
  413. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
  414. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
  415. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
  416. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
  417. package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
  418. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
  419. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
  420. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
  421. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
  422. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
  423. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
  424. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
  425. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
  426. package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
  427. package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
  428. package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
  429. package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
  430. package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
  431. package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
  432. package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
  433. package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
  434. package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
  435. package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
  436. package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
  437. package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
  438. package/src/runjs-context/index.ts +0 -20
  439. package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
  440. package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
  441. package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
  442. package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
  443. package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
  444. package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
  445. package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
  446. package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
  447. package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
  448. package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
  449. package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
  450. package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
  451. package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
  452. package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
  453. package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
  454. package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
  455. package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
  456. package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
  457. package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
  458. package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
  459. package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
  460. package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
  461. package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
  462. /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
  463. /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
  464. /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
  465. /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
  466. /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
@@ -0,0 +1,78 @@
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 JSColumnRunJSContext_exports = {};
29
+ __export(JSColumnRunJSContext_exports, {
30
+ JSColumnRunJSContext: () => JSColumnRunJSContext
31
+ });
32
+ module.exports = __toCommonJS(JSColumnRunJSContext_exports);
33
+ var import_flowContext = require("../../flowContext");
34
+ const _JSColumnRunJSContext = class _JSColumnRunJSContext extends import_flowContext.FlowRunJSContext {
35
+ };
36
+ __name(_JSColumnRunJSContext, "JSColumnRunJSContext");
37
+ let JSColumnRunJSContext = _JSColumnRunJSContext;
38
+ JSColumnRunJSContext.define({
39
+ label: "JSColumn RunJS context",
40
+ properties: {
41
+ element: "ElementProxy instance providing a safe DOM container for the current table cell. Supports innerHTML/append and basic DOM APIs.",
42
+ record: "Current row record object (read-only).",
43
+ recordIndex: "Index of the current row in the page (0-based).",
44
+ collection: "Collection definition metadata (read-only).",
45
+ viewer: "View controller providing dialog/drawer/embed helpers for interactions initiated from the cell (e.g., open details).",
46
+ React: "React library",
47
+ antd: "Ant Design library"
48
+ },
49
+ methods: {
50
+ onRefReady: "Wait for cell DOM element to be ready before executing callback. Parameters: (ref, callback, timeout?) => void",
51
+ requireAsync: "Load external library by URL: `const lib = await ctx.requireAsync(url)`",
52
+ importAsync: "Dynamically import ESM module by URL: `const mod = await ctx.importAsync(url)`"
53
+ }
54
+ });
55
+ JSColumnRunJSContext.define(
56
+ {
57
+ label: "JS \u5217 RunJS \u4E0A\u4E0B\u6587",
58
+ properties: {
59
+ element: "ElementProxy\uFF0C\u8868\u683C\u5355\u5143\u683C\u7684\u5B89\u5168 DOM \u5BB9\u5668\uFF0C\u652F\u6301 innerHTML/append \u7B49",
60
+ record: "\u5F53\u524D\u884C\u8BB0\u5F55\u5BF9\u8C61\uFF08\u53EA\u8BFB\uFF09",
61
+ recordIndex: "\u5F53\u524D\u884C\u7D22\u5F15\uFF08\u4ECE 0 \u5F00\u59CB\uFF09",
62
+ collection: "\u96C6\u5408\u5B9A\u4E49\u5143\u6570\u636E\uFF08\u53EA\u8BFB\uFF09",
63
+ viewer: "\u89C6\u56FE\u63A7\u5236\u5668\uFF0C\u53EF\u7528\u4E8E\u5728\u5355\u5143\u683C\u4E2D\u89E6\u53D1\u62BD\u5C49/\u5BF9\u8BDD\u6846/\u5185\u5D4C\u7B49\u4EA4\u4E92",
64
+ React: "React \u5E93",
65
+ antd: "Ant Design \u5E93"
66
+ },
67
+ methods: {
68
+ onRefReady: "\u7B49\u5F85\u5355\u5143\u683C DOM \u5C31\u7EEA\u540E\u6267\u884C\u56DE\u8C03\u3002\u53C2\u6570\uFF1A(ref, callback, timeout?)",
69
+ requireAsync: "\u6309 URL \u5F02\u6B65\u52A0\u8F7D\u5916\u90E8\u5E93\uFF1A`const lib = await ctx.requireAsync(url)`",
70
+ importAsync: "\u6309 URL \u52A8\u6001\u5BFC\u5165 ESM \u6A21\u5757\uFF1A`const mod = await ctx.importAsync(url)`"
71
+ }
72
+ },
73
+ { locale: "zh-CN" }
74
+ );
75
+ // Annotate the CommonJS export names for ESM import in node:
76
+ 0 && (module.exports = {
77
+ JSColumnRunJSContext
78
+ });
@@ -6,11 +6,6 @@
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
- import { FlowRunJSContext } from './FlowRunJSContext';
9
+ import { FlowRunJSContext } from '../../flowContext';
10
10
  export declare class JSFieldRunJSContext extends FlowRunJSContext {
11
- static injectDefaultGlobals(): {
12
- window: {};
13
- document: {};
14
- };
15
- constructor(delegate: any);
16
11
  }
@@ -30,40 +30,44 @@ __export(JSFieldRunJSContext_exports, {
30
30
  JSFieldRunJSContext: () => JSFieldRunJSContext
31
31
  });
32
32
  module.exports = __toCommonJS(JSFieldRunJSContext_exports);
33
- var import_FlowRunJSContext = require("./FlowRunJSContext");
34
- var import_utils = require("../../utils");
35
- const _JSFieldRunJSContext = class _JSFieldRunJSContext extends import_FlowRunJSContext.FlowRunJSContext {
36
- static injectDefaultGlobals() {
37
- return { window: (0, import_utils.createSafeWindow)(), document: (0, import_utils.createSafeDocument)() };
38
- }
39
- constructor(delegate) {
40
- super(delegate);
41
- this.defineProperty("element", { get: /* @__PURE__ */ __name(() => this._delegate["element"], "get") });
42
- this.defineProperty("value", { get: /* @__PURE__ */ __name(() => this._delegate["value"], "get") });
43
- this.defineProperty("record", { get: /* @__PURE__ */ __name(() => this._delegate["record"], "get") });
44
- this.defineProperty("collection", { get: /* @__PURE__ */ __name(() => this._delegate["collection"], "get") });
45
- }
33
+ var import_flowContext = require("../../flowContext");
34
+ const _JSFieldRunJSContext = class _JSFieldRunJSContext extends import_flowContext.FlowRunJSContext {
46
35
  };
47
36
  __name(_JSFieldRunJSContext, "JSFieldRunJSContext");
48
37
  let JSFieldRunJSContext = _JSFieldRunJSContext;
49
38
  JSFieldRunJSContext.define({
50
39
  label: "JSField RunJS context",
51
40
  properties: {
52
- element: "ElementProxy\uFF0C\u5B57\u6BB5\u6E32\u67D3\u5BB9\u5668",
53
- value: "\u5B57\u6BB5\u5F53\u524D\u503C\uFF08\u53EA\u8BFB\uFF09",
54
- record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09",
55
- collection: "\u96C6\u5408\u5B9A\u4E49\uFF08\u53EA\u8BFB\uFF09"
41
+ element: `ElementProxy instance providing a safe DOM container for field rendering.
42
+ Supports innerHTML, append, and other DOM manipulation methods.`,
43
+ value: `Current value of the field (read-only).
44
+ Contains the data value stored in this field.`,
45
+ record: `Current record data object (read-only).
46
+ Contains all field values of the parent record.`,
47
+ collection: `Collection definition metadata (read-only).
48
+ Provides schema information about the collection this field belongs to.`
56
49
  },
57
50
  methods: {
58
- onRefReady: "Container ready callback"
59
- },
60
- snipastes: {
61
- "Render value": { $ref: "scene/jsfield/innerHTML-value", prefix: "sn-jsf-value" },
62
- "Message success": { $ref: "global/message-success", prefix: "sn-msg-ok" },
63
- "Format number": { $ref: "scene/jsfield/format-number", prefix: "sn-jsf-num" },
64
- "Color by value": { $ref: "scene/jsfield/color-by-value", prefix: "sn-jsf-color" }
51
+ onRefReady: `Wait for field container DOM element to be ready before executing callback.
52
+ Parameters: (ref: React.RefObject, callback: (element: HTMLElement) => void, timeout?: number) => void
53
+ Example: ctx.onRefReady(ctx.ref, (el) => { el.innerHTML = ctx.value })`
65
54
  }
66
55
  });
56
+ JSFieldRunJSContext.define(
57
+ {
58
+ label: "JS \u5B57\u6BB5 RunJS \u4E0A\u4E0B\u6587",
59
+ properties: {
60
+ element: "ElementProxy\uFF0C\u5B57\u6BB5\u6E32\u67D3\u5BB9\u5668\uFF0C\u652F\u6301 innerHTML/append \u7B49 DOM \u64CD\u4F5C",
61
+ value: "\u5B57\u6BB5\u5F53\u524D\u503C\uFF08\u53EA\u8BFB\uFF09",
62
+ record: "\u5F53\u524D\u8BB0\u5F55\u5BF9\u8C61\uFF08\u53EA\u8BFB\uFF0C\u5305\u542B\u7236\u8BB0\u5F55\u5168\u90E8\u5B57\u6BB5\u503C\uFF09",
63
+ collection: "\u96C6\u5408\u5B9A\u4E49\u5143\u6570\u636E\uFF08\u53EA\u8BFB\uFF0C\u63CF\u8FF0\u5B57\u6BB5\u6240\u5C5E\u96C6\u5408\u7684 Schema\uFF09"
64
+ },
65
+ methods: {
66
+ onRefReady: "\u5728\u5B57\u6BB5\u5BB9\u5668 DOM \u5C31\u7EEA\u540E\u6267\u884C\u56DE\u8C03\u3002\u53C2\u6570\uFF1A(ref, callback, timeout?)\uFF1B\u793A\u4F8B\uFF1Actx.onRefReady(ctx.ref, el => { el.innerHTML = ctx.value })"
67
+ }
68
+ },
69
+ { locale: "zh-CN" }
70
+ );
67
71
  // Annotate the CommonJS export names for ESM import in node:
68
72
  0 && (module.exports = {
69
73
  JSFieldRunJSContext
@@ -6,11 +6,6 @@
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
- import { FlowRunJSContext } from './FlowRunJSContext';
9
+ import { FlowRunJSContext } from '../../flowContext';
10
10
  export declare class JSItemRunJSContext extends FlowRunJSContext {
11
- static injectDefaultGlobals(): {
12
- window: {};
13
- document: {};
14
- };
15
- constructor(delegate: any);
16
11
  }
@@ -30,36 +30,40 @@ __export(JSItemRunJSContext_exports, {
30
30
  JSItemRunJSContext: () => JSItemRunJSContext
31
31
  });
32
32
  module.exports = __toCommonJS(JSItemRunJSContext_exports);
33
- var import_FlowRunJSContext = require("./FlowRunJSContext");
34
- var import_utils = require("../../utils");
35
- const _JSItemRunJSContext = class _JSItemRunJSContext extends import_FlowRunJSContext.FlowRunJSContext {
36
- static injectDefaultGlobals() {
37
- return { window: (0, import_utils.createSafeWindow)(), document: (0, import_utils.createSafeDocument)() };
38
- }
39
- constructor(delegate) {
40
- super(delegate);
41
- this.defineProperty("element", { get: /* @__PURE__ */ __name(() => this._delegate["element"], "get") });
42
- this.defineProperty("record", { get: /* @__PURE__ */ __name(() => this._delegate["record"], "get") });
43
- this.defineProperty("resource", { get: /* @__PURE__ */ __name(() => this._delegate["resource"], "get") });
44
- }
33
+ var import_flowContext = require("../../flowContext");
34
+ const _JSItemRunJSContext = class _JSItemRunJSContext extends import_flowContext.FlowRunJSContext {
45
35
  };
46
36
  __name(_JSItemRunJSContext, "JSItemRunJSContext");
47
37
  let JSItemRunJSContext = _JSItemRunJSContext;
48
38
  JSItemRunJSContext.define({
49
39
  label: "JSItem RunJS context",
50
40
  properties: {
51
- element: "ElementProxy\uFF0C\u8868\u5355\u9879\u6E32\u67D3\u5BB9\u5668",
52
- resource: "\u5F53\u524D\u8D44\u6E90\uFF08\u53EA\u8BFB\uFF09",
53
- record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09"
41
+ element: `ElementProxy instance providing a safe DOM container for form item rendering.
42
+ Supports innerHTML, append, and other DOM manipulation methods.`,
43
+ resource: `Current resource instance (read-only).
44
+ Provides access to the data resource associated with the current form context.`,
45
+ record: `Current record data object (read-only).
46
+ Contains all field values of the parent record.`
54
47
  },
55
48
  methods: {
56
- onRefReady: "Container ready callback",
57
- requireAsync: "Load external library"
58
- },
59
- snipastes: {
60
- "Render form item": { $ref: "scene/jsitem/render-basic", prefix: "sn-jsitem-basic" }
49
+ onRefReady: `Wait for form item container DOM element to be ready before executing callback.
50
+ Parameters: (ref: React.RefObject, callback: (element: HTMLElement) => void, timeout?: number) => void`
61
51
  }
62
52
  });
53
+ JSItemRunJSContext.define(
54
+ {
55
+ label: "JS \u8868\u5355\u9879 RunJS \u4E0A\u4E0B\u6587",
56
+ properties: {
57
+ element: "ElementProxy\uFF0C\u8868\u5355\u9879\u6E32\u67D3\u5BB9\u5668\uFF0C\u652F\u6301 innerHTML/append \u7B49 DOM \u64CD\u4F5C",
58
+ resource: "\u5F53\u524D\u8D44\u6E90\uFF08\u53EA\u8BFB\uFF09",
59
+ record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09"
60
+ },
61
+ methods: {
62
+ onRefReady: "\u5BB9\u5668\u5C31\u7EEA\u540E\u6267\u884C\u56DE\u8C03\u3002\u53C2\u6570\uFF1A(ref, callback, timeout?)"
63
+ }
64
+ },
65
+ { locale: "zh-CN" }
66
+ );
63
67
  // Annotate the CommonJS export names for ESM import in node:
64
68
  0 && (module.exports = {
65
69
  JSItemRunJSContext
@@ -6,7 +6,6 @@
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
- import { FlowRunJSContext } from './FlowRunJSContext';
9
+ import { FlowRunJSContext } from '../../flowContext';
10
10
  export declare class JSRecordActionRunJSContext extends FlowRunJSContext {
11
- constructor(delegate: any);
12
11
  }
@@ -30,31 +30,30 @@ __export(JSRecordActionRunJSContext_exports, {
30
30
  JSRecordActionRunJSContext: () => JSRecordActionRunJSContext
31
31
  });
32
32
  module.exports = __toCommonJS(JSRecordActionRunJSContext_exports);
33
- var import_FlowRunJSContext = require("./FlowRunJSContext");
34
- const _JSRecordActionRunJSContext = class _JSRecordActionRunJSContext extends import_FlowRunJSContext.FlowRunJSContext {
35
- constructor(delegate) {
36
- super(delegate);
37
- this.defineProperty("record", { get: /* @__PURE__ */ __name(() => this._delegate["record"], "get") });
38
- this.defineProperty("filterByTk", { get: /* @__PURE__ */ __name(() => this._delegate["filterByTk"], "get") });
39
- }
33
+ var import_flowContext = require("../../flowContext");
34
+ const _JSRecordActionRunJSContext = class _JSRecordActionRunJSContext extends import_flowContext.FlowRunJSContext {
40
35
  };
41
36
  __name(_JSRecordActionRunJSContext, "JSRecordActionRunJSContext");
42
37
  let JSRecordActionRunJSContext = _JSRecordActionRunJSContext;
43
38
  JSRecordActionRunJSContext.define({
44
39
  label: "JSRecordAction RunJS context",
45
40
  properties: {
46
- record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09",
47
- filterByTk: "\u4E3B\u952E/\u8FC7\u6EE4\u952E\uFF08\u53EA\u8BFB\uFF09"
48
- },
49
- methods: {
50
- runAction: "Run action: `await ctx.runAction(name, params)`",
51
- message: "Message API"
52
- },
53
- snipastes: {
54
- "Show record id": { $ref: "scene/actions/record-id-message", prefix: "sn-act-record-id" },
55
- "Run action": { $ref: "scene/actions/run-action-basic", prefix: "sn-act-run" }
41
+ record: `Current record data object (read-only).
42
+ Contains all field values of the record associated with this action.`,
43
+ filterByTk: `Primary key or filter key of the current record (read-only).
44
+ Used to identify the specific record in database operations.`
56
45
  }
57
46
  });
47
+ JSRecordActionRunJSContext.define(
48
+ {
49
+ label: "JS \u8BB0\u5F55\u52A8\u4F5C RunJS \u4E0A\u4E0B\u6587",
50
+ properties: {
51
+ record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09",
52
+ filterByTk: "\u4E3B\u952E/\u8FC7\u6EE4\u952E\uFF08\u53EA\u8BFB\uFF09"
53
+ }
54
+ },
55
+ { locale: "zh-CN" }
56
+ );
58
57
  // Annotate the CommonJS export names for ESM import in node:
59
58
  0 && (module.exports = {
60
59
  JSRecordActionRunJSContext
@@ -0,0 +1,9 @@
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
+ export declare function defineBaseContextMeta(): void;
@@ -0,0 +1,205 @@
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 base_exports = {};
29
+ __export(base_exports, {
30
+ defineBaseContextMeta: () => defineBaseContextMeta
31
+ });
32
+ module.exports = __toCommonJS(base_exports);
33
+ var import_flowContext = require("../../flowContext");
34
+ function defineBaseContextMeta() {
35
+ import_flowContext.FlowRunJSContext.define({
36
+ label: "RunJS base",
37
+ properties: {
38
+ logger: 'Pino logger instance for structured logging. Example: `ctx.logger.info({ foo: 1 }, "message")`',
39
+ message: 'Ant Design global message API for displaying temporary messages. Example: `ctx.message.success("Operation completed")`',
40
+ notification: 'Ant Design notification API for displaying notification boxes. Example: `ctx.notification.open({ message: "Title", description: "Content" })`',
41
+ resource: "Data resource accessible based on current user permissions",
42
+ urlSearchParams: "URLSearchParams object containing query parameters from the current URL",
43
+ token: "API authentication token for the current session",
44
+ role: "Current user role information",
45
+ auth: "Authentication context containing locale, role, user, and token information",
46
+ api: {
47
+ description: "APIClient instance for making HTTP requests.",
48
+ detail: "APIClient",
49
+ properties: {
50
+ request: {
51
+ description: "Make an HTTP request using the APIClient instance. Parameters: (options: RequestOptions) => Promise<any>.",
52
+ detail: "Promise<any>",
53
+ completion: {
54
+ insertText: `await ctx.api.request({ url: '', method: 'get', params: {} })`
55
+ }
56
+ }
57
+ }
58
+ },
59
+ i18n: {
60
+ description: "An instance of i18next for managing internationalization.",
61
+ detail: "i18next",
62
+ properties: {
63
+ language: "Current active language code."
64
+ }
65
+ },
66
+ React: "React namespace providing React library functions and hooks (available in RunJS environment). Recommended access path: `ctx.libs.React`.",
67
+ ReactDOM: "ReactDOM client API including createRoot for rendering React components. Also available via `ctx.libs.ReactDOM`.",
68
+ antd: "Ant Design component library. Recommended access path: `ctx.libs.antd`.",
69
+ libs: {
70
+ description: "Namespace for third-party and shared libraries. Includes React, ReactDOM, Ant Design, and dayjs.",
71
+ detail: "Libraries namespace",
72
+ properties: {
73
+ React: "React namespace (same as ctx.React).",
74
+ ReactDOM: "ReactDOM client API (same as ctx.ReactDOM).",
75
+ antd: "Ant Design component library (same as ctx.antd).",
76
+ dayjs: "dayjs date-time utility library.",
77
+ antdIcons: "Ant Design icons library. Example: `ctx.libs.antdIcons.PlusOutlined`."
78
+ }
79
+ }
80
+ },
81
+ methods: {
82
+ t: 'Internationalization function for translating text. Parameters: (key: string, variables?: object) => string. Example: `ctx.t("Hello {name}", { name: "World" })`',
83
+ render: {
84
+ description: 'Render into container. Accepts ReactElement, DOM Node/Fragment, or HTML string. Parameters: (vnode: ReactElement | Node | DocumentFragment | string, container?: HTMLElement|ElementProxy) => Root|null. Example: `ctx.render(<div>Hello</div>)` or `ctx.render("<b>hi</b>")`',
85
+ detail: "ReactDOM Root",
86
+ completion: {
87
+ insertText: `ctx.render(<div />)`
88
+ }
89
+ },
90
+ requireAsync: 'Asynchronously load external libraries from URL. Parameters: (url: string) => Promise<any>. Example: `const lodash = await ctx.requireAsync("https://cdn.jsdelivr.net/npm/lodash")`',
91
+ importAsync: 'Dynamically import ESM module by URL. Parameters: (url: string) => Promise<Module>. Example: `const mod = await ctx.importAsync("https://cdn.jsdelivr.net/npm/lit-html@2/+esm")`',
92
+ resolveJsonTemplate: "Resolve JSON templates containing variable expressions with {{ }} syntax. Parameters: (template: any, context?: object) => any",
93
+ runAction: {
94
+ description: 'Execute a data action on the current resource. Parameters: (actionName: string, params: object) => Promise<any>. Example: `await ctx.runAction("create", { values: { name: "test" } })`',
95
+ detail: "Promise<any>",
96
+ completion: {
97
+ insertText: `await ctx.runAction('create', { values: {} })`
98
+ }
99
+ },
100
+ openView: {
101
+ description: `Open a view component (page, modal, or drawer) by its unique identifier.
102
+ Parameters: (viewId: string, options?: OpenViewOptions) => Promise<void>
103
+ Options:
104
+ - params: Record<string, any> - Parameters passed to the view component
105
+ - mode: "page" | "modal" | "drawer" - Display mode (default: "drawer")
106
+ - title: string - Modal/drawer title
107
+ - width: number | string - Modal/drawer width
108
+ - navigation: boolean - Whether to use route navigation
109
+ - preventClose: boolean - Prevent closing the view
110
+ - viewUid: string - Custom view UID for routing
111
+ - isMobileLayout: boolean - Use mobile layout (displays as embed)
112
+ Examples:
113
+ - Modal with params: await ctx.openView("user-detail", { params: { id: 123 }, mode: "modal", title: "User Details", width: 800 })
114
+ - Drawer (default): await ctx.openView("settings-page")
115
+ - Page navigation: await ctx.openView("dashboard", { mode: "page" })`,
116
+ detail: "Promise<void>",
117
+ completion: {
118
+ insertText: `await ctx.openView('view-id', { mode: 'drawer', params: {} })`
119
+ }
120
+ }
121
+ }
122
+ });
123
+ import_flowContext.FlowRunJSContext.define(
124
+ {
125
+ label: "RunJS \u57FA\u7840",
126
+ properties: {
127
+ logger: 'Pino \u65E5\u5FD7\u5B9E\u4F8B\uFF08\u7ED3\u6784\u5316\u65E5\u5FD7\uFF09\u3002\u793A\u4F8B\uFF1A`ctx.logger.info({ foo: 1 }, "message")`',
128
+ message: 'Ant Design \u5168\u5C40\u6D88\u606F API\uFF0C\u7528\u4E8E\u663E\u793A\u4E34\u65F6\u63D0\u793A\u3002\u793A\u4F8B\uFF1A`ctx.message.success("\u64CD\u4F5C\u6210\u529F")`',
129
+ notification: 'Ant Design \u901A\u77E5 API\uFF0C\u7528\u4E8E\u663E\u793A\u901A\u77E5\u6846\u3002\u793A\u4F8B\uFF1A`ctx.notification.open({ message: "\u6807\u9898", description: "\u5185\u5BB9" })`',
130
+ resource: "\u57FA\u4E8E\u5F53\u524D\u7528\u6237\u6743\u9650\u53EF\u8BBF\u95EE\u7684\u6570\u636E\u8D44\u6E90",
131
+ urlSearchParams: "\u5F53\u524D URL \u7684\u67E5\u8BE2\u53C2\u6570\uFF08URLSearchParams \u5BF9\u8C61\uFF09",
132
+ token: "\u5F53\u524D\u4F1A\u8BDD\u7684 API \u8BA4\u8BC1 token",
133
+ role: "\u5F53\u524D\u7528\u6237\u89D2\u8272\u4FE1\u606F",
134
+ auth: "\u8BA4\u8BC1\u4E0A\u4E0B\u6587\uFF0C\u5305\u542B locale\u3001role\u3001user\u3001token \u7B49\u4FE1\u606F",
135
+ api: {
136
+ description: "\u7528\u4E8E\u53D1\u8D77 HTTP \u8BF7\u6C42\u7684 APIClient \u5B9E\u4F8B",
137
+ detail: "APIClient",
138
+ properties: {
139
+ request: {
140
+ description: "\u901A\u8FC7 ctx.api.request \u53D1\u8D77 HTTP \u8BF7\u6C42\uFF0C\u5165\u53C2\u4E3A RequestOptions\uFF0C\u8FD4\u56DE Promise\u3002",
141
+ detail: "Promise<any>",
142
+ completion: {
143
+ insertText: `await ctx.api.request({ url: '', method: 'get', params: {} })`
144
+ }
145
+ }
146
+ }
147
+ },
148
+ i18n: {
149
+ description: "i18next \u5B9E\u4F8B\uFF0C\u53EF\u7528\u4E8E\u7BA1\u7406\u56FD\u9645\u5316",
150
+ detail: "i18next",
151
+ properties: {
152
+ language: "\u5F53\u524D\u6FC0\u6D3B\u7684\u8BED\u8A00\u4EE3\u7801"
153
+ }
154
+ },
155
+ React: "React \u547D\u540D\u7A7A\u95F4\uFF0C\u63D0\u4F9B React \u51FD\u6570\u4E0E hooks\uFF08RunJS \u73AF\u5883\u4E2D\u53EF\u7528\uFF09\u3002\u63A8\u8350\u4F7F\u7528 `ctx.libs.React` \u8BBF\u95EE\u3002",
156
+ ReactDOM: "ReactDOM \u5BA2\u6237\u7AEF API\uFF0C\u542B createRoot \u7B49\u6E32\u67D3\u65B9\u6CD5\u3002\u63A8\u8350\u901A\u8FC7 `ctx.libs.ReactDOM` \u8BBF\u95EE\u3002",
157
+ antd: "Ant Design \u7EC4\u4EF6\u5E93\uFF08RunJS \u73AF\u5883\u4E2D\u53EF\u7528\uFF09\u3002\u63A8\u8350\u4F7F\u7528 `ctx.libs.antd` \u8BBF\u95EE\u3002",
158
+ libs: {
159
+ description: "\u7B2C\u4E09\u65B9/\u901A\u7528\u5E93\u7684\u7EDF\u4E00\u547D\u540D\u7A7A\u95F4\uFF0C\u5305\u542B React\u3001ReactDOM\u3001Ant Design\u3001dayjs \u7B49\u3002\u540E\u7EED\u65B0\u589E\u5E93\u4F1A\u4F18\u5148\u6302\u5728\u6B64\u5904\u3002",
160
+ detail: "\u901A\u7528\u5E93\u547D\u540D\u7A7A\u95F4",
161
+ properties: {
162
+ React: "React \u547D\u540D\u7A7A\u95F4\uFF08\u7B49\u4EF7\u4E8E ctx.React\uFF09\u3002",
163
+ ReactDOM: "ReactDOM \u5BA2\u6237\u7AEF API\uFF08\u7B49\u4EF7\u4E8E ctx.ReactDOM\uFF09\u3002",
164
+ antd: "Ant Design \u7EC4\u4EF6\u5E93\uFF08\u7B49\u4EF7\u4E8E ctx.antd\uFF09\u3002",
165
+ dayjs: "dayjs \u65E5\u671F\u65F6\u95F4\u5DE5\u5177\u5E93\u3002",
166
+ antdIcons: "Ant Design \u56FE\u6807\u5E93\u3002 \u4F8B\u5982\uFF1A`ctx.libs.antdIcons.PlusOutlined`\u3002"
167
+ }
168
+ }
169
+ },
170
+ methods: {
171
+ t: '\u56FD\u9645\u5316\u51FD\u6570\uFF0C\u7528\u4E8E\u7FFB\u8BD1\u6587\u6848\u3002\u53C2\u6570\uFF1A(key: string, variables?: object) => string\u3002\u793A\u4F8B\uFF1A`ctx.t("\u4F60\u597D {name}", { name: "\u4E16\u754C" })`',
172
+ render: {
173
+ description: '\u6E32\u67D3\u5230\u5BB9\u5668\u3002vnode \u652F\u6301 ReactElement\u3001DOM \u8282\u70B9/\u7247\u6BB5\u3001\u6216 HTML \u5B57\u7B26\u4E32\u3002\u53C2\u6570\uFF1A(vnode: ReactElement | Node | DocumentFragment | string, container?: HTMLElement|ElementProxy) => Root|null\u3002\u793A\u4F8B\uFF1A`ctx.render(<div />)` \u6216 `ctx.render("<b>hi</b>")`',
174
+ detail: "ReactDOM Root",
175
+ completion: {
176
+ insertText: `ctx.render(<div />)`
177
+ }
178
+ },
179
+ requireAsync: '\u6309 URL \u5F02\u6B65\u52A0\u8F7D\u5916\u90E8\u5E93\u3002\u53C2\u6570\uFF1A(url: string) => Promise<any>\u3002\u793A\u4F8B\uFF1A`const lodash = await ctx.requireAsync("https://cdn.jsdelivr.net/npm/lodash")`',
180
+ importAsync: '\u6309 URL \u52A8\u6001\u5BFC\u5165 ESM \u6A21\u5757\uFF08\u5F00\u53D1/\u751F\u4EA7\u5747\u53EF\u7528\uFF09\u3002\u53C2\u6570\uFF1A(url: string) => Promise<Module>\u3002\u793A\u4F8B\uFF1A`const mod = await ctx.importAsync("https://cdn.jsdelivr.net/npm/lit-html@2/+esm")`',
181
+ resolveJsonTemplate: "\u89E3\u6790\u542B {{ }} \u53D8\u91CF\u8868\u8FBE\u5F0F\u7684 JSON \u6A21\u677F\u3002\u53C2\u6570\uFF1A(template: any, context?: object) => any",
182
+ runAction: {
183
+ description: '\u5BF9\u5F53\u524D\u8D44\u6E90\u6267\u884C\u6570\u636E\u52A8\u4F5C\u3002\u53C2\u6570\uFF1A(actionName: string, params: object) => Promise<any>\u3002\u793A\u4F8B\uFF1A`await ctx.runAction("create", { values: { name: "test" } })`',
184
+ detail: "Promise<any>",
185
+ completion: {
186
+ insertText: `await ctx.runAction('create', { values: {} })`
187
+ }
188
+ },
189
+ openView: {
190
+ description: "\u6839\u636E\u552F\u4E00\u6807\u8BC6\u6253\u5F00\u89C6\u56FE\uFF08\u9875\u9762/\u5F39\u7A97/\u62BD\u5C49\uFF09\u3002\u53C2\u6570\uFF1A(viewId: string, options?: OpenViewOptions) => Promise<void>`\uFF0C\u5E38\u7528\u9009\u9879\uFF1Aparams\u3001mode\u3001title\u3001width\u3001navigation\u3001preventClose\u3001viewUid\u3001isMobileLayout\u3002",
191
+ detail: "Promise<void>",
192
+ completion: {
193
+ insertText: `await ctx.openView('view-id', { mode: 'drawer', params: {} })`
194
+ }
195
+ }
196
+ }
197
+ },
198
+ { locale: "zh-CN" }
199
+ );
200
+ }
201
+ __name(defineBaseContextMeta, "defineBaseContextMeta");
202
+ // Annotate the CommonJS export names for ESM import in node:
203
+ 0 && (module.exports = {
204
+ defineBaseContextMeta
205
+ });
@@ -9,9 +9,12 @@
9
9
  import type { FlowContext } from '../flowContext';
10
10
  import { JSRunner } from '../JSRunner';
11
11
  import type { JSRunnerOptions } from '../JSRunner';
12
- import { RunJSVersion } from './contexts/FlowRunJSContext';
12
+ import { type RunJSVersion } from './registry';
13
13
  export declare function getRunJSDocFor(ctx: FlowContext, { version }?: {
14
14
  version?: RunJSVersion;
15
15
  }): any;
16
16
  export declare function createJSRunnerWithVersion(this: FlowContext, options?: JSRunnerOptions): JSRunner;
17
- export declare function registerDefaultMappings(): void;
17
+ export declare function getRunJSScenesForModel(modelClass: string, version?: RunJSVersion): string[];
18
+ export declare function getRunJSScenesForContext(ctx: FlowContext, { version }?: {
19
+ version?: RunJSVersion;
20
+ }): string[];
@@ -29,51 +29,60 @@ var helpers_exports = {};
29
29
  __export(helpers_exports, {
30
30
  createJSRunnerWithVersion: () => createJSRunnerWithVersion,
31
31
  getRunJSDocFor: () => getRunJSDocFor,
32
- registerDefaultMappings: () => registerDefaultMappings
32
+ getRunJSScenesForContext: () => getRunJSScenesForContext,
33
+ getRunJSScenesForModel: () => getRunJSScenesForModel
33
34
  });
34
35
  module.exports = __toCommonJS(helpers_exports);
35
36
  var import_JSRunner = require("../JSRunner");
36
- var import_FlowRunJSContext = require("./contexts/FlowRunJSContext");
37
37
  var import_registry = require("./registry");
38
- var import_JSBlockRunJSContext = require("./contexts/JSBlockRunJSContext");
39
- var import_JSFieldRunJSContext = require("./contexts/JSFieldRunJSContext");
40
- var import_JSItemRunJSContext = require("./contexts/JSItemRunJSContext");
41
- var import_FormJSFieldItemRunJSContext = require("./contexts/FormJSFieldItemRunJSContext");
42
- var import_JSRecordActionRunJSContext = require("./contexts/JSRecordActionRunJSContext");
43
- var import_JSCollectionActionRunJSContext = require("./contexts/JSCollectionActionRunJSContext");
38
+ function getLocale(ctx) {
39
+ var _a, _b, _c;
40
+ return ((_b = (_a = ctx == null ? void 0 : ctx.api) == null ? void 0 : _a.auth) == null ? void 0 : _b.locale) || ((_c = ctx == null ? void 0 : ctx.i18n) == null ? void 0 : _c.language) || (ctx == null ? void 0 : ctx.locale);
41
+ }
42
+ __name(getLocale, "getLocale");
44
43
  function getRunJSDocFor(ctx, { version = "v1" } = {}) {
45
- var _a;
44
+ var _a, _b;
46
45
  const modelClass = (0, import_registry.getModelClassName)(ctx);
47
- const ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve("latest", modelClass) || import_FlowRunJSContext.FlowRunJSContext;
48
- return ((_a = ctor.getDoc) == null ? void 0 : _a.call(ctor)) || {};
46
+ const ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve(version, "*");
47
+ const locale = getLocale(ctx);
48
+ if ((_a = ctor == null ? void 0 : ctor.getDoc) == null ? void 0 : _a.length) {
49
+ return ctor.getDoc(locale) || {};
50
+ }
51
+ return ((_b = ctor == null ? void 0 : ctor.getDoc) == null ? void 0 : _b.call(ctor)) || {};
49
52
  }
50
53
  __name(getRunJSDocFor, "getRunJSDocFor");
51
54
  function createJSRunnerWithVersion(options) {
52
- var _a;
53
55
  const version = (options == null ? void 0 : options.version) || "v1";
54
56
  const modelClass = (0, import_registry.getModelClassName)(this);
55
- const Ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve("latest", modelClass) || import_FlowRunJSContext.FlowRunJSContext;
56
- const runCtx = new Ctor(this.createProxy ? this.createProxy() : this);
57
- const def = ((_a = Ctor.injectDefaultGlobals) == null ? void 0 : _a.call(Ctor)) || {};
58
- const globals = { ctx: runCtx, ...def, ...(options == null ? void 0 : options.globals) || {} };
57
+ const ensureFlowContext = /* @__PURE__ */ __name((obj) => obj, "ensureFlowContext");
58
+ const Ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve(version, "*");
59
+ if (!Ctor) {
60
+ throw new Error("[RunJS] No RunJSContext registered for version/model.");
61
+ }
62
+ const runCtx = new Ctor(ensureFlowContext(this));
63
+ const globals = { ctx: runCtx, ...(options == null ? void 0 : options.globals) || {} };
64
+ if (modelClass === "JSFieldModel" || modelClass === "JSBlockModel") {
65
+ if (typeof window !== "undefined") globals.window = window;
66
+ if (typeof document !== "undefined") globals.document = document;
67
+ }
59
68
  const { timeoutMs } = options || {};
60
69
  return new import_JSRunner.JSRunner({ globals, timeoutMs });
61
70
  }
62
71
  __name(createJSRunnerWithVersion, "createJSRunnerWithVersion");
63
- function registerDefaultMappings() {
64
- const v = "v1";
65
- import_registry.RunJSContextRegistry.register(v, "JSBlockModel", import_JSBlockRunJSContext.JSBlockRunJSContext);
66
- import_registry.RunJSContextRegistry.register(v, "JSFieldModel", import_JSFieldRunJSContext.JSFieldRunJSContext);
67
- import_registry.RunJSContextRegistry.register(v, "JSItemModel", import_JSItemRunJSContext.JSItemRunJSContext);
68
- import_registry.RunJSContextRegistry.register(v, "FormJSFieldItemModel", import_FormJSFieldItemRunJSContext.FormJSFieldItemRunJSContext);
69
- import_registry.RunJSContextRegistry.register(v, "JSRecordActionModel", import_JSRecordActionRunJSContext.JSRecordActionRunJSContext);
70
- import_registry.RunJSContextRegistry.register(v, "JSCollectionActionModel", import_JSCollectionActionRunJSContext.JSCollectionActionRunJSContext);
71
- import_registry.RunJSContextRegistry.register(v, "*", import_FlowRunJSContext.FlowRunJSContext);
72
+ function getRunJSScenesForModel(modelClass, version = "v1") {
73
+ const meta = import_registry.RunJSContextRegistry.getMeta(version, modelClass);
74
+ return Array.isArray(meta == null ? void 0 : meta.scenes) ? [...meta.scenes] : [];
75
+ }
76
+ __name(getRunJSScenesForModel, "getRunJSScenesForModel");
77
+ function getRunJSScenesForContext(ctx, { version = "v1" } = {}) {
78
+ const modelClass = (0, import_registry.getModelClassName)(ctx);
79
+ return getRunJSScenesForModel(modelClass, version);
72
80
  }
73
- __name(registerDefaultMappings, "registerDefaultMappings");
81
+ __name(getRunJSScenesForContext, "getRunJSScenesForContext");
74
82
  // Annotate the CommonJS export names for ESM import in node:
75
83
  0 && (module.exports = {
76
84
  createJSRunnerWithVersion,
77
85
  getRunJSDocFor,
78
- registerDefaultMappings
86
+ getRunJSScenesForContext,
87
+ getRunJSScenesForModel
79
88
  });
@@ -6,12 +6,15 @@
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
- import type { RunJSVersion, RunJSContextCtor } from './contexts/FlowRunJSContext';
9
+ export type RunJSVersion = 'v1' | (string & {});
10
+ export type RunJSContextCtor = new (delegate: any) => any;
11
+ export type RunJSContextMeta = {
12
+ scenes?: string[];
13
+ };
10
14
  export declare class RunJSContextRegistry {
11
15
  private static map;
12
- private static defaultsRegistered;
13
- private static ensureDefaults;
14
- static register(version: RunJSVersion, modelClass: string, ctor: RunJSContextCtor): void;
16
+ static register(version: RunJSVersion, modelClass: string, ctor: RunJSContextCtor, meta?: RunJSContextMeta): void;
15
17
  static resolve(version: RunJSVersion, modelClass: string): RunJSContextCtor;
18
+ static getMeta(version: RunJSVersion, modelClass: string): RunJSContextMeta | undefined;
16
19
  }
17
20
  export declare function getModelClassName(ctx: any): string;