@nocobase/flow-engine 2.0.0-alpha.2 → 2.0.0-alpha.20

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 (387) 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 +2 -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/wrappers/contextual/StepSettingsDialog.js +7 -1
  22. package/lib/components/variables/VariableInput.js +16 -2
  23. package/lib/components/variables/VariableTag.js +43 -2
  24. package/lib/components/variables/types.d.ts +2 -0
  25. package/lib/data-source/index.d.ts +12 -4
  26. package/lib/data-source/index.js +18 -12
  27. package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
  28. package/lib/data-source/sortCollectionsByInherits.js +71 -0
  29. package/lib/executor/FlowExecutor.d.ts +4 -5
  30. package/lib/executor/FlowExecutor.js +122 -94
  31. package/lib/flowContext.d.ts +33 -5
  32. package/lib/flowContext.js +145 -74
  33. package/lib/flowEngine.d.ts +8 -1
  34. package/lib/flowEngine.js +12 -2
  35. package/lib/flowSettings.d.ts +2 -1
  36. package/lib/flowSettings.js +7 -3
  37. package/lib/hooks/useApplyAutoFlows.js +2 -1
  38. package/lib/index.d.ts +6 -1
  39. package/lib/index.js +29 -3
  40. package/lib/models/CollectionFieldModel.d.ts +2 -0
  41. package/lib/models/CollectionFieldModel.js +43 -3
  42. package/lib/models/flowModel.d.ts +28 -29
  43. package/lib/models/flowModel.js +110 -88
  44. package/lib/models/forkFlowModel.d.ts +2 -2
  45. package/lib/models/forkFlowModel.js +29 -6
  46. package/lib/provider.d.ts +3 -1
  47. package/lib/provider.js +7 -5
  48. package/lib/resources/multiRecordResource.js +2 -0
  49. package/lib/resources/singleRecordResource.js +1 -0
  50. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
  51. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -20
  52. package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
  53. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
  54. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
  55. package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
  56. package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
  57. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
  58. package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
  59. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
  60. package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
  61. package/lib/runjs-context/contexts/JSItemRunJSContext.js +24 -20
  62. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
  63. package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
  64. package/lib/runjs-context/contexts/base.d.ts +9 -0
  65. package/lib/runjs-context/contexts/base.js +169 -0
  66. package/lib/runjs-context/helpers.d.ts +5 -2
  67. package/lib/runjs-context/helpers.js +36 -27
  68. package/lib/runjs-context/registry.d.ts +7 -4
  69. package/lib/runjs-context/registry.js +10 -42
  70. package/lib/runjs-context/setup.d.ts +9 -0
  71. package/lib/runjs-context/setup.js +82 -0
  72. package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
  73. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  74. package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
  75. package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
  76. package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
  77. package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
  78. package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
  79. package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
  80. package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
  81. package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
  82. package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
  83. package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
  84. package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
  85. package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
  86. package/lib/runjs-context/snippets/index.d.ts +14 -3
  87. package/lib/runjs-context/snippets/index.js +160 -40
  88. package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
  89. package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
  90. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
  91. package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
  92. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
  93. package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
  94. package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
  95. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
  96. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +12 -6
  97. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
  98. package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
  99. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
  100. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +72 -0
  101. package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
  102. package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +12 -11
  103. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
  104. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +100 -0
  105. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
  106. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +85 -0
  107. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
  108. package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
  109. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
  110. package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
  111. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
  112. package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
  113. package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
  114. package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
  115. package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
  116. package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
  117. package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
  118. package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
  119. package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
  120. package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
  121. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
  122. package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
  123. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
  124. package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
  125. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
  126. package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
  127. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
  128. package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
  129. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
  130. package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
  131. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
  132. package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
  133. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
  134. package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
  135. package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
  136. package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
  137. package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
  138. package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
  139. package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
  140. package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
  141. package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
  142. package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
  143. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
  144. package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
  145. package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
  146. package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
  147. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
  148. package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
  149. package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
  150. package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
  151. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
  152. package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
  153. package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
  154. package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
  155. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
  156. package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
  157. package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
  158. package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
  159. package/lib/runjs-context/snippets/types.d.ts +9 -1
  160. package/lib/types.d.ts +15 -3
  161. package/lib/types.js +4 -3
  162. package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
  163. package/lib/utils/buildSettingsViewInputArgs.js +75 -0
  164. package/lib/utils/index.d.ts +3 -2
  165. package/lib/utils/index.js +5 -2
  166. package/lib/utils/params-resolvers.js +2 -2
  167. package/lib/utils/safeGlobals.d.ts +5 -3
  168. package/lib/utils/safeGlobals.js +40 -0
  169. package/lib/utils/serverContextParams.d.ts +1 -0
  170. package/lib/utils/variablesParams.d.ts +9 -5
  171. package/lib/utils/variablesParams.js +47 -36
  172. package/lib/views/PageComponent.js +2 -1
  173. package/lib/views/createViewMeta.d.ts +29 -1
  174. package/lib/views/createViewMeta.js +321 -72
  175. package/lib/views/index.d.ts +1 -0
  176. package/lib/views/index.js +3 -0
  177. package/lib/views/useDialog.d.ts +8 -8
  178. package/lib/views/useDialog.js +8 -7
  179. package/lib/views/useDrawer.d.ts +8 -8
  180. package/lib/views/useDrawer.js +40 -26
  181. package/lib/views/usePage.d.ts +8 -8
  182. package/lib/views/usePage.js +8 -7
  183. package/package.json +4 -3
  184. package/src/BlockScopedFlowEngine.ts +86 -0
  185. package/src/FlowContextProvider.tsx +4 -2
  186. package/src/JSRunner.ts +3 -0
  187. package/src/ViewScopedFlowEngine.ts +1 -1
  188. package/src/__tests__/JSRunner.test.ts +62 -53
  189. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  190. package/src/__tests__/flow-engine.test.ts +3 -0
  191. package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
  192. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  193. package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
  194. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  195. package/src/__tests__/runjsContext.test.ts +216 -35
  196. package/src/__tests__/runjsContextImplementations.test.ts +217 -0
  197. package/src/__tests__/runjsContextRuntime.test.ts +269 -0
  198. package/src/__tests__/runjsEdgeCases.test.ts +281 -0
  199. package/src/__tests__/runjsLocales.test.ts +36 -0
  200. package/src/__tests__/runjsRuntimeFeatures.test.ts +449 -0
  201. package/src/__tests__/runjsSnippets.test.ts +140 -0
  202. package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
  203. package/src/components/DynamicFlowsEditor.tsx +3 -4
  204. package/src/components/FieldModelRenderer.tsx +16 -5
  205. package/src/components/FieldSkeleton.tsx +27 -0
  206. package/src/components/FlowContextSelector.tsx +6 -2
  207. package/src/components/FlowModelRenderer.tsx +30 -78
  208. package/src/components/FormItem.tsx +8 -1
  209. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +5 -5
  210. package/src/components/__tests__/gridDragPlanner.test.ts +494 -0
  211. package/src/components/dnd/README.md +149 -0
  212. package/src/components/dnd/findModelUidPosition.ts +26 -0
  213. package/src/components/dnd/gridDragPlanner.ts +659 -0
  214. package/src/components/dnd/index.tsx +3 -3
  215. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
  216. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +1 -0
  217. package/src/components/variables/VariableInput.tsx +22 -2
  218. package/src/components/variables/VariableTag.tsx +54 -2
  219. package/src/components/variables/types.ts +2 -0
  220. package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
  221. package/src/data-source/index.ts +16 -10
  222. package/src/data-source/sortCollectionsByInherits.ts +61 -0
  223. package/src/executor/FlowExecutor.ts +160 -114
  224. package/src/executor/__tests__/flowExecutor.test.ts +151 -5
  225. package/src/flowContext.ts +196 -93
  226. package/src/flowEngine.ts +13 -2
  227. package/src/flowSettings.ts +8 -3
  228. package/src/hooks/useApplyAutoFlows.ts +3 -1
  229. package/src/index.ts +11 -1
  230. package/src/models/CollectionFieldModel.tsx +43 -4
  231. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +4 -4
  232. package/src/models/__tests__/flowModel.test.ts +218 -95
  233. package/src/models/flowModel.tsx +146 -122
  234. package/src/models/forkFlowModel.ts +37 -5
  235. package/src/provider.tsx +10 -7
  236. package/src/resources/multiRecordResource.ts +2 -0
  237. package/src/resources/singleRecordResource.ts +1 -0
  238. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
  239. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
  240. package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
  241. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
  242. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
  243. package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
  244. package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
  245. package/src/runjs-context/contexts/base.ts +155 -0
  246. package/src/runjs-context/helpers.ts +32 -30
  247. package/src/runjs-context/registry.ts +16 -47
  248. package/src/runjs-context/setup.ts +51 -0
  249. package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
  250. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  251. package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
  252. package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
  253. package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
  254. package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
  255. package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
  256. package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
  257. package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
  258. package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
  259. package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
  260. package/src/runjs-context/snippets/index.ts +176 -39
  261. package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
  262. package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
  263. package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
  264. package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
  265. package/src/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.ts +15 -6
  266. package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
  267. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +53 -0
  268. package/src/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.ts +15 -11
  269. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +81 -0
  270. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +66 -0
  271. package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
  272. package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
  273. package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
  274. package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
  275. package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
  276. package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
  277. package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
  278. package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
  279. package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
  280. package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
  281. package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
  282. package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
  283. package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
  284. package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
  285. package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
  286. package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
  287. package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
  288. package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
  289. package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
  290. package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
  291. package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
  292. package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
  293. package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
  294. package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
  295. package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
  296. package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
  297. package/src/runjs-context/snippets/types.ts +5 -1
  298. package/src/types.ts +13 -0
  299. package/src/utils/__tests__/safeGlobals.test.ts +22 -1
  300. package/src/utils/buildSettingsViewInputArgs.ts +72 -0
  301. package/src/utils/index.ts +2 -2
  302. package/src/utils/params-resolvers.ts +1 -1
  303. package/src/utils/safeGlobals.ts +49 -3
  304. package/src/utils/serverContextParams.ts +1 -0
  305. package/src/utils/variablesParams.ts +50 -38
  306. package/src/views/PageComponent.tsx +1 -1
  307. package/src/views/createViewMeta.ts +372 -70
  308. package/src/views/index.tsx +1 -0
  309. package/src/views/useDialog.tsx +12 -10
  310. package/src/views/useDrawer.tsx +60 -36
  311. package/src/views/usePage.tsx +13 -10
  312. package/lib/components/dnd/getMousePositionOnElement.d.ts +0 -50
  313. package/lib/components/dnd/getMousePositionOnElement.js +0 -95
  314. package/lib/components/dnd/moveBlock.d.ts +0 -33
  315. package/lib/components/dnd/moveBlock.js +0 -302
  316. package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
  317. package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
  318. package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
  319. package/lib/runjs-context/index.d.ts +0 -19
  320. package/lib/runjs-context/index.js +0 -57
  321. package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
  322. package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
  323. package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
  324. package/lib/runjs-context/snippets/global/api-request-post.snippet.js +0 -42
  325. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
  326. package/lib/runjs-context/snippets/global/console-log-ctx.snippet.js +0 -41
  327. package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
  328. package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
  329. package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
  330. package/lib/runjs-context/snippets/global/try-catch-async.snippet.js +0 -44
  331. package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
  332. package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
  333. package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
  334. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
  335. package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
  336. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
  337. package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
  338. package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
  339. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
  340. package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
  341. package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
  342. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
  343. package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
  344. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
  345. package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
  346. package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
  347. package/lib/runjs-context/snippets/scene/jsblock/render-card.snippet.js +0 -45
  348. package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
  349. package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
  350. package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
  351. package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
  352. package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
  353. package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
  354. package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
  355. package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
  356. package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
  357. package/src/components/dnd/getMousePositionOnElement.ts +0 -115
  358. package/src/components/dnd/moveBlock.ts +0 -379
  359. package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
  360. package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
  361. package/src/runjs-context/index.ts +0 -20
  362. package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
  363. package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
  364. package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
  365. package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
  366. package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
  367. package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
  368. package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
  369. package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
  370. package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
  371. package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
  372. package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
  373. package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
  374. package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
  375. package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
  376. package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
  377. package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
  378. package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
  379. package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
  380. package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
  381. package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
  382. package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
  383. /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
  384. /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
  385. /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
  386. /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
  387. /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
@@ -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
- declare const _default: {
10
- contexts: string[];
11
- prefix: string;
12
- label: string;
13
- description: string;
14
- content: string;
15
- };
16
- export default _default;
9
+ import type { SnippetModule } from '../types';
10
+ declare const snippet: SnippetModule;
11
+ export default snippet;
@@ -29,11 +29,17 @@ __export(notification_open_snippet_exports, {
29
29
  default: () => notification_open_snippet_default
30
30
  });
31
31
  module.exports = __toCommonJS(notification_open_snippet_exports);
32
- var notification_open_snippet_default = {
32
+ const snippet = {
33
33
  contexts: ["*"],
34
34
  prefix: "sn-notify",
35
35
  label: "Open notification",
36
36
  description: "Open an AntD notification with custom content",
37
+ locales: {
38
+ "zh-CN": {
39
+ label: "\u6253\u5F00\u901A\u77E5",
40
+ description: "\u5C55\u793A\u4E00\u6761\u81EA\u5B9A\u4E49\u5185\u5BB9\u7684\u901A\u77E5"
41
+ }
42
+ },
37
43
  content: `
38
44
  ctx.notification.open({
39
45
  message: ctx.t('Notification title'),
@@ -41,3 +47,4 @@ ctx.notification.open({
41
47
  });
42
48
  `
43
49
  };
50
+ var notification_open_snippet_default = snippet;
@@ -35,12 +35,19 @@ const snippet = {
35
35
  prefix: "sn-open-dialog",
36
36
  label: "Open view (dialog)",
37
37
  description: "Open a view in dialog via ctx.openView",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u6253\u5F00\u89C6\u56FE\uFF08\u5BF9\u8BDD\u6846\uFF09",
41
+ description: "\u901A\u8FC7 ctx.openView \u4EE5\u5BF9\u8BDD\u6846\u65B9\u5F0F\u6253\u5F00\u89C6\u56FE"
42
+ }
43
+ },
38
44
  content: `
39
- const popupUid = 'your-popup-uid';
45
+ // Open a view as dialog and pass arguments at top-level
46
+ const popupUid = ctx.model.uid + '-1'; // popupUid should be stable and better bound to ctx.model.uid
40
47
  await ctx.openView(popupUid, {
41
48
  mode: 'dialog',
42
- viewUid: 'detail',
43
- inputArgs: { foo: 'bar' },
49
+ title: ctx.t('Sample dialog'),
50
+ size: 'medium',
44
51
  });
45
52
  `
46
53
  };
@@ -35,12 +35,19 @@ const snippet = {
35
35
  prefix: "sn-open-drawer",
36
36
  label: "Open view (drawer)",
37
37
  description: "Open a view in drawer via ctx.openView",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u6253\u5F00\u89C6\u56FE\uFF08\u62BD\u5C49\uFF09",
41
+ description: "\u901A\u8FC7 ctx.openView \u4EE5\u62BD\u5C49\u65B9\u5F0F\u6253\u5F00\u89C6\u56FE"
42
+ }
43
+ },
38
44
  content: `
39
- const popupUid = 'your-popup-uid';
45
+ // Open a view as drawer and pass arguments at top-level
46
+ const popupUid = ctx.model.uid + '-1'; // popupUid should be stable and better bound to ctx.model.uid
40
47
  await ctx.openView(popupUid, {
41
48
  mode: 'drawer',
42
- viewUid: 'detail',
43
- inputArgs: { foo: 'bar' },
49
+ title: ctx.t('Sample drawer'),
50
+ size: 'large',
44
51
  });
45
52
  `
46
53
  };
@@ -0,0 +1,53 @@
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 query_selector_snippet_exports = {};
28
+ __export(query_selector_snippet_exports, {
29
+ default: () => query_selector_snippet_default
30
+ });
31
+ module.exports = __toCommonJS(query_selector_snippet_exports);
32
+ var import_JSBlockRunJSContext = require("../../contexts/JSBlockRunJSContext");
33
+ var import_JSFieldRunJSContext = require("../../contexts/JSFieldRunJSContext");
34
+ var import_FormJSFieldItemRunJSContext = require("../../contexts/FormJSFieldItemRunJSContext");
35
+ const snippet = {
36
+ contexts: [import_JSBlockRunJSContext.JSBlockRunJSContext, import_JSFieldRunJSContext.JSFieldRunJSContext, import_FormJSFieldItemRunJSContext.FormJSFieldItemRunJSContext],
37
+ prefix: "sn-query-selector",
38
+ label: "Query selector",
39
+ description: "Find a child element inside ctx.element using querySelector",
40
+ locales: {
41
+ "zh-CN": {
42
+ label: "\u67E5\u8BE2\u5B50\u5143\u7D20",
43
+ description: "\u4F7F\u7528 querySelector \u5728 ctx.element \u5185\u67E5\u627E\u5B50\u5143\u7D20"
44
+ }
45
+ },
46
+ content: `
47
+ const child = ctx.element.querySelector('.child-class');
48
+ if (child) {
49
+ child.textContent = ctx.t('Hello from querySelector');
50
+ }
51
+ `
52
+ };
53
+ var query_selector_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;
@@ -24,23 +24,26 @@ var __copyProps = (to, from, except, desc) => {
24
24
  return to;
25
25
  };
26
26
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
- var requireAsync_snippet_exports = {};
28
- __export(requireAsync_snippet_exports, {
29
- default: () => requireAsync_snippet_default
27
+ var require_amd_snippet_exports = {};
28
+ __export(require_amd_snippet_exports, {
29
+ default: () => require_amd_snippet_default
30
30
  });
31
- module.exports = __toCommonJS(requireAsync_snippet_exports);
32
- var requireAsync_snippet_default = {
31
+ module.exports = __toCommonJS(require_amd_snippet_exports);
32
+ const snippet = {
33
33
  contexts: ["*"],
34
34
  prefix: "sn-require",
35
- label: "Load external library",
36
- description: "Dynamically load an external JS via RequireJS",
35
+ label: "Load AMD module",
36
+ description: "Dynamically load an AMD/RequireJS module by URL",
37
+ locales: {
38
+ "zh-CN": {
39
+ label: "\u52A0\u8F7D AMD \u6A21\u5757",
40
+ description: "\u901A\u8FC7 RequireJS \u6309 URL \u52A8\u6001\u52A0\u8F7D AMD \u6A21\u5757"
41
+ }
42
+ },
37
43
  content: `
38
44
  // Load an external library (AMD/RequireJS)
39
- try {
40
- const lib = await ctx.requireAsync('https://cdn.example.com/lib@1.0.0/index.js');
41
- console.log('lib loaded:', lib);
42
- } catch (e) {
43
- ctx.message.error(ctx.t('Failed to load external library: {{msg}}', { msg: String(e?.message || e) }));
44
- }
45
+ const dayjs = await ctx.requireAsync('https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js');
46
+ console.log('dayjs loaded:', dayjs?.default || dayjs);
45
47
  `
46
48
  };
49
+ var require_amd_snippet_default = snippet;
@@ -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
- declare const _default: {
10
- contexts: string[];
11
- prefix: string;
12
- label: string;
13
- description: string;
14
- content: string;
15
- };
16
- export default _default;
9
+ import type { SnippetModule } from '../types';
10
+ declare const snippet: SnippetModule;
11
+ export default snippet;
@@ -29,13 +29,20 @@ __export(window_open_snippet_exports, {
29
29
  default: () => window_open_snippet_default
30
30
  });
31
31
  module.exports = __toCommonJS(window_open_snippet_exports);
32
- var window_open_snippet_default = {
32
+ const snippet = {
33
33
  contexts: ["*"],
34
34
  prefix: "sn-window-open",
35
35
  label: "Open new window",
36
36
  description: "Safely open a new browser window/tab",
37
+ locales: {
38
+ "zh-CN": {
39
+ label: "\u6253\u5F00\u65B0\u7A97\u53E3",
40
+ description: "\u5B89\u5168\u5730\u6253\u5F00\u4E00\u4E2A\u65B0\u7684\u6D4F\u89C8\u5668\u7A97\u53E3\u6216\u6807\u7B7E\u9875"
41
+ }
42
+ },
37
43
  content: `
38
44
  // Open a new window/tab
39
45
  window.open('https://example.com', '_blank');
40
46
  `
41
47
  };
48
+ var window_open_snippet_default = snippet;
@@ -6,6 +6,17 @@
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 EngineSnippetMap = Record<string, () => Promise<any>>;
10
- export declare const engineSnippets: EngineSnippetMap;
11
- export default engineSnippets;
9
+ declare const snippets: Record<string, () => Promise<any>>;
10
+ export default snippets;
11
+ type EngineSnippetEntry = {
12
+ name: string;
13
+ prefix?: string;
14
+ description?: string;
15
+ body: string;
16
+ ref: string;
17
+ group?: string;
18
+ groups?: string[];
19
+ scenes?: string[];
20
+ };
21
+ export declare function getSnippetBody(ref: string): Promise<string>;
22
+ export declare function listSnippetsForContext(ctxClassName: string, version?: string, locale?: string): Promise<EngineSnippetEntry[]>;
@@ -38,57 +38,177 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
38
38
  var snippets_exports = {};
39
39
  __export(snippets_exports, {
40
40
  default: () => snippets_default,
41
- engineSnippets: () => engineSnippets
41
+ getSnippetBody: () => getSnippetBody,
42
+ listSnippetsForContext: () => listSnippetsForContext
42
43
  });
43
44
  module.exports = __toCommonJS(snippets_exports);
44
- const engineSnippets = {
45
+ var import_registry = require("../registry");
46
+ const snippets = {
45
47
  // global
46
48
  "global/message-success": /* @__PURE__ */ __name(() => import("./global/message-success.snippet"), "global/message-success"),
47
49
  "global/message-error": /* @__PURE__ */ __name(() => import("./global/message-error.snippet"), "global/message-error"),
48
- "global/copy-to-clipboard": /* @__PURE__ */ __name(() => import("./global/copy-to-clipboard.snippet"), "global/copy-to-clipboard"),
49
- "global/copy-record-json": /* @__PURE__ */ __name(() => import("./global/copy-record-json.snippet"), "global/copy-record-json"),
50
- "global/log-json-record": /* @__PURE__ */ __name(() => import("./global/log-json-record.snippet"), "global/log-json-record"),
51
- "global/api-request-get": /* @__PURE__ */ __name(() => import("./global/api-request-get.snippet"), "global/api-request-get"),
52
- "global/api-request-post": /* @__PURE__ */ __name(() => import("./global/api-request-post.snippet"), "global/api-request-post"),
53
- "global/requireAsync": /* @__PURE__ */ __name(() => import("./global/requireAsync.snippet"), "global/requireAsync"),
54
- "global/try-catch-async": /* @__PURE__ */ __name(() => import("./global/try-catch-async.snippet"), "global/try-catch-async"),
55
- "global/sleep": /* @__PURE__ */ __name(() => import("./global/sleep.snippet"), "global/sleep"),
50
+ "global/api-request": /* @__PURE__ */ __name(() => import("./global/api-request.snippet"), "global/api-request"),
51
+ "global/require-amd": /* @__PURE__ */ __name(() => import("./global/require-amd.snippet"), "global/require-amd"),
52
+ "global/import-esm": /* @__PURE__ */ __name(() => import("./global/import-esm.snippet"), "global/import-esm"),
56
53
  "global/notification-open": /* @__PURE__ */ __name(() => import("./global/notification-open.snippet"), "global/notification-open"),
57
54
  "global/window-open": /* @__PURE__ */ __name(() => import("./global/window-open.snippet"), "global/window-open"),
58
- "global/console-log-ctx": /* @__PURE__ */ __name(() => import("./global/console-log-ctx.snippet"), "global/console-log-ctx"),
59
55
  "global/open-view-drawer": /* @__PURE__ */ __name(() => import("./global/open-view-drawer.snippet"), "global/open-view-drawer"),
60
56
  "global/open-view-dialog": /* @__PURE__ */ __name(() => import("./global/open-view-dialog.snippet"), "global/open-view-dialog"),
61
- "global/view-navigation-push": /* @__PURE__ */ __name(() => import("./global/view-navigation-push.snippet"), "global/view-navigation-push"),
57
+ "global/query-selector": /* @__PURE__ */ __name(() => import("./global/query-selector.snippet"), "global/query-selector"),
58
+ "global/clipboard-copy-text": /* @__PURE__ */ __name(() => import("./global/clipboard-copy-text.snippet"), "global/clipboard-copy-text"),
62
59
  // libs
63
- "libs/echarts-init": /* @__PURE__ */ __name(() => import("./libs/echarts-init.snippet"), "libs/echarts-init"),
64
- // scene/jsblock
65
- "scene/jsblock/render-basic": /* @__PURE__ */ __name(() => import("./scene/jsblock/render-basic.snippet"), "scene/jsblock/render-basic"),
66
- "scene/jsblock/render-react": /* @__PURE__ */ __name(() => import("./scene/jsblock/render-react.snippet"), "scene/jsblock/render-react"),
67
- "scene/jsblock/render-card": /* @__PURE__ */ __name(() => import("./scene/jsblock/render-card.snippet"), "scene/jsblock/render-card"),
68
- "scene/jsblock/render-button-handler": /* @__PURE__ */ __name(() => import("./scene/jsblock/render-button-handler.snippet"), "scene/jsblock/render-button-handler"),
69
- "scene/jsblock/jsx-mount": /* @__PURE__ */ __name(() => import("./scene/jsblock/jsx-mount.snippet"), "scene/jsblock/jsx-mount"),
70
- "scene/jsblock/jsx-unmount": /* @__PURE__ */ __name(() => import("./scene/jsblock/jsx-unmount.snippet"), "scene/jsblock/jsx-unmount"),
71
- "scene/jsblock/add-event-listener": /* @__PURE__ */ __name(() => import("./scene/jsblock/add-event-listener.snippet"), "scene/jsblock/add-event-listener"),
72
- "scene/jsblock/append-style": /* @__PURE__ */ __name(() => import("./scene/jsblock/append-style.snippet"), "scene/jsblock/append-style"),
73
- // scene/jsfield
74
- "scene/jsfield/innerHTML-value": /* @__PURE__ */ __name(() => import("./scene/jsfield/innerHTML-value.snippet"), "scene/jsfield/innerHTML-value"),
75
- "scene/jsfield/format-number": /* @__PURE__ */ __name(() => import("./scene/jsfield/format-number.snippet"), "scene/jsfield/format-number"),
76
- "scene/jsfield/color-by-value": /* @__PURE__ */ __name(() => import("./scene/jsfield/color-by-value.snippet"), "scene/jsfield/color-by-value"),
77
- // scene/jsitem
78
- "scene/jsitem/render-basic": /* @__PURE__ */ __name(() => import("./scene/jsitem/render-basic.snippet"), "scene/jsitem/render-basic"),
79
- // scene/actions
80
- "scene/actions/record-id-message": /* @__PURE__ */ __name(() => import("./scene/actions/record-id-message.snippet"), "scene/actions/record-id-message"),
81
- "scene/actions/run-action-basic": /* @__PURE__ */ __name(() => import("./scene/actions/run-action-basic.snippet"), "scene/actions/run-action-basic"),
82
- "scene/actions/collection-selected-count": /* @__PURE__ */ __name(() => import("./scene/actions/collection-selected-count.snippet"), "scene/actions/collection-selected-count"),
83
- "scene/actions/iterate-selected-rows": /* @__PURE__ */ __name(() => import("./scene/actions/iterate-selected-rows.snippet"), "scene/actions/iterate-selected-rows"),
84
- // scene/linkage
85
- "scene/linkage/set-field-value": /* @__PURE__ */ __name(() => import("./scene/linkage/set-field-value.snippet"), "scene/linkage/set-field-value"),
86
- "scene/linkage/toggle-visible": /* @__PURE__ */ __name(() => import("./scene/linkage/toggle-visible.snippet"), "scene/linkage/toggle-visible"),
87
- "scene/linkage/set-disabled": /* @__PURE__ */ __name(() => import("./scene/linkage/set-disabled.snippet"), "scene/linkage/set-disabled"),
88
- "scene/linkage/set-required": /* @__PURE__ */ __name(() => import("./scene/linkage/set-required.snippet"), "scene/linkage/set-required")
60
+ "scene/block/echarts-init": /* @__PURE__ */ __name(() => import("./scene/block/echarts-init.snippet"), "scene/block/echarts-init"),
61
+ // scene/block
62
+ "scene/block/render-react": /* @__PURE__ */ __name(() => import("./scene/block/render-react.snippet"), "scene/block/render-react"),
63
+ "scene/block/render-button-handler": /* @__PURE__ */ __name(() => import("./scene/block/render-button-handler.snippet"), "scene/block/render-button-handler"),
64
+ "scene/block/add-event-listener": /* @__PURE__ */ __name(() => import("./scene/block/add-event-listener.snippet"), "scene/block/add-event-listener"),
65
+ "scene/block/chartjs-bar": /* @__PURE__ */ __name(() => import("./scene/block/chartjs-bar.snippet"), "scene/block/chartjs-bar"),
66
+ "scene/block/vue-component": /* @__PURE__ */ __name(() => import("./scene/block/vue-component.snippet"), "scene/block/vue-component"),
67
+ "scene/block/resource-example": /* @__PURE__ */ __name(() => import("./scene/block/resource-example.snippet"), "scene/block/resource-example"),
68
+ "scene/block/api-fetch-render-list": /* @__PURE__ */ __name(() => import("./scene/block/api-fetch-render-list.snippet"), "scene/block/api-fetch-render-list"),
69
+ "scene/block/render-info-card": /* @__PURE__ */ __name(() => import("./scene/block/render-info-card.snippet"), "scene/block/render-info-card"),
70
+ "scene/block/render-statistics": /* @__PURE__ */ __name(() => import("./scene/block/render-statistics.snippet"), "scene/block/render-statistics"),
71
+ "scene/block/render-timeline": /* @__PURE__ */ __name(() => import("./scene/block/render-timeline.snippet"), "scene/block/render-timeline"),
72
+ "scene/block/render-iframe": /* @__PURE__ */ __name(() => import("./scene/block/render-iframe.snippet"), "scene/block/render-iframe"),
73
+ // scene/detail
74
+ "scene/detail/innerHTML-value": /* @__PURE__ */ __name(() => import("./scene/detail/innerHTML-value.snippet"), "scene/detail/innerHTML-value"),
75
+ "scene/detail/format-number": /* @__PURE__ */ __name(() => import("./scene/detail/format-number.snippet"), "scene/detail/format-number"),
76
+ "scene/detail/color-by-value": /* @__PURE__ */ __name(() => import("./scene/detail/color-by-value.snippet"), "scene/detail/color-by-value"),
77
+ "scene/detail/copy-to-clipboard": /* @__PURE__ */ __name(() => import("./scene/detail/copy-to-clipboard.snippet"), "scene/detail/copy-to-clipboard"),
78
+ "scene/detail/status-tag": /* @__PURE__ */ __name(() => import("./scene/detail/status-tag.snippet"), "scene/detail/status-tag"),
79
+ "scene/detail/relative-time": /* @__PURE__ */ __name(() => import("./scene/detail/relative-time.snippet"), "scene/detail/relative-time"),
80
+ "scene/detail/percentage-bar": /* @__PURE__ */ __name(() => import("./scene/detail/percentage-bar.snippet"), "scene/detail/percentage-bar"),
81
+ // scene/form
82
+ "scene/form/render-basic": /* @__PURE__ */ __name(() => import("./scene/form/render-basic.snippet"), "scene/form/render-basic"),
83
+ "scene/form/set-field-value": /* @__PURE__ */ __name(() => import("./scene/form/set-field-value.snippet"), "scene/form/set-field-value"),
84
+ "scene/form/toggle-visible": /* @__PURE__ */ __name(() => import("./scene/form/toggle-visible.snippet"), "scene/form/toggle-visible"),
85
+ "scene/form/set-disabled": /* @__PURE__ */ __name(() => import("./scene/form/set-disabled.snippet"), "scene/form/set-disabled"),
86
+ "scene/form/set-required": /* @__PURE__ */ __name(() => import("./scene/form/set-required.snippet"), "scene/form/set-required"),
87
+ "scene/form/calculate-total": /* @__PURE__ */ __name(() => import("./scene/form/calculate-total.snippet"), "scene/form/calculate-total"),
88
+ "scene/form/conditional-required": /* @__PURE__ */ __name(() => import("./scene/form/conditional-required.snippet"), "scene/form/conditional-required"),
89
+ "scene/form/cascade-select": /* @__PURE__ */ __name(() => import("./scene/form/cascade-select.snippet"), "scene/form/cascade-select"),
90
+ "scene/form/toggle-multiple-fields": /* @__PURE__ */ __name(() => import("./scene/form/toggle-multiple-fields.snippet"), "scene/form/toggle-multiple-fields"),
91
+ "scene/form/copy-field-values": /* @__PURE__ */ __name(() => import("./scene/form/copy-field-values.snippet"), "scene/form/copy-field-values"),
92
+ // scene/table
93
+ "scene/table/cell-open-dialog": /* @__PURE__ */ __name(() => import("./scene/table/cell-open-dialog.snippet"), "scene/table/cell-open-dialog"),
94
+ "scene/table/concat-fields": /* @__PURE__ */ __name(() => import("./scene/table/concat-fields.snippet"), "scene/table/concat-fields"),
95
+ "scene/table/collection-selected-count": /* @__PURE__ */ __name(() => import("./scene/table/collection-selected-count.snippet"), "scene/table/collection-selected-count"),
96
+ "scene/table/iterate-selected-rows": /* @__PURE__ */ __name(() => import("./scene/table/iterate-selected-rows.snippet"), "scene/table/iterate-selected-rows"),
97
+ "scene/table/destroy-selected": /* @__PURE__ */ __name(() => import("./scene/table/destroy-selected.snippet"), "scene/table/destroy-selected"),
98
+ "scene/table/export-selected-json": /* @__PURE__ */ __name(() => import("./scene/table/export-selected-json.snippet"), "scene/table/export-selected-json")
89
99
  };
90
- var snippets_default = engineSnippets;
100
+ var snippets_default = snippets;
101
+ function deriveNameFromKey(key) {
102
+ const parts = key.split("/");
103
+ return parts[parts.length - 1] || key;
104
+ }
105
+ __name(deriveNameFromKey, "deriveNameFromKey");
106
+ function normalizeScenes(def, key) {
107
+ if (Array.isArray(def == null ? void 0 : def.scenes) && def.scenes.length) {
108
+ return def.scenes.map((scene) => String(scene).trim()).filter((scene) => scene.length > 0);
109
+ }
110
+ const parts = key.split("/");
111
+ if (parts[0] === "scene" && parts[1]) {
112
+ return [parts[1]];
113
+ }
114
+ return [];
115
+ }
116
+ __name(normalizeScenes, "normalizeScenes");
117
+ function computeGroups(def, key) {
118
+ const scenes = normalizeScenes(def, key);
119
+ if (scenes.length) {
120
+ return scenes.map((scene) => `scene/${scene}`);
121
+ }
122
+ const parts = key.split("/");
123
+ if (!parts.length) return [];
124
+ const first = parts[0];
125
+ if (first === "global" || first === "libs") return [first];
126
+ if (first === "scene" && parts.length >= 2) return [`${first}/${parts[1]}`];
127
+ if (parts.length >= 2) return [`${parts[0]}/${parts[1]}`];
128
+ return [parts[0]];
129
+ }
130
+ __name(computeGroups, "computeGroups");
131
+ function resolveLocaleMeta(def, locale) {
132
+ if (!locale || !(def == null ? void 0 : def.locales)) return {};
133
+ const exact = def.locales[locale];
134
+ if (exact) return exact;
135
+ const normalized = locale.toLowerCase();
136
+ if (normalized !== locale && def.locales[normalized]) return def.locales[normalized];
137
+ const base = locale.split("-")[0];
138
+ if (base && def.locales[base]) return def.locales[base];
139
+ if (base) {
140
+ const lowerBase = base.toLowerCase();
141
+ if (def.locales[lowerBase]) return def.locales[lowerBase];
142
+ }
143
+ return {};
144
+ }
145
+ __name(resolveLocaleMeta, "resolveLocaleMeta");
146
+ async function getSnippetBody(ref) {
147
+ const loader = snippets[ref];
148
+ if (!loader) throw new Error(`[flow-engine] snippet not found: ${ref}`);
149
+ const mod = await loader();
150
+ const def = mod == null ? void 0 : mod.default;
151
+ const content = (def == null ? void 0 : def.content) ?? (mod == null ? void 0 : mod.content) ?? (mod == null ? void 0 : mod.body) ?? "";
152
+ return typeof content === "string" ? content : String(content ?? "");
153
+ }
154
+ __name(getSnippetBody, "getSnippetBody");
155
+ async function listSnippetsForContext(ctxClassName, version = "v1", locale) {
156
+ const entries = [];
157
+ const allowedContextNames = /* @__PURE__ */ new Set();
158
+ if (typeof ctxClassName === "string" && ctxClassName) allowedContextNames.add(ctxClassName);
159
+ try {
160
+ const resolvedCtor = import_registry.RunJSContextRegistry["resolve"](version, ctxClassName);
161
+ if (resolvedCtor == null ? void 0 : resolvedCtor.name) allowedContextNames.add(resolvedCtor.name);
162
+ } catch (_) {
163
+ }
164
+ await Promise.all(
165
+ Object.entries(snippets).map(async ([key, loader]) => {
166
+ const mod = await loader();
167
+ const def = (mod == null ? void 0 : mod.default) || {};
168
+ const body = (def == null ? void 0 : def.content) ?? (mod == null ? void 0 : mod.content);
169
+ if (typeof body !== "string") return;
170
+ let ok = true;
171
+ if (Array.isArray(def == null ? void 0 : def.contexts) && def.contexts.length) {
172
+ const ctxNames = def.contexts.map((item) => {
173
+ if (item === "*") return "*";
174
+ if (typeof item === "string") return item;
175
+ if (typeof item === "function") return item.name || "*";
176
+ if (item && typeof item === "object" && typeof item.name === "string") return item.name;
177
+ return String(item ?? "");
178
+ });
179
+ if (ctxClassName === "*") {
180
+ ok = true;
181
+ } else {
182
+ ok = ctxNames.includes("*") || ctxNames.some((name2) => allowedContextNames.has(name2));
183
+ }
184
+ }
185
+ if (ok && Array.isArray(def == null ? void 0 : def.versions) && def.versions.length) {
186
+ ok = def.versions.includes("*") || def.versions.includes(version);
187
+ }
188
+ if (!ok) return;
189
+ const localeMeta = resolveLocaleMeta(def, locale);
190
+ const name = localeMeta.label || (def == null ? void 0 : def.label) || deriveNameFromKey(key);
191
+ const description = localeMeta.description ?? (def == null ? void 0 : def.description);
192
+ const prefix = (def == null ? void 0 : def.prefix) || name;
193
+ const groups = computeGroups(def, key);
194
+ const scenes = normalizeScenes(def, key);
195
+ entries.push({
196
+ name,
197
+ prefix,
198
+ description,
199
+ body,
200
+ ref: key,
201
+ group: groups[0],
202
+ groups,
203
+ scenes
204
+ });
205
+ })
206
+ );
207
+ return entries;
208
+ }
209
+ __name(listSnippetsForContext, "listSnippetsForContext");
91
210
  // Annotate the CommonJS export names for ESM import in node:
92
211
  0 && (module.exports = {
93
- engineSnippets
212
+ getSnippetBody,
213
+ listSnippetsForContext
94
214
  });
@@ -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(add_event_listener_snippet_exports, {
29
29
  default: () => add_event_listener_snippet_default
30
30
  });
31
31
  module.exports = __toCommonJS(add_event_listener_snippet_exports);
32
- var add_event_listener_snippet_default = {
33
- contexts: ["JSBlockRunJSContext"],
32
+ var import_JSBlockRunJSContext = require("../../../contexts/JSBlockRunJSContext");
33
+ const snippet = {
34
+ contexts: [import_JSBlockRunJSContext.JSBlockRunJSContext],
34
35
  prefix: "sn-jsb-click",
35
36
  label: "Add click listener",
37
+ description: "Render a button and bind a click event handler",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u6DFB\u52A0\u70B9\u51FB\u76D1\u542C",
41
+ description: "\u6E32\u67D3\u6309\u94AE\u5E76\u7ED1\u5B9A\u70B9\u51FB\u4E8B\u4EF6\u5904\u7406"
42
+ }
43
+ },
36
44
  content: `
37
45
  // Render a button and bind a click handler
38
46
  ctx.element.innerHTML = \`
@@ -44,3 +52,4 @@ if (btn) {
44
52
  }
45
53
  `
46
54
  };
55
+ var add_event_listener_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;
@@ -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 api_fetch_render_list_snippet_exports = {};
28
+ __export(api_fetch_render_list_snippet_exports, {
29
+ default: () => api_fetch_render_list_snippet_default
30
+ });
31
+ module.exports = __toCommonJS(api_fetch_render_list_snippet_exports);
32
+ var import_JSBlockRunJSContext = require("../../../contexts/JSBlockRunJSContext");
33
+ const snippet = {
34
+ contexts: [import_JSBlockRunJSContext.JSBlockRunJSContext],
35
+ prefix: "sn-jsb-fetch-list",
36
+ label: "Fetch & render list",
37
+ description: "Fetch a small list via ctx.api and render basic HTML",
38
+ locales: {
39
+ "zh-CN": {
40
+ label: "\u62C9\u53D6\u5E76\u6E32\u67D3\u5217\u8868",
41
+ description: "\u4F7F\u7528 ctx.api \u62C9\u53D6\u5C11\u91CF\u6570\u636E\uFF0C\u5E76\u6E32\u67D3\u57FA\u7840 HTML \u5217\u8868"
42
+ }
43
+ },
44
+ content: `
45
+ // Fetch users
46
+ const { data } = await ctx.api.request({
47
+ url: 'users:list',
48
+ method: 'get',
49
+ params: { pageSize: 5 },
50
+ });
51
+ const rows = Array.isArray(data?.data) ? data.data : (Array.isArray(data) ? data : []);
52
+
53
+ // Render as a simple HTML list
54
+ ctx.element.innerHTML = [
55
+ '<div style="padding:12px">',
56
+ '<h4 style="margin:0 0 8px">' + ctx.t('Users') + '</h4>',
57
+ '<ul style="margin:0; padding-left:20px">',
58
+ ...rows.map((r, i) => '<li>#' + (i + 1) + ': ' + String((r && (r.nickname ?? r.username ?? r.id)) ?? '') + '</li>'),
59
+ '</ul>',
60
+ '</div>'
61
+ ].join('');
62
+ `
63
+ };
64
+ var api_fetch_render_list_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;