@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
|
@@ -31,7 +31,7 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
31
31
|
/** 是否已被释放 */
|
|
32
32
|
private disposed;
|
|
33
33
|
/** fork 在 master.forks 中的索引 */
|
|
34
|
-
readonly forkId:
|
|
34
|
+
readonly forkId: string;
|
|
35
35
|
/** 需要与 master 共享的属性列表 */
|
|
36
36
|
private static readonly SHARED_PROPERTIES;
|
|
37
37
|
/**
|
|
@@ -48,7 +48,7 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
48
48
|
* 注意:此属性通过 Proxy 在 get/set 陷阱中被动态访问,IDE 可能无法检测到使用, 切勿删除!
|
|
49
49
|
*/
|
|
50
50
|
private localProperties;
|
|
51
|
-
constructor(master: TMaster, initialProps?: IModelComponentProps, forkId?:
|
|
51
|
+
constructor(master: TMaster, initialProps?: IModelComponentProps, forkId?: string);
|
|
52
52
|
get context(): FlowModelContext;
|
|
53
53
|
/**
|
|
54
54
|
* 获取对象及其原型链上的属性描述符
|
|
@@ -58,14 +58,18 @@ export declare class ForkFlowModel<TMaster extends FlowModel = FlowModel> {
|
|
|
58
58
|
* 修改局部 props,仅影响当前 fork
|
|
59
59
|
*/
|
|
60
60
|
setProps(key: string | IModelComponentProps, value?: any): void;
|
|
61
|
+
/**
|
|
62
|
+
* 清理局部 props,仅影响当前 fork
|
|
63
|
+
*/
|
|
64
|
+
clearProps(): {};
|
|
61
65
|
/**
|
|
62
66
|
* render 依旧使用 master 的方法,但合并后的 props 需要透传
|
|
63
67
|
*/
|
|
64
68
|
render(): any;
|
|
65
69
|
/**
|
|
66
|
-
*
|
|
70
|
+
* 事件缓存的作用域标识(fork 专用)。
|
|
67
71
|
*/
|
|
68
|
-
|
|
72
|
+
getFlowCacheScope(eventName: string): string;
|
|
69
73
|
/**
|
|
70
74
|
* 释放 fork:从 master.forks 中移除自身并断开引用
|
|
71
75
|
*/
|
|
@@ -38,10 +38,10 @@ __export(forkFlowModel_exports, {
|
|
|
38
38
|
module.exports = __toCommonJS(forkFlowModel_exports);
|
|
39
39
|
var import_reactive = require("@formily/reactive");
|
|
40
40
|
var import_flowContext = require("../flowContext");
|
|
41
|
-
var
|
|
41
|
+
var import_secure = require("uid/secure");
|
|
42
42
|
var _flowContext;
|
|
43
43
|
const _ForkFlowModel = class _ForkFlowModel {
|
|
44
|
-
constructor(master, initialProps = {}, forkId
|
|
44
|
+
constructor(master, initialProps = {}, forkId) {
|
|
45
45
|
/** 与 master 相同的 UID,用于日志调试 */
|
|
46
46
|
__publicField(this, "uid");
|
|
47
47
|
/** 调试标识,便于在日志或断言中快速识别 */
|
|
@@ -65,7 +65,7 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
65
65
|
this.master = master;
|
|
66
66
|
this.uid = master.uid;
|
|
67
67
|
this.localProps = { ...initialProps };
|
|
68
|
-
this.forkId = forkId;
|
|
68
|
+
this.forkId = forkId || (0, import_secure.uid)();
|
|
69
69
|
this.hidden = this.master.hidden;
|
|
70
70
|
(0, import_reactive.define)(this, {
|
|
71
71
|
localProps: import_reactive.observable,
|
|
@@ -179,6 +179,12 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
179
179
|
this.localProps = { ...this.localProps, ...key };
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* 清理局部 props,仅影响当前 fork
|
|
184
|
+
*/
|
|
185
|
+
clearProps() {
|
|
186
|
+
return this.localProps = {};
|
|
187
|
+
}
|
|
182
188
|
/**
|
|
183
189
|
* render 依旧使用 master 的方法,但合并后的 props 需要透传
|
|
184
190
|
*/
|
|
@@ -194,10 +200,10 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
194
200
|
}
|
|
195
201
|
}
|
|
196
202
|
/**
|
|
197
|
-
*
|
|
203
|
+
* 事件缓存的作用域标识(fork 专用)。
|
|
198
204
|
*/
|
|
199
|
-
|
|
200
|
-
return String(this.forkId)
|
|
205
|
+
getFlowCacheScope(eventName) {
|
|
206
|
+
return `${String(eventName)}:${String(this.forkId)}`;
|
|
201
207
|
}
|
|
202
208
|
// onUnmount() {
|
|
203
209
|
// // 不在此处自动 dispose(避免破坏外部 fork 管理),但应透传到 master 的 onUnmount 钩子,
|
|
@@ -216,11 +222,35 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
216
222
|
* 释放 fork:从 master.forks 中移除自身并断开引用
|
|
217
223
|
*/
|
|
218
224
|
dispose() {
|
|
225
|
+
var _a;
|
|
219
226
|
if (this.disposed) return;
|
|
220
227
|
this.disposed = true;
|
|
228
|
+
try {
|
|
229
|
+
const cache = (_a = this.flowEngine) == null ? void 0 : _a.applyFlowCache;
|
|
230
|
+
if (cache && cache.size > 0) {
|
|
231
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
232
|
+
const forkIdColon = `:${this.forkId}:`;
|
|
233
|
+
const forkIdHyphen = `-${this.forkId}-`;
|
|
234
|
+
for (const key of cache.keys()) {
|
|
235
|
+
const isEventCache = key.startsWith("event:") || key.startsWith("event-");
|
|
236
|
+
if (!isEventCache) continue;
|
|
237
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
238
|
+
if (!endMatches) continue;
|
|
239
|
+
let trimmed = key;
|
|
240
|
+
for (const suf of uidSuffixes) {
|
|
241
|
+
if (trimmed.endsWith(suf)) {
|
|
242
|
+
trimmed = trimmed.slice(0, -suf.length);
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (trimmed.includes(forkIdColon) || trimmed.includes(forkIdHyphen)) {
|
|
247
|
+
cache.delete(key);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
} catch {
|
|
252
|
+
}
|
|
221
253
|
if (this.master && this.master.forks) {
|
|
222
|
-
const forkCacheKey = import_flowEngine.FlowEngine.generateApplyFlowCacheKey(`${this.forkId}`, "all", this.uid);
|
|
223
|
-
this.flowEngine.applyFlowCache.delete(forkCacheKey);
|
|
224
254
|
this.master.forks.delete(this);
|
|
225
255
|
}
|
|
226
256
|
if (this.master && this.master.forkCache) {
|
package/lib/provider.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export declare const FlowEngineProvider: React.FC<FlowEngineProviderProps>;
|
|
|
17
17
|
export declare const FlowEngineGlobalsContextProvider: React.FC<{
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
}>;
|
|
20
|
-
export declare const useFlowEngine: (
|
|
20
|
+
export declare const useFlowEngine: ({ throwError }?: {
|
|
21
|
+
throwError?: boolean;
|
|
22
|
+
}) => FlowEngine;
|
|
21
23
|
export declare const useFlowEngineContext: () => FlowEngineContext;
|
|
22
24
|
export {};
|
package/lib/provider.js
CHANGED
|
@@ -49,14 +49,16 @@ var import_FlowContextProvider = require("./FlowContextProvider");
|
|
|
49
49
|
var import_views = require("./views");
|
|
50
50
|
var import_FlowView = require("./views/FlowView");
|
|
51
51
|
const FlowEngineReactContext = (0, import_react.createContext)(null);
|
|
52
|
-
const FlowEngineProvider =
|
|
52
|
+
const FlowEngineProvider = import_react.default.memo((props) => {
|
|
53
53
|
const { engine, children } = props;
|
|
54
54
|
if (!engine) {
|
|
55
55
|
throw new Error("FlowEngineProvider must be supplied with an engine.");
|
|
56
56
|
}
|
|
57
57
|
return /* @__PURE__ */ import_react.default.createElement(FlowEngineReactContext.Provider, { value: engine }, /* @__PURE__ */ import_react.default.createElement(import_FlowContextProvider.FlowContextProvider, { context: engine.context }, children));
|
|
58
|
-
}
|
|
58
|
+
});
|
|
59
|
+
FlowEngineProvider.displayName = "FlowEngineProvider";
|
|
59
60
|
const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
61
|
+
var _a;
|
|
60
62
|
const { modal, message, notification } = import_antd.App.useApp();
|
|
61
63
|
const [drawer, contextHolder] = (0, import_views.useDrawer)();
|
|
62
64
|
const [embed, pageContextHolder] = (0, import_views.usePage)();
|
|
@@ -77,27 +79,28 @@ const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) =
|
|
|
77
79
|
cache: false,
|
|
78
80
|
get: /* @__PURE__ */ __name((ctx) => new import_FlowView.FlowViewer(ctx, { drawer, embed, popover, dialog }), "get")
|
|
79
81
|
});
|
|
80
|
-
engine.context.defineProperty("themeToken", {
|
|
81
|
-
get: /* @__PURE__ */ __name(() => token, "get"),
|
|
82
|
-
observable: true,
|
|
83
|
-
cache: true
|
|
84
|
-
});
|
|
85
82
|
for (const item of Object.entries(context)) {
|
|
86
83
|
const [key, value] = item;
|
|
87
84
|
if (value) {
|
|
88
85
|
engine.context.defineProperty(key, { value });
|
|
89
86
|
}
|
|
90
87
|
}
|
|
88
|
+
engine.context.defineProperty("themeToken", {
|
|
89
|
+
get: /* @__PURE__ */ __name(() => token, "get"),
|
|
90
|
+
observable: true,
|
|
91
|
+
cache: true
|
|
92
|
+
});
|
|
91
93
|
engine.reactView.refresh();
|
|
92
94
|
}, [engine, drawer, modal, message, notification, config, popover, token, dialog, embed]);
|
|
93
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
95
|
+
return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { ...config, locale: (_a = engine.context.locales) == null ? void 0 : _a.antd, popupMatchSelectWidth: false }, children, contextHolder, popoverContextHolder, pageContextHolder, dialogContextHolder);
|
|
94
96
|
}, "FlowEngineGlobalsContextProvider");
|
|
95
|
-
const useFlowEngine = /* @__PURE__ */ __name(() => {
|
|
97
|
+
const useFlowEngine = /* @__PURE__ */ __name(({ throwError = true } = {}) => {
|
|
96
98
|
const context = (0, import_react.useContext)(FlowEngineReactContext);
|
|
97
|
-
if (!context) {
|
|
98
|
-
|
|
99
|
+
if (!context && throwError) {
|
|
100
|
+
console.warn(
|
|
99
101
|
"useFlowEngine must be used within a FlowEngineProvider, and FlowEngineProvider must be supplied with an engine."
|
|
100
102
|
);
|
|
103
|
+
return;
|
|
101
104
|
}
|
|
102
105
|
return context;
|
|
103
106
|
}, "useFlowEngine");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
export * from '@formily/reactive';
|
|
10
|
+
export { observer, getPageActive } from './observer';
|
|
@@ -23,20 +23,19 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
23
23
|
}
|
|
24
24
|
return to;
|
|
25
25
|
};
|
|
26
|
+
var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
|
|
26
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
27
|
-
var
|
|
28
|
-
__export(
|
|
29
|
-
|
|
28
|
+
var reactive_exports = {};
|
|
29
|
+
__export(reactive_exports, {
|
|
30
|
+
getPageActive: () => import_observer.getPageActive,
|
|
31
|
+
observer: () => import_observer.observer
|
|
32
|
+
});
|
|
33
|
+
module.exports = __toCommonJS(reactive_exports);
|
|
34
|
+
__reExport(reactive_exports, require("@formily/reactive"), module.exports);
|
|
35
|
+
var import_observer = require("./observer");
|
|
36
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
37
|
+
0 && (module.exports = {
|
|
38
|
+
getPageActive,
|
|
39
|
+
observer,
|
|
40
|
+
...require("@formily/reactive")
|
|
30
41
|
});
|
|
31
|
-
module.exports = __toCommonJS(api_request_post_snippet_exports);
|
|
32
|
-
var api_request_post_snippet_default = {
|
|
33
|
-
contexts: ["*"],
|
|
34
|
-
prefix: "sn-api-post",
|
|
35
|
-
label: "POST request template",
|
|
36
|
-
description: "Basic template to send a POST request via ctx.api",
|
|
37
|
-
content: `
|
|
38
|
-
const res = await ctx.api.request({ url: '/your/api', method: 'post', data: { name: 'NocoBase' } });
|
|
39
|
-
ctx.message.success(ctx.t('POST request completed'));
|
|
40
|
-
console.log(ctx.t('POST result:'), res);
|
|
41
|
-
`
|
|
42
|
-
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
import { IObserverOptions, ReactFC } from '@formily/reactive-react';
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { FlowEngineContext } from '..';
|
|
12
|
+
type ObserverComponentProps<P, Options extends IObserverOptions> = Options extends {
|
|
13
|
+
forwardRef: true;
|
|
14
|
+
} ? P & {
|
|
15
|
+
ref?: 'ref' extends keyof P ? P['ref'] : React.RefAttributes<any>;
|
|
16
|
+
} : React.PropsWithoutRef<P>;
|
|
17
|
+
export declare const observer: <P, Options extends IObserverOptions = IObserverOptions>(Component: ReactFC<P>, options?: Options) => React.MemoExoticComponent<ReactFC<ObserverComponentProps<P, Options>>>;
|
|
18
|
+
export declare function getPageActive(context: FlowEngineContext): boolean | undefined;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is part of the NocoBase (R) project.
|
|
3
|
+
* Copyright (c) 2020-2024 NocoBase Co., Ltd.
|
|
4
|
+
* Authors: NocoBase Team.
|
|
5
|
+
*
|
|
6
|
+
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
|
+
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
var __create = Object.create;
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
13
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
14
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
15
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
16
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
17
|
+
var __export = (target, all) => {
|
|
18
|
+
for (var name in all)
|
|
19
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
20
|
+
};
|
|
21
|
+
var __copyProps = (to, from, except, desc) => {
|
|
22
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
23
|
+
for (let key of __getOwnPropNames(from))
|
|
24
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
25
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
26
|
+
}
|
|
27
|
+
return to;
|
|
28
|
+
};
|
|
29
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
30
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
31
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
32
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
33
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
34
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
35
|
+
mod
|
|
36
|
+
));
|
|
37
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
38
|
+
var observer_exports = {};
|
|
39
|
+
__export(observer_exports, {
|
|
40
|
+
getPageActive: () => getPageActive,
|
|
41
|
+
observer: () => observer
|
|
42
|
+
});
|
|
43
|
+
module.exports = __toCommonJS(observer_exports);
|
|
44
|
+
var import_reactive_react = require("@formily/reactive-react");
|
|
45
|
+
var import_react = __toESM(require("react"));
|
|
46
|
+
var import_FlowContextProvider = require("../FlowContextProvider");
|
|
47
|
+
var import_reactive = require("@formily/reactive");
|
|
48
|
+
const observer = /* @__PURE__ */ __name((Component, options) => {
|
|
49
|
+
const ComponentWithDefaultScheduler = import_react.default.memo((props) => {
|
|
50
|
+
const ctx = (0, import_FlowContextProvider.useFlowContext)();
|
|
51
|
+
const ctxRef = (0, import_react.useRef)(ctx);
|
|
52
|
+
ctxRef.current = ctx;
|
|
53
|
+
const pendingDisposerRef = (0, import_react.useRef)(null);
|
|
54
|
+
(0, import_react.useEffect)(() => {
|
|
55
|
+
return () => {
|
|
56
|
+
if (pendingDisposerRef.current) {
|
|
57
|
+
pendingDisposerRef.current();
|
|
58
|
+
pendingDisposerRef.current = null;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
62
|
+
const ObservedComponent = (0, import_react.useMemo)(
|
|
63
|
+
() => (0, import_reactive_react.observer)(Component, {
|
|
64
|
+
scheduler(updater) {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
const pageActive = getPageActive(ctxRef.current);
|
|
67
|
+
const tabActive = (_b = (_a = ctxRef.current) == null ? void 0 : _a.tabActive) == null ? void 0 : _b.value;
|
|
68
|
+
if (pageActive === false || tabActive === false) {
|
|
69
|
+
setTimeout(() => {
|
|
70
|
+
if (pendingDisposerRef.current) {
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
const disposer = (0, import_reactive.autorun)(() => {
|
|
74
|
+
var _a2, _b2, _c, _d, _e, _f;
|
|
75
|
+
if (((_b2 = (_a2 = ctxRef.current) == null ? void 0 : _a2.pageActive) == null ? void 0 : _b2.value) && (((_d = (_c = ctxRef.current) == null ? void 0 : _c.tabActive) == null ? void 0 : _d.value) === true || ((_f = (_e = ctxRef.current) == null ? void 0 : _e.tabActive) == null ? void 0 : _f.value) === void 0)) {
|
|
76
|
+
updater();
|
|
77
|
+
disposer == null ? void 0 : disposer();
|
|
78
|
+
pendingDisposerRef.current = null;
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
pendingDisposerRef.current = disposer;
|
|
82
|
+
});
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (pendingDisposerRef.current) {
|
|
86
|
+
pendingDisposerRef.current();
|
|
87
|
+
pendingDisposerRef.current = null;
|
|
88
|
+
}
|
|
89
|
+
updater();
|
|
90
|
+
},
|
|
91
|
+
...options
|
|
92
|
+
}),
|
|
93
|
+
[]
|
|
94
|
+
);
|
|
95
|
+
return /* @__PURE__ */ import_react.default.createElement(ObservedComponent, { ...props });
|
|
96
|
+
});
|
|
97
|
+
ComponentWithDefaultScheduler.displayName = `ComponentWithDefaultScheduler`;
|
|
98
|
+
return ComponentWithDefaultScheduler;
|
|
99
|
+
}, "observer");
|
|
100
|
+
function getPageActive(context) {
|
|
101
|
+
var _a, _b, _c;
|
|
102
|
+
return typeof ((_a = context == null ? void 0 : context.pageActive) == null ? void 0 : _a.value) === "boolean" ? (_b = context == null ? void 0 : context.pageActive) == null ? void 0 : _b.value : (_c = context == null ? void 0 : context.view) == null ? void 0 : _c.inputArgs.pageActive;
|
|
103
|
+
}
|
|
104
|
+
__name(getPageActive, "getPageActive");
|
|
105
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
106
|
+
0 && (module.exports = {
|
|
107
|
+
getPageActive,
|
|
108
|
+
observer
|
|
109
|
+
});
|
|
@@ -30,6 +30,11 @@ export declare abstract class BaseRecordResource<TData = any> extends APIResourc
|
|
|
30
30
|
runAction<TData = any, TMeta = any>(action: string, options: any): Promise<any>;
|
|
31
31
|
setResourceName(resourceName: string): this;
|
|
32
32
|
getResourceName(): string;
|
|
33
|
+
/**
|
|
34
|
+
* Mark current resource as dirty on the root FlowEngine.
|
|
35
|
+
* Used to coordinate "refresh on active" across view stacks.
|
|
36
|
+
*/
|
|
37
|
+
protected markDataSourceDirty(resourceName?: string): void;
|
|
33
38
|
setSourceId(sourceId: string | number): this;
|
|
34
39
|
getSourceId(): string | number;
|
|
35
40
|
setDataSourceKey(dataSourceKey: string): this;
|
|
@@ -45,6 +50,7 @@ export declare abstract class BaseRecordResource<TData = any> extends APIResourc
|
|
|
45
50
|
removeAppends(appends: string | string[]): this;
|
|
46
51
|
getUpdateAssociationValues(): string[];
|
|
47
52
|
addUpdateAssociationValues(updateAssociationValues: string | string[]): this;
|
|
53
|
+
jsonStringify(value: any): string;
|
|
48
54
|
setFilterByTk(filterByTk: any): this;
|
|
49
55
|
getFilterByTk(): any;
|
|
50
56
|
setFields(fields: string[] | string): this;
|
|
@@ -44,6 +44,7 @@ var import_lodash = __toESM(require("lodash"));
|
|
|
44
44
|
var import_apiResource = require("./apiResource");
|
|
45
45
|
var import_filterItem = require("./filterItem");
|
|
46
46
|
var import_flowResource = require("./flowResource");
|
|
47
|
+
var import_viewEvents = require("../views/viewEvents");
|
|
47
48
|
const _BaseRecordResource = class _BaseRecordResource extends import_apiResource.APIResource {
|
|
48
49
|
resourceName;
|
|
49
50
|
sourceId = null;
|
|
@@ -110,6 +111,7 @@ const _BaseRecordResource = class _BaseRecordResource extends import_apiResource
|
|
|
110
111
|
}
|
|
111
112
|
async runAction(action, options) {
|
|
112
113
|
var _a;
|
|
114
|
+
const { rawResponse, ...rest } = options;
|
|
113
115
|
const config = this.mergeRequestConfig(
|
|
114
116
|
import_lodash.default.omit(this.request, ["params", "data", "method"]),
|
|
115
117
|
{
|
|
@@ -117,14 +119,18 @@ const _BaseRecordResource = class _BaseRecordResource extends import_apiResource
|
|
|
117
119
|
url: this.buildURL(action)
|
|
118
120
|
},
|
|
119
121
|
(_a = this.runActionOptions) == null ? void 0 : _a[action],
|
|
120
|
-
|
|
122
|
+
rest
|
|
121
123
|
);
|
|
122
124
|
if (["create", "update", "firstOrCreate", "updateOrCreate"].includes(action)) {
|
|
123
125
|
config.params = config.params || {};
|
|
124
126
|
config.params.updateAssociationValues = this.getUpdateAssociationValues();
|
|
125
127
|
}
|
|
126
128
|
try {
|
|
127
|
-
const
|
|
129
|
+
const response = await this.api.request(config);
|
|
130
|
+
if (rawResponse) {
|
|
131
|
+
return response;
|
|
132
|
+
}
|
|
133
|
+
const { data } = response;
|
|
128
134
|
if (!(data == null ? void 0 : data.data)) {
|
|
129
135
|
return data;
|
|
130
136
|
}
|
|
@@ -140,6 +146,29 @@ const _BaseRecordResource = class _BaseRecordResource extends import_apiResource
|
|
|
140
146
|
getResourceName() {
|
|
141
147
|
return this.resourceName;
|
|
142
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Mark current resource as dirty on the root FlowEngine.
|
|
151
|
+
* Used to coordinate "refresh on active" across view stacks.
|
|
152
|
+
*/
|
|
153
|
+
markDataSourceDirty(resourceName) {
|
|
154
|
+
var _a, _b;
|
|
155
|
+
const engine = this.context.engine;
|
|
156
|
+
if (!engine) return;
|
|
157
|
+
const dataSourceKey = this.getDataSourceKey() || "main";
|
|
158
|
+
const resName = resourceName || this.getResourceName();
|
|
159
|
+
if (!resName) return;
|
|
160
|
+
const affectedResourceNames = /* @__PURE__ */ new Set([String(resName)]);
|
|
161
|
+
if (typeof resName === "string" && resName.includes(".")) {
|
|
162
|
+
affectedResourceNames.add(resName.split(".")[0]);
|
|
163
|
+
}
|
|
164
|
+
for (const name of affectedResourceNames) {
|
|
165
|
+
engine.markDataSourceDirty(dataSourceKey, name);
|
|
166
|
+
}
|
|
167
|
+
(_b = (_a = engine.emitter) == null ? void 0 : _a.emit) == null ? void 0 : _b.call(_a, import_viewEvents.DATA_SOURCE_DIRTY_EVENT, {
|
|
168
|
+
dataSourceKey,
|
|
169
|
+
resourceNames: Array.from(affectedResourceNames)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
143
172
|
setSourceId(sourceId) {
|
|
144
173
|
this.sourceId = sourceId;
|
|
145
174
|
return this;
|
|
@@ -219,8 +248,14 @@ const _BaseRecordResource = class _BaseRecordResource extends import_apiResource
|
|
|
219
248
|
this.updateAssociationValues = currentUpdateAssociationValues;
|
|
220
249
|
return this;
|
|
221
250
|
}
|
|
251
|
+
jsonStringify(value) {
|
|
252
|
+
if (value !== null && typeof value === "object") {
|
|
253
|
+
return JSON.stringify(value);
|
|
254
|
+
}
|
|
255
|
+
return value;
|
|
256
|
+
}
|
|
222
257
|
setFilterByTk(filterByTk) {
|
|
223
|
-
return this.addRequestParameter("filterByTk", filterByTk);
|
|
258
|
+
return this.addRequestParameter("filterByTk", this.jsonStringify(filterByTk));
|
|
224
259
|
}
|
|
225
260
|
getFilterByTk() {
|
|
226
261
|
return this.request.params.filterByTk;
|
|
@@ -16,6 +16,7 @@ export declare class MultiRecordResource<TDataItem = any> extends BaseRecordReso
|
|
|
16
16
|
value: Record<string, any>;
|
|
17
17
|
};
|
|
18
18
|
private refreshTimer;
|
|
19
|
+
private refreshWaiters;
|
|
19
20
|
protected createActionOptions: {};
|
|
20
21
|
protected updateActionOptions: {};
|
|
21
22
|
protected _refreshActionName: string;
|
|
@@ -39,11 +40,13 @@ export declare class MultiRecordResource<TDataItem = any> extends BaseRecordReso
|
|
|
39
40
|
next(): Promise<void>;
|
|
40
41
|
previous(): Promise<void>;
|
|
41
42
|
goto(page: number): Promise<void>;
|
|
42
|
-
create(data: TDataItem, options?: AxiosRequestConfig
|
|
43
|
+
create(data: TDataItem, options?: AxiosRequestConfig & {
|
|
44
|
+
refresh?: boolean;
|
|
45
|
+
}): Promise<void>;
|
|
43
46
|
get(filterByTk: any): Promise<TDataItem | undefined>;
|
|
44
47
|
update(filterByTk: string | number, data: Partial<TDataItem>, options?: AxiosRequestConfig): Promise<void>;
|
|
45
48
|
destroySelectedRows(): Promise<void>;
|
|
46
|
-
destroy(filterByTk: string | number | string[] | number[] | TDataItem | TDataItem[], options?: AxiosRequestConfig): Promise<void>;
|
|
49
|
+
destroy(filterByTk: string | number | string[] | number[] | TDataItem | TDataItem[] | object, options?: AxiosRequestConfig): Promise<void>;
|
|
47
50
|
setItem(index: number, newDataItem: TDataItem): void;
|
|
48
51
|
/**
|
|
49
52
|
* 在同一个事件循环内多次调用 refresh 方法时,只有最后一次调用会生效。避免触发多次相同的接口请求。
|
|
@@ -47,6 +47,7 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
47
47
|
_data = import_reactive.observable.ref([]);
|
|
48
48
|
_meta = import_reactive.observable.ref({});
|
|
49
49
|
refreshTimer = null;
|
|
50
|
+
refreshWaiters = [];
|
|
50
51
|
createActionOptions = {};
|
|
51
52
|
updateActionOptions = {};
|
|
52
53
|
_refreshActionName = "list";
|
|
@@ -129,8 +130,13 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
129
130
|
}
|
|
130
131
|
async create(data, options) {
|
|
131
132
|
const config = this.mergeRequestConfig({ data }, this.createActionOptions, options);
|
|
132
|
-
await this.runAction("create", config);
|
|
133
|
-
|
|
133
|
+
const res = await this.runAction("create", config);
|
|
134
|
+
this.markDataSourceDirty();
|
|
135
|
+
this.emit("saved", data);
|
|
136
|
+
if ((options == null ? void 0 : options.refresh) !== false) {
|
|
137
|
+
await this.refresh();
|
|
138
|
+
}
|
|
139
|
+
return res;
|
|
134
140
|
}
|
|
135
141
|
async get(filterByTk) {
|
|
136
142
|
const options = {
|
|
@@ -144,17 +150,20 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
144
150
|
return data;
|
|
145
151
|
}
|
|
146
152
|
async update(filterByTk, data, options) {
|
|
153
|
+
const result = data;
|
|
147
154
|
const config = this.mergeRequestConfig(
|
|
148
155
|
{
|
|
149
156
|
params: {
|
|
150
157
|
filterByTk
|
|
151
158
|
},
|
|
152
|
-
data
|
|
159
|
+
data: result
|
|
153
160
|
},
|
|
154
161
|
this.updateActionOptions,
|
|
155
162
|
options
|
|
156
163
|
);
|
|
157
164
|
await this.runAction("update", config);
|
|
165
|
+
this.markDataSourceDirty();
|
|
166
|
+
this.emit("saved", data);
|
|
158
167
|
await this.refresh();
|
|
159
168
|
}
|
|
160
169
|
async destroySelectedRows() {
|
|
@@ -168,14 +177,18 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
168
177
|
const config = this.mergeRequestConfig(
|
|
169
178
|
{
|
|
170
179
|
params: {
|
|
171
|
-
filterByTk:
|
|
172
|
-
return typeof item === "object" ? item["id"] : item;
|
|
173
|
-
})
|
|
180
|
+
filterByTk: this.jsonStringify(filterByTk)
|
|
174
181
|
}
|
|
175
182
|
},
|
|
176
183
|
options
|
|
177
184
|
);
|
|
178
185
|
await this.runAction("destroy", config);
|
|
186
|
+
this.markDataSourceDirty();
|
|
187
|
+
const currentPage = this.getPage();
|
|
188
|
+
const lastPage = Math.ceil((this.getCount() - import_lodash.default.castArray(filterByTk).length) / this.getPageSize());
|
|
189
|
+
if (currentPage > lastPage) {
|
|
190
|
+
this.setPage(lastPage || 1);
|
|
191
|
+
}
|
|
179
192
|
await this.refresh();
|
|
180
193
|
}
|
|
181
194
|
setItem(index, newDataItem) {
|
|
@@ -193,7 +206,11 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
193
206
|
clearTimeout(this.refreshTimer);
|
|
194
207
|
}
|
|
195
208
|
return new Promise((resolve, reject) => {
|
|
209
|
+
this.refreshWaiters.push({ resolve, reject });
|
|
196
210
|
this.refreshTimer = setTimeout(async () => {
|
|
211
|
+
const waiters = this.refreshWaiters;
|
|
212
|
+
this.refreshWaiters = [];
|
|
213
|
+
this.refreshTimer = null;
|
|
197
214
|
try {
|
|
198
215
|
this.clearError();
|
|
199
216
|
this.loading = true;
|
|
@@ -209,13 +226,12 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
209
226
|
this.setPageSize(meta.pageSize);
|
|
210
227
|
}
|
|
211
228
|
this.emit("refresh");
|
|
212
|
-
|
|
213
|
-
resolve();
|
|
229
|
+
waiters.forEach((w) => w.resolve());
|
|
214
230
|
} catch (error) {
|
|
215
231
|
this.setError(error);
|
|
216
|
-
|
|
232
|
+
const err = error instanceof Error ? error : new Error(String(error));
|
|
233
|
+
waiters.forEach((w) => w.reject(err));
|
|
217
234
|
} finally {
|
|
218
|
-
this.refreshTimer = null;
|
|
219
235
|
this.loading = false;
|
|
220
236
|
}
|
|
221
237
|
});
|
|
@@ -60,29 +60,34 @@ const _SingleRecordResource = class _SingleRecordResource extends import_baseRec
|
|
|
60
60
|
async save(data, options) {
|
|
61
61
|
const config = this.mergeRequestConfig(this.saveActionOptions, import_lodash.default.omit(options, ["refresh"]));
|
|
62
62
|
let actionName = "create";
|
|
63
|
+
const result = data;
|
|
63
64
|
if (!this.isNewRecord) {
|
|
64
65
|
config.params = config.params || {};
|
|
65
66
|
config.params.filterByTk = this.getFilterByTk();
|
|
66
67
|
actionName = "update";
|
|
67
68
|
}
|
|
68
|
-
await this.runAction(actionName, {
|
|
69
|
+
const res = await this.runAction(actionName, {
|
|
69
70
|
...config,
|
|
70
|
-
data
|
|
71
|
+
data: result
|
|
71
72
|
});
|
|
73
|
+
this.markDataSourceDirty();
|
|
74
|
+
this.emit("saved", data);
|
|
72
75
|
if ((options == null ? void 0 : options.refresh) !== false) {
|
|
73
76
|
await this.refresh();
|
|
74
77
|
}
|
|
78
|
+
return res;
|
|
75
79
|
}
|
|
76
80
|
async destroy(options) {
|
|
77
81
|
const config = this.mergeRequestConfig(
|
|
78
82
|
{
|
|
79
83
|
params: {
|
|
80
|
-
filterByTk: this.request.params.filterByTk
|
|
84
|
+
filterByTk: this.jsonStringify(this.request.params.filterByTk)
|
|
81
85
|
}
|
|
82
86
|
},
|
|
83
87
|
options
|
|
84
88
|
);
|
|
85
89
|
await this.runAction("destroy", config);
|
|
90
|
+
this.markDataSourceDirty();
|
|
86
91
|
this.setData(null);
|
|
87
92
|
}
|
|
88
93
|
async refresh() {
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { FlowEngineContext } from '../flowContext';
|
|
9
|
+
import { FlowContext, FlowEngineContext } from '../flowContext';
|
|
10
10
|
import { BaseRecordResource } from './baseRecordResource';
|
|
11
11
|
type SQLRunOptions = {
|
|
12
12
|
bind?: Record<string, any>;
|
|
@@ -20,8 +20,8 @@ type SQLSaveOptions = {
|
|
|
20
20
|
dataSourceKey?: string;
|
|
21
21
|
};
|
|
22
22
|
export declare class FlowSQLRepository {
|
|
23
|
-
protected ctx:
|
|
24
|
-
constructor(ctx:
|
|
23
|
+
protected ctx: FlowContext;
|
|
24
|
+
constructor(ctx: FlowContext);
|
|
25
25
|
run(sql: string, options?: SQLRunOptions): Promise<any>;
|
|
26
26
|
save(data: SQLSaveOptions): Promise<void>;
|
|
27
27
|
runById(uid: string, options?: SQLRunOptions): Promise<any>;
|
|
@@ -35,6 +35,7 @@ export declare class SQLResource<TData = any> extends BaseRecordResource<TData>
|
|
|
35
35
|
value: Record<string, any>;
|
|
36
36
|
};
|
|
37
37
|
private refreshTimer;
|
|
38
|
+
private refreshWaiters;
|
|
38
39
|
private _debugEnabled;
|
|
39
40
|
private _sql;
|
|
40
41
|
protected request: {
|
|
@@ -61,6 +62,7 @@ export declare class SQLResource<TData = any> extends BaseRecordResource<TData>
|
|
|
61
62
|
setFilterByTk(filterByTk: any): this;
|
|
62
63
|
setFilter(filter: Record<string, any>): this;
|
|
63
64
|
setBind(bind: Record<string, any> | Array<any>): this;
|
|
65
|
+
setLiquidContext(liquidContext: Record<string, any>): this;
|
|
64
66
|
run(): Promise<any>;
|
|
65
67
|
runBySQL(): Promise<any>;
|
|
66
68
|
runById(): Promise<any>;
|