@nocobase/flow-engine 2.1.0-beta.8 → 2.1.0

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 (215) hide show
  1. package/lib/FlowContextProvider.d.ts +5 -1
  2. package/lib/FlowContextProvider.js +9 -2
  3. package/lib/components/FieldModelRenderer.js +2 -2
  4. package/lib/components/FlowModelRenderer.d.ts +3 -1
  5. package/lib/components/FlowModelRenderer.js +12 -6
  6. package/lib/components/FormItem.d.ts +6 -0
  7. package/lib/components/FormItem.js +11 -3
  8. package/lib/components/MobilePopup.js +6 -5
  9. package/lib/components/dnd/gridDragPlanner.d.ts +59 -2
  10. package/lib/components/dnd/gridDragPlanner.js +607 -19
  11. package/lib/components/dnd/index.d.ts +31 -2
  12. package/lib/components/dnd/index.js +244 -23
  13. package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +2 -1
  14. package/lib/components/settings/wrappers/component/SelectWithTitle.js +14 -12
  15. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.d.ts +3 -0
  16. package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +152 -42
  17. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +23 -43
  18. package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +352 -295
  19. package/lib/components/settings/wrappers/contextual/useFloatToolbarPortal.d.ts +36 -0
  20. package/lib/components/settings/wrappers/contextual/useFloatToolbarPortal.js +274 -0
  21. package/lib/components/settings/wrappers/contextual/useFloatToolbarVisibility.d.ts +30 -0
  22. package/lib/components/settings/wrappers/contextual/useFloatToolbarVisibility.js +315 -0
  23. package/lib/components/subModel/AddSubModelButton.js +12 -1
  24. package/lib/components/subModel/LazyDropdown.js +301 -52
  25. package/lib/components/subModel/index.d.ts +1 -0
  26. package/lib/components/subModel/index.js +19 -0
  27. package/lib/components/subModel/utils.d.ts +2 -1
  28. package/lib/components/subModel/utils.js +15 -5
  29. package/lib/components/variables/VariableHybridInput.d.ts +27 -0
  30. package/lib/components/variables/VariableHybridInput.js +499 -0
  31. package/lib/components/variables/index.d.ts +2 -0
  32. package/lib/components/variables/index.js +3 -0
  33. package/lib/data-source/index.d.ts +84 -0
  34. package/lib/data-source/index.js +269 -7
  35. package/lib/executor/FlowExecutor.js +6 -3
  36. package/lib/flow-registry/DetachedFlowRegistry.d.ts +21 -0
  37. package/lib/flow-registry/DetachedFlowRegistry.js +80 -0
  38. package/lib/flow-registry/index.d.ts +1 -0
  39. package/lib/flow-registry/index.js +3 -1
  40. package/lib/flowContext.d.ts +9 -1
  41. package/lib/flowContext.js +77 -6
  42. package/lib/flowEngine.d.ts +136 -4
  43. package/lib/flowEngine.js +429 -51
  44. package/lib/flowI18n.js +2 -1
  45. package/lib/flowSettings.d.ts +14 -6
  46. package/lib/flowSettings.js +34 -6
  47. package/lib/index.d.ts +2 -0
  48. package/lib/index.js +7 -0
  49. package/lib/lazy-helper.d.ts +14 -0
  50. package/lib/lazy-helper.js +71 -0
  51. package/lib/locale/en-US.json +1 -0
  52. package/lib/locale/index.d.ts +2 -0
  53. package/lib/locale/zh-CN.json +1 -0
  54. package/lib/models/DisplayItemModel.d.ts +1 -1
  55. package/lib/models/EditableItemModel.d.ts +1 -1
  56. package/lib/models/FilterableItemModel.d.ts +1 -1
  57. package/lib/models/flowModel.d.ts +13 -10
  58. package/lib/models/flowModel.js +126 -34
  59. package/lib/provider.js +38 -23
  60. package/lib/reactive/observer.js +46 -16
  61. package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +4 -3
  62. package/lib/runjs-context/contexts/JSBlockRunJSContext.js +4 -15
  63. package/lib/runjs-context/contexts/JSColumnRunJSContext.js +5 -2
  64. package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +5 -8
  65. package/lib/runjs-context/contexts/JSFieldRunJSContext.js +4 -3
  66. package/lib/runjs-context/contexts/JSItemRunJSContext.js +4 -3
  67. package/lib/runjs-context/contexts/base.js +464 -29
  68. package/lib/runjs-context/contexts/elementDoc.d.ts +11 -0
  69. package/lib/runjs-context/contexts/elementDoc.js +152 -0
  70. package/lib/runjs-context/setup.js +1 -0
  71. package/lib/runjs-context/snippets/index.js +13 -2
  72. package/lib/runjs-context/snippets/scene/detail/set-field-style.snippet.d.ts +11 -0
  73. package/lib/runjs-context/snippets/scene/detail/set-field-style.snippet.js +50 -0
  74. package/lib/runjs-context/snippets/scene/table/set-cell-style.snippet.d.ts +11 -0
  75. package/lib/runjs-context/snippets/scene/table/set-cell-style.snippet.js +54 -0
  76. package/lib/types.d.ts +50 -2
  77. package/lib/types.js +1 -0
  78. package/lib/utils/createCollectionContextMeta.js +6 -2
  79. package/lib/utils/index.d.ts +3 -2
  80. package/lib/utils/index.js +7 -0
  81. package/lib/utils/loadedPageCache.d.ts +24 -0
  82. package/lib/utils/loadedPageCache.js +139 -0
  83. package/lib/utils/parsePathnameToViewParams.d.ts +5 -1
  84. package/lib/utils/parsePathnameToViewParams.js +28 -4
  85. package/lib/utils/randomId.d.ts +39 -0
  86. package/lib/utils/randomId.js +45 -0
  87. package/lib/utils/runjsTemplateCompat.js +1 -1
  88. package/lib/utils/runjsValue.js +41 -11
  89. package/lib/utils/schema-utils.d.ts +7 -1
  90. package/lib/utils/schema-utils.js +19 -0
  91. package/lib/views/FlowView.d.ts +7 -1
  92. package/lib/views/FlowView.js +11 -1
  93. package/lib/views/PageComponent.js +8 -6
  94. package/lib/views/ViewNavigation.d.ts +12 -2
  95. package/lib/views/ViewNavigation.js +28 -9
  96. package/lib/views/createViewMeta.js +114 -50
  97. package/lib/views/inheritLayoutContext.d.ts +10 -0
  98. package/lib/views/inheritLayoutContext.js +50 -0
  99. package/lib/views/runViewBeforeClose.d.ts +10 -0
  100. package/lib/views/runViewBeforeClose.js +45 -0
  101. package/lib/views/useDialog.d.ts +2 -1
  102. package/lib/views/useDialog.js +12 -3
  103. package/lib/views/useDrawer.d.ts +2 -1
  104. package/lib/views/useDrawer.js +12 -3
  105. package/lib/views/usePage.d.ts +5 -11
  106. package/lib/views/usePage.js +304 -144
  107. package/package.json +5 -4
  108. package/src/FlowContextProvider.tsx +9 -1
  109. package/src/__tests__/createViewMeta.popup.test.ts +115 -1
  110. package/src/__tests__/flow-engine.test.ts +166 -0
  111. package/src/__tests__/flowContext.test.ts +105 -1
  112. package/src/__tests__/flowEngine.modelLoaders.test.ts +245 -0
  113. package/src/__tests__/flowEngine.moveModel.test.ts +81 -1
  114. package/src/__tests__/flowEngine.removeModel.test.ts +47 -3
  115. package/src/__tests__/flowSettings.test.ts +94 -15
  116. package/src/__tests__/objectVariable.test.ts +24 -0
  117. package/src/__tests__/provider.test.tsx +24 -2
  118. package/src/__tests__/renderHiddenInConfig.test.tsx +6 -6
  119. package/src/__tests__/runjsContext.test.ts +21 -0
  120. package/src/__tests__/runjsContextImplementations.test.ts +9 -2
  121. package/src/__tests__/runjsContextRuntime.test.ts +2 -0
  122. package/src/__tests__/runjsLocales.test.ts +6 -5
  123. package/src/__tests__/runjsSnippets.test.ts +21 -0
  124. package/src/__tests__/viewScopedFlowEngine.test.ts +136 -3
  125. package/src/components/FieldModelRenderer.tsx +2 -1
  126. package/src/components/FlowModelRenderer.tsx +18 -6
  127. package/src/components/FormItem.tsx +7 -1
  128. package/src/components/MobilePopup.tsx +4 -2
  129. package/src/components/__tests__/FlowModelRenderer.test.tsx +65 -2
  130. package/src/components/__tests__/FormItem.test.tsx +25 -0
  131. package/src/components/__tests__/dnd.test.ts +44 -0
  132. package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +20 -10
  133. package/src/components/__tests__/gridDragPlanner.test.ts +472 -5
  134. package/src/components/dnd/__tests__/DndProvider.test.tsx +98 -0
  135. package/src/components/dnd/gridDragPlanner.ts +750 -17
  136. package/src/components/dnd/index.tsx +305 -28
  137. package/src/components/settings/wrappers/component/SelectWithTitle.tsx +21 -9
  138. package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +178 -48
  139. package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +487 -440
  140. package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +344 -8
  141. package/src/components/settings/wrappers/contextual/__tests__/FlowsFloatContextMenu.test.tsx +778 -0
  142. package/src/components/settings/wrappers/contextual/useFloatToolbarPortal.ts +360 -0
  143. package/src/components/settings/wrappers/contextual/useFloatToolbarVisibility.ts +361 -0
  144. package/src/components/subModel/AddSubModelButton.tsx +16 -2
  145. package/src/components/subModel/LazyDropdown.tsx +341 -56
  146. package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +524 -38
  147. package/src/components/subModel/__tests__/utils.test.ts +24 -0
  148. package/src/components/subModel/index.ts +1 -0
  149. package/src/components/subModel/utils.ts +13 -2
  150. package/src/components/variables/VariableHybridInput.tsx +531 -0
  151. package/src/components/variables/index.ts +2 -0
  152. package/src/data-source/__tests__/collection.test.ts +41 -2
  153. package/src/data-source/__tests__/index.test.ts +69 -2
  154. package/src/data-source/index.ts +332 -8
  155. package/src/executor/FlowExecutor.ts +6 -3
  156. package/src/executor/__tests__/flowExecutor.test.ts +57 -0
  157. package/src/flow-registry/DetachedFlowRegistry.ts +46 -0
  158. package/src/flow-registry/__tests__/detachedFlowRegistry.test.ts +47 -0
  159. package/src/flow-registry/index.ts +1 -0
  160. package/src/flowContext.ts +85 -6
  161. package/src/flowEngine.ts +484 -45
  162. package/src/flowI18n.ts +2 -1
  163. package/src/flowSettings.ts +40 -6
  164. package/src/index.ts +2 -0
  165. package/src/lazy-helper.tsx +57 -0
  166. package/src/locale/en-US.json +1 -0
  167. package/src/locale/zh-CN.json +1 -0
  168. package/src/models/DisplayItemModel.tsx +1 -1
  169. package/src/models/EditableItemModel.tsx +1 -1
  170. package/src/models/FilterableItemModel.tsx +1 -1
  171. package/src/models/__tests__/flowEngine.resolveUse.test.ts +0 -15
  172. package/src/models/__tests__/flowModel.test.ts +65 -37
  173. package/src/models/flowModel.tsx +184 -65
  174. package/src/provider.tsx +41 -25
  175. package/src/reactive/__tests__/observer.test.tsx +82 -0
  176. package/src/reactive/observer.tsx +87 -25
  177. package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +4 -3
  178. package/src/runjs-context/contexts/JSBlockRunJSContext.ts +4 -15
  179. package/src/runjs-context/contexts/JSColumnRunJSContext.ts +4 -2
  180. package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +5 -9
  181. package/src/runjs-context/contexts/JSFieldRunJSContext.ts +4 -3
  182. package/src/runjs-context/contexts/JSItemRunJSContext.ts +4 -3
  183. package/src/runjs-context/contexts/base.ts +467 -31
  184. package/src/runjs-context/contexts/elementDoc.ts +130 -0
  185. package/src/runjs-context/setup.ts +1 -0
  186. package/src/runjs-context/snippets/index.ts +12 -1
  187. package/src/runjs-context/snippets/scene/detail/set-field-style.snippet.ts +30 -0
  188. package/src/runjs-context/snippets/scene/table/set-cell-style.snippet.ts +34 -0
  189. package/src/types.ts +62 -0
  190. package/src/utils/__tests__/createCollectionContextMeta.test.ts +48 -0
  191. package/src/utils/__tests__/parsePathnameToViewParams.test.ts +21 -0
  192. package/src/utils/__tests__/runjsValue.test.ts +11 -0
  193. package/src/utils/__tests__/utils.test.ts +62 -0
  194. package/src/utils/createCollectionContextMeta.ts +6 -2
  195. package/src/utils/index.ts +5 -1
  196. package/src/utils/loadedPageCache.ts +147 -0
  197. package/src/utils/parsePathnameToViewParams.ts +45 -5
  198. package/src/utils/randomId.ts +48 -0
  199. package/src/utils/runjsTemplateCompat.ts +1 -1
  200. package/src/utils/runjsValue.ts +50 -11
  201. package/src/utils/schema-utils.ts +30 -1
  202. package/src/views/FlowView.tsx +22 -2
  203. package/src/views/PageComponent.tsx +7 -4
  204. package/src/views/ViewNavigation.ts +46 -9
  205. package/src/views/__tests__/FlowView.usePage.test.tsx +243 -3
  206. package/src/views/__tests__/ViewNavigation.test.ts +52 -0
  207. package/src/views/__tests__/inheritLayoutContext.test.ts +53 -0
  208. package/src/views/__tests__/runViewBeforeClose.test.ts +30 -0
  209. package/src/views/__tests__/useDialog.closeDestroy.test.tsx +12 -12
  210. package/src/views/createViewMeta.ts +106 -34
  211. package/src/views/inheritLayoutContext.ts +26 -0
  212. package/src/views/runViewBeforeClose.ts +19 -0
  213. package/src/views/useDialog.tsx +13 -3
  214. package/src/views/useDrawer.tsx +13 -3
  215. package/src/views/usePage.tsx +367 -180
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import React from 'react';
10
10
  import { FlowContext, FlowEngineContext } from './flowContext';
11
- import { FlowView } from './views/FlowView';
11
+ import { FlowView, FlowViewer } from './views/FlowView';
12
12
  export declare const FlowReactContext: React.Context<FlowContext>;
13
13
  export declare const FlowViewContext: React.Context<FlowContext>;
14
14
  export declare function FlowContextProvider(props: {
@@ -22,3 +22,7 @@ export declare const FlowViewContextProvider: React.MemoExoticComponent<(props:
22
22
  export declare function useFlowContext<T = FlowEngineContext>(): T;
23
23
  export declare function useFlowViewContext<T = FlowEngineContext>(): T;
24
24
  export declare function useFlowView(): FlowView;
25
+ /**
26
+ * Access the `FlowViewer` that opens new drawers / modals / pages (`viewer.drawer({...})`, `viewer.modal({...})`, etc.). This is the counterpart to `useFlowView()`: `useFlowView()` returns the *current* mounted view (use it to close yourself, render Header/Footer slots, etc.), while `useFlowViewer()` returns the surface that lets you open a *new* view from inside any flow-context subtree.
27
+ */
28
+ export declare function useFlowViewer(): FlowViewer;
@@ -43,7 +43,8 @@ __export(FlowContextProvider_exports, {
43
43
  FlowViewContextProvider: () => FlowViewContextProvider,
44
44
  useFlowContext: () => useFlowContext,
45
45
  useFlowView: () => useFlowView,
46
- useFlowViewContext: () => useFlowViewContext
46
+ useFlowViewContext: () => useFlowViewContext,
47
+ useFlowViewer: () => useFlowViewer
47
48
  });
48
49
  module.exports = __toCommonJS(FlowContextProvider_exports);
49
50
  var import_react = __toESM(require("react"));
@@ -70,6 +71,11 @@ function useFlowView() {
70
71
  return ctx.view;
71
72
  }
72
73
  __name(useFlowView, "useFlowView");
74
+ function useFlowViewer() {
75
+ const ctx = useFlowContext();
76
+ return ctx.viewer;
77
+ }
78
+ __name(useFlowViewer, "useFlowViewer");
73
79
  // Annotate the CommonJS export names for ESM import in node:
74
80
  0 && (module.exports = {
75
81
  FlowContextProvider,
@@ -78,5 +84,6 @@ __name(useFlowView, "useFlowView");
78
84
  FlowViewContextProvider,
79
85
  useFlowContext,
80
86
  useFlowView,
81
- useFlowViewContext
87
+ useFlowViewContext,
88
+ useFlowViewer
82
89
  });
@@ -40,7 +40,7 @@ __export(FieldModelRenderer_exports, {
40
40
  FieldModelRenderer: () => FieldModelRenderer
41
41
  });
42
42
  module.exports = __toCommonJS(FieldModelRenderer_exports);
43
- var import_flow_engine = require("@nocobase/flow-engine");
43
+ var import_FlowModelRenderer = require("./FlowModelRenderer");
44
44
  var import_lodash = __toESM(require("lodash"));
45
45
  var import_react = __toESM(require("react"));
46
46
  const flowModelRendererPropKeys = [
@@ -93,7 +93,7 @@ function FieldModelRenderer(props) {
93
93
  (0, import_react.useEffect)(() => {
94
94
  model && model.setProps(modelProps);
95
95
  }, [modelProps]);
96
- return /* @__PURE__ */ import_react.default.createElement(import_flow_engine.FlowModelRenderer, { model, ...rest });
96
+ return /* @__PURE__ */ import_react.default.createElement(import_FlowModelRenderer.FlowModelRenderer, { model, ...rest });
97
97
  }
98
98
  __name(FieldModelRenderer, "FieldModelRenderer");
99
99
  // Annotate the CommonJS export names for ESM import in node:
@@ -19,7 +19,9 @@ export interface FlowModelRendererProps {
19
19
  showBackground?: boolean;
20
20
  showBorder?: boolean;
21
21
  showDragHandle?: boolean;
22
- /** 自定义工具栏样式 */
22
+ /** 是否显示事件流入口,默认 true */
23
+ showDynamicFlowsEditor?: boolean;
24
+ /** 自定义工具栏样式,`top/left/right/bottom` 会作为 portal overlay 的 inset 使用 */
23
25
  style?: React.CSSProperties;
24
26
  /**
25
27
  * @default 'inside'
@@ -61,11 +61,12 @@ const FlowModelRendererWithAutoFlows = (0, import_reactive.observer)(
61
61
  showErrorFallback,
62
62
  settingsMenuLevel,
63
63
  extraToolbarItems,
64
- fallback
64
+ fallback,
65
+ useCache
65
66
  }) => {
66
67
  const { loading: pending, error: autoFlowsError } = (0, import_hooks.useApplyAutoFlows)(model, inputArgs, {
67
68
  throwOnError: false,
68
- useCache: model.context.useCache
69
+ useCache
69
70
  });
70
71
  (0, import_utils.setAutoFlowError)(model, autoFlowsError || null);
71
72
  if (pending) {
@@ -134,6 +135,7 @@ const FlowModelRendererCore = (0, import_reactive.observer)(
134
135
  showBackground: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showBackground : void 0,
135
136
  showBorder: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showBorder : void 0,
136
137
  showDragHandle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showDragHandle : void 0,
138
+ showDynamicFlowsEditor: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showDynamicFlowsEditor : void 0,
137
139
  settingsMenuLevel,
138
140
  extraToolbarItems,
139
141
  toolbarStyle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.style : void 0,
@@ -166,6 +168,7 @@ const FlowModelRendererCore = (0, import_reactive.observer)(
166
168
  showBackground: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showBackground : void 0,
167
169
  showBorder: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showBorder : void 0,
168
170
  showDragHandle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showDragHandle : void 0,
171
+ showDynamicFlowsEditor: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.showDynamicFlowsEditor : void 0,
169
172
  settingsMenuLevel,
170
173
  extraToolbarItems,
171
174
  toolbarStyle: import_lodash.default.isObject(showFlowSettings) ? showFlowSettings.style : void 0,
@@ -195,13 +198,15 @@ const FlowModelRenderer = (0, import_reactive.observer)(
195
198
  extraToolbarItems,
196
199
  useCache
197
200
  }) => {
201
+ var _a;
202
+ const resolvedUseCache = typeof useCache === "boolean" ? useCache : (_a = model == null ? void 0 : model.context) == null ? void 0 : _a.useCache;
198
203
  (0, import_react.useEffect)(() => {
199
- if (model == null ? void 0 : model.context) {
204
+ if ((model == null ? void 0 : model.context) && typeof resolvedUseCache !== "undefined") {
200
205
  model.context.defineProperty("useCache", {
201
- value: typeof useCache === "boolean" ? useCache : model.context.useCache
206
+ value: resolvedUseCache
202
207
  });
203
208
  }
204
- }, [model == null ? void 0 : model.context, useCache]);
209
+ }, [model == null ? void 0 : model.context, resolvedUseCache]);
205
210
  if (!model || typeof model.render !== "function") {
206
211
  console.warn("FlowModelRenderer: Invalid model or render method not found.", model);
207
212
  return null;
@@ -218,7 +223,8 @@ const FlowModelRenderer = (0, import_reactive.observer)(
218
223
  showErrorFallback,
219
224
  settingsMenuLevel,
220
225
  extraToolbarItems,
221
- fallback
226
+ fallback,
227
+ useCache: resolvedUseCache
222
228
  }
223
229
  );
224
230
  if (showErrorFallback) {
@@ -14,5 +14,11 @@ interface ExtendedFormItemProps extends FormItemProps {
14
14
  labelWrap?: boolean;
15
15
  showLabel?: boolean;
16
16
  }
17
+ export declare const verticalFormItemLabelStyle: {
18
+ paddingBottom: number;
19
+ };
20
+ export declare const formItemStyle: {
21
+ marginBottom: number;
22
+ };
17
23
  export declare const FormItem: ({ children, showLabel, labelWidth, ...rest }: ExtendedFormItemProps & ChildExtraProps) => React.JSX.Element;
18
24
  export {};
@@ -37,11 +37,15 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
37
37
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
38
  var FormItem_exports = {};
39
39
  __export(FormItem_exports, {
40
- FormItem: () => FormItem
40
+ FormItem: () => FormItem,
41
+ formItemStyle: () => formItemStyle,
42
+ verticalFormItemLabelStyle: () => verticalFormItemLabelStyle
41
43
  });
42
44
  module.exports = __toCommonJS(FormItem_exports);
43
45
  var import_react = __toESM(require("react"));
44
46
  var import_antd = require("antd");
47
+ const verticalFormItemLabelStyle = { paddingBottom: 0 };
48
+ const formItemStyle = { marginBottom: 12 };
45
49
  const formItemPropKeys = [
46
50
  "colon",
47
51
  "dependencies",
@@ -90,6 +94,7 @@ const FormItem = /* @__PURE__ */ __name(({
90
94
  });
91
95
  const { label, labelWrap, colon = true, layout } = rest;
92
96
  const effectiveLabelWrap = !layout || layout === "vertical" ? true : labelWrap;
97
+ const labelColStyle = layout === "vertical" ? { width: labelWidth, ...verticalFormItemLabelStyle } : { width: labelWidth };
93
98
  const renderLabel = /* @__PURE__ */ __name(() => {
94
99
  if (!showLabel) return null;
95
100
  if (effectiveLabelWrap) {
@@ -132,7 +137,8 @@ const FormItem = /* @__PURE__ */ __name(({
132
137
  import_antd.Form.Item,
133
138
  {
134
139
  ...rest,
135
- labelCol: { style: { width: labelWidth } },
140
+ style: { ...formItemStyle, ...rest.style },
141
+ labelCol: { style: labelColStyle },
136
142
  layout,
137
143
  label: renderLabel(),
138
144
  colon: false,
@@ -147,5 +153,7 @@ const FormItem = /* @__PURE__ */ __name(({
147
153
  }, "FormItem");
148
154
  // Annotate the CommonJS export names for ESM import in node:
149
155
  0 && (module.exports = {
150
- FormItem
156
+ FormItem,
157
+ formItemStyle,
158
+ verticalFormItemLabelStyle
151
159
  });
@@ -41,11 +41,12 @@ __export(MobilePopup_exports, {
41
41
  });
42
42
  module.exports = __toCommonJS(MobilePopup_exports);
43
43
  var import_antd = require("antd");
44
- var import_antd_mobile = require("antd-mobile");
45
44
  var import_react = __toESM(require("react"));
46
- var import_antd_mobile_icons = require("antd-mobile-icons");
47
45
  var import_MobilePopup = require("./MobilePopup.style");
48
46
  var import_react_i18next = require("react-i18next");
47
+ var import_lazy_helper = require("../lazy-helper");
48
+ const { Popup } = (0, import_lazy_helper.lazy)(() => import("antd-mobile"), "Popup");
49
+ const { CloseOutline } = (0, import_lazy_helper.lazy)(() => import("antd-mobile-icons"), "CloseOutline");
49
50
  const MobilePopup = /* @__PURE__ */ __name((props) => {
50
51
  const { title, visible, onClose: closePopup, children, minHeight, className, footer } = props;
51
52
  const { t } = (0, import_react_i18next.useTranslation)();
@@ -67,7 +68,7 @@ const MobilePopup = /* @__PURE__ */ __name((props) => {
67
68
  };
68
69
  }, []);
69
70
  return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { theme }, /* @__PURE__ */ import_react.default.createElement(
70
- import_antd_mobile.Popup,
71
+ Popup,
71
72
  {
72
73
  className: `${componentCls} ${hashId} ${className || ""}`,
73
74
  visible,
@@ -81,7 +82,7 @@ const MobilePopup = /* @__PURE__ */ __name((props) => {
81
82
  style,
82
83
  destroyOnClose: true
83
84
  },
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
+ /* @__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(CloseOutline, null)), /* @__PURE__ */ import_react.default.createElement("span", null, title), /* @__PURE__ */ import_react.default.createElement(
85
86
  "span",
86
87
  {
87
88
  className: "nb-mobile-action-drawer-close-icon",
@@ -90,7 +91,7 @@ const MobilePopup = /* @__PURE__ */ __name((props) => {
90
91
  tabIndex: 0,
91
92
  "aria-label": t("Close")
92
93
  },
93
- /* @__PURE__ */ import_react.default.createElement(import_antd_mobile_icons.CloseOutline, null)
94
+ /* @__PURE__ */ import_react.default.createElement(CloseOutline, null)
94
95
  )),
95
96
  children,
96
97
  footer && /* @__PURE__ */ import_react.default.createElement("div", { className: "nb-mobile-action-drawer-footer" }, footer)
@@ -32,6 +32,33 @@ export interface GridLayoutData {
32
32
  rows: Record<string, string[][]>;
33
33
  sizes: Record<string, number[]>;
34
34
  rowOrder?: string[];
35
+ layout?: GridLayoutV2;
36
+ }
37
+ export interface GridLayoutV2 {
38
+ version: 2;
39
+ rows: GridRowV2[];
40
+ }
41
+ export interface GridRowV2 {
42
+ id: string;
43
+ cells: GridCellV2[];
44
+ sizes: number[];
45
+ }
46
+ export interface GridCellV2 {
47
+ id: string;
48
+ items?: string[];
49
+ rows?: GridRowV2[];
50
+ }
51
+ export interface GridLayoutPathEntry {
52
+ rowId: string;
53
+ cellId?: string;
54
+ }
55
+ export type GridLayoutPath = GridLayoutPathEntry[];
56
+ export interface GridLayoutPosition {
57
+ path: GridLayoutPath;
58
+ rowIndex: number;
59
+ cellIndex: number;
60
+ itemIndex: number;
61
+ itemUid: string;
35
62
  }
36
63
  export interface ColumnSlot {
37
64
  type: 'column';
@@ -40,6 +67,7 @@ export interface ColumnSlot {
40
67
  insertIndex: number;
41
68
  position: 'before' | 'after';
42
69
  rect: Rect;
70
+ path?: GridLayoutPath;
43
71
  }
44
72
  export interface ColumnEdgeSlot {
45
73
  type: 'column-edge';
@@ -47,12 +75,14 @@ export interface ColumnEdgeSlot {
47
75
  columnIndex: number;
48
76
  direction: 'left' | 'right';
49
77
  rect: Rect;
78
+ path?: GridLayoutPath;
50
79
  }
51
80
  export interface RowGapSlot {
52
81
  type: 'row-gap';
53
82
  targetRowId: string;
54
83
  position: 'above' | 'below';
55
84
  rect: Rect;
85
+ path?: GridLayoutPath;
56
86
  }
57
87
  export interface EmptyRowSlot {
58
88
  type: 'empty-row';
@@ -63,8 +93,19 @@ export interface EmptyColumnSlot {
63
93
  rowId: string;
64
94
  columnIndex: number;
65
95
  rect: Rect;
96
+ path?: GridLayoutPath;
66
97
  }
67
- export type LayoutSlot = ColumnSlot | ColumnEdgeSlot | RowGapSlot | EmptyRowSlot | EmptyColumnSlot;
98
+ export interface ItemEdgeSlot {
99
+ type: 'item-edge';
100
+ rowId: string;
101
+ columnIndex: number;
102
+ itemIndex: number;
103
+ itemUid: string;
104
+ direction: 'left' | 'right';
105
+ rect: Rect;
106
+ path?: GridLayoutPath;
107
+ }
108
+ export type LayoutSlot = ColumnSlot | ColumnEdgeSlot | RowGapSlot | EmptyRowSlot | EmptyColumnSlot | ItemEdgeSlot;
68
109
  /**
69
110
  * 列内插入的配置
70
111
  */
@@ -122,10 +163,26 @@ export interface BuildLayoutSnapshotOptions {
122
163
  export declare const buildLayoutSnapshot: ({ container }: BuildLayoutSnapshotOptions) => LayoutSnapshot;
123
164
  export declare const getSlotKey: (slot: LayoutSlot) => string;
124
165
  export declare const resolveDropIntent: (point: Point, slots: LayoutSlot[]) => LayoutSlot | null;
166
+ export declare const projectLayoutToLegacyRows: (layout: GridLayoutV2) => GridLayoutData;
167
+ export declare const normalizeGridLayout: ({ layout, rows, sizes, rowOrder, itemUids, generateId, logger, gridUid, }: {
168
+ layout?: GridLayoutV2 | null;
169
+ rows?: Record<string, string[][]>;
170
+ sizes?: Record<string, number[]>;
171
+ rowOrder?: string[];
172
+ itemUids?: string[];
173
+ generateId?: () => string;
174
+ logger?: Pick<Console, 'warn'>;
175
+ gridUid?: string;
176
+ }) => GridLayoutV2;
177
+ export declare const replaceUidInGridLayout: (layout: GridLayoutV2, fromUid: string, toUid: string) => GridLayoutV2;
178
+ export declare const findModelUidLayoutPosition: (layout: GridLayoutV2, uidValue: string) => GridLayoutPosition | null;
179
+ export declare const isSameGridLayout: (a: GridLayoutV2, b: GridLayoutV2) => boolean;
125
180
  export interface SimulateLayoutOptions {
126
181
  slot: LayoutSlot;
127
182
  sourceUid: string;
128
183
  layout: GridLayoutData;
129
184
  generateRowId?: () => string;
185
+ generatedIds?: Map<string, string>;
186
+ generateId?: (key: string) => string;
130
187
  }
131
- export declare const simulateLayoutForSlot: ({ slot, sourceUid, layout, generateRowId, }: SimulateLayoutOptions) => GridLayoutData;
188
+ export declare const simulateLayoutForSlot: ({ slot, sourceUid, layout, generateRowId, generatedIds, generateId, }: SimulateLayoutOptions) => GridLayoutData;