@nocobase/flow-engine 2.0.0-alpha.9 → 2.0.0-beta.2

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 (305) hide show
  1. package/lib/BlockScopedFlowEngine.d.ts +23 -0
  2. package/lib/BlockScopedFlowEngine.js +92 -0
  3. package/lib/FlowDefinition.d.ts +6 -4
  4. package/lib/JSRunner.js +3 -0
  5. package/lib/ViewScopedFlowEngine.js +15 -1
  6. package/lib/acl/Acl.d.ts +12 -12
  7. package/lib/acl/Acl.js +78 -30
  8. package/lib/components/DynamicFlowsEditor.js +2 -4
  9. package/lib/components/FieldModelRenderer.js +10 -8
  10. package/lib/components/FieldSkeleton.d.ts +10 -0
  11. package/lib/components/FieldSkeleton.js +64 -0
  12. package/lib/components/FlowContextSelector.js +19 -3
  13. package/lib/components/FlowModelRenderer.d.ts +2 -1
  14. package/lib/components/FlowModelRenderer.js +34 -12
  15. package/lib/components/FormItem.js +5 -1
  16. package/lib/components/MobilePopup.d.ts +20 -0
  17. package/lib/components/MobilePopup.js +102 -0
  18. package/lib/components/MobilePopup.style.d.ts +17 -0
  19. package/lib/components/MobilePopup.style.js +186 -0
  20. package/lib/components/common/withFlowDesignMode.d.ts +1 -1
  21. package/lib/components/common/withFlowDesignMode.js +5 -5
  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 +71 -53
  25. package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +19 -0
  26. package/lib/components/settings/wrappers/component/SelectWithTitle.js +136 -0
  27. package/lib/components/settings/wrappers/component/SwitchWithTitle.d.ts +10 -0
  28. package/lib/components/settings/wrappers/component/SwitchWithTitle.js +110 -0
  29. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +221 -93
  30. package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +71 -54
  31. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
  32. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +63 -23
  33. package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +11 -6
  34. package/lib/components/settings/wrappers/embedded/FlowSettings.js +42 -28
  35. package/lib/components/settings/wrappers/embedded/FlowsSettings.js +3 -3
  36. package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +52 -32
  37. package/lib/components/subModel/AddSubModelButton.d.ts +7 -0
  38. package/lib/components/subModel/AddSubModelButton.js +78 -8
  39. package/lib/components/subModel/LazyDropdown.js +14 -15
  40. package/lib/components/subModel/utils.d.ts +1 -1
  41. package/lib/components/subModel/utils.js +21 -11
  42. package/lib/components/variables/VariableInput.js +5 -3
  43. package/lib/components/variables/types.d.ts +2 -0
  44. package/lib/components/variables/utils.js +4 -2
  45. package/lib/data-source/index.d.ts +43 -4
  46. package/lib/data-source/index.js +104 -11
  47. package/lib/data-source/jioToJoiSchema.js +1 -0
  48. package/lib/emitter.d.ts +6 -0
  49. package/lib/emitter.js +12 -0
  50. package/lib/executor/FlowExecutor.js +48 -7
  51. package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
  52. package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
  53. package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
  54. package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
  55. package/lib/flowContext.d.ts +6 -0
  56. package/lib/flowContext.js +111 -30
  57. package/lib/flowEngine.d.ts +49 -0
  58. package/lib/flowEngine.js +265 -10
  59. package/lib/flowSettings.d.ts +4 -3
  60. package/lib/flowSettings.js +33 -11
  61. package/lib/hooks/useApplyAutoFlows.d.ts +1 -0
  62. package/lib/hooks/useApplyAutoFlows.js +2 -2
  63. package/lib/index.d.ts +4 -2
  64. package/lib/index.js +11 -5
  65. package/lib/locale/de-DE.json +62 -0
  66. package/lib/locale/en-US.json +57 -45
  67. package/lib/locale/es-ES.json +62 -0
  68. package/lib/locale/fr-FR.json +62 -0
  69. package/lib/locale/hu-HU.json +62 -0
  70. package/lib/locale/id-ID.json +62 -0
  71. package/lib/locale/index.d.ts +114 -90
  72. package/lib/locale/it-IT.json +62 -0
  73. package/lib/locale/ja-JP.json +62 -0
  74. package/lib/locale/ko-KR.json +62 -0
  75. package/lib/locale/nl-NL.json +62 -0
  76. package/lib/locale/pt-BR.json +62 -0
  77. package/lib/locale/ru-RU.json +62 -0
  78. package/lib/locale/tr-TR.json +62 -0
  79. package/lib/locale/uk-UA.json +62 -0
  80. package/lib/locale/vi-VN.json +62 -0
  81. package/lib/locale/zh-CN.json +58 -46
  82. package/lib/locale/zh-TW.json +62 -0
  83. package/lib/models/CollectionFieldModel.d.ts +6 -2
  84. package/lib/models/CollectionFieldModel.js +60 -14
  85. package/lib/models/flowModel.d.ts +43 -4
  86. package/lib/models/flowModel.js +128 -26
  87. package/lib/models/forkFlowModel.d.ts +6 -2
  88. package/lib/models/forkFlowModel.js +9 -2
  89. package/lib/provider.d.ts +3 -1
  90. package/lib/provider.js +4 -3
  91. package/lib/reactive/index.d.ts +10 -0
  92. package/lib/reactive/index.js +41 -0
  93. package/lib/reactive/observer.d.ts +19 -0
  94. package/lib/reactive/observer.js +109 -0
  95. package/lib/resources/baseRecordResource.d.ts +1 -0
  96. package/lib/resources/baseRecordResource.js +14 -3
  97. package/lib/resources/multiRecordResource.d.ts +4 -2
  98. package/lib/resources/multiRecordResource.js +15 -6
  99. package/lib/resources/singleRecordResource.js +6 -3
  100. package/lib/resources/sqlResource.d.ts +1 -0
  101. package/lib/resources/sqlResource.js +22 -25
  102. package/lib/runjs-context/contexts/base.js +42 -6
  103. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.d.ts +11 -0
  104. package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
  105. package/lib/runjs-context/snippets/index.js +3 -0
  106. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
  107. package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
  108. package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.js +6 -4
  109. package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +15 -16
  110. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
  111. package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.js +58 -0
  112. package/lib/runjs-context/snippets/scene/block/render-react.snippet.js +7 -7
  113. package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +24 -29
  114. package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +20 -21
  115. package/lib/scheduler/ModelOperationScheduler.d.ts +51 -0
  116. package/lib/scheduler/ModelOperationScheduler.js +262 -0
  117. package/lib/types.d.ts +42 -7
  118. package/lib/types.js +4 -3
  119. package/lib/utils/associationObjectVariable.d.ts +32 -0
  120. package/lib/utils/associationObjectVariable.js +157 -0
  121. package/lib/utils/createCollectionContextMeta.d.ts +1 -1
  122. package/lib/utils/createCollectionContextMeta.js +8 -4
  123. package/lib/utils/createEphemeralContext.d.ts +13 -0
  124. package/lib/utils/createEphemeralContext.js +140 -0
  125. package/lib/utils/flows.d.ts +10 -0
  126. package/lib/utils/flows.js +48 -0
  127. package/lib/utils/index.d.ts +7 -3
  128. package/lib/utils/index.js +20 -0
  129. package/lib/utils/jsxTransform.d.ts +15 -0
  130. package/lib/utils/jsxTransform.js +68 -0
  131. package/lib/utils/params-resolvers.js +3 -3
  132. package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
  133. package/lib/utils/parsePathnameToViewParams.js +41 -5
  134. package/lib/utils/pruneFilter.d.ts +21 -0
  135. package/lib/utils/pruneFilter.js +52 -0
  136. package/lib/utils/safeGlobals.d.ts +5 -3
  137. package/lib/utils/safeGlobals.js +42 -1
  138. package/lib/utils/schema-utils.d.ts +6 -0
  139. package/lib/utils/schema-utils.js +71 -6
  140. package/lib/utils/serverContextParams.d.ts +3 -0
  141. package/lib/utils/serverContextParams.js +2 -0
  142. package/lib/utils/translation.d.ts +4 -1
  143. package/lib/utils/translation.js +6 -2
  144. package/lib/utils/variablesParams.d.ts +21 -5
  145. package/lib/utils/variablesParams.js +103 -34
  146. package/lib/views/DialogComponent.js +1 -5
  147. package/lib/views/DrawerComponent.js +18 -9
  148. package/lib/views/PageComponent.js +3 -4
  149. package/lib/views/ViewNavigation.d.ts +11 -15
  150. package/lib/views/ViewNavigation.js +37 -19
  151. package/lib/views/createViewMeta.d.ts +3 -2
  152. package/lib/views/createViewMeta.js +164 -53
  153. package/lib/views/useDialog.d.ts +2 -1
  154. package/lib/views/useDialog.js +36 -30
  155. package/lib/views/useDrawer.d.ts +2 -1
  156. package/lib/views/useDrawer.js +33 -26
  157. package/lib/views/usePage.d.ts +2 -1
  158. package/lib/views/usePage.js +40 -29
  159. package/package.json +6 -3
  160. package/src/BlockScopedFlowEngine.ts +88 -0
  161. package/src/JSRunner.ts +3 -0
  162. package/src/ViewScopedFlowEngine.ts +16 -0
  163. package/src/__tests__/JSRunner.test.ts +62 -53
  164. package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
  165. package/src/__tests__/createViewMeta.popup.test.ts +142 -0
  166. package/src/__tests__/flow-engine.test.ts +3 -0
  167. package/src/__tests__/flowContext.test.ts +70 -0
  168. package/src/__tests__/flowEngine.destroyModel.test.ts +74 -0
  169. package/src/__tests__/flowEngine.moveModel.test.ts +43 -0
  170. package/src/__tests__/flowEngine.removeModel.test.ts +72 -0
  171. package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
  172. package/src/__tests__/flowModel.openView.navigation.test.ts +3 -2
  173. package/src/__tests__/flowSettings.open.test.tsx +2 -0
  174. package/src/__tests__/flowSettings.test.ts +2 -0
  175. package/src/__tests__/globalFlowRegistry.test.ts +1 -1
  176. package/src/__tests__/modelOperationScheduler.test.ts +346 -0
  177. package/src/__tests__/objectVariable.test.ts +464 -0
  178. package/src/__tests__/runjsRuntimeFeatures.test.ts +12 -0
  179. package/src/__tests__/viewScopedFlowEngine.test.ts +98 -0
  180. package/src/acl/Acl.tsx +85 -31
  181. package/src/acl/__tests__/Acl.test.tsx +43 -1
  182. package/src/components/DynamicFlowsEditor.tsx +0 -10
  183. package/src/components/FieldModelRenderer.tsx +15 -8
  184. package/src/components/FieldSkeleton.tsx +27 -0
  185. package/src/components/FlowContextSelector.tsx +20 -2
  186. package/src/components/FlowModelRenderer.tsx +46 -12
  187. package/src/components/FormItem.tsx +8 -1
  188. package/src/components/MobilePopup.style.ts +220 -0
  189. package/src/components/MobilePopup.tsx +86 -0
  190. package/src/components/__tests__/FlowModelRenderer.test.tsx +89 -0
  191. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +1 -1
  192. package/src/components/common/withFlowDesignMode.tsx +5 -5
  193. package/src/components/index.ts +1 -0
  194. package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +34 -17
  195. package/src/components/settings/wrappers/component/SelectWithTitle.tsx +110 -0
  196. package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +82 -0
  197. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +260 -121
  198. package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +34 -18
  199. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +56 -18
  200. package/src/components/settings/wrappers/contextual/StepSettings.tsx +1 -2
  201. package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +12 -6
  202. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +565 -0
  203. package/src/components/settings/wrappers/embedded/FlowSettings.tsx +47 -35
  204. package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +1 -1
  205. package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +64 -42
  206. package/src/components/subModel/AddSubModelButton.tsx +104 -9
  207. package/src/components/subModel/LazyDropdown.tsx +14 -14
  208. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +168 -7
  209. package/src/components/subModel/__tests__/utils.test.ts +12 -12
  210. package/src/components/subModel/utils.ts +25 -6
  211. package/src/components/variables/VariableInput.tsx +5 -3
  212. package/src/components/variables/types.ts +2 -0
  213. package/src/components/variables/utils.ts +7 -3
  214. package/src/data-source/index.ts +169 -11
  215. package/src/data-source/jioToJoiSchema.ts +1 -0
  216. package/src/emitter.ts +14 -0
  217. package/src/executor/FlowExecutor.ts +56 -8
  218. package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
  219. package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
  220. package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
  221. package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
  222. package/src/flowContext.ts +144 -29
  223. package/src/flowEngine.ts +328 -8
  224. package/src/flowSettings.ts +47 -19
  225. package/src/hooks/useApplyAutoFlows.ts +3 -3
  226. package/src/index.ts +4 -2
  227. package/src/locale/de-DE.json +62 -0
  228. package/src/locale/en-US.json +57 -45
  229. package/src/locale/es-ES.json +62 -0
  230. package/src/locale/fr-FR.json +62 -0
  231. package/src/locale/hu-HU.json +62 -0
  232. package/src/locale/id-ID.json +62 -0
  233. package/src/locale/it-IT.json +62 -0
  234. package/src/locale/ja-JP.json +62 -0
  235. package/src/locale/ko-KR.json +62 -0
  236. package/src/locale/nl-NL.json +62 -0
  237. package/src/locale/pt-BR.json +62 -0
  238. package/src/locale/ru-RU.json +62 -0
  239. package/src/locale/tr-TR.json +62 -0
  240. package/src/locale/uk-UA.json +62 -0
  241. package/src/locale/vi-VN.json +62 -0
  242. package/src/locale/zh-CN.json +58 -46
  243. package/src/locale/zh-TW.json +62 -0
  244. package/src/models/CollectionFieldModel.tsx +79 -17
  245. package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
  246. package/src/models/__tests__/flowEngine.resolveUse.test.ts +170 -0
  247. package/src/models/__tests__/flowModel.getFlows.sort.test.ts +29 -5
  248. package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
  249. package/src/models/__tests__/flowModel.test.ts +65 -27
  250. package/src/models/__tests__/forkFlowModel.test.ts +40 -7
  251. package/src/models/flowModel.tsx +192 -30
  252. package/src/models/forkFlowModel.ts +11 -3
  253. package/src/provider.tsx +5 -5
  254. package/src/reactive/__tests__/observer.test.tsx +211 -0
  255. package/src/reactive/index.ts +11 -0
  256. package/src/reactive/observer.tsx +101 -0
  257. package/src/resources/baseRecordResource.ts +15 -3
  258. package/src/resources/multiRecordResource.ts +17 -8
  259. package/src/resources/singleRecordResource.ts +6 -3
  260. package/src/resources/sqlResource.ts +22 -26
  261. package/src/runjs-context/contexts/base.ts +47 -6
  262. package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
  263. package/src/runjs-context/snippets/index.ts +3 -0
  264. package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
  265. package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +6 -4
  266. package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +15 -16
  267. package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
  268. package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +7 -7
  269. package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +24 -29
  270. package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +20 -21
  271. package/src/scheduler/ModelOperationScheduler.ts +304 -0
  272. package/src/types.ts +50 -4
  273. package/src/utils/__tests__/createCollectionContextMeta.test.ts +51 -0
  274. package/src/utils/__tests__/flows.test.ts +65 -0
  275. package/src/utils/__tests__/jsxTransform.test.ts +38 -0
  276. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
  277. package/src/utils/__tests__/pruneFilter.test.ts +38 -0
  278. package/src/utils/__tests__/safeGlobals.test.ts +23 -1
  279. package/src/utils/__tests__/utils.test.ts +114 -15
  280. package/src/utils/__tests__/variablesParams.test.ts +120 -0
  281. package/src/utils/associationObjectVariable.ts +180 -0
  282. package/src/utils/createCollectionContextMeta.ts +8 -3
  283. package/src/utils/createEphemeralContext.ts +142 -0
  284. package/src/utils/flows.ts +23 -0
  285. package/src/utils/index.ts +11 -2
  286. package/src/utils/jsxTransform.ts +39 -0
  287. package/src/utils/params-resolvers.ts +2 -2
  288. package/src/utils/parsePathnameToViewParams.ts +50 -6
  289. package/src/utils/pruneFilter.ts +41 -0
  290. package/src/utils/safeGlobals.ts +51 -4
  291. package/src/utils/schema-utils.ts +81 -3
  292. package/src/utils/serverContextParams.ts +5 -0
  293. package/src/utils/translation.ts +7 -2
  294. package/src/utils/variablesParams.ts +125 -42
  295. package/src/views/DialogComponent.tsx +1 -4
  296. package/src/views/DrawerComponent.tsx +19 -7
  297. package/src/views/PageComponent.tsx +2 -4
  298. package/src/views/ViewNavigation.ts +49 -43
  299. package/src/views/__tests__/FlowView.usePage.test.tsx +133 -0
  300. package/src/views/__tests__/ViewNavigation.test.ts +54 -34
  301. package/src/views/__tests__/useDialog.closeDestroy.test.tsx +132 -0
  302. package/src/views/createViewMeta.ts +179 -42
  303. package/src/views/useDialog.tsx +36 -24
  304. package/src/views/useDrawer.tsx +37 -24
  305. package/src/views/usePage.tsx +46 -27
@@ -41,8 +41,6 @@ __export(FlowModelRenderer_exports, {
41
41
  MemoFlowModelRenderer: () => MemoFlowModelRenderer
42
42
  });
43
43
  module.exports = __toCommonJS(FlowModelRenderer_exports);
44
- var import_reactive_react = require("@formily/reactive-react");
45
- var import_antd = require("antd");
46
44
  var import_lodash = __toESM(require("lodash"));
47
45
  var import_react = __toESM(require("react"));
48
46
  var import_react_error_boundary = require("react-error-boundary");
@@ -51,7 +49,8 @@ var import_utils = require("../utils");
51
49
  var import_FlowErrorFallback = require("./FlowErrorFallback");
52
50
  var import_FlowsContextMenu = require("./settings/wrappers/contextual/FlowsContextMenu");
53
51
  var import_FlowsFloatContextMenu = require("./settings/wrappers/contextual/FlowsFloatContextMenu");
54
- const FlowModelRendererWithAutoFlows = (0, import_reactive_react.observer)(
52
+ var import_reactive = require("../reactive");
53
+ const FlowModelRendererWithAutoFlows = (0, import_reactive.observer)(
55
54
  ({
56
55
  model,
57
56
  showFlowSettings,
@@ -64,7 +63,10 @@ const FlowModelRendererWithAutoFlows = (0, import_reactive_react.observer)(
64
63
  extraToolbarItems,
65
64
  fallback
66
65
  }) => {
67
- const { loading: pending, error: autoFlowsError } = (0, import_hooks.useApplyAutoFlows)(model, inputArgs, { throwOnError: false });
66
+ const { loading: pending, error: autoFlowsError } = (0, import_hooks.useApplyAutoFlows)(model, inputArgs, {
67
+ throwOnError: false,
68
+ useCache: model.context.useCache
69
+ });
68
70
  (0, import_utils.setAutoFlowError)(model, autoFlowsError || null);
69
71
  if (pending) {
70
72
  return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, fallback);
@@ -84,7 +86,7 @@ const FlowModelRendererWithAutoFlows = (0, import_reactive_react.observer)(
84
86
  ));
85
87
  }
86
88
  );
87
- const FlowModelRendererCore = (0, import_reactive_react.observer)(
89
+ const FlowModelRendererCore = (0, import_reactive.observer)(
88
90
  ({
89
91
  model,
90
92
  showFlowSettings,
@@ -95,6 +97,7 @@ const FlowModelRendererCore = (0, import_reactive_react.observer)(
95
97
  settingsMenuLevel,
96
98
  extraToolbarItems
97
99
  }) => {
100
+ var _a;
98
101
  const wrapWithErrorBoundary = /* @__PURE__ */ __name((children) => {
99
102
  if (showErrorFallback) {
100
103
  return /* @__PURE__ */ import_react.default.createElement(import_react_error_boundary.ErrorBoundary, { FallbackComponent: import_FlowErrorFallback.FlowErrorFallback }, children);
@@ -112,8 +115,13 @@ const FlowModelRendererCore = (0, import_reactive_react.observer)(
112
115
  }
113
116
  return /* @__PURE__ */ import_react.default.createElement(import_react.default.Fragment, null, rendered);
114
117
  }, "ContentOrError");
118
+ const rawUse = model == null ? void 0 : model.use;
119
+ const resolvedName = ((_a = model == null ? void 0 : model.constructor) == null ? void 0 : _a.name) || model.uid;
120
+ const contentKey = typeof rawUse === "string" ? `${rawUse}:${model.uid}` : `${resolvedName}:${model.uid}`;
115
121
  if (!showFlowSettings) {
116
- return wrapWithErrorBoundary(/* @__PURE__ */ import_react.default.createElement(ContentOrError, null));
122
+ return wrapWithErrorBoundary(
123
+ /* @__PURE__ */ import_react.default.createElement("div", { key: contentKey }, /* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
124
+ );
117
125
  }
118
126
  switch (flowSettingsVariant) {
119
127
  case "dropdown":
@@ -131,10 +139,14 @@ const FlowModelRendererCore = (0, import_reactive_react.observer)(
131
139
  toolbarStyle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.style : void 0,
132
140
  toolbarPosition: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.toolbarPosition : void 0
133
141
  },
134
- wrapWithErrorBoundary(/* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
142
+ wrapWithErrorBoundary(
143
+ /* @__PURE__ */ import_react.default.createElement("div", { key: contentKey }, /* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
144
+ )
135
145
  );
136
146
  case "contextMenu":
137
- return /* @__PURE__ */ import_react.default.createElement(import_FlowsContextMenu.FlowsContextMenu, { model, showDeleteButton: !hideRemoveInSettings }, wrapWithErrorBoundary(/* @__PURE__ */ import_react.default.createElement(ContentOrError, null)));
147
+ return /* @__PURE__ */ import_react.default.createElement(import_FlowsContextMenu.FlowsContextMenu, { model, showDeleteButton: !hideRemoveInSettings }, wrapWithErrorBoundary(
148
+ /* @__PURE__ */ import_react.default.createElement("div", { key: contentKey }, /* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
149
+ ));
138
150
  case "modal":
139
151
  console.warn("FlowModelRenderer: modal variant is not implemented yet");
140
152
  return wrapWithErrorBoundary(/* @__PURE__ */ import_react.default.createElement(ContentOrError, null));
@@ -159,7 +171,9 @@ const FlowModelRendererCore = (0, import_reactive_react.observer)(
159
171
  toolbarStyle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.style : void 0,
160
172
  toolbarPosition: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.toolbarPosition : void 0
161
173
  },
162
- wrapWithErrorBoundary(/* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
174
+ wrapWithErrorBoundary(
175
+ /* @__PURE__ */ import_react.default.createElement("div", { key: contentKey }, /* @__PURE__ */ import_react.default.createElement(ContentOrError, null))
176
+ )
163
177
  );
164
178
  }
165
179
  },
@@ -167,10 +181,10 @@ const FlowModelRendererCore = (0, import_reactive_react.observer)(
167
181
  displayName: "FlowModelRendererCore"
168
182
  }
169
183
  );
170
- const FlowModelRenderer = (0, import_reactive_react.observer)(
184
+ const FlowModelRenderer = (0, import_reactive.observer)(
171
185
  ({
172
186
  model,
173
- fallback = /* @__PURE__ */ import_react.default.createElement(import_antd.Skeleton.Button, { size: "small" }),
187
+ fallback = null,
174
188
  showFlowSettings = false,
175
189
  flowSettingsVariant = "dropdown",
176
190
  hideRemoveInSettings = false,
@@ -178,8 +192,16 @@ const FlowModelRenderer = (0, import_reactive_react.observer)(
178
192
  inputArgs,
179
193
  showErrorFallback = true,
180
194
  settingsMenuLevel,
181
- extraToolbarItems
195
+ extraToolbarItems,
196
+ useCache
182
197
  }) => {
198
+ (0, import_react.useEffect)(() => {
199
+ if (model == null ? void 0 : model.context) {
200
+ model.context.defineProperty("useCache", {
201
+ value: typeof useCache === "boolean" ? useCache : model.context.useCache
202
+ });
203
+ }
204
+ }, [model == null ? void 0 : model.context, useCache]);
183
205
  if (!model || typeof model.render !== "function") {
184
206
  console.warn("FlowModelRenderer: Invalid model or render method not found.", model);
185
207
  return null;
@@ -136,7 +136,11 @@ const FormItem = /* @__PURE__ */ __name(({
136
136
  layout,
137
137
  label: renderLabel(),
138
138
  colon: false,
139
- extra: rest.extra && /* @__PURE__ */ import_react.default.createElement("span", { style: { whiteSpace: "pre-wrap" } }, rest.extra)
139
+ extra: rest.extra && /* @__PURE__ */ import_react.default.createElement("span", { style: { whiteSpace: "pre-wrap" } }, rest.extra),
140
+ tooltip: rest.tooltip && {
141
+ title: rest.tooltip,
142
+ overlayInnerStyle: { whiteSpace: "pre-line" }
143
+ }
140
144
  },
141
145
  processedChildren
142
146
  );
@@ -0,0 +1,20 @@
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 { FC, ReactNode } from 'react';
10
+ interface MobilePopupProps {
11
+ title?: string;
12
+ visible: boolean;
13
+ minHeight?: number | string;
14
+ onClose: () => void;
15
+ children: ReactNode;
16
+ className?: string;
17
+ footer?: ReactNode;
18
+ }
19
+ export declare const MobilePopup: FC<MobilePopupProps>;
20
+ export {};
@@ -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
+ });
@@ -11,7 +11,7 @@ import React from 'react';
11
11
  * 高阶组件:仅在设计模式启用时渲染子组件
12
12
  *
13
13
  * @param WrappedComponent 要包装的组件
14
- * @returns 包装后的组件,只在 flowSettings.enabled 为 true 时渲染
14
+ * @returns 包装后的组件,只在 flowSettingsEnabled 为 true 时渲染
15
15
  *
16
16
  * @example
17
17
  * ```tsx
@@ -41,12 +41,12 @@ __export(withFlowDesignMode_exports, {
41
41
  });
42
42
  module.exports = __toCommonJS(withFlowDesignMode_exports);
43
43
  var import_react = __toESM(require("react"));
44
- var import_reactive_react = require("@formily/reactive-react");
45
- var import_provider = require("../../provider");
44
+ var import_FlowContextProvider = require("../../FlowContextProvider");
45
+ var import__ = require("../..");
46
46
  function withFlowDesignMode(WrappedComponent) {
47
- const WithFlowDesignModeComponent = (0, import_reactive_react.observer)((props) => {
48
- const flowEngine = (0, import_provider.useFlowEngine)();
49
- if (!flowEngine.flowSettings.enabled) {
47
+ const WithFlowDesignModeComponent = (0, import__.observer)((props) => {
48
+ const ctx = (0, import_FlowContextProvider.useFlowContext)();
49
+ if (!ctx.flowSettingsEnabled) {
50
50
  return null;
51
51
  }
52
52
  return /* @__PURE__ */ import_react.default.createElement(WrappedComponent, { ...props });
@@ -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
  });