@nocobase/flow-engine 2.0.0-alpha.7 → 2.0.0-alpha.71
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.
- package/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +91 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +6 -4
- package/lib/JSRunner.d.ts +6 -0
- package/lib/JSRunner.js +27 -1
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/ViewScopedFlowEngine.js +18 -1
- package/lib/acl/Acl.d.ts +12 -12
- package/lib/acl/Acl.js +88 -30
- package/lib/components/DynamicFlowsEditor.js +2 -4
- package/lib/components/FieldModelRenderer.js +17 -9
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +19 -3
- package/lib/components/FlowModelRenderer.d.ts +4 -6
- package/lib/components/FlowModelRenderer.js +35 -53
- package/lib/components/FormItem.js +5 -1
- package/lib/components/MobilePopup.d.ts +20 -0
- package/lib/components/MobilePopup.js +102 -0
- package/lib/components/MobilePopup.style.d.ts +17 -0
- package/lib/components/MobilePopup.style.js +186 -0
- package/lib/components/common/withFlowDesignMode.d.ts +1 -1
- package/lib/components/common/withFlowDesignMode.js +5 -5
- package/lib/components/dnd/gridDragPlanner.d.ts +1 -0
- package/lib/components/dnd/gridDragPlanner.js +53 -1
- package/lib/components/index.d.ts +1 -0
- package/lib/components/index.js +3 -1
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +71 -53
- package/lib/components/settings/wrappers/component/SelectWithTitle.d.ts +19 -0
- package/lib/components/settings/wrappers/component/SelectWithTitle.js +136 -0
- package/lib/components/settings/wrappers/component/SwitchWithTitle.d.ts +10 -0
- package/lib/components/settings/wrappers/component/SwitchWithTitle.js +111 -0
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +233 -97
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +71 -54
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +63 -23
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +13 -2
- package/lib/components/settings/wrappers/embedded/FlowSettings.js +42 -28
- package/lib/components/settings/wrappers/embedded/FlowsSettings.js +3 -3
- package/lib/components/settings/wrappers/embedded/FlowsSettingsContent.js +52 -32
- package/lib/components/subModel/AddSubModelButton.d.ts +7 -0
- package/lib/components/subModel/AddSubModelButton.js +78 -8
- package/lib/components/subModel/LazyDropdown.js +14 -15
- package/lib/components/subModel/utils.d.ts +1 -1
- package/lib/components/subModel/utils.js +21 -11
- package/lib/components/variables/VariableInput.js +26 -6
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/components/variables/utils.js +4 -2
- package/lib/data-source/index.d.ts +23 -4
- package/lib/data-source/index.js +135 -14
- package/lib/data-source/jioToJoiSchema.js +1 -0
- package/lib/emitter.d.ts +6 -0
- package/lib/emitter.js +12 -0
- package/lib/executor/FlowExecutor.d.ts +6 -6
- package/lib/executor/FlowExecutor.js +302 -99
- package/lib/flow-registry/GlobalFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/GlobalFlowRegistry.js +3 -0
- package/lib/flow-registry/InstanceFlowRegistry.d.ts +1 -0
- package/lib/flow-registry/InstanceFlowRegistry.js +3 -0
- package/lib/flowContext.d.ts +105 -6
- package/lib/flowContext.js +447 -139
- package/lib/flowEngine.d.ts +71 -1
- package/lib/flowEngine.js +319 -16
- package/lib/flowSettings.d.ts +4 -3
- package/lib/flowSettings.js +45 -21
- package/lib/hooks/useApplyAutoFlows.d.ts +1 -0
- package/lib/hooks/useApplyAutoFlows.js +3 -2
- package/lib/index.d.ts +14 -3
- package/lib/index.js +54 -7
- package/lib/locale/de-DE.json +62 -0
- package/lib/locale/en-US.json +57 -45
- package/lib/locale/es-ES.json +62 -0
- package/lib/locale/fr-FR.json +62 -0
- package/lib/locale/hu-HU.json +62 -0
- package/lib/locale/id-ID.json +62 -0
- package/lib/locale/index.d.ts +114 -90
- package/lib/locale/it-IT.json +62 -0
- package/lib/locale/ja-JP.json +62 -0
- package/lib/locale/ko-KR.json +62 -0
- package/lib/locale/nl-NL.json +62 -0
- package/lib/locale/pt-BR.json +62 -0
- package/lib/locale/ru-RU.json +62 -0
- package/lib/locale/tr-TR.json +62 -0
- package/lib/locale/uk-UA.json +62 -0
- package/lib/locale/vi-VN.json +62 -0
- package/lib/locale/zh-CN.json +58 -46
- package/lib/locale/zh-TW.json +62 -0
- package/lib/models/CollectionFieldModel.d.ts +7 -2
- package/lib/models/CollectionFieldModel.js +63 -16
- package/lib/models/flowModel.d.ts +76 -32
- package/lib/models/flowModel.js +300 -112
- package/lib/models/forkFlowModel.d.ts +8 -4
- package/lib/models/forkFlowModel.js +38 -8
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +14 -11
- package/lib/reactive/index.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/api-request-post.snippet.js → reactive/index.js} +14 -15
- package/lib/reactive/observer.d.ts +19 -0
- package/lib/reactive/observer.js +109 -0
- package/lib/resources/baseRecordResource.d.ts +6 -0
- package/lib/resources/baseRecordResource.js +38 -3
- package/lib/resources/multiRecordResource.d.ts +5 -2
- package/lib/resources/multiRecordResource.js +26 -10
- package/lib/resources/singleRecordResource.js +8 -3
- package/lib/resources/sqlResource.d.ts +5 -3
- package/lib/resources/sqlResource.js +30 -28
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +37 -20
- package/lib/runjs-context/contexts/JSBlockRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSBlockRunJSContext.js +46 -33
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSCollectionActionRunJSContext.js +14 -15
- package/lib/runjs-context/contexts/{LinkageRunJSContext.d.ts → JSColumnRunJSContext.d.ts} +6 -3
- package/lib/runjs-context/contexts/JSColumnRunJSContext.js +78 -0
- package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.d.ts +16 -0
- package/lib/runjs-context/contexts/JSEditableFieldRunJSContext.js +125 -0
- package/lib/runjs-context/contexts/JSFieldRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSFieldRunJSContext.js +28 -24
- package/lib/runjs-context/contexts/JSItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/JSItemRunJSContext.js +34 -20
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.d.ts +1 -2
- package/lib/runjs-context/contexts/JSRecordActionRunJSContext.js +16 -17
- package/lib/runjs-context/contexts/base.d.ts +9 -0
- package/lib/runjs-context/contexts/base.js +879 -0
- package/lib/runjs-context/contributions.d.ts +33 -0
- package/lib/runjs-context/contributions.js +88 -0
- package/lib/runjs-context/helpers.d.ts +5 -2
- package/lib/runjs-context/helpers.js +36 -27
- package/lib/runjs-context/registry.d.ts +7 -4
- package/lib/runjs-context/registry.js +10 -42
- package/lib/runjs-context/setup.d.ts +9 -0
- package/lib/runjs-context/setup.js +88 -0
- package/lib/runjs-context/snippets/global/{copy-record-json.snippet.js → api-request.snippet.js} +25 -10
- package/lib/runjs-context/snippets/global/clipboard-copy-text.snippet.js +61 -0
- package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.js → import-esm.snippet.js} +26 -12
- package/lib/runjs-context/snippets/global/message-error.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/message-success.snippet.js +6 -0
- package/lib/runjs-context/snippets/global/notification-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/notification-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/global/open-view-dialog.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/open-view-drawer.snippet.js +10 -3
- package/lib/runjs-context/snippets/global/query-selector.snippet.js +53 -0
- package/lib/runjs-context/snippets/global/require-amd.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/global/{requireAsync.snippet.js → require-amd.snippet.js} +16 -13
- package/lib/runjs-context/snippets/global/window-open.snippet.d.ts +3 -8
- package/lib/runjs-context/snippets/global/window-open.snippet.js +8 -1
- package/lib/runjs-context/snippets/index.d.ts +24 -3
- package/lib/runjs-context/snippets/index.js +183 -40
- package/lib/runjs-context/snippets/scene/block/add-event-listener.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/chartjs-bar.snippet.js +99 -0
- package/lib/runjs-context/snippets/{libs → scene/block}/echarts-init.snippet.js +24 -7
- package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-antd-icons.snippet.js +65 -0
- package/lib/runjs-context/snippets/scene/block/render-button-handler.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-button-handler.snippet.js +17 -9
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-iframe.snippet.js +57 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-info-card.snippet.js +71 -0
- package/lib/runjs-context/snippets/scene/block/render-react-jsx.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.js → block/render-react-jsx.snippet.js} +26 -13
- package/lib/runjs-context/snippets/scene/block/render-react.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsblock → block}/render-react.snippet.js +18 -17
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-statistics.snippet.js +95 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/render-timeline.snippet.js +84 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/resource-example.snippet.js +60 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/three-users-orbit.snippet.js +283 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/block/vue-component.snippet.js +124 -0
- package/lib/runjs-context/snippets/scene/detail/color-by-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/color-by-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global → scene/detail}/copy-to-clipboard.snippet.js +28 -6
- package/lib/runjs-context/snippets/scene/detail/format-number.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/format-number.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/innerHTML-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsfield → detail}/innerHTML-value.snippet.js +13 -3
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/percentage-bar.snippet.js +82 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/relative-time.snippet.js +80 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/detail/status-tag.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/calculate-total.snippet.js +63 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/cascade-select.snippet.js +81 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/conditional-required.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/copy-field-values.snippet.js +74 -0
- package/lib/runjs-context/snippets/scene/form/render-basic.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/form/set-disabled.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-field-value.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/set-required.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.js +67 -0
- package/lib/runjs-context/snippets/scene/form/toggle-visible.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.js +12 -3
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/cell-open-dialog.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/collection-selected-count.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.js +11 -2
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/concat-fields.snippet.js +79 -0
- package/lib/runjs-context/snippets/scene/table/destroy-selected.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/{global/log-json-record.snippet.js → scene/table/destroy-selected.snippet.js} +24 -11
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/table/export-selected-json.snippet.js +64 -0
- package/lib/runjs-context/snippets/scene/table/iterate-selected-rows.snippet.d.ts +11 -0
- package/lib/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.js +11 -2
- package/lib/runjs-context/snippets/types.d.ts +9 -1
- package/lib/runjsLibs.d.ts +28 -0
- package/lib/runjsLibs.js +532 -0
- package/lib/scheduler/ModelOperationScheduler.d.ts +53 -0
- package/lib/scheduler/ModelOperationScheduler.js +262 -0
- package/lib/types.d.ts +66 -7
- package/lib/types.js +4 -3
- package/lib/utils/associationObjectVariable.d.ts +32 -0
- package/lib/utils/associationObjectVariable.js +157 -0
- package/lib/utils/createCollectionContextMeta.d.ts +1 -1
- package/lib/utils/createCollectionContextMeta.js +9 -4
- package/lib/utils/createEphemeralContext.d.ts +13 -0
- package/lib/utils/createEphemeralContext.js +140 -0
- package/lib/utils/flows.d.ts +10 -0
- package/lib/{runjs-context/snippets/global/console-log-ctx.snippet.js → utils/flows.js} +21 -14
- package/lib/utils/index.d.ts +9 -3
- package/lib/utils/index.js +30 -2
- package/lib/utils/jsxTransform.d.ts +15 -0
- package/lib/utils/jsxTransform.js +68 -0
- package/lib/utils/params-resolvers.js +19 -12
- package/lib/utils/parsePathnameToViewParams.d.ts +1 -1
- package/lib/utils/parsePathnameToViewParams.js +41 -5
- package/lib/utils/pruneFilter.d.ts +21 -0
- package/lib/{runjs-context/snippets/global/try-catch-async.snippet.js → utils/pruneFilter.js} +24 -16
- package/lib/utils/resolveModuleUrl.d.ts +58 -0
- package/lib/utils/resolveModuleUrl.js +65 -0
- package/lib/utils/runjsModuleLoader.d.ts +58 -0
- package/lib/utils/runjsModuleLoader.js +422 -0
- package/lib/utils/runjsTemplateCompat.d.ts +35 -0
- package/lib/utils/runjsTemplateCompat.js +743 -0
- package/lib/utils/safeGlobals.d.ts +6 -8
- package/lib/utils/safeGlobals.js +169 -14
- package/lib/utils/schema-utils.d.ts +6 -0
- package/lib/utils/schema-utils.js +71 -6
- package/lib/utils/serverContextParams.d.ts +4 -0
- package/lib/utils/serverContextParams.js +2 -0
- package/lib/utils/translation.d.ts +4 -1
- package/lib/utils/translation.js +6 -2
- package/lib/utils/variablesParams.d.ts +22 -5
- package/lib/utils/variablesParams.js +141 -61
- package/lib/views/DialogComponent.js +1 -5
- package/lib/views/DrawerComponent.js +18 -9
- package/lib/views/PageComponent.js +5 -5
- package/lib/views/ViewNavigation.d.ts +11 -15
- package/lib/views/ViewNavigation.js +37 -19
- package/lib/views/createViewMeta.d.ts +27 -5
- package/lib/views/createViewMeta.js +338 -72
- package/lib/views/index.d.ts +1 -1
- package/lib/views/index.js +4 -0
- package/lib/views/useDialog.d.ts +10 -9
- package/lib/views/useDialog.js +46 -34
- package/lib/views/useDrawer.d.ts +10 -9
- package/lib/views/useDrawer.js +74 -48
- package/lib/views/usePage.d.ts +14 -9
- package/lib/views/usePage.js +82 -33
- package/lib/views/usePopover.js +4 -1
- package/lib/views/viewEvents.d.ts +17 -0
- package/lib/views/viewEvents.js +90 -0
- package/package.json +6 -3
- package/src/BlockScopedFlowEngine.ts +85 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +39 -1
- package/src/ViewScopedFlowEngine.ts +21 -1
- package/src/__tests__/JSRunner.test.ts +125 -52
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/createViewMeta.popup.test.ts +203 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContext.test.ts +160 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.dataSourceDirty.test.ts +63 -0
- package/src/__tests__/flowEngine.destroyModel.test.ts +74 -0
- package/src/__tests__/flowEngine.moveModel.test.ts +43 -0
- package/src/__tests__/flowEngine.removeModel.test.ts +72 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowModel.openView.navigation.test.ts +31 -2
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/flowSettings.open.test.tsx +71 -15
- package/src/__tests__/flowSettings.test.ts +2 -0
- package/src/__tests__/globalFlowRegistry.test.ts +1 -1
- package/src/__tests__/modelOperationScheduler.test.ts +346 -0
- package/src/__tests__/objectVariable.test.ts +464 -0
- package/src/__tests__/provider.test.tsx +0 -5
- package/src/__tests__/runjsContext.test.ts +219 -35
- package/src/__tests__/runjsContextImplementations.test.ts +217 -0
- package/src/__tests__/runjsContextRuntime.test.ts +269 -0
- package/src/__tests__/runjsEdgeCases.test.ts +281 -0
- package/src/__tests__/runjsExternalLibs.test.ts +242 -0
- package/src/__tests__/runjsLibsLazyLoading.test.ts +44 -0
- package/src/__tests__/runjsLocales.test.ts +39 -0
- package/src/__tests__/runjsPreprocessDefault.test.ts +49 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +101 -3
- package/src/acl/Acl.tsx +85 -31
- package/src/acl/__tests__/Acl.test.tsx +43 -1
- package/src/components/DynamicFlowsEditor.tsx +0 -10
- package/src/components/FieldModelRenderer.tsx +22 -9
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +20 -2
- package/src/components/FlowModelRenderer.tsx +52 -84
- package/src/components/FormItem.tsx +8 -1
- package/src/components/MobilePopup.style.ts +220 -0
- package/src/components/MobilePopup.tsx +86 -0
- package/src/components/__tests__/FlowModelRenderer.test.tsx +89 -0
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +6 -6
- package/src/components/__tests__/gridDragPlanner.test.ts +141 -1
- package/src/components/common/withFlowDesignMode.tsx +5 -5
- package/src/components/dnd/gridDragPlanner.ts +60 -0
- package/src/components/index.ts +1 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +34 -17
- package/src/components/settings/wrappers/component/SelectWithTitle.tsx +110 -0
- package/src/components/settings/wrappers/component/SwitchWithTitle.tsx +83 -0
- package/src/components/settings/wrappers/component/__tests__/InlineControls.test.tsx +74 -0
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +272 -125
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +34 -18
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +56 -18
- package/src/components/settings/wrappers/contextual/StepSettings.tsx +1 -2
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +13 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +624 -0
- package/src/components/settings/wrappers/embedded/FlowSettings.tsx +47 -35
- package/src/components/settings/wrappers/embedded/FlowsSettings.tsx +1 -1
- package/src/components/settings/wrappers/embedded/FlowsSettingsContent.tsx +64 -42
- package/src/components/subModel/AddSubModelButton.tsx +104 -9
- package/src/components/subModel/LazyDropdown.tsx +14 -14
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +168 -7
- package/src/components/subModel/__tests__/utils.test.ts +12 -12
- package/src/components/subModel/utils.ts +25 -6
- package/src/components/variables/VariableInput.tsx +32 -6
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/components/variables/utils.ts +7 -3
- package/src/data-source/index.ts +143 -12
- package/src/data-source/jioToJoiSchema.ts +1 -0
- package/src/emitter.ts +14 -0
- package/src/executor/FlowExecutor.ts +383 -119
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +217 -5
- package/src/flow-registry/GlobalFlowRegistry.ts +1 -0
- package/src/flow-registry/InstanceFlowRegistry.ts +1 -0
- package/src/flow-registry/__tests__/globalFlowRegistry.test.ts +54 -0
- package/src/flowContext.ts +646 -158
- package/src/flowEngine.ts +385 -14
- package/src/flowSettings.ts +59 -30
- package/src/hooks/useApplyAutoFlows.ts +5 -3
- package/src/index.ts +26 -3
- package/src/locale/de-DE.json +62 -0
- package/src/locale/en-US.json +57 -45
- package/src/locale/es-ES.json +62 -0
- package/src/locale/fr-FR.json +62 -0
- package/src/locale/hu-HU.json +62 -0
- package/src/locale/id-ID.json +62 -0
- package/src/locale/it-IT.json +62 -0
- package/src/locale/ja-JP.json +62 -0
- package/src/locale/ko-KR.json +62 -0
- package/src/locale/nl-NL.json +62 -0
- package/src/locale/pt-BR.json +62 -0
- package/src/locale/ru-RU.json +62 -0
- package/src/locale/tr-TR.json +62 -0
- package/src/locale/uk-UA.json +62 -0
- package/src/locale/vi-VN.json +62 -0
- package/src/locale/zh-CN.json +58 -46
- package/src/locale/zh-TW.json +62 -0
- package/src/models/CollectionFieldModel.tsx +82 -18
- package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -0
- package/src/models/__tests__/dispatchEvent.when.test.ts +356 -0
- package/src/models/__tests__/flowEngine.resolveUse.test.ts +170 -0
- package/src/models/__tests__/flowModel.clone.test.ts +416 -0
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +33 -9
- package/src/models/__tests__/flowModel.scheduleModelOperation.test.tsx +129 -0
- package/src/models/__tests__/flowModel.test.ts +296 -119
- package/src/models/__tests__/forkFlowModel.test.ts +40 -7
- package/src/models/flowModel.tsx +426 -148
- package/src/models/forkFlowModel.ts +48 -8
- package/src/provider.tsx +18 -14
- package/src/reactive/__tests__/observer.test.tsx +211 -0
- package/src/reactive/index.ts +11 -0
- package/src/reactive/observer.tsx +101 -0
- package/src/resources/__tests__/multiRecordResource.test.ts +44 -0
- package/src/resources/__tests__/sqlResource.test.ts +60 -0
- package/src/resources/baseRecordResource.ts +46 -3
- package/src/resources/multiRecordResource.ts +28 -12
- package/src/resources/singleRecordResource.ts +9 -3
- package/src/resources/sqlResource.ts +33 -32
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +38 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +50 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSEditableFieldRunJSContext.ts +106 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +35 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +871 -0
- package/src/runjs-context/contributions.ts +88 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +57 -0
- package/src/runjs-context/snippets/global/api-request.snippet.ts +38 -0
- package/src/runjs-context/snippets/global/clipboard-copy-text.snippet.ts +42 -0
- package/src/runjs-context/snippets/global/import-esm.snippet.ts +39 -0
- package/src/runjs-context/snippets/global/message-error.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/message-success.snippet.ts +6 -0
- package/src/runjs-context/snippets/global/notification-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/global/open-view-dialog.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/open-view-drawer.snippet.ts +10 -3
- package/src/runjs-context/snippets/global/query-selector.snippet.ts +34 -0
- package/src/runjs-context/snippets/global/require-amd.snippet.ts +30 -0
- package/src/runjs-context/snippets/global/window-open.snippet.ts +11 -1
- package/src/runjs-context/snippets/index.ts +212 -39
- package/src/runjs-context/snippets/scene/{jsblock → block}/add-event-listener.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/block/api-fetch-render-list.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/block/chartjs-bar.snippet.ts +80 -0
- package/src/runjs-context/snippets/scene/block/echarts-init.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/block/render-antd-icons.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/render-button-handler.snippet.ts +35 -0
- package/src/runjs-context/snippets/scene/block/render-iframe.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-info-card.snippet.ts +52 -0
- package/src/runjs-context/snippets/scene/block/render-react-jsx.snippet.ts +39 -0
- package/src/runjs-context/snippets/scene/block/render-react.snippet.ts +38 -0
- package/src/runjs-context/snippets/scene/block/render-statistics.snippet.ts +76 -0
- package/src/runjs-context/snippets/scene/block/render-timeline.snippet.ts +65 -0
- package/src/runjs-context/snippets/scene/block/resource-example.snippet.ts +46 -0
- package/src/runjs-context/snippets/scene/block/three-users-orbit.snippet.ts +264 -0
- package/src/runjs-context/snippets/scene/block/vue-component.snippet.ts +105 -0
- package/src/runjs-context/snippets/scene/detail/color-by-value.snippet.ts +33 -0
- package/src/runjs-context/snippets/scene/detail/copy-to-clipboard.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/detail/format-number.snippet.ts +32 -0
- package/src/runjs-context/snippets/scene/detail/innerHTML-value.snippet.ts +31 -0
- package/src/runjs-context/snippets/scene/detail/percentage-bar.snippet.ts +63 -0
- package/src/runjs-context/snippets/scene/detail/relative-time.snippet.ts +61 -0
- package/src/runjs-context/snippets/scene/detail/status-tag.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/form/calculate-total.snippet.ts +44 -0
- package/src/runjs-context/snippets/scene/form/cascade-select.snippet.ts +62 -0
- package/src/runjs-context/snippets/scene/form/conditional-required.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/form/copy-field-values.snippet.ts +55 -0
- package/src/runjs-context/snippets/scene/{jsitem → form}/render-basic.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/{linkage → form}/set-disabled.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-field-value.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/{linkage → form}/set-required.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/form/toggle-multiple-fields.snippet.ts +48 -0
- package/src/runjs-context/snippets/scene/{linkage → form}/toggle-visible.snippet.ts +15 -3
- package/src/runjs-context/snippets/scene/table/cell-open-dialog.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/collection-selected-count.snippet.ts +14 -2
- package/src/runjs-context/snippets/scene/table/concat-fields.snippet.ts +60 -0
- package/src/runjs-context/snippets/scene/table/destroy-selected.snippet.ts +36 -0
- package/src/runjs-context/snippets/scene/table/export-selected-json.snippet.ts +45 -0
- package/src/runjs-context/snippets/scene/{actions → table}/iterate-selected-rows.snippet.ts +14 -2
- package/src/runjs-context/snippets/types.ts +5 -1
- package/src/runjsLibs.ts +622 -0
- package/src/scheduler/ModelOperationScheduler.ts +306 -0
- package/src/types.ts +86 -5
- package/src/utils/__tests__/createCollectionContextMeta.test.ts +51 -0
- package/src/utils/__tests__/flows.test.ts +65 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/params-resolvers.test.ts +40 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
- package/src/utils/__tests__/pruneFilter.test.ts +38 -0
- package/src/utils/__tests__/runjsRequireAsyncAutoWhitelist.test.ts +38 -0
- package/src/utils/__tests__/runjsTemplateCompat.test.ts +159 -0
- package/src/utils/__tests__/safeGlobals.test.ts +79 -2
- package/src/utils/__tests__/utils.test.ts +114 -15
- package/src/utils/__tests__/variablesParams.test.ts +120 -0
- package/src/utils/associationObjectVariable.ts +180 -0
- package/src/utils/createCollectionContextMeta.ts +9 -3
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/flows.ts +23 -0
- package/src/utils/index.ts +17 -3
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +25 -11
- package/src/utils/parsePathnameToViewParams.ts +50 -6
- package/src/utils/pruneFilter.ts +41 -0
- package/src/utils/resolveModuleUrl.ts +91 -0
- package/src/utils/runjsModuleLoader.ts +553 -0
- package/src/utils/runjsTemplateCompat.ts +828 -0
- package/src/utils/safeGlobals.ts +181 -15
- package/src/utils/schema-utils.ts +81 -3
- package/src/utils/serverContextParams.ts +6 -0
- package/src/utils/translation.ts +7 -2
- package/src/utils/variablesParams.ts +164 -72
- package/src/views/DialogComponent.tsx +1 -4
- package/src/views/DrawerComponent.tsx +19 -7
- package/src/views/PageComponent.tsx +3 -5
- package/src/views/ViewNavigation.ts +49 -43
- package/src/views/__tests__/FlowView.usePage.test.tsx +186 -0
- package/src/views/__tests__/ViewNavigation.test.ts +54 -34
- package/src/views/__tests__/useDialog.closeDestroy.test.tsx +159 -0
- package/src/views/__tests__/viewEvents.resolveOpenerEngine.test.ts +28 -0
- package/src/views/createViewMeta.ts +402 -73
- package/src/views/index.tsx +1 -1
- package/src/views/useDialog.tsx +52 -31
- package/src/views/useDrawer.tsx +99 -55
- package/src/views/usePage.tsx +101 -33
- package/src/views/usePopover.tsx +4 -1
- package/src/views/viewEvents.ts +55 -0
- package/lib/runjs-context/contexts/FlowRunJSContext.d.ts +0 -38
- package/lib/runjs-context/contexts/FlowRunJSContext.js +0 -217
- package/lib/runjs-context/contexts/LinkageRunJSContext.js +0 -62
- package/lib/runjs-context/index.d.ts +0 -19
- package/lib/runjs-context/index.js +0 -57
- package/lib/runjs-context/snippets/global/api-request-get.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/api-request-get.snippet.js +0 -42
- package/lib/runjs-context/snippets/global/api-request-post.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/console-log-ctx.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/requireAsync.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/global/sleep.snippet.js +0 -43
- package/lib/runjs-context/snippets/global/try-catch-async.snippet.d.ts +0 -16
- package/lib/runjs-context/snippets/libs/echarts-init.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/collection-selected-count.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/iterate-selected-rows.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/record-id-message.snippet.js +0 -43
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/actions/run-action-basic.snippet.js +0 -40
- package/lib/runjs-context/snippets/scene/jsblock/add-event-listener.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/append-style.snippet.js +0 -42
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js +0 -46
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-basic.snippet.js +0 -41
- package/lib/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsblock/render-react.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/color-by-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/format-number.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/jsitem/render-basic.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-disabled.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-field-value.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/set-required.snippet.d.ts +0 -15
- package/lib/runjs-context/snippets/scene/linkage/toggle-visible.snippet.d.ts +0 -15
- package/src/runjs-context/contexts/FlowRunJSContext.ts +0 -190
- package/src/runjs-context/contexts/LinkageRunJSContext.ts +0 -35
- package/src/runjs-context/index.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-get.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/api-request-post.snippet.ts +0 -20
- package/src/runjs-context/snippets/global/console-log-ctx.snippet.ts +0 -19
- package/src/runjs-context/snippets/global/copy-record-json.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/copy-to-clipboard.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/log-json-record.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/requireAsync.snippet.ts +0 -24
- package/src/runjs-context/snippets/global/sleep.snippet.ts +0 -21
- package/src/runjs-context/snippets/global/try-catch-async.snippet.ts +0 -22
- package/src/runjs-context/snippets/global/view-navigation-push.snippet.ts +0 -23
- package/src/runjs-context/snippets/libs/echarts-init.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/actions/record-id-message.snippet.ts +0 -21
- package/src/runjs-context/snippets/scene/actions/run-action-basic.snippet.ts +0 -18
- package/src/runjs-context/snippets/scene/jsblock/append-style.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsblock/jsx-mount.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/jsx-unmount.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsblock/render-basic.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-button-handler.snippet.ts +0 -24
- package/src/runjs-context/snippets/scene/jsblock/render-card.snippet.ts +0 -30
- package/src/runjs-context/snippets/scene/jsblock/render-react.snippet.ts +0 -34
- package/src/runjs-context/snippets/scene/jsfield/color-by-value.snippet.ts +0 -20
- package/src/runjs-context/snippets/scene/jsfield/format-number.snippet.ts +0 -19
- package/src/runjs-context/snippets/scene/jsfield/innerHTML-value.snippet.ts +0 -18
- /package/lib/runjs-context/snippets/global/{copy-record-json.snippet.d.ts → api-request.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{copy-to-clipboard.snippet.d.ts → clipboard-copy-text.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{log-json-record.snippet.d.ts → import-esm.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/global/{view-navigation-push.snippet.d.ts → query-selector.snippet.d.ts} +0 -0
- /package/lib/runjs-context/snippets/scene/{jsblock/render-card.snippet.d.ts → block/echarts-init.snippet.d.ts} +0 -0
package/lib/models/flowModel.js
CHANGED
|
@@ -53,7 +53,6 @@ __export(flowModel_exports, {
|
|
|
53
53
|
});
|
|
54
54
|
module.exports = __toCommonJS(flowModel_exports);
|
|
55
55
|
var import_reactive = require("@formily/reactive");
|
|
56
|
-
var import_reactive_react = require("@formily/reactive-react");
|
|
57
56
|
var import_lodash = __toESM(require("lodash"));
|
|
58
57
|
var import_react = __toESM(require("react"));
|
|
59
58
|
var import_secure = require("uid/secure");
|
|
@@ -62,7 +61,6 @@ var import_StepSettingsDialog = require("../components/settings/wrappers/context
|
|
|
62
61
|
var import_emitter = require("../emitter");
|
|
63
62
|
var import_InstanceFlowRegistry = require("../flow-registry/InstanceFlowRegistry");
|
|
64
63
|
var import_flowContext = require("../flowContext");
|
|
65
|
-
var import_flowEngine = require("../flowEngine");
|
|
66
64
|
var import_utils = require("../utils");
|
|
67
65
|
var import_lib = require("antd/lib");
|
|
68
66
|
var import_ModelActionRegistry = require("../action-registry/ModelActionRegistry");
|
|
@@ -70,11 +68,13 @@ var import_utils2 = require("../components/subModel/utils");
|
|
|
70
68
|
var import_ModelEventRegistry = require("../event-registry/ModelEventRegistry");
|
|
71
69
|
var import_GlobalFlowRegistry = require("../flow-registry/GlobalFlowRegistry");
|
|
72
70
|
var import_forkFlowModel = require("./forkFlowModel");
|
|
71
|
+
var import__ = require("..");
|
|
73
72
|
var _flowContext;
|
|
74
73
|
const classActionRegistries = /* @__PURE__ */ new WeakMap();
|
|
75
74
|
const classEventRegistries = /* @__PURE__ */ new WeakMap();
|
|
76
75
|
const modelMetas = /* @__PURE__ */ new WeakMap();
|
|
77
76
|
const modelGlobalRegistries = /* @__PURE__ */ new WeakMap();
|
|
77
|
+
const classMenuExtensions = /* @__PURE__ */ new WeakMap();
|
|
78
78
|
var ModelRenderMode = /* @__PURE__ */ ((ModelRenderMode2) => {
|
|
79
79
|
ModelRenderMode2["ReactElement"] = "reactElement";
|
|
80
80
|
ModelRenderMode2["RenderFunction"] = "renderFunction";
|
|
@@ -92,8 +92,11 @@ const _FlowModel = class _FlowModel {
|
|
|
92
92
|
__publicField(this, "subModels");
|
|
93
93
|
__publicField(this, "_options");
|
|
94
94
|
__publicField(this, "_title");
|
|
95
|
+
__publicField(this, "_extraTitle");
|
|
95
96
|
__publicField(this, "isNew", false);
|
|
96
97
|
// 标记是否为新建状态
|
|
98
|
+
__publicField(this, "skeleton", null);
|
|
99
|
+
__publicField(this, "forbidden", null);
|
|
97
100
|
/**
|
|
98
101
|
* 所有 fork 实例的引用集合。
|
|
99
102
|
* 使用 Set 便于在销毁时主动遍历并调用 dispose,避免悬挂引用。
|
|
@@ -105,7 +108,7 @@ const _FlowModel = class _FlowModel {
|
|
|
105
108
|
*/
|
|
106
109
|
__publicField(this, "forkCache", /* @__PURE__ */ new Map());
|
|
107
110
|
/**
|
|
108
|
-
* 上一次
|
|
111
|
+
* 上一次 beforeRender 的执行参数
|
|
109
112
|
*/
|
|
110
113
|
__publicField(this, "_lastAutoRunParams", null);
|
|
111
114
|
__publicField(this, "observerDispose");
|
|
@@ -120,18 +123,23 @@ const _FlowModel = class _FlowModel {
|
|
|
120
123
|
__publicField(this, "_reactiveWrapperCache");
|
|
121
124
|
__publicField(this, "flowRegistry");
|
|
122
125
|
__publicField(this, "_cleanRun");
|
|
123
|
-
__publicField(this, "_dispatchEventWithDebounce", import_lodash.default.debounce(
|
|
124
|
-
|
|
125
|
-
|
|
126
|
+
__publicField(this, "_dispatchEventWithDebounce", import_lodash.default.debounce(
|
|
127
|
+
async function(eventName, inputArgs, options) {
|
|
128
|
+
return this._dispatchEvent(eventName, inputArgs, options);
|
|
129
|
+
},
|
|
130
|
+
500,
|
|
131
|
+
{ leading: true }
|
|
132
|
+
));
|
|
126
133
|
/**
|
|
127
|
-
* 重新执行上一次的
|
|
134
|
+
* 重新执行上一次的 beforeRender,保持参数一致
|
|
128
135
|
* 如果之前没有执行过,则直接跳过
|
|
129
136
|
* 使用 lodash debounce 避免频繁调用
|
|
130
137
|
*/
|
|
131
138
|
__publicField(this, "_rerunLastAutoRun", import_lodash.default.debounce(async () => {
|
|
132
139
|
if (this._lastAutoRunParams) {
|
|
133
140
|
try {
|
|
134
|
-
|
|
141
|
+
const [inputArgs] = this._lastAutoRunParams;
|
|
142
|
+
await this.dispatchEvent("beforeRender", inputArgs);
|
|
135
143
|
} catch (error) {
|
|
136
144
|
console.error("FlowModel._rerunLastAutoRun: Error during rerun:", error);
|
|
137
145
|
}
|
|
@@ -155,11 +163,15 @@ const _FlowModel = class _FlowModel {
|
|
|
155
163
|
this.subModels = {};
|
|
156
164
|
this.sortIndex = options.sortIndex || 0;
|
|
157
165
|
this._options = options;
|
|
166
|
+
this._title = "";
|
|
167
|
+
this._extraTitle = "";
|
|
158
168
|
(0, import_reactive.define)(this, {
|
|
159
169
|
hidden: import_reactive.observable,
|
|
160
170
|
props: import_reactive.observable,
|
|
161
171
|
subModels: import_reactive.observable.shallow,
|
|
162
172
|
stepParams: import_reactive.observable,
|
|
173
|
+
_title: import_reactive.observable,
|
|
174
|
+
_extraTitle: import_reactive.observable,
|
|
163
175
|
// setProps: action,
|
|
164
176
|
setProps: import_reactive.batch,
|
|
165
177
|
// setStepParams: action,
|
|
@@ -172,7 +184,7 @@ const _FlowModel = class _FlowModel {
|
|
|
172
184
|
return;
|
|
173
185
|
}
|
|
174
186
|
if (this.flowEngine) {
|
|
175
|
-
this.
|
|
187
|
+
this.invalidateFlowCache("beforeRender");
|
|
176
188
|
}
|
|
177
189
|
this._rerunLastAutoRun();
|
|
178
190
|
this.forks.forEach((fork) => {
|
|
@@ -190,13 +202,16 @@ const _FlowModel = class _FlowModel {
|
|
|
190
202
|
this._cleanRun = !!options["cleanRun"];
|
|
191
203
|
}
|
|
192
204
|
/**
|
|
193
|
-
* 当
|
|
205
|
+
* 当 flowSettingsEnabled 且 model.hidden 为 true 时用于渲染设置态组件(实例方法,子类可覆盖)。
|
|
194
206
|
* 基类默认仅返回一个透明度降低的占位元素
|
|
195
207
|
*/
|
|
196
208
|
renderHiddenInConfig() {
|
|
197
209
|
var _a;
|
|
198
210
|
return /* @__PURE__ */ import_react.default.createElement("span", { style: { opacity: 0.5 } }, ((_a = this.translate) == null ? void 0 : _a.call(this, "Hidden")) || "Hidden");
|
|
199
211
|
}
|
|
212
|
+
renderOriginal() {
|
|
213
|
+
return this._originalRender();
|
|
214
|
+
}
|
|
200
215
|
/**
|
|
201
216
|
* 对外暴露的上下文:
|
|
202
217
|
*/
|
|
@@ -234,6 +249,10 @@ const _FlowModel = class _FlowModel {
|
|
|
234
249
|
get parentId() {
|
|
235
250
|
return this._options.parentId;
|
|
236
251
|
}
|
|
252
|
+
scheduleModelOperation(toUid, fn, options) {
|
|
253
|
+
var _a;
|
|
254
|
+
return (_a = this.flowEngine) == null ? void 0 : _a.scheduleModelOperation(this, toUid, fn, options);
|
|
255
|
+
}
|
|
237
256
|
static get meta() {
|
|
238
257
|
return modelMetas.get(this);
|
|
239
258
|
}
|
|
@@ -308,16 +327,22 @@ const _FlowModel = class _FlowModel {
|
|
|
308
327
|
static registerEvents(events) {
|
|
309
328
|
this.eventRegistry.registerEvents(events);
|
|
310
329
|
}
|
|
311
|
-
static buildChildrenFromModels(ctx, Models) {
|
|
312
|
-
return Models.map((M) => (0, import_utils2.buildSubModelItem)(M, ctx, true));
|
|
330
|
+
static async buildChildrenFromModels(ctx, Models) {
|
|
331
|
+
return Promise.all(Models.map((M) => (0, import_utils2.buildSubModelItem)(M, ctx, true)));
|
|
313
332
|
}
|
|
314
333
|
get title() {
|
|
315
334
|
var _a;
|
|
316
335
|
return this.translate(this._title) || this.translate((_a = this.constructor["meta"]) == null ? void 0 : _a.label);
|
|
317
336
|
}
|
|
337
|
+
get extraTitle() {
|
|
338
|
+
return this._extraTitle ? this.translate(this._extraTitle) : "";
|
|
339
|
+
}
|
|
318
340
|
setTitle(value) {
|
|
319
341
|
this._title = value;
|
|
320
342
|
}
|
|
343
|
+
setExtraTitle(value) {
|
|
344
|
+
this._extraTitle = value || "";
|
|
345
|
+
}
|
|
321
346
|
setHidden(value) {
|
|
322
347
|
this.hidden = !!value;
|
|
323
348
|
}
|
|
@@ -328,7 +353,18 @@ const _FlowModel = class _FlowModel {
|
|
|
328
353
|
const meta = Cls.meta;
|
|
329
354
|
const metaCreate = meta == null ? void 0 : meta.createModelOptions;
|
|
330
355
|
if (metaCreate && typeof metaCreate === "object" && metaCreate.subModels) {
|
|
331
|
-
|
|
356
|
+
const replaceArrays = /* @__PURE__ */ __name((objValue, srcValue) => {
|
|
357
|
+
if (Array.isArray(objValue) && Array.isArray(srcValue)) {
|
|
358
|
+
return srcValue;
|
|
359
|
+
}
|
|
360
|
+
return void 0;
|
|
361
|
+
}, "replaceArrays");
|
|
362
|
+
mergedSubModels = import_lodash.default.mergeWith(
|
|
363
|
+
{},
|
|
364
|
+
import_lodash.default.cloneDeep(metaCreate.subModels || {}),
|
|
365
|
+
import_lodash.default.cloneDeep(subModels || {}),
|
|
366
|
+
replaceArrays
|
|
367
|
+
);
|
|
332
368
|
}
|
|
333
369
|
} catch (e) {
|
|
334
370
|
}
|
|
@@ -342,13 +378,57 @@ const _FlowModel = class _FlowModel {
|
|
|
342
378
|
}
|
|
343
379
|
});
|
|
344
380
|
}
|
|
345
|
-
|
|
381
|
+
/**
|
|
382
|
+
* 失效指定事件的流程缓存;未指定 eventName 时,失效当前模型全部事件缓存。
|
|
383
|
+
* - 默认 beforeRender 与其它事件共享同一缓存体系:prefix=`event:${scope}`,flowKey=`eventName`,uid=`model.uid`
|
|
384
|
+
*/
|
|
385
|
+
invalidateFlowCache(eventName, deep = false) {
|
|
346
386
|
if (this.flowEngine) {
|
|
347
|
-
const
|
|
348
|
-
this.flowEngine.applyFlowCache
|
|
387
|
+
const scope = `event:${this.getFlowCacheScope(eventName || "beforeRender")}`;
|
|
388
|
+
const cache = this.flowEngine.applyFlowCache;
|
|
389
|
+
if (eventName) {
|
|
390
|
+
const altScope = scope.replace(/:/g, "-");
|
|
391
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
392
|
+
const eventSegments = [`:${eventName}:`, `-${eventName}-`];
|
|
393
|
+
for (const key of cache.keys()) {
|
|
394
|
+
const startMatches = key.startsWith(scope) || key.startsWith(altScope);
|
|
395
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
396
|
+
const eventMatches = eventSegments.some((seg) => key.includes(seg));
|
|
397
|
+
if (startMatches && endMatches && eventMatches) {
|
|
398
|
+
cache.delete(key);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
} else {
|
|
402
|
+
const altScope = `${scope}:`.replace(/:/g, "-");
|
|
403
|
+
const prefixes = [`${scope}:`, altScope];
|
|
404
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
405
|
+
for (const key of cache.keys()) {
|
|
406
|
+
const startMatches = prefixes.some((p) => key.startsWith(p));
|
|
407
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
408
|
+
if (startMatches && endMatches) cache.delete(key);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
349
411
|
this.forks.forEach((fork) => {
|
|
350
|
-
|
|
351
|
-
|
|
412
|
+
var _a;
|
|
413
|
+
const forkScope = `event:${((_a = fork.getFlowCacheScope) == null ? void 0 : _a.call(fork, eventName || "beforeRender")) ?? String(fork["forkId"])}`;
|
|
414
|
+
const altForkScope = forkScope.replace(/:/g, "-");
|
|
415
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
416
|
+
if (eventName) {
|
|
417
|
+
const eventSegments = [`:${eventName}:`, `-${eventName}-`];
|
|
418
|
+
for (const key of this.flowEngine.applyFlowCache.keys()) {
|
|
419
|
+
const startMatches = key.startsWith(forkScope) || key.startsWith(altForkScope);
|
|
420
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
421
|
+
const eventMatches = eventSegments.some((seg) => key.includes(seg));
|
|
422
|
+
if (startMatches && endMatches && eventMatches) this.flowEngine.applyFlowCache.delete(key);
|
|
423
|
+
}
|
|
424
|
+
} else {
|
|
425
|
+
const prefixes = [`${forkScope}:`, `${altForkScope}-`];
|
|
426
|
+
for (const key of this.flowEngine.applyFlowCache.keys()) {
|
|
427
|
+
const startMatches = prefixes.some((p) => key.startsWith(p));
|
|
428
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
429
|
+
if (startMatches && endMatches) this.flowEngine.applyFlowCache.delete(key);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
352
432
|
});
|
|
353
433
|
}
|
|
354
434
|
if (deep) {
|
|
@@ -357,10 +437,10 @@ const _FlowModel = class _FlowModel {
|
|
|
357
437
|
const subModelValue = this.subModels[subModelKey];
|
|
358
438
|
if (Array.isArray(subModelValue)) {
|
|
359
439
|
for (const subModel of subModelValue) {
|
|
360
|
-
subModel.
|
|
440
|
+
subModel.invalidateFlowCache(eventName, deep);
|
|
361
441
|
}
|
|
362
442
|
} else if (subModelValue instanceof _FlowModel) {
|
|
363
|
-
subModelValue.
|
|
443
|
+
subModelValue.invalidateFlowCache(eventName, deep);
|
|
364
444
|
}
|
|
365
445
|
}
|
|
366
446
|
}
|
|
@@ -480,14 +560,15 @@ const _FlowModel = class _FlowModel {
|
|
|
480
560
|
const instanceKeys = new Set(instanceFlows.keys());
|
|
481
561
|
const staticEntries = Array.from(staticFlows.entries()).filter(([key]) => !instanceKeys.has(key));
|
|
482
562
|
const instanceEntries = Array.from(instanceFlows.entries());
|
|
483
|
-
const
|
|
484
|
-
|
|
485
|
-
const sa = a.sort ?? 0;
|
|
486
|
-
const sb = b.sort ?? 0;
|
|
563
|
+
const instanceEntriesWithIndex = instanceEntries.map((e, i) => ({ e, i }));
|
|
564
|
+
instanceEntriesWithIndex.sort((a, b) => {
|
|
565
|
+
const sa = a.e[1].sort ?? 0;
|
|
566
|
+
const sb = b.e[1].sort ?? 0;
|
|
487
567
|
if (sa !== sb) return sa - sb;
|
|
488
|
-
return
|
|
568
|
+
return a.i - b.i;
|
|
489
569
|
});
|
|
490
|
-
|
|
570
|
+
const merged = [...instanceEntriesWithIndex.map(({ e }) => e), ...staticEntries];
|
|
571
|
+
return new Map(merged);
|
|
491
572
|
}
|
|
492
573
|
setProps(props, value) {
|
|
493
574
|
if (typeof props === "string") {
|
|
@@ -520,6 +601,7 @@ const _FlowModel = class _FlowModel {
|
|
|
520
601
|
}
|
|
521
602
|
}
|
|
522
603
|
}
|
|
604
|
+
this.emitter.emit("onStepParamsChanged");
|
|
523
605
|
}
|
|
524
606
|
getStepParams(flowKey, stepKey) {
|
|
525
607
|
var _a;
|
|
@@ -544,7 +626,7 @@ const _FlowModel = class _FlowModel {
|
|
|
544
626
|
);
|
|
545
627
|
return currentFlowEngine.executor.runFlow(target, flowKey, inputArgs, runId);
|
|
546
628
|
}
|
|
547
|
-
async _dispatchEvent(eventName, inputArgs) {
|
|
629
|
+
async _dispatchEvent(eventName, inputArgs, options) {
|
|
548
630
|
const currentFlowEngine = this.flowEngine;
|
|
549
631
|
if (!currentFlowEngine) {
|
|
550
632
|
console.warn("FlowEngine not available on this model for dispatchEvent. Please set flowEngine on the model.");
|
|
@@ -555,93 +637,63 @@ const _FlowModel = class _FlowModel {
|
|
|
555
637
|
console.log(
|
|
556
638
|
`[FlowModel] dispatchEvent: uid=${this.uid}, event=${eventName}, isFork=${isFork}, cleanRun=${this.cleanRun}, targetIsFork=${(target == null ? void 0 : target.isFork) === true}`
|
|
557
639
|
);
|
|
558
|
-
await currentFlowEngine.executor.dispatchEvent(target, eventName, inputArgs);
|
|
640
|
+
return await currentFlowEngine.executor.dispatchEvent(target, eventName, inputArgs, options);
|
|
559
641
|
}
|
|
560
642
|
async dispatchEvent(eventName, inputArgs, options) {
|
|
643
|
+
const isBeforeRender = eventName === "beforeRender";
|
|
644
|
+
const defaults = isBeforeRender ? { sequential: true, useCache: true } : { sequential: true };
|
|
645
|
+
const execOptions = {
|
|
646
|
+
sequential: (options == null ? void 0 : options.sequential) ?? defaults.sequential,
|
|
647
|
+
useCache: (options == null ? void 0 : options.useCache) ?? defaults.useCache
|
|
648
|
+
};
|
|
649
|
+
if (isBeforeRender) {
|
|
650
|
+
this._lastAutoRunParams = [inputArgs, execOptions.useCache];
|
|
651
|
+
}
|
|
561
652
|
if (options == null ? void 0 : options.debounce) {
|
|
562
|
-
return this._dispatchEventWithDebounce(eventName, inputArgs);
|
|
653
|
+
return this._dispatchEventWithDebounce(eventName, inputArgs, execOptions);
|
|
563
654
|
}
|
|
564
|
-
return this._dispatchEvent(eventName, inputArgs);
|
|
655
|
+
return this._dispatchEvent(eventName, inputArgs, execOptions);
|
|
565
656
|
}
|
|
566
657
|
/**
|
|
567
|
-
*
|
|
568
|
-
*
|
|
658
|
+
* 按事件名获取对应的流程集合(保持 getFlows 的顺序,即按 sort 排序)。
|
|
659
|
+
* - beforeRender 兼容:除显式 on: 'beforeRender' 外,包含未声明 on 且 manual !== true 的流程。
|
|
569
660
|
*/
|
|
570
|
-
|
|
661
|
+
getEventFlows(eventName) {
|
|
571
662
|
const allFlows = this.getFlows();
|
|
572
|
-
const
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
return
|
|
663
|
+
const beforeRender = eventName === "beforeRender";
|
|
664
|
+
const isMatch = /* @__PURE__ */ __name((flow) => {
|
|
665
|
+
var _a;
|
|
666
|
+
if (beforeRender) {
|
|
667
|
+
if (flow.manual === true) return false;
|
|
668
|
+
if (!flow.on) return true;
|
|
669
|
+
return typeof flow.on === "string" ? flow.on === "beforeRender" : ((_a = flow.on) == null ? void 0 : _a.eventName) === "beforeRender";
|
|
578
670
|
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
671
|
+
const on = flow.on;
|
|
672
|
+
if (!on) return false;
|
|
673
|
+
return typeof on === "string" ? on === eventName : (on == null ? void 0 : on.eventName) === eventName;
|
|
674
|
+
}, "isMatch");
|
|
675
|
+
return Array.from(allFlows.values()).filter(isMatch);
|
|
582
676
|
}
|
|
583
677
|
/**
|
|
584
|
-
*
|
|
585
|
-
*
|
|
678
|
+
* 通用事件分发钩子:开始
|
|
679
|
+
* 子类可覆盖;beforeRender 事件可通过抛出 FlowExitException 提前终止。
|
|
586
680
|
*/
|
|
587
|
-
async
|
|
681
|
+
async onDispatchEventStart(eventName, options, inputArgs) {
|
|
588
682
|
}
|
|
589
683
|
/**
|
|
590
|
-
*
|
|
684
|
+
* 通用事件分发钩子:结束
|
|
591
685
|
* 子类可覆盖。
|
|
592
686
|
*/
|
|
593
|
-
async
|
|
687
|
+
async onDispatchEventEnd(eventName, options, inputArgs, results) {
|
|
594
688
|
}
|
|
595
689
|
/**
|
|
596
|
-
*
|
|
690
|
+
* 通用事件分发钩子:错误
|
|
597
691
|
* 子类可覆盖。
|
|
598
692
|
*/
|
|
599
|
-
async
|
|
693
|
+
async onDispatchEventError(eventName, options, inputArgs, error) {
|
|
600
694
|
}
|
|
601
695
|
useHooksBeforeRender() {
|
|
602
696
|
}
|
|
603
|
-
async applyAutoFlows(...args) {
|
|
604
|
-
var _a, _b;
|
|
605
|
-
const [inputArgs, useCache = true] = args;
|
|
606
|
-
const cacheKey = useCache ? import_flowEngine.FlowEngine.generateApplyFlowCacheKey(this["forkId"] ?? "autoFlow", "all", this.uid) : null;
|
|
607
|
-
if (!import_lodash.default.isEqual(inputArgs, (_a = this._lastAutoRunParams) == null ? void 0 : _a[0]) && cacheKey) {
|
|
608
|
-
this.flowEngine.applyFlowCache.delete(cacheKey);
|
|
609
|
-
}
|
|
610
|
-
this._lastAutoRunParams = args;
|
|
611
|
-
try {
|
|
612
|
-
await this.onBeforeAutoFlows(inputArgs);
|
|
613
|
-
} catch (error) {
|
|
614
|
-
if (error instanceof import_utils.FlowExitException) {
|
|
615
|
-
(_b = this.context.logger) == null ? void 0 : _b.debug(`[FlowModel.applyAutoFlows] ${error.message}`);
|
|
616
|
-
return [];
|
|
617
|
-
}
|
|
618
|
-
try {
|
|
619
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
620
|
-
} catch (_2) {
|
|
621
|
-
}
|
|
622
|
-
throw error;
|
|
623
|
-
}
|
|
624
|
-
let results = [];
|
|
625
|
-
try {
|
|
626
|
-
results = await this.flowEngine.executor.runAutoFlows(this, inputArgs, useCache);
|
|
627
|
-
} catch (error) {
|
|
628
|
-
try {
|
|
629
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
630
|
-
} catch (_2) {
|
|
631
|
-
}
|
|
632
|
-
throw error;
|
|
633
|
-
}
|
|
634
|
-
try {
|
|
635
|
-
await this.onAfterAutoFlows(results, inputArgs);
|
|
636
|
-
} catch (error) {
|
|
637
|
-
try {
|
|
638
|
-
await this.onAutoFlowsError(error, inputArgs);
|
|
639
|
-
} catch (_2) {
|
|
640
|
-
}
|
|
641
|
-
throw error;
|
|
642
|
-
}
|
|
643
|
-
return results;
|
|
644
|
-
}
|
|
645
697
|
/**
|
|
646
698
|
* 智能检测是否应该跳过响应式包装
|
|
647
699
|
* 说明:
|
|
@@ -675,11 +727,11 @@ const _FlowModel = class _FlowModel {
|
|
|
675
727
|
}
|
|
676
728
|
if (this.shouldSkipReactiveWrapping()) {
|
|
677
729
|
const wrappedNonReactive = /* @__PURE__ */ __name(function() {
|
|
678
|
-
var _a, _b
|
|
679
|
-
const isConfigMode = !!((
|
|
730
|
+
var _a, _b;
|
|
731
|
+
const isConfigMode = !!((_a = this == null ? void 0 : this.context) == null ? void 0 : _a.flowSettingsEnabled);
|
|
680
732
|
if (this.hidden) {
|
|
681
733
|
if (!isConfigMode) return null;
|
|
682
|
-
const rendered = (
|
|
734
|
+
const rendered = (_b = this.renderHiddenInConfig) == null ? void 0 : _b.call(this);
|
|
683
735
|
const Cls = this.constructor;
|
|
684
736
|
const returnsFunction = Cls.renderMode === "renderFunction" /* RenderFunction */;
|
|
685
737
|
return returnsFunction ? typeof rendered === "function" ? rendered : () => rendered : rendered;
|
|
@@ -691,8 +743,8 @@ const _FlowModel = class _FlowModel {
|
|
|
691
743
|
return;
|
|
692
744
|
}
|
|
693
745
|
const createReactiveWrapper = /* @__PURE__ */ __name((modelInstance) => {
|
|
694
|
-
const ReactiveWrapper = (0,
|
|
695
|
-
var _a, _b
|
|
746
|
+
const ReactiveWrapper = (0, import__.observer)(() => {
|
|
747
|
+
var _a, _b;
|
|
696
748
|
const renderTarget = modelInstance;
|
|
697
749
|
if (renderTarget !== modelInstance && (renderTarget == null ? void 0 : renderTarget.localProps) !== void 0) {
|
|
698
750
|
renderTarget.localProps;
|
|
@@ -701,22 +753,33 @@ const _FlowModel = class _FlowModel {
|
|
|
701
753
|
modelInstance.props;
|
|
702
754
|
}
|
|
703
755
|
import_react.default.useEffect(() => {
|
|
756
|
+
var _a2, _b2;
|
|
704
757
|
if (typeof renderTarget.onMount === "function") {
|
|
705
758
|
renderTarget.onMount();
|
|
706
759
|
}
|
|
760
|
+
void ((_b2 = (_a2 = renderTarget.flowEngine) == null ? void 0 : _a2.emitter) == null ? void 0 : _b2.emitAsync("model:mounted", {
|
|
761
|
+
uid: renderTarget.uid,
|
|
762
|
+
model: renderTarget
|
|
763
|
+
}));
|
|
707
764
|
return () => {
|
|
765
|
+
var _a3, _b3;
|
|
708
766
|
if (typeof renderTarget.onUnmount === "function") {
|
|
709
767
|
renderTarget.onUnmount();
|
|
710
768
|
}
|
|
769
|
+
void ((_b3 = (_a3 = renderTarget.flowEngine) == null ? void 0 : _a3.emitter) == null ? void 0 : _b3.emitAsync("model:unmounted", {
|
|
770
|
+
uid: renderTarget.uid,
|
|
771
|
+
model: renderTarget
|
|
772
|
+
}));
|
|
711
773
|
};
|
|
712
774
|
}, [renderTarget]);
|
|
713
|
-
const isConfigMode = !!((
|
|
775
|
+
const isConfigMode = !!((_a = modelInstance == null ? void 0 : modelInstance.context) == null ? void 0 : _a.flowSettingsEnabled);
|
|
714
776
|
if (modelInstance.hidden) {
|
|
715
777
|
if (!isConfigMode) {
|
|
716
778
|
return null;
|
|
717
779
|
}
|
|
718
|
-
return (
|
|
780
|
+
return (_b = modelInstance.renderHiddenInConfig) == null ? void 0 : _b.call(modelInstance);
|
|
719
781
|
}
|
|
782
|
+
modelInstance.stepParams;
|
|
720
783
|
return originalRender.call(renderTarget);
|
|
721
784
|
});
|
|
722
785
|
ReactiveWrapper.displayName = `ReactiveWrapper(${modelInstance.constructor.name})`;
|
|
@@ -768,13 +831,13 @@ const _FlowModel = class _FlowModel {
|
|
|
768
831
|
}
|
|
769
832
|
async rerender() {
|
|
770
833
|
var _a;
|
|
771
|
-
await this.
|
|
834
|
+
await this.dispatchEvent("beforeRender", (_a = this._lastAutoRunParams) == null ? void 0 : _a[0], { useCache: false });
|
|
772
835
|
}
|
|
773
836
|
/**
|
|
774
|
-
*
|
|
837
|
+
* 事件缓存的作用域标识;可按事件区分(默认与事件无关的 scope 返回 'default')。
|
|
775
838
|
*/
|
|
776
|
-
|
|
777
|
-
return
|
|
839
|
+
getFlowCacheScope(eventName) {
|
|
840
|
+
return String(eventName);
|
|
778
841
|
}
|
|
779
842
|
setParent(parent) {
|
|
780
843
|
const isValidParent = parent && (parent.constructor === _FlowModel || (0, import_utils.isInheritedFrom)(parent.constructor, _FlowModel));
|
|
@@ -794,7 +857,7 @@ const _FlowModel = class _FlowModel {
|
|
|
794
857
|
this.context.removeDelegate(this.parent.context);
|
|
795
858
|
}
|
|
796
859
|
addSubModel(subKey, options) {
|
|
797
|
-
var _a;
|
|
860
|
+
var _a, _b, _c;
|
|
798
861
|
const actualParent = this["master"] || this;
|
|
799
862
|
let model;
|
|
800
863
|
if (options instanceof _FlowModel) {
|
|
@@ -821,10 +884,16 @@ const _FlowModel = class _FlowModel {
|
|
|
821
884
|
model.sortIndex = maxSortIndex + 1;
|
|
822
885
|
subModels[subKey].push(model);
|
|
823
886
|
actualParent.emitter.emit("onSubModelAdded", model);
|
|
887
|
+
(_c = (_b = actualParent.flowEngine) == null ? void 0 : _b.emitter) == null ? void 0 : _c.emit("model:subModel:added", {
|
|
888
|
+
parentUid: actualParent.uid,
|
|
889
|
+
parent: actualParent,
|
|
890
|
+
subKey,
|
|
891
|
+
model
|
|
892
|
+
});
|
|
824
893
|
return model;
|
|
825
894
|
}
|
|
826
895
|
setSubModel(subKey, options) {
|
|
827
|
-
var _a;
|
|
896
|
+
var _a, _b, _c;
|
|
828
897
|
const actualParent = this["master"] || this;
|
|
829
898
|
let model;
|
|
830
899
|
if (options instanceof _FlowModel) {
|
|
@@ -845,6 +914,12 @@ const _FlowModel = class _FlowModel {
|
|
|
845
914
|
model.setParent(actualParent);
|
|
846
915
|
actualParent.subModels[subKey] = model;
|
|
847
916
|
actualParent.emitter.emit("onSubModelAdded", model);
|
|
917
|
+
(_c = (_b = actualParent.flowEngine) == null ? void 0 : _b.emitter) == null ? void 0 : _c.emit("model:subModel:added", {
|
|
918
|
+
parentUid: actualParent.uid,
|
|
919
|
+
parent: actualParent,
|
|
920
|
+
subKey,
|
|
921
|
+
model
|
|
922
|
+
});
|
|
848
923
|
return model;
|
|
849
924
|
}
|
|
850
925
|
filterSubModels(subKey, callback) {
|
|
@@ -892,10 +967,13 @@ const _FlowModel = class _FlowModel {
|
|
|
892
967
|
createRootModel(options) {
|
|
893
968
|
return this.flowEngine.createModel(options);
|
|
894
969
|
}
|
|
895
|
-
|
|
970
|
+
/**
|
|
971
|
+
* 对指定子模型派发 beforeRender 事件(顺序执行并使用缓存)。
|
|
972
|
+
*/
|
|
973
|
+
async applySubModelsBeforeRenderFlows(subKey, inputArgs, shared) {
|
|
896
974
|
await Promise.all(
|
|
897
975
|
this.mapSubModels(subKey, async (sub) => {
|
|
898
|
-
await sub.
|
|
976
|
+
await sub.dispatchEvent("beforeRender", inputArgs);
|
|
899
977
|
})
|
|
900
978
|
);
|
|
901
979
|
}
|
|
@@ -913,7 +991,7 @@ const _FlowModel = class _FlowModel {
|
|
|
913
991
|
return cachedFork;
|
|
914
992
|
}
|
|
915
993
|
}
|
|
916
|
-
const forkId =
|
|
994
|
+
const forkId = (0, import_secure.uid)();
|
|
917
995
|
const fork = new import_forkFlowModel.ForkFlowModel(this, localProps, forkId);
|
|
918
996
|
if ((options == null ? void 0 : options.register) !== false) {
|
|
919
997
|
this.forks.add(fork);
|
|
@@ -952,7 +1030,7 @@ const _FlowModel = class _FlowModel {
|
|
|
952
1030
|
throw new Error("FlowEngine is not set on this model. Please set flowEngine before saving.");
|
|
953
1031
|
}
|
|
954
1032
|
this.observerDispose();
|
|
955
|
-
this.
|
|
1033
|
+
this.invalidateFlowCache("beforeRender", true);
|
|
956
1034
|
return this.flowEngine.removeModel(this.uid);
|
|
957
1035
|
}
|
|
958
1036
|
async save() {
|
|
@@ -969,7 +1047,7 @@ const _FlowModel = class _FlowModel {
|
|
|
969
1047
|
throw new Error("FlowEngine is not set on this model. Please set flowEngine before deleting.");
|
|
970
1048
|
}
|
|
971
1049
|
this.observerDispose();
|
|
972
|
-
this.
|
|
1050
|
+
this.invalidateFlowCache("beforeRender", true);
|
|
973
1051
|
return this.flowEngine.destroyModel(this.uid);
|
|
974
1052
|
}
|
|
975
1053
|
/**
|
|
@@ -1032,7 +1110,8 @@ const _FlowModel = class _FlowModel {
|
|
|
1032
1110
|
uid: this.uid,
|
|
1033
1111
|
...import_lodash.default.omit(this._options, ["flowEngine"]),
|
|
1034
1112
|
stepParams: this.stepParams,
|
|
1035
|
-
sortIndex: this.sortIndex
|
|
1113
|
+
sortIndex: this.sortIndex,
|
|
1114
|
+
flowRegistry: {}
|
|
1036
1115
|
};
|
|
1037
1116
|
const subModels = this.subModels;
|
|
1038
1117
|
for (const subModelKey in subModels) {
|
|
@@ -1047,11 +1126,64 @@ const _FlowModel = class _FlowModel {
|
|
|
1047
1126
|
}
|
|
1048
1127
|
}
|
|
1049
1128
|
for (const [key, flow] of this.flowRegistry.getFlows()) {
|
|
1050
|
-
data[
|
|
1051
|
-
data["flowRegistry"][key] = flow.toData();
|
|
1129
|
+
data.flowRegistry[key] = flow.toData();
|
|
1052
1130
|
}
|
|
1053
1131
|
return data;
|
|
1054
1132
|
}
|
|
1133
|
+
/**
|
|
1134
|
+
* 复制当前模型实例为一个新的实例。
|
|
1135
|
+
* 新实例及其所有子模型都会有新的 uid,且不保留 root model 的 parent 关系。
|
|
1136
|
+
* 内部所有引用旧 uid 的地方(如 parentId, parentUid 等)都会被替换为对应的新 uid。
|
|
1137
|
+
* @returns {FlowModel} 复制后的新模型实例
|
|
1138
|
+
*/
|
|
1139
|
+
clone() {
|
|
1140
|
+
if (!this.flowEngine) {
|
|
1141
|
+
throw new Error("FlowEngine is not set on this model. Please set flowEngine before cloning.");
|
|
1142
|
+
}
|
|
1143
|
+
const serialized = this.serialize();
|
|
1144
|
+
const uidMap = /* @__PURE__ */ new Map();
|
|
1145
|
+
const collectUids = /* @__PURE__ */ __name((data) => {
|
|
1146
|
+
if (data.uid && typeof data.uid === "string") {
|
|
1147
|
+
uidMap.set(data.uid, (0, import_secure.uid)());
|
|
1148
|
+
}
|
|
1149
|
+
if (data.subModels) {
|
|
1150
|
+
for (const key in data.subModels) {
|
|
1151
|
+
const subModel = data.subModels[key];
|
|
1152
|
+
if (Array.isArray(subModel)) {
|
|
1153
|
+
subModel.forEach((item) => collectUids(item));
|
|
1154
|
+
} else if (subModel && typeof subModel === "object") {
|
|
1155
|
+
collectUids(subModel);
|
|
1156
|
+
}
|
|
1157
|
+
}
|
|
1158
|
+
}
|
|
1159
|
+
}, "collectUids");
|
|
1160
|
+
collectUids(serialized);
|
|
1161
|
+
const replaceUidReferences = /* @__PURE__ */ __name((data, isRoot = false) => {
|
|
1162
|
+
if (data === null || data === void 0) {
|
|
1163
|
+
return data;
|
|
1164
|
+
}
|
|
1165
|
+
if (typeof data === "string") {
|
|
1166
|
+
return uidMap.get(data) ?? data;
|
|
1167
|
+
}
|
|
1168
|
+
if (Array.isArray(data)) {
|
|
1169
|
+
return data.map((item) => replaceUidReferences(item, false));
|
|
1170
|
+
}
|
|
1171
|
+
if (typeof data === "object") {
|
|
1172
|
+
const result = {};
|
|
1173
|
+
for (const key in data) {
|
|
1174
|
+
if (!Object.prototype.hasOwnProperty.call(data, key)) continue;
|
|
1175
|
+
if (isRoot && key === "parentId") {
|
|
1176
|
+
continue;
|
|
1177
|
+
}
|
|
1178
|
+
result[key] = replaceUidReferences(data[key], false);
|
|
1179
|
+
}
|
|
1180
|
+
return result;
|
|
1181
|
+
}
|
|
1182
|
+
return data;
|
|
1183
|
+
}, "replaceUidReferences");
|
|
1184
|
+
const clonedData = replaceUidReferences(serialized, true);
|
|
1185
|
+
return this.flowEngine.createModel(clonedData);
|
|
1186
|
+
}
|
|
1055
1187
|
/**
|
|
1056
1188
|
* Opens the flow settings dialog for this flow model.
|
|
1057
1189
|
* @param options - Configuration options for opening flow settings, excluding the model property
|
|
@@ -1063,6 +1195,62 @@ const _FlowModel = class _FlowModel {
|
|
|
1063
1195
|
...options
|
|
1064
1196
|
});
|
|
1065
1197
|
}
|
|
1198
|
+
/** 注册设置菜单的额外项(静态,按类缓存,可继承合并) */
|
|
1199
|
+
static registerExtraMenuItems(opts) {
|
|
1200
|
+
const ModelClass = this;
|
|
1201
|
+
const registry = classMenuExtensions.get(ModelClass) || /* @__PURE__ */ new Set();
|
|
1202
|
+
let entry;
|
|
1203
|
+
if (typeof opts === "function") {
|
|
1204
|
+
entry = { items: opts };
|
|
1205
|
+
} else {
|
|
1206
|
+
entry = opts;
|
|
1207
|
+
}
|
|
1208
|
+
registry.add(entry);
|
|
1209
|
+
classMenuExtensions.set(ModelClass, registry);
|
|
1210
|
+
return () => {
|
|
1211
|
+
const reg = classMenuExtensions.get(ModelClass);
|
|
1212
|
+
reg == null ? void 0 : reg.delete(entry);
|
|
1213
|
+
};
|
|
1214
|
+
}
|
|
1215
|
+
static async getExtraMenuItems(model, t) {
|
|
1216
|
+
const ModelClass = this;
|
|
1217
|
+
const collected = [];
|
|
1218
|
+
const seen = /* @__PURE__ */ new Set();
|
|
1219
|
+
const walk = /* @__PURE__ */ __name(async (Cls) => {
|
|
1220
|
+
if (!Cls || seen.has(Cls)) return;
|
|
1221
|
+
seen.add(Cls);
|
|
1222
|
+
const reg = classMenuExtensions.get(Cls);
|
|
1223
|
+
if (reg) {
|
|
1224
|
+
for (const entry of reg) {
|
|
1225
|
+
if (entry.matcher && !entry.matcher(model)) continue;
|
|
1226
|
+
const items = typeof entry.items === "function" ? await entry.items(model, t) : await Promise.resolve(entry.items || []);
|
|
1227
|
+
const group = entry.group || "common-actions";
|
|
1228
|
+
const sort = entry.sort ?? 0;
|
|
1229
|
+
const prefix = entry.keyPrefix || Cls.name || "extra";
|
|
1230
|
+
(items || []).forEach((it, idx) => {
|
|
1231
|
+
if (!it) return;
|
|
1232
|
+
const key = it.key ?? `${prefix}-${group}-${idx}-${Math.random().toString(36).slice(2, 6)}`;
|
|
1233
|
+
collected.push({
|
|
1234
|
+
...it,
|
|
1235
|
+
key,
|
|
1236
|
+
group: it.group || group,
|
|
1237
|
+
sort: typeof it.sort === "number" ? it.sort : sort
|
|
1238
|
+
});
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
}
|
|
1242
|
+
const ParentClass = Object.getPrototypeOf(Cls);
|
|
1243
|
+
const isFlowModelCtor = ParentClass === _FlowModel || (ParentClass == null ? void 0 : ParentClass.prototype) instanceof _FlowModel;
|
|
1244
|
+
if (isFlowModelCtor) {
|
|
1245
|
+
await walk(ParentClass);
|
|
1246
|
+
}
|
|
1247
|
+
}, "walk");
|
|
1248
|
+
await walk(ModelClass);
|
|
1249
|
+
return collected;
|
|
1250
|
+
}
|
|
1251
|
+
refresh() {
|
|
1252
|
+
return this.rerender();
|
|
1253
|
+
}
|
|
1066
1254
|
// =============================
|
|
1067
1255
|
// Dynamic flows (disabled)
|
|
1068
1256
|
// The following APIs are kept as comments to preserve context
|