@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,102 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ var __create = Object.create;
11
+ var __defProp = Object.defineProperty;
12
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
+ var __getOwnPropNames = Object.getOwnPropertyNames;
14
+ var __getProtoOf = Object.getPrototypeOf;
15
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
16
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
17
+ var __export = (target, all) => {
18
+ for (var name in all)
19
+ __defProp(target, name, { get: all[name], enumerable: true });
20
+ };
21
+ var __copyProps = (to, from, except, desc) => {
22
+ if (from && typeof from === "object" || typeof from === "function") {
23
+ for (let key of __getOwnPropNames(from))
24
+ if (!__hasOwnProp.call(to, key) && key !== except)
25
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
26
+ }
27
+ return to;
28
+ };
29
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
+ // If the importer is in node compatibility mode or this is not an ESM
31
+ // file that has been converted to a CommonJS file using a Babel-
32
+ // compatible transform (i.e. "__esModule" has not been set), then set
33
+ // "default" to the CommonJS "module.exports" for node compatibility.
34
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
+ mod
36
+ ));
37
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
+ var MobilePopup_exports = {};
39
+ __export(MobilePopup_exports, {
40
+ MobilePopup: () => MobilePopup
41
+ });
42
+ module.exports = __toCommonJS(MobilePopup_exports);
43
+ var import_antd = require("antd");
44
+ var import_antd_mobile = require("antd-mobile");
45
+ var import_react = __toESM(require("react"));
46
+ var import_antd_mobile_icons = require("antd-mobile-icons");
47
+ var import_MobilePopup = require("./MobilePopup.style");
48
+ var import_react_i18next = require("react-i18next");
49
+ const MobilePopup = /* @__PURE__ */ __name((props) => {
50
+ const { title, visible, onClose: closePopup, children, minHeight, className, footer } = props;
51
+ const { t } = (0, import_react_i18next.useTranslation)();
52
+ const { componentCls, hashId } = (0, import_MobilePopup.useMobileActionDrawerStyle)();
53
+ const style = (0, import_react.useMemo)(() => {
54
+ return {
55
+ minHeight
56
+ };
57
+ }, [minHeight]);
58
+ const theme = (0, import_react.useMemo)(() => {
59
+ return {
60
+ token: {
61
+ paddingPageHorizontal: 8,
62
+ paddingPageVertical: 8,
63
+ marginBlock: 12,
64
+ borderRadiusBlock: 8,
65
+ fontSize: 14
66
+ }
67
+ };
68
+ }, []);
69
+ return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { theme }, /* @__PURE__ */ import_react.default.createElement(
70
+ import_antd_mobile.Popup,
71
+ {
72
+ className: `${componentCls} ${hashId} ${className || ""}`,
73
+ visible,
74
+ onClose: closePopup,
75
+ onMaskClick: closePopup,
76
+ bodyClassName: "nb-mobile-action-drawer-body",
77
+ bodyStyle: {
78
+ padding: 0
79
+ },
80
+ maskStyle: style,
81
+ style,
82
+ destroyOnClose: true
83
+ },
84
+ /* @__PURE__ */ import_react.default.createElement("div", { className: "nb-mobile-action-drawer-header" }, /* @__PURE__ */ import_react.default.createElement("span", { className: "nb-mobile-action-drawer-placeholder" }, /* @__PURE__ */ import_react.default.createElement(import_antd_mobile_icons.CloseOutline, null)), /* @__PURE__ */ import_react.default.createElement("span", null, title), /* @__PURE__ */ import_react.default.createElement(
85
+ "span",
86
+ {
87
+ className: "nb-mobile-action-drawer-close-icon",
88
+ onClick: closePopup,
89
+ role: "button",
90
+ tabIndex: 0,
91
+ "aria-label": t("Close")
92
+ },
93
+ /* @__PURE__ */ import_react.default.createElement(import_antd_mobile_icons.CloseOutline, null)
94
+ )),
95
+ children,
96
+ footer && /* @__PURE__ */ import_react.default.createElement("div", { className: "nb-mobile-action-drawer-footer" }, footer)
97
+ ));
98
+ }, "MobilePopup");
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ MobilePopup
102
+ });
@@ -0,0 +1,17 @@
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 { useStyleRegister } from '@ant-design/cssinjs';
10
+ type UseComponentStyleResult = {
11
+ wrapSSR: ReturnType<typeof useStyleRegister>;
12
+ hashId: string;
13
+ componentCls: string;
14
+ rootPrefixCls: string;
15
+ };
16
+ export declare const useMobileActionDrawerStyle: (props?: any) => UseComponentStyleResult;
17
+ export {};
@@ -0,0 +1,186 @@
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 MobilePopup_style_exports = {};
29
+ __export(MobilePopup_style_exports, {
30
+ useMobileActionDrawerStyle: () => useMobileActionDrawerStyle
31
+ });
32
+ module.exports = __toCommonJS(MobilePopup_style_exports);
33
+ var import_cssinjs = require("@ant-design/cssinjs");
34
+ var import_shared = require("@formily/shared");
35
+ var import_react = require("react");
36
+ var import_antd = require("antd");
37
+ const usePrefixCls = /* @__PURE__ */ __name((tag, props) => {
38
+ const { getPrefixCls } = (0, import_react.useContext)(import_antd.ConfigProvider.ConfigContext) || {};
39
+ if ("ConfigContext" in import_antd.ConfigProvider) {
40
+ return (getPrefixCls == null ? void 0 : getPrefixCls(tag, props == null ? void 0 : props.prefixCls)) || "";
41
+ } else {
42
+ const prefix = (props == null ? void 0 : props.prefixCls) ?? "ant-";
43
+ return `${prefix}${tag ?? ""}`;
44
+ }
45
+ }, "usePrefixCls");
46
+ const { ConfigContext } = import_antd.ConfigProvider;
47
+ const useConfig = /* @__PURE__ */ __name(() => (0, import_react.useContext)(ConfigContext), "useConfig");
48
+ const useToken = import_antd.theme.useToken;
49
+ const genCommonStyle = /* @__PURE__ */ __name((token, componentPrefixCls) => {
50
+ const { fontFamily, fontSize } = token;
51
+ const rootPrefixSelector = `[class^="${componentPrefixCls}"], [class*=" ${componentPrefixCls}"]`;
52
+ return {
53
+ [rootPrefixSelector]: {
54
+ fontFamily,
55
+ fontSize,
56
+ boxSizing: "border-box",
57
+ "&::before, &::after": {
58
+ boxSizing: "border-box"
59
+ },
60
+ [rootPrefixSelector]: {
61
+ boxSizing: "border-box",
62
+ "&::before, &::after": {
63
+ boxSizing: "border-box"
64
+ }
65
+ }
66
+ }
67
+ };
68
+ }, "genCommonStyle");
69
+ const genStyleHook = /* @__PURE__ */ __name((component, styleFn) => {
70
+ return (props) => {
71
+ const { theme: theme2, token, hashId } = useToken();
72
+ const { getPrefixCls, iconPrefixCls } = useConfig();
73
+ const prefixCls = usePrefixCls(component);
74
+ const rootPrefixCls = getPrefixCls();
75
+ const wrapSSR = (0, import_cssinjs.useStyleRegister)(
76
+ {
77
+ theme: theme2,
78
+ token,
79
+ hashId,
80
+ path: ["formily-antd", component, prefixCls, iconPrefixCls]
81
+ },
82
+ () => {
83
+ const componentCls = `.${prefixCls}`;
84
+ const mergedToken = (0, import_shared.merge)(token, {
85
+ componentCls,
86
+ prefixCls,
87
+ iconCls: `.${iconPrefixCls}`,
88
+ antCls: `.${rootPrefixCls}`
89
+ });
90
+ const styleInterpolation = styleFn(mergedToken, props, {
91
+ hashId,
92
+ prefixCls,
93
+ rootPrefixCls,
94
+ iconPrefixCls
95
+ });
96
+ return [genCommonStyle(token, prefixCls), styleInterpolation];
97
+ }
98
+ );
99
+ const memoizedWrapSSR = (0, import_react.useMemo)(() => {
100
+ return wrapSSR;
101
+ }, [theme2, token, hashId, prefixCls, iconPrefixCls, rootPrefixCls, props]);
102
+ return {
103
+ wrapSSR: memoizedWrapSSR,
104
+ hashId,
105
+ componentCls: prefixCls,
106
+ rootPrefixCls
107
+ };
108
+ };
109
+ }, "genStyleHook");
110
+ const useMobileActionDrawerStyle = genStyleHook("nb-mobile-action-drawer", (token) => {
111
+ const { componentCls } = token;
112
+ return {
113
+ [componentCls]: {
114
+ ".nb-mobile-action-drawer-header": {
115
+ height: "var(--nb-mobile-page-header-height)",
116
+ display: "flex",
117
+ alignItems: "center",
118
+ justifyContent: "space-between",
119
+ borderBottom: `1px solid ${token.colorSplit}`,
120
+ position: "sticky",
121
+ top: 0,
122
+ backgroundColor: "white",
123
+ zIndex: 1e3,
124
+ // to match the button named 'Add block'
125
+ "& + .nb-grid-container > .nb-grid > .nb-grid-warp > .ant-btn": {
126
+ margin: 12
127
+ }
128
+ },
129
+ ".nb-mobile-action-drawer-placeholder": {
130
+ display: "inline-block",
131
+ padding: 12,
132
+ visibility: "hidden"
133
+ },
134
+ ".nb-mobile-action-drawer-close-icon": {
135
+ display: "inline-block",
136
+ padding: 12,
137
+ cursor: "pointer"
138
+ },
139
+ ".nb-mobile-action-drawer-body": {
140
+ borderTopLeftRadius: 8,
141
+ borderTopRightRadius: 8,
142
+ maxHeight: "calc(100% - var(--nb-mobile-page-header-height))",
143
+ overflowY: "auto",
144
+ overflowX: "hidden",
145
+ backgroundColor: token.colorBgLayout,
146
+ // 不带 tab 页的半窗
147
+ "& > .nb-grid-container": {
148
+ padding: `${token.paddingPageVertical}px ${token.paddingPageHorizontal}px`
149
+ },
150
+ // 带有 tab 页的半窗
151
+ ".ant-tabs-nav": {
152
+ marginBottom: "0px !important",
153
+ padding: `0 ${token.paddingPageHorizontal + token.borderRadiusBlock / 2}px`,
154
+ backgroundColor: token.colorBgContainer
155
+ },
156
+ // clear the margin-bottom of the last block
157
+ "& > .nb-grid-container > .nb-grid > .nb-grid-warp > .nb-grid-row:nth-last-child(2) .noco-card-item": {
158
+ marginBottom: 0,
159
+ "& > .ant-card": {
160
+ marginBottom: "0 !important"
161
+ }
162
+ }
163
+ },
164
+ ".nb-mobile-action-drawer-footer": {
165
+ padding: "8px var(--nb-mobile-page-tabs-content-padding)",
166
+ display: "flex",
167
+ alignItems: "center",
168
+ justifyContent: "flex-end",
169
+ position: "sticky",
170
+ bottom: 0,
171
+ left: 0,
172
+ right: 0,
173
+ zIndex: 1e3,
174
+ borderTop: `1px solid ${token.colorSplit}`,
175
+ backgroundColor: token.colorBgLayout,
176
+ ".ant-btn": {
177
+ marginLeft: 8
178
+ }
179
+ }
180
+ }
181
+ };
182
+ });
183
+ // Annotate the CommonJS export names for ESM import in node:
184
+ 0 && (module.exports = {
185
+ useMobileActionDrawerStyle
186
+ });
@@ -16,3 +16,4 @@ export * from './FormItem';
16
16
  export * from './settings';
17
17
  export * from './subModel';
18
18
  export * from './variables';
19
+ export * from './MobilePopup';
@@ -33,6 +33,7 @@ __reExport(components_exports, require("./FormItem"), module.exports);
33
33
  __reExport(components_exports, require("./settings"), module.exports);
34
34
  __reExport(components_exports, require("./subModel"), module.exports);
35
35
  __reExport(components_exports, require("./variables"), module.exports);
36
+ __reExport(components_exports, require("./MobilePopup"), module.exports);
36
37
  // Annotate the CommonJS export names for ESM import in node:
37
38
  0 && (module.exports = {
38
39
  ...require("./common/FlowSettingsButton"),
@@ -44,5 +45,6 @@ __reExport(components_exports, require("./variables"), module.exports);
44
45
  ...require("./FormItem"),
45
46
  ...require("./settings"),
46
47
  ...require("./subModel"),
47
- ...require("./variables")
48
+ ...require("./variables"),
49
+ ...require("./MobilePopup")
48
50
  });
@@ -96,7 +96,7 @@ const FlowsDropdownButtonWithModel = (0, import_react.observer)(
96
96
  const flowsArray = Array.from(flows.values());
97
97
  return flowsArray.map((flow) => {
98
98
  const configurableSteps = Object.entries(flow.steps).map(([stepKey, stepDefinition]) => {
99
- var _a, _b;
99
+ var _a;
100
100
  const actionStep = stepDefinition;
101
101
  if (actionStep.hideInSettings) {
102
102
  return null;
@@ -104,7 +104,7 @@ const FlowsDropdownButtonWithModel = (0, import_react.observer)(
104
104
  const stepUiSchema = actionStep.uiSchema || {};
105
105
  let actionUiSchema = {};
106
106
  if (actionStep.use) {
107
- const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
107
+ const action = (_a = model.getAction) == null ? void 0 : _a.call(model, actionStep.use);
108
108
  if (action && action.uiSchema) {
109
109
  actionUiSchema = action.uiSchema;
110
110
  }
@@ -103,12 +103,24 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
103
103
  const dropdownMaxHeight = (0, import_hooks.useNiceDropdownMaxHeight)([visible]);
104
104
  const copyUidToClipboard = (0, import_react.useCallback)(
105
105
  async (uid) => {
106
+ var _a;
106
107
  try {
107
108
  await navigator.clipboard.writeText(uid);
108
109
  message.success(t("UID copied to clipboard"));
109
110
  } catch (error) {
110
111
  console.error(t("Copy failed"), ":", error);
111
- message.error(t("Copy failed, please copy [{{uid}}] manually.", { uid }));
112
+ const isHttps = typeof window !== "undefined" && ((_a = window.location) == null ? void 0 : _a.protocol) === "https:";
113
+ if (!isHttps) {
114
+ message.error(
115
+ t(
116
+ "Copy failed under HTTP. Clipboard API is unavailable on non-HTTPS pages. Please copy [{{uid}}] manually.",
117
+ { uid }
118
+ )
119
+ );
120
+ return;
121
+ } else {
122
+ message.error(t("Copy failed, please copy [{{uid}}] manually.", { uid }));
123
+ }
112
124
  }
113
125
  },
114
126
  [message, t]
@@ -216,13 +228,13 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
216
228
  const getModelConfigurableFlowsAndSteps = (0, import_react.useCallback)(
217
229
  async (targetModel, modelKey) => {
218
230
  try {
219
- const flows = targetModel.getFlows();
231
+ const flows = targetModel.constructor.globalFlowRegistry.getFlows();
220
232
  const flowsArray = Array.from(flows.values());
221
233
  const flowsWithSteps = await Promise.all(
222
234
  flowsArray.map(async (flow) => {
223
235
  const configurableSteps = await Promise.all(
224
236
  Object.entries(flow.steps).map(async ([stepKey, stepDefinition]) => {
225
- var _a, _b;
237
+ var _a;
226
238
  const actionStep = stepDefinition;
227
239
  if (actionStep.hideInSettings) {
228
240
  return null;
@@ -232,9 +244,9 @@ const DefaultSettingsIcon = /* @__PURE__ */ __name(({
232
244
  let stepTitle = actionStep.title;
233
245
  if (actionStep.use) {
234
246
  try {
235
- const action = (_b = (_a = targetModel.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
247
+ const action = (_a = targetModel.getAction) == null ? void 0 : _a.call(targetModel, actionStep.use);
236
248
  hasActionUiSchema = action && action.uiSchema != null;
237
- stepTitle = stepTitle || action.title;
249
+ stepTitle = stepTitle || (action == null ? void 0 : action.title);
238
250
  } catch (error) {
239
251
  console.warn(t("Failed to get action {{action}}", { action: actionStep.use }), ":", error);
240
252
  }
@@ -122,7 +122,7 @@ const FlowsContextMenuWithModel = (0, import_react.observer)(
122
122
  const flowsArray = Array.from(flows.values());
123
123
  return flowsArray.map((flow) => {
124
124
  const configurableSteps = Object.entries(flow.steps).map(([stepKey, stepDefinition]) => {
125
- var _a, _b;
125
+ var _a;
126
126
  const actionStep = stepDefinition;
127
127
  if (actionStep.hideInSettings) {
128
128
  return null;
@@ -130,7 +130,7 @@ const FlowsContextMenuWithModel = (0, import_react.observer)(
130
130
  const stepUiSchema = actionStep.uiSchema || {};
131
131
  let actionUiSchema = {};
132
132
  if (actionStep.use) {
133
- const action = (_b = (_a = model.flowEngine) == null ? void 0 : _a.getAction) == null ? void 0 : _b.call(_a, actionStep.use);
133
+ const action = (_a = model.getAction) == null ? void 0 : _a.call(model, actionStep.use);
134
134
  if (action && action.uiSchema) {
135
135
  actionUiSchema = action.uiSchema;
136
136
  }
@@ -45,7 +45,7 @@ interface ModelProvidedProps {
45
45
  /**
46
46
  * @default 'inside'
47
47
  */
48
- toolbarPosition?: 'inside' | 'above';
48
+ toolbarPosition?: 'inside' | 'above' | 'below';
49
49
  }
50
50
  interface ModelByIdProps {
51
51
  uid: string;
@@ -79,7 +79,7 @@ interface ModelByIdProps {
79
79
  /**
80
80
  * @default 'inside'
81
81
  */
82
- toolbarPosition?: 'inside' | 'above';
82
+ toolbarPosition?: 'inside' | 'above' | 'below';
83
83
  }
84
84
  type FlowsFloatContextMenuProps = ModelProvidedProps | ModelByIdProps;
85
85
  /**
@@ -83,7 +83,25 @@ const renderToolbarItems = /* @__PURE__ */ __name((model, showDeleteButton, show
83
83
  return /* @__PURE__ */ import_react.default.createElement(ItemComponent, { key: itemConfig.key, model });
84
84
  });
85
85
  }, "renderToolbarItems");
86
- const floatContainerStyles = /* @__PURE__ */ __name(({ showBackground, showBorder, ctx, toolbarPosition }) => import_css.css`
86
+ const TOOLBAR_ITEM_WIDTH = 19;
87
+ const toolbarPositionToCSS = {
88
+ inside: `
89
+ top: 2px;
90
+ `,
91
+ above: `
92
+ top: 0px;
93
+ transform: translateY(-100%);
94
+ padding-bottom: 0px;
95
+ margin-bottom: -2px;
96
+ `,
97
+ below: `
98
+ top: 0px;
99
+ transform: translateY(100%);
100
+ padding-top: 2px;
101
+ margin-top: -2px;
102
+ `
103
+ };
104
+ const floatContainerStyles = /* @__PURE__ */ __name(({ showBackground, showBorder, ctx, toolbarPosition = "inside", toolbarCount }) => import_css.css`
87
105
  position: relative;
88
106
  display: inline;
89
107
 
@@ -119,6 +137,7 @@ const floatContainerStyles = /* @__PURE__ */ __name(({ showBackground, showBorde
119
137
  border: ${showBorder ? "2px solid var(--colorBorderSettingsHover)" : ""};
120
138
  border-radius: ${ctx.themeToken.borderRadiusLG}px;
121
139
  pointer-events: none;
140
+ min-width: ${TOOLBAR_ITEM_WIDTH * toolbarCount}px;
122
141
 
123
142
  &.nb-in-template {
124
143
  background: var(--colorTemplateBgSettingsHover);
@@ -149,10 +168,7 @@ const floatContainerStyles = /* @__PURE__ */ __name(({ showBackground, showBorde
149
168
  display: none; // 防止遮挡其它 icons
150
169
  position: absolute;
151
170
  right: 2px;
152
- top: ${toolbarPosition === "above" ? "0px" : "2px"};
153
- ${toolbarPosition === "above" ? "transform: translateY(-100%);" : ""}
154
- ${toolbarPosition === "above" ? "padding-bottom: 2px;" : ""}
155
- ${toolbarPosition === "above" ? "margin-bottom: -2px;" : ""}
171
+ ${toolbarPositionToCSS[toolbarPosition] || ""}
156
172
  line-height: 16px;
157
173
  pointer-events: all;
158
174
 
@@ -417,7 +433,13 @@ const FlowsFloatContextMenuWithModel = (0, import_react2.observer)(
417
433
  "div",
418
434
  {
419
435
  ref: containerRef,
420
- className: `${floatContainerStyles({ showBackground, showBorder, ctx: model.context, toolbarPosition })} ${hideMenu ? "hide-parent-menu" : ""} ${hasButton ? "has-button-child" : ""} ${className || ""}`,
436
+ className: `${floatContainerStyles({
437
+ showBackground,
438
+ showBorder,
439
+ ctx: model.context,
440
+ toolbarPosition,
441
+ toolbarCount: getToolbarCount(flowEngine, extraToolbarItems)
442
+ })} ${hideMenu ? "hide-parent-menu" : ""} ${hasButton ? "has-button-child" : ""} ${className || ""}`,
421
443
  style: containerStyle,
422
444
  "data-has-float-menu": "true",
423
445
  onMouseMove: handleChildHover
@@ -478,6 +500,13 @@ const FlowsFloatContextMenuWithModelById = (0, import_react2.observer)(
478
500
  displayName: "FlowsFloatContextMenuWithModelById"
479
501
  }
480
502
  );
503
+ function getToolbarCount(flowEngine, extraToolbarItems) {
504
+ var _a, _b;
505
+ const toolbarItems = ((_b = (_a = flowEngine == null ? void 0 : flowEngine.flowSettings) == null ? void 0 : _a.getToolbarItems) == null ? void 0 : _b.call(_a)) || [];
506
+ const allToolbarItems = [...toolbarItems, ...extraToolbarItems || []];
507
+ return allToolbarItems.length;
508
+ }
509
+ __name(getToolbarCount, "getToolbarCount");
481
510
  // Annotate the CommonJS export names for ESM import in node:
482
511
  0 && (module.exports = {
483
512
  FlowsFloatContextMenu
@@ -59,7 +59,7 @@ const openStepSettingsDialog = /* @__PURE__ */ __name(async ({
59
59
  uiModeProps,
60
60
  cleanup
61
61
  }) => {
62
- var _a, _b, _c, _d;
62
+ var _a, _b, _c, _d, _e, _f;
63
63
  const t = (0, import_utils.getT)(model);
64
64
  const message = model.context.message;
65
65
  if (!model) {
@@ -132,6 +132,12 @@ const openStepSettingsDialog = /* @__PURE__ */ __name(async ({
132
132
  width: dialogWidth,
133
133
  destroyOnClose: true,
134
134
  ...(0, import_reactive.toJS)(uiModeProps),
135
+ // 透传 navigation,便于变量元信息根据真实视图栈推断父级弹窗
136
+ inputArgs: (0, import_utils.buildSettingsViewInputArgs)(
137
+ model,
138
+ { ...((_e = (0, import_reactive.toJS)(uiModeProps)) == null ? void 0 : _e.inputArgs) || {}, __isSettingsPopup: true },
139
+ { navigationOverride: (_f = ctx == null ? void 0 : ctx.view) == null ? void 0 : _f.navigation }
140
+ ),
135
141
  onClose: /* @__PURE__ */ __name(() => {
136
142
  if (cleanup) {
137
143
  cleanup();
@@ -94,6 +94,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
94
94
  showValueComponent = true,
95
95
  onlyLeafSelectable = false,
96
96
  clearValue,
97
+ ignoreFieldNames,
97
98
  ...restProps
98
99
  }) => {
99
100
  const [currentMetaTreeNode, setCurrentMetaTreeNode] = (0, import_react.useState)(null);
@@ -143,7 +144,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
143
144
  }, [currentMetaTreeNode, innerValue, resolvedMetaTree, resolvePathFromValue]);
144
145
  (0, import_react.useEffect)(() => {
145
146
  const restoreFromValue = /* @__PURE__ */ __name(async () => {
146
- if (!Array.isArray(resolvedMetaTree) || !value) return;
147
+ if (!Array.isArray(resolvedMetaTree) || value == null) return;
147
148
  if (currentMetaTreeNode) {
148
149
  return;
149
150
  }
@@ -196,7 +197,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
196
197
  }, [renderInputComponent, resolvedMetaTreeNode, innerValue]);
197
198
  (0, import_react.useEffect)(() => {
198
199
  if (!resolvedMetaTreeNode) return;
199
- if (!Array.isArray(resolvedMetaTree) || !innerValue) return;
200
+ if (!Array.isArray(resolvedMetaTree) || innerValue == null) return;
200
201
  const finalValue = (resolveValueFromPath == null ? void 0 : resolveValueFromPath(resolvedMetaTreeNode)) || innerValue;
201
202
  emitChange(finalValue, resolvedMetaTreeNode);
202
203
  setCurrentMetaTreeNode(resolvedMetaTreeNode);
@@ -241,18 +242,30 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
241
242
  if (disabled) {
242
243
  return;
243
244
  }
244
- setCurrentMetaTreeNode(null);
245
245
  const cleared = clearValue !== void 0 ? clearValue : null;
246
246
  setInnerValue(cleared);
247
+ try {
248
+ const path = resolvePathFromValue == null ? void 0 : resolvePathFromValue(cleared);
249
+ if (Array.isArray(resolvedMetaTree) && path && path.length > 0) {
250
+ const node = findMetaTreeNodeByPath(resolvedMetaTree, path);
251
+ if (node) {
252
+ setCurrentMetaTreeNode(node);
253
+ emitChange(cleared, node);
254
+ return;
255
+ }
256
+ }
257
+ } catch (_) {
258
+ }
259
+ setCurrentMetaTreeNode(null);
247
260
  emitChange(cleared);
248
- }, [emitChange, disabled, clearValue]);
261
+ }, [emitChange, disabled, clearValue, resolvedMetaTree, resolvePathFromValue]);
249
262
  const stableProps = (0, import_react.useMemo)(() => {
250
263
  const { style, onFocus, onBlur, disabled: disabled2, ...otherProps } = restProps;
251
264
  return { style, onFocus, onBlur, otherProps };
252
265
  }, [restProps]);
253
266
  const inputProps = (0, import_react.useMemo)(() => {
254
267
  const baseProps = {
255
- value: innerValue || "",
268
+ value: innerValue ?? "",
256
269
  onChange: handleInputChange,
257
270
  disabled
258
271
  };
@@ -311,6 +324,7 @@ const VariableInputComponent = /* @__PURE__ */ __name(({
311
324
  parseValueToPath: resolvePathFromValue,
312
325
  formatPathToValue: resolveValueFromPath,
313
326
  onlyLeafSelectable,
327
+ ignoreFieldNames,
314
328
  ...!showValueComponent && { children: null, placeholder: restProps == null ? void 0 : restProps.placeholder }
315
329
  }
316
330
  ));
@@ -63,8 +63,49 @@ const VariableTagComponent = /* @__PURE__ */ __name(({
63
63
  return metaTreeNode.parentTitles ? [...metaTreeNode.parentTitles, metaTreeNode.title].map(ctx.t).join("/") : ctx.t(metaTreeNode.title) || "";
64
64
  }
65
65
  if (!value) return String(value);
66
- const path = (0, import_utils.parseValueToPath)(value);
67
- return path ? path.join("/") : String(value);
66
+ const rawPath = (0, import_utils.parseValueToPath)(value);
67
+ if (!rawPath || !Array.isArray(resolvedMetaTree)) {
68
+ return Array.isArray(rawPath) ? rawPath.join("/") : String(value);
69
+ }
70
+ const topNames = new Set((resolvedMetaTree || []).map((n) => String(n == null ? void 0 : n.name)));
71
+ const path = !topNames.has(String(rawPath[0])) ? rawPath.slice(1) : rawPath;
72
+ if (!path.length) return "";
73
+ let nodes = resolvedMetaTree;
74
+ let deepest = null;
75
+ let matchedCount = 0;
76
+ for (let i = 0; i < path.length; i++) {
77
+ if (!nodes) break;
78
+ const seg = String(path[i]);
79
+ const node = nodes.find((n) => String(n == null ? void 0 : n.name) === seg);
80
+ if (!node) break;
81
+ deepest = node;
82
+ matchedCount = i + 1;
83
+ if (i < path.length - 1) {
84
+ if (Array.isArray(node.children)) {
85
+ nodes = node.children;
86
+ } else if (typeof node.children === "function") {
87
+ try {
88
+ const childNodes = await node.children();
89
+ node.children = childNodes;
90
+ nodes = childNodes;
91
+ } catch {
92
+ nodes = void 0;
93
+ }
94
+ } else {
95
+ nodes = void 0;
96
+ }
97
+ }
98
+ }
99
+ if (deepest) {
100
+ const titles = deepest.parentTitles ? [...deepest.parentTitles, deepest.title] : [deepest.title];
101
+ let label = titles.map(ctx.t).join("/");
102
+ if (matchedCount < path.length) {
103
+ const tail = path.slice(matchedCount).join("/");
104
+ label = tail ? `${label}/${tail}` : label;
105
+ }
106
+ return label;
107
+ }
108
+ return path.join("/");
68
109
  },
69
110
  { refreshDeps: [resolvedMetaTree, value, metaTreeNode] }
70
111
  );
@@ -18,6 +18,7 @@ export interface FlowContextSelectorProps extends Omit<CascaderProps<ContextSele
18
18
  formatPathToValue?: (item: MetaTreeNode) => string;
19
19
  open?: boolean;
20
20
  onlyLeafSelectable?: boolean;
21
+ ignoreFieldNames?: string[];
21
22
  }
22
23
  export interface ContextSelectorItem {
23
24
  label: React.ReactNode;
@@ -62,6 +63,7 @@ export interface VariableInputProps {
62
63
  * 默认行为为 null;可设置为 '' 等,以便清空后默认切换为“常量-空字符串”。
63
64
  */
64
65
  clearValue?: any;
66
+ ignoreFieldNames?: string[];
65
67
  [key: string]: any;
66
68
  }
67
69
  export interface VariableTagProps {