@nocobase/flow-engine 2.0.0-alpha.4 → 2.0.0-alpha.41
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/BlockScopedFlowEngine.d.ts +23 -0
- package/lib/BlockScopedFlowEngine.js +90 -0
- package/lib/FlowContextProvider.d.ts +2 -2
- package/lib/FlowContextProvider.js +3 -3
- package/lib/FlowDefinition.d.ts +4 -2
- package/lib/JSRunner.js +3 -0
- package/lib/ViewScopedFlowEngine.d.ts +1 -1
- package/lib/ViewScopedFlowEngine.js +12 -0
- package/lib/acl/Acl.d.ts +1 -0
- package/lib/acl/Acl.js +11 -0
- package/lib/components/FieldModelRenderer.js +14 -6
- package/lib/components/FieldSkeleton.d.ts +10 -0
- package/lib/components/FieldSkeleton.js +64 -0
- package/lib/components/FlowContextSelector.js +7 -2
- package/lib/components/FlowModelRenderer.d.ts +3 -6
- package/lib/components/FlowModelRenderer.js +16 -47
- 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/index.d.ts +1 -0
- package/lib/components/index.js +3 -1
- package/lib/components/settings/independents/dropdown/FlowsDropdownButton.js +2 -2
- package/lib/components/settings/wrappers/contextual/DefaultSettingsIcon.js +17 -5
- package/lib/components/settings/wrappers/contextual/FlowsContextMenu.js +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.d.ts +2 -2
- package/lib/components/settings/wrappers/contextual/FlowsFloatContextMenu.js +35 -6
- package/lib/components/settings/wrappers/contextual/StepSettingsDialog.js +7 -1
- package/lib/components/variables/VariableInput.js +19 -5
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/data-source/index.d.ts +15 -4
- package/lib/data-source/index.js +42 -13
- package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
- package/lib/data-source/sortCollectionsByInherits.js +71 -0
- package/lib/emitter.d.ts +6 -0
- package/lib/emitter.js +12 -0
- package/lib/executor/FlowExecutor.d.ts +4 -5
- package/lib/executor/FlowExecutor.js +168 -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 +37 -5
- package/lib/flowContext.js +224 -87
- package/lib/flowEngine.d.ts +24 -1
- package/lib/flowEngine.js +81 -8
- package/lib/flowSettings.d.ts +2 -1
- package/lib/flowSettings.js +16 -8
- package/lib/hooks/useApplyAutoFlows.js +2 -1
- package/lib/index.d.ts +7 -1
- package/lib/index.js +32 -3
- package/lib/locale/en-US.json +4 -2
- package/lib/locale/index.d.ts +4 -0
- package/lib/locale/zh-CN.json +4 -2
- package/lib/models/CollectionFieldModel.d.ts +3 -0
- package/lib/models/CollectionFieldModel.js +52 -6
- package/lib/models/flowModel.d.ts +30 -29
- package/lib/models/flowModel.js +153 -100
- 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 +7 -5
- package/lib/resources/multiRecordResource.js +25 -1
- package/lib/resources/singleRecordResource.js +19 -1
- package/lib/resources/sqlResource.d.ts +1 -0
- package/lib/resources/sqlResource.js +20 -24
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.d.ts +1 -6
- package/lib/runjs-context/contexts/FormJSFieldItemRunJSContext.js +27 -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/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 +24 -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 +205 -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 +82 -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 +14 -3
- package/lib/runjs-context/snippets/index.js +162 -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/scheduler/ModelOperationScheduler.d.ts +51 -0
- package/lib/scheduler/ModelOperationScheduler.js +262 -0
- package/lib/types.d.ts +28 -3
- package/lib/types.js +4 -3
- package/lib/utils/associationObjectVariable.d.ts +32 -0
- package/lib/utils/associationObjectVariable.js +157 -0
- package/lib/utils/buildSettingsViewInputArgs.d.ts +19 -0
- package/lib/utils/buildSettingsViewInputArgs.js +75 -0
- 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/api-request-post.snippet.js → utils/flows.js} +21 -15
- package/lib/utils/index.d.ts +7 -2
- package/lib/utils/index.js +21 -2
- package/lib/utils/jsxTransform.d.ts +15 -0
- package/lib/utils/jsxTransform.js +68 -0
- package/lib/utils/params-resolvers.js +3 -3
- 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/safeGlobals.d.ts +5 -3
- package/lib/utils/safeGlobals.js +40 -0
- package/lib/utils/schema-utils.js +2 -2
- package/lib/utils/serverContextParams.d.ts +1 -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 +132 -36
- package/lib/views/DrawerComponent.js +21 -2
- package/lib/views/PageComponent.js +2 -1
- package/lib/views/ViewNavigation.d.ts +3 -9
- package/lib/views/ViewNavigation.js +16 -2
- package/lib/views/createViewMeta.d.ts +29 -1
- package/lib/views/createViewMeta.js +338 -72
- package/lib/views/index.d.ts +1 -0
- package/lib/views/index.js +3 -0
- package/lib/views/useDialog.d.ts +9 -8
- package/lib/views/useDialog.js +19 -14
- package/lib/views/useDrawer.d.ts +9 -8
- package/lib/views/useDrawer.js +54 -35
- package/lib/views/usePage.d.ts +9 -8
- package/lib/views/usePage.js +20 -14
- package/package.json +6 -3
- package/src/BlockScopedFlowEngine.ts +86 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +3 -0
- package/src/ViewScopedFlowEngine.ts +15 -1
- package/src/__tests__/JSRunner.test.ts +62 -53
- package/src/__tests__/blockScopedFlowEngine.test.ts +154 -0
- package/src/__tests__/createViewMeta.popup.test.ts +132 -0
- package/src/__tests__/flow-engine.test.ts +3 -0
- package/src/__tests__/flowContext.test.ts +52 -0
- package/src/__tests__/flowContextCreateJSRunner.test.ts +163 -0
- package/src/__tests__/flowEngine.saveModel.test.ts +4 -0
- package/src/__tests__/flowRunJSContextDefine.test.ts +508 -0
- package/src/__tests__/flowSettings.open.test.tsx +2 -0
- 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__/runjsContext.test.ts +216 -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__/runjsLocales.test.ts +36 -0
- package/src/__tests__/runjsRuntimeFeatures.test.ts +461 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
- package/src/acl/Acl.tsx +14 -0
- package/src/acl/__tests__/Acl.test.tsx +43 -0
- package/src/components/DynamicFlowsEditor.tsx +3 -4
- package/src/components/FieldModelRenderer.tsx +20 -7
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +6 -2
- package/src/components/FlowModelRenderer.tsx +33 -81
- 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__/flow-model-render-error-fallback.test.tsx +6 -6
- package/src/components/index.ts +1 -0
- package/src/components/settings/independents/dropdown/FlowsDropdownButton.tsx +1 -1
- package/src/components/settings/wrappers/contextual/DefaultSettingsIcon.tsx +17 -4
- package/src/components/settings/wrappers/contextual/FlowsContextMenu.tsx +1 -1
- package/src/components/settings/wrappers/contextual/FlowsFloatContextMenu.tsx +39 -10
- package/src/components/settings/wrappers/contextual/StepSettingsDialog.tsx +14 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +425 -0
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
- package/src/components/variables/VariableInput.tsx +25 -5
- package/src/components/variables/VariableTag.tsx +54 -2
- package/src/components/variables/types.ts +2 -0
- package/src/data-source/__tests__/sortCollectionsByInherits.test.ts +125 -0
- package/src/data-source/index.ts +42 -11
- package/src/data-source/sortCollectionsByInherits.ts +61 -0
- package/src/emitter.ts +14 -0
- package/src/executor/FlowExecutor.ts +213 -119
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +151 -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 +303 -104
- package/src/flowEngine.ts +96 -6
- package/src/flowSettings.ts +12 -4
- package/src/hooks/useApplyAutoFlows.ts +3 -1
- package/src/index.ts +12 -1
- package/src/locale/en-US.json +4 -2
- package/src/locale/zh-CN.json +4 -2
- package/src/models/CollectionFieldModel.tsx +60 -8
- package/src/models/__tests__/dispatchEvent.behavior.test.ts +169 -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 +234 -111
- package/src/models/__tests__/forkFlowModel.test.ts +40 -7
- package/src/models/flowModel.tsx +197 -132
- package/src/models/forkFlowModel.ts +48 -8
- package/src/provider.tsx +10 -7
- package/src/resources/multiRecordResource.ts +28 -1
- package/src/resources/singleRecordResource.ts +19 -1
- package/src/resources/sqlResource.ts +20 -25
- package/src/runjs-context/contexts/FormJSFieldItemRunJSContext.ts +28 -21
- package/src/runjs-context/contexts/JSBlockRunJSContext.ts +46 -34
- package/src/runjs-context/contexts/JSCollectionActionRunJSContext.ts +15 -16
- package/src/runjs-context/contexts/JSColumnRunJSContext.ts +58 -0
- package/src/runjs-context/contexts/JSFieldRunJSContext.ts +30 -25
- package/src/runjs-context/contexts/JSItemRunJSContext.ts +25 -21
- package/src/runjs-context/contexts/JSRecordActionRunJSContext.ts +17 -18
- package/src/runjs-context/contexts/base.ts +196 -0
- package/src/runjs-context/helpers.ts +32 -30
- package/src/runjs-context/registry.ts +16 -47
- package/src/runjs-context/setup.ts +51 -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 +178 -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/scheduler/ModelOperationScheduler.ts +304 -0
- package/src/types.ts +34 -0
- package/src/utils/__tests__/flows.test.ts +65 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/parsePathnameToViewParams.test.ts +25 -0
- package/src/utils/__tests__/pruneFilter.test.ts +38 -0
- package/src/utils/__tests__/safeGlobals.test.ts +22 -1
- package/src/utils/__tests__/variablesParams.test.ts +63 -0
- package/src/utils/associationObjectVariable.ts +180 -0
- package/src/utils/buildSettingsViewInputArgs.ts +72 -0
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/flows.ts +23 -0
- package/src/utils/index.ts +11 -2
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +2 -2
- package/src/utils/parsePathnameToViewParams.ts +50 -6
- package/src/utils/pruneFilter.ts +41 -0
- package/src/utils/safeGlobals.ts +49 -3
- package/src/utils/schema-utils.ts +1 -1
- package/src/utils/serverContextParams.ts +1 -0
- package/src/utils/translation.ts +7 -2
- package/src/utils/variablesParams.ts +156 -38
- package/src/views/DrawerComponent.tsx +21 -2
- package/src/views/PageComponent.tsx +1 -1
- package/src/views/ViewNavigation.ts +20 -12
- package/src/views/__tests__/ViewNavigation.test.ts +10 -0
- package/src/views/createViewMeta.ts +393 -70
- package/src/views/index.tsx +1 -0
- package/src/views/useDialog.tsx +24 -18
- package/src/views/useDrawer.tsx +74 -45
- package/src/views/usePage.tsx +26 -17
- 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/console-log-ctx.snippet.js +0 -41
- 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/flowContext.js
CHANGED
|
@@ -51,27 +51,32 @@ __export(flowContext_exports, {
|
|
|
51
51
|
FlowEngineContext: () => FlowEngineContext,
|
|
52
52
|
FlowForkModelContext: () => FlowForkModelContext,
|
|
53
53
|
FlowModelContext: () => FlowModelContext,
|
|
54
|
-
|
|
54
|
+
FlowRunJSContext: () => FlowRunJSContext,
|
|
55
55
|
FlowRuntimeContext: () => FlowRuntimeContext
|
|
56
56
|
});
|
|
57
57
|
module.exports = __toCommonJS(flowContext_exports);
|
|
58
58
|
var import_reactive = require("@formily/reactive");
|
|
59
59
|
var antd = __toESM(require("antd"));
|
|
60
|
+
var antdIcons = __toESM(require("@ant-design/icons"));
|
|
60
61
|
var import_lodash = __toESM(require("lodash"));
|
|
61
62
|
var import_qs = __toESM(require("qs"));
|
|
62
63
|
var import_react = __toESM(require("react"));
|
|
64
|
+
var ReactDOMClient = __toESM(require("react-dom/client"));
|
|
65
|
+
var import_ElementProxy = require("./ElementProxy");
|
|
63
66
|
var import_Acl = require("./acl/Acl");
|
|
64
67
|
var import_ContextPathProxy = require("./ContextPathProxy");
|
|
65
68
|
var import_data_source = require("./data-source");
|
|
66
69
|
var import_flowEngine = require("./flowEngine");
|
|
67
70
|
var import_flowI18n = require("./flowI18n");
|
|
68
71
|
var import_JSRunner = require("./JSRunner");
|
|
69
|
-
var import_models = require("./models");
|
|
70
72
|
var import_resources = require("./resources");
|
|
71
73
|
var import_utils = require("./utils");
|
|
72
74
|
var import_exceptions = require("./utils/exceptions");
|
|
73
75
|
var import_params_resolvers = require("./utils/params-resolvers");
|
|
74
76
|
var import_serverContextParams = require("./utils/serverContextParams");
|
|
77
|
+
var import_registry = require("./runjs-context/registry");
|
|
78
|
+
var import_createEphemeralContext = require("./utils/createEphemeralContext");
|
|
79
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
75
80
|
var _proxy, _FlowContext_instances, createChildNodes_fn, findMetaByPath_fn, findMetaInDelegatesDeep_fn, findMetaInProperty_fn, resolvePathInMeta_fn, resolvePathInMetaAsync_fn, buildParentTitles_fn, toTreeNode_fn;
|
|
76
81
|
function isRecordRefLike(val) {
|
|
77
82
|
return !!(val && typeof val === "object" && "collection" in val && "filterByTk" in val);
|
|
@@ -657,34 +662,6 @@ toTreeNode_fn = /* @__PURE__ */ __name(function(name, metaOrFactory, paths = [na
|
|
|
657
662
|
}, "#toTreeNode");
|
|
658
663
|
__name(_FlowContext, "FlowContext");
|
|
659
664
|
let FlowContext = _FlowContext;
|
|
660
|
-
const _FlowRunjsContext = class _FlowRunjsContext extends FlowContext {
|
|
661
|
-
constructor(delegate) {
|
|
662
|
-
super();
|
|
663
|
-
this.addDelegate(delegate);
|
|
664
|
-
this.defineProperty("React", { value: import_react.default });
|
|
665
|
-
this.defineProperty("antd", { value: antd });
|
|
666
|
-
this.defineMethod(
|
|
667
|
-
"dispatchModelEvent",
|
|
668
|
-
async (modelOrUid, eventName, inputArgs) => {
|
|
669
|
-
var _a, _b;
|
|
670
|
-
let model = null;
|
|
671
|
-
if (typeof modelOrUid === "string") {
|
|
672
|
-
model = await this.engine.loadModel({ uid: modelOrUid });
|
|
673
|
-
} else if (modelOrUid instanceof import_models.FlowModel) {
|
|
674
|
-
model = modelOrUid;
|
|
675
|
-
}
|
|
676
|
-
if (model) {
|
|
677
|
-
model.context.addDelegate(this);
|
|
678
|
-
model.dispatchEvent(eventName, { navigation: false, ...(_b = (_a = this.model) == null ? void 0 : _a["getInputArgs"]) == null ? void 0 : _b.call(_a), ...inputArgs });
|
|
679
|
-
} else {
|
|
680
|
-
this.message.error(this.t("Model with ID {{uid}} not found", { uid: modelOrUid }));
|
|
681
|
-
}
|
|
682
|
-
}
|
|
683
|
-
);
|
|
684
|
-
}
|
|
685
|
-
};
|
|
686
|
-
__name(_FlowRunjsContext, "FlowRunjsContext");
|
|
687
|
-
let FlowRunjsContext = _FlowRunjsContext;
|
|
688
665
|
const _BaseFlowEngineContext = class _BaseFlowEngineContext extends FlowContext {
|
|
689
666
|
};
|
|
690
667
|
__name(_BaseFlowEngineContext, "BaseFlowEngineContext");
|
|
@@ -724,7 +701,7 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
724
701
|
});
|
|
725
702
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
726
703
|
const mergedGlobals = { ...(options == null ? void 0 : options.globals) || {}, ...variables || {} };
|
|
727
|
-
const runner = this.createJSRunner({
|
|
704
|
+
const runner = await this.createJSRunner({
|
|
728
705
|
...options || {},
|
|
729
706
|
globals: mergedGlobals
|
|
730
707
|
});
|
|
@@ -797,6 +774,16 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
797
774
|
const inputFromMeta = await collectFromMeta();
|
|
798
775
|
const autoInput = { ...inputFromMeta };
|
|
799
776
|
const autoContextParams = Object.keys(autoInput).length ? (0, import_serverContextParams.buildServerContextParams)(this, autoInput) : void 0;
|
|
777
|
+
if (!autoContextParams) {
|
|
778
|
+
const keys = Object.keys(serverVarPaths);
|
|
779
|
+
const allOptional = keys.length > 0 && keys.every((k) => {
|
|
780
|
+
var _a2;
|
|
781
|
+
return (_a2 = this.getPropertyOptions(k)) == null ? void 0 : _a2.serverOnlyWhenContextParams;
|
|
782
|
+
});
|
|
783
|
+
if (allOptional) {
|
|
784
|
+
return (0, import_utils.resolveExpressions)(template, this);
|
|
785
|
+
}
|
|
786
|
+
}
|
|
800
787
|
if (this.api) {
|
|
801
788
|
try {
|
|
802
789
|
serverResolved = await (0, import_params_resolvers.enqueueVariablesResolve)(this, {
|
|
@@ -930,45 +917,54 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
930
917
|
);
|
|
931
918
|
});
|
|
932
919
|
});
|
|
933
|
-
this.defineMethod("
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
...options,
|
|
937
|
-
globals: {
|
|
938
|
-
ctx: runCtx,
|
|
939
|
-
window: (0, import_utils.createSafeWindow)(),
|
|
940
|
-
document: (0, import_utils.createSafeDocument)(),
|
|
941
|
-
...options == null ? void 0 : options.globals
|
|
942
|
-
}
|
|
943
|
-
});
|
|
944
|
-
});
|
|
945
|
-
this.defineMethod("copyToClipboard", async (text) => {
|
|
946
|
-
const content = String(text ?? "");
|
|
947
|
-
try {
|
|
948
|
-
if (typeof navigator !== "undefined" && navigator.clipboard && navigator.clipboard.writeText) {
|
|
949
|
-
await navigator.clipboard.writeText(content);
|
|
950
|
-
return;
|
|
951
|
-
}
|
|
952
|
-
} catch (e) {
|
|
920
|
+
this.defineMethod("importAsync", async (url) => {
|
|
921
|
+
if (!url || typeof url !== "string") {
|
|
922
|
+
throw new Error("invalid url");
|
|
953
923
|
}
|
|
954
|
-
|
|
924
|
+
const u = url.trim();
|
|
925
|
+
const g = globalThis;
|
|
926
|
+
g.__nocobaseImportAsyncCache = g.__nocobaseImportAsyncCache || /* @__PURE__ */ new Map();
|
|
927
|
+
const cache = g.__nocobaseImportAsyncCache;
|
|
928
|
+
if (cache.has(u)) return cache.get(u);
|
|
929
|
+
const nativeImport = /* @__PURE__ */ __name(() => import(
|
|
930
|
+
/* @vite-ignore */
|
|
931
|
+
/* webpackIgnore: true */
|
|
932
|
+
u
|
|
933
|
+
), "nativeImport");
|
|
934
|
+
const evalImport = /* @__PURE__ */ __name(() => {
|
|
935
|
+
const importer = (0, eval)("u => import(u)");
|
|
936
|
+
return importer(u);
|
|
937
|
+
}, "evalImport");
|
|
938
|
+
const p = (async () => {
|
|
955
939
|
try {
|
|
956
|
-
|
|
957
|
-
ta.value = content;
|
|
958
|
-
ta.setAttribute("readonly", "");
|
|
959
|
-
ta.style.position = "fixed";
|
|
960
|
-
ta.style.top = "-9999px";
|
|
961
|
-
document.body.appendChild(ta);
|
|
962
|
-
ta.focus();
|
|
963
|
-
ta.select();
|
|
964
|
-
const ok = document.execCommand("copy");
|
|
965
|
-
document.body.removeChild(ta);
|
|
966
|
-
if (ok) resolve();
|
|
967
|
-
else reject(new Error("execCommand copy failed"));
|
|
940
|
+
return await nativeImport();
|
|
968
941
|
} catch (err) {
|
|
969
|
-
|
|
942
|
+
try {
|
|
943
|
+
return await evalImport();
|
|
944
|
+
} catch (err2) {
|
|
945
|
+
throw err2 || err;
|
|
946
|
+
}
|
|
970
947
|
}
|
|
971
|
-
});
|
|
948
|
+
})();
|
|
949
|
+
cache.set(u, p);
|
|
950
|
+
return p;
|
|
951
|
+
});
|
|
952
|
+
this.defineMethod("createJSRunner", async function(options) {
|
|
953
|
+
try {
|
|
954
|
+
const mod = await import("./runjs-context/setup");
|
|
955
|
+
if (typeof (mod == null ? void 0 : mod.setupRunJSContexts) === "function") await mod.setupRunJSContexts();
|
|
956
|
+
} catch (_2) {
|
|
957
|
+
}
|
|
958
|
+
const version = (options == null ? void 0 : options.version) || "v1";
|
|
959
|
+
const modelClass = (0, import_registry.getModelClassName)(this);
|
|
960
|
+
const Ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve(version, "*") || FlowRunJSContext;
|
|
961
|
+
let runCtx;
|
|
962
|
+
if (Ctor) {
|
|
963
|
+
runCtx = new Ctor(this);
|
|
964
|
+
}
|
|
965
|
+
const globals = { ctx: runCtx, ...(options == null ? void 0 : options.globals) || {} };
|
|
966
|
+
const { timeoutMs } = options || {};
|
|
967
|
+
return new import_JSRunner.JSRunner({ globals, timeoutMs });
|
|
972
968
|
});
|
|
973
969
|
this.defineMethod("buildServerContextParams", function(input) {
|
|
974
970
|
return (0, import_serverContextParams.buildServerContextParams)(this, input);
|
|
@@ -986,7 +982,7 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
986
982
|
"runAction",
|
|
987
983
|
async function(actionName, params) {
|
|
988
984
|
const def = this.engine.getAction(actionName);
|
|
989
|
-
const ctx =
|
|
985
|
+
const ctx = await (0, import_createEphemeralContext.createEphemeralContext)(this, def);
|
|
990
986
|
if (!def) {
|
|
991
987
|
throw new Error(`Action '${actionName}' not found.`);
|
|
992
988
|
}
|
|
@@ -1019,13 +1015,22 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
1019
1015
|
context: this.createProxy()
|
|
1020
1016
|
});
|
|
1021
1017
|
});
|
|
1018
|
+
this.defineMethod(
|
|
1019
|
+
"useResource",
|
|
1020
|
+
function(className) {
|
|
1021
|
+
if (this.has("resource")) return;
|
|
1022
|
+
this.defineProperty("resource", {
|
|
1023
|
+
get: /* @__PURE__ */ __name(() => this.createResource(className), "get")
|
|
1024
|
+
});
|
|
1025
|
+
}
|
|
1026
|
+
);
|
|
1022
1027
|
}
|
|
1023
1028
|
};
|
|
1024
1029
|
__name(_FlowEngineContext, "FlowEngineContext");
|
|
1025
1030
|
let FlowEngineContext = _FlowEngineContext;
|
|
1026
1031
|
const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
1027
1032
|
constructor(model) {
|
|
1028
|
-
if (!
|
|
1033
|
+
if (!model || typeof model !== "object") {
|
|
1029
1034
|
throw new Error("Invalid FlowModel instance");
|
|
1030
1035
|
}
|
|
1031
1036
|
super();
|
|
@@ -1034,7 +1039,7 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1034
1039
|
this.engine.reactView.onRefReady(ref, cb, timeout);
|
|
1035
1040
|
});
|
|
1036
1041
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1037
|
-
const runner = this.createJSRunner({
|
|
1042
|
+
const runner = await this.createJSRunner({
|
|
1038
1043
|
globals: variables,
|
|
1039
1044
|
version: options == null ? void 0 : options.version
|
|
1040
1045
|
});
|
|
@@ -1051,7 +1056,7 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1051
1056
|
}, "get")
|
|
1052
1057
|
});
|
|
1053
1058
|
this.defineMethod("openView", async function(uid, options) {
|
|
1054
|
-
var _a, _b, _c, _d, _e, _f
|
|
1059
|
+
var _a, _b, _c, _d, _e, _f;
|
|
1055
1060
|
const opts = { ...options };
|
|
1056
1061
|
if (opts.defineProperties || opts.defineMethod) {
|
|
1057
1062
|
opts.navigation = false;
|
|
@@ -1069,28 +1074,29 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1069
1074
|
stepParams: {
|
|
1070
1075
|
popupSettings: {
|
|
1071
1076
|
openView: {
|
|
1072
|
-
|
|
1077
|
+
// 持久化首次传入的关键展示/数据参数,供后续路由与再次打开复用
|
|
1078
|
+
...import_lodash.default.pick(opts, ["dataSourceKey", "collectionName", "associationName", "mode", "size"])
|
|
1073
1079
|
}
|
|
1074
1080
|
}
|
|
1075
1081
|
}
|
|
1076
1082
|
});
|
|
1077
1083
|
await model2.save();
|
|
1078
1084
|
}
|
|
1079
|
-
if ((
|
|
1080
|
-
model2.
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
|
|
1085
|
+
if ((_a = model2.getStepParams("popupSettings")) == null ? void 0 : _a.openView) {
|
|
1086
|
+
const prevOpenView = ((_b = model2.getStepParams("popupSettings")) == null ? void 0 : _b.openView) || {};
|
|
1087
|
+
const incoming = import_lodash.default.pick(opts, ["dataSourceKey", "collectionName", "associationName", "mode", "size"]);
|
|
1088
|
+
const nextOpenView = { ...prevOpenView, ...incoming };
|
|
1089
|
+
if (!import_lodash.default.isEqual(prevOpenView, nextOpenView)) {
|
|
1090
|
+
model2.setStepParams("popupSettings", { openView: nextOpenView });
|
|
1091
|
+
await model2.save();
|
|
1092
|
+
}
|
|
1087
1093
|
}
|
|
1088
|
-
const viewUid = (opts == null ? void 0 : opts.routeViewUid) ?? (opts == null ? void 0 : opts.viewUid) ?? (((
|
|
1094
|
+
const viewUid = (opts == null ? void 0 : opts.routeViewUid) ?? (opts == null ? void 0 : opts.viewUid) ?? (((_d = (_c = model2.stepParams) == null ? void 0 : _c.popupSettings) == null ? void 0 : _d.openView) ? model2.uid : this.model.uid);
|
|
1089
1095
|
const parentView = this.view;
|
|
1090
1096
|
const pendingType = (opts == null ? void 0 : opts.isMobileLayout) ? "embed" : (opts == null ? void 0 : opts.mode) || "drawer";
|
|
1091
1097
|
const pendingInputArgs = { ...opts, viewUid, navigation: opts.navigation };
|
|
1092
|
-
pendingInputArgs.filterByTk = pendingInputArgs.filterByTk || ((
|
|
1093
|
-
pendingInputArgs.sourceId = pendingInputArgs.sourceId || ((
|
|
1098
|
+
pendingInputArgs.filterByTk = pendingInputArgs.filterByTk || ((_e = this.inputArgs) == null ? void 0 : _e.filterByTk);
|
|
1099
|
+
pendingInputArgs.sourceId = pendingInputArgs.sourceId || ((_f = this.inputArgs) == null ? void 0 : _f.sourceId);
|
|
1094
1100
|
const pendingView = {
|
|
1095
1101
|
type: pendingType,
|
|
1096
1102
|
inputArgs: pendingInputArgs,
|
|
@@ -1119,7 +1125,7 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1119
1125
|
"runAction",
|
|
1120
1126
|
async function(actionName, params) {
|
|
1121
1127
|
const def = this.model.getAction(actionName);
|
|
1122
|
-
const ctx =
|
|
1128
|
+
const ctx = await (0, import_createEphemeralContext.createEphemeralContext)(this, def);
|
|
1123
1129
|
if (!def) {
|
|
1124
1130
|
throw new Error(`Action '${actionName}' not found.`);
|
|
1125
1131
|
}
|
|
@@ -1144,7 +1150,7 @@ __name(_FlowModelContext, "FlowModelContext");
|
|
|
1144
1150
|
let FlowModelContext = _FlowModelContext;
|
|
1145
1151
|
const _FlowForkModelContext = class _FlowForkModelContext extends BaseFlowModelContext {
|
|
1146
1152
|
constructor(master, fork) {
|
|
1147
|
-
if (!
|
|
1153
|
+
if (!master || typeof master !== "object") {
|
|
1148
1154
|
throw new Error("Invalid FlowModel instance");
|
|
1149
1155
|
}
|
|
1150
1156
|
super();
|
|
@@ -1165,7 +1171,7 @@ const _FlowForkModelContext = class _FlowForkModelContext extends BaseFlowModelC
|
|
|
1165
1171
|
}, "get")
|
|
1166
1172
|
});
|
|
1167
1173
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1168
|
-
const runner = this.createJSRunner({
|
|
1174
|
+
const runner = await this.createJSRunner({
|
|
1169
1175
|
globals: variables,
|
|
1170
1176
|
version: options == null ? void 0 : options.version
|
|
1171
1177
|
});
|
|
@@ -1216,7 +1222,7 @@ const _FlowRuntimeContext = class _FlowRuntimeContext extends BaseFlowModelConte
|
|
|
1216
1222
|
this.engine.reactView.onRefReady(ref, cb, timeout);
|
|
1217
1223
|
});
|
|
1218
1224
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1219
|
-
const runner = this.createJSRunner({
|
|
1225
|
+
const runner = await this.createJSRunner({
|
|
1220
1226
|
globals: variables,
|
|
1221
1227
|
version: options == null ? void 0 : options.version
|
|
1222
1228
|
});
|
|
@@ -1257,12 +1263,143 @@ const _FlowRuntimeContext = class _FlowRuntimeContext extends BaseFlowModelConte
|
|
|
1257
1263
|
};
|
|
1258
1264
|
__name(_FlowRuntimeContext, "FlowRuntimeContext");
|
|
1259
1265
|
let FlowRuntimeContext = _FlowRuntimeContext;
|
|
1266
|
+
const __runjsClassDefaultMeta = /* @__PURE__ */ new WeakMap();
|
|
1267
|
+
const __runjsClassLocaleMeta = /* @__PURE__ */ new WeakMap();
|
|
1268
|
+
const __runjsDocCache = /* @__PURE__ */ new WeakMap();
|
|
1269
|
+
function __runjsDeepMerge(base, patch) {
|
|
1270
|
+
if (patch === null) return void 0;
|
|
1271
|
+
if (Array.isArray(base) || Array.isArray(patch) || typeof base !== "object" || typeof patch !== "object") {
|
|
1272
|
+
return patch ?? base;
|
|
1273
|
+
}
|
|
1274
|
+
const out = { ...base };
|
|
1275
|
+
for (const k of Object.keys(patch)) {
|
|
1276
|
+
const v = __runjsDeepMerge(base == null ? void 0 : base[k], patch[k]);
|
|
1277
|
+
if (typeof v === "undefined") delete out[k];
|
|
1278
|
+
else out[k] = v;
|
|
1279
|
+
}
|
|
1280
|
+
return out;
|
|
1281
|
+
}
|
|
1282
|
+
__name(__runjsDeepMerge, "__runjsDeepMerge");
|
|
1283
|
+
const _FlowRunJSContext = class _FlowRunJSContext extends FlowContext {
|
|
1284
|
+
constructor(delegate) {
|
|
1285
|
+
super();
|
|
1286
|
+
this.addDelegate(delegate);
|
|
1287
|
+
this.defineProperty("React", { value: import_react.default });
|
|
1288
|
+
this.defineProperty("antd", { value: antd });
|
|
1289
|
+
this.defineProperty("dayjs", { value: import_dayjs.default });
|
|
1290
|
+
const ReactDOMShim = {
|
|
1291
|
+
...ReactDOMClient,
|
|
1292
|
+
createRoot: /* @__PURE__ */ __name((container, options) => {
|
|
1293
|
+
const realContainer = (container == null ? void 0 : container.__el) || container;
|
|
1294
|
+
return this.engine.reactView.createRoot(realContainer, options);
|
|
1295
|
+
}, "createRoot")
|
|
1296
|
+
};
|
|
1297
|
+
this.defineProperty("ReactDOM", { value: ReactDOMShim });
|
|
1298
|
+
const libs = Object.freeze({
|
|
1299
|
+
React: import_react.default,
|
|
1300
|
+
ReactDOM: ReactDOMShim,
|
|
1301
|
+
antd,
|
|
1302
|
+
dayjs: import_dayjs.default,
|
|
1303
|
+
antdIcons
|
|
1304
|
+
});
|
|
1305
|
+
this.defineProperty("libs", { value: libs });
|
|
1306
|
+
this.defineMethod(
|
|
1307
|
+
"render",
|
|
1308
|
+
function(vnode, container) {
|
|
1309
|
+
const el = container || this.element;
|
|
1310
|
+
if (!el) throw new Error("ctx.render: container not provided and ctx.element is not available");
|
|
1311
|
+
const containerEl = (el == null ? void 0 : el.__el) || el;
|
|
1312
|
+
const globalRef = globalThis;
|
|
1313
|
+
globalRef.__nbRunjsRoots = globalRef.__nbRunjsRoots || /* @__PURE__ */ new WeakMap();
|
|
1314
|
+
const rootMap = globalRef.__nbRunjsRoots;
|
|
1315
|
+
if (typeof vnode === "string") {
|
|
1316
|
+
const existingRoot = rootMap.get(containerEl);
|
|
1317
|
+
if (existingRoot && typeof existingRoot.unmount === "function") {
|
|
1318
|
+
try {
|
|
1319
|
+
existingRoot.unmount();
|
|
1320
|
+
} finally {
|
|
1321
|
+
rootMap.delete(containerEl);
|
|
1322
|
+
}
|
|
1323
|
+
}
|
|
1324
|
+
const proxy = new import_ElementProxy.ElementProxy(containerEl);
|
|
1325
|
+
proxy.innerHTML = String(vnode ?? "");
|
|
1326
|
+
return null;
|
|
1327
|
+
}
|
|
1328
|
+
if (vnode && vnode.nodeType && (vnode.nodeType === 1 || vnode.nodeType === 3 || vnode.nodeType === 11)) {
|
|
1329
|
+
const existingRoot = rootMap.get(containerEl);
|
|
1330
|
+
if (existingRoot && typeof existingRoot.unmount === "function") {
|
|
1331
|
+
try {
|
|
1332
|
+
existingRoot.unmount();
|
|
1333
|
+
} finally {
|
|
1334
|
+
rootMap.delete(containerEl);
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
while (containerEl.firstChild) containerEl.removeChild(containerEl.firstChild);
|
|
1338
|
+
containerEl.appendChild(vnode);
|
|
1339
|
+
return null;
|
|
1340
|
+
}
|
|
1341
|
+
let root = rootMap.get(containerEl);
|
|
1342
|
+
if (!root) {
|
|
1343
|
+
root = this.ReactDOM.createRoot(containerEl);
|
|
1344
|
+
rootMap.set(containerEl, root);
|
|
1345
|
+
}
|
|
1346
|
+
root.render(vnode);
|
|
1347
|
+
return root;
|
|
1348
|
+
}
|
|
1349
|
+
);
|
|
1350
|
+
}
|
|
1351
|
+
static define(meta, options) {
|
|
1352
|
+
const locale = options == null ? void 0 : options.locale;
|
|
1353
|
+
if (locale) {
|
|
1354
|
+
const map = __runjsClassLocaleMeta.get(this) || /* @__PURE__ */ new Map();
|
|
1355
|
+
const prev = map.get(locale) || {};
|
|
1356
|
+
map.set(locale, __runjsDeepMerge(prev, meta));
|
|
1357
|
+
__runjsClassLocaleMeta.set(this, map);
|
|
1358
|
+
} else {
|
|
1359
|
+
const prev = __runjsClassDefaultMeta.get(this) || {};
|
|
1360
|
+
__runjsClassDefaultMeta.set(this, __runjsDeepMerge(prev, meta));
|
|
1361
|
+
}
|
|
1362
|
+
__runjsDocCache.delete(this);
|
|
1363
|
+
}
|
|
1364
|
+
static getDoc(locale) {
|
|
1365
|
+
const self = this;
|
|
1366
|
+
let cacheForClass = __runjsDocCache.get(self);
|
|
1367
|
+
const cacheKey = String(locale || "default");
|
|
1368
|
+
if (cacheForClass && cacheForClass.has(cacheKey)) return cacheForClass.get(cacheKey);
|
|
1369
|
+
const chain = [];
|
|
1370
|
+
let cur = self;
|
|
1371
|
+
while (cur && cur.prototype) {
|
|
1372
|
+
chain.unshift(cur);
|
|
1373
|
+
cur = Object.getPrototypeOf(cur);
|
|
1374
|
+
}
|
|
1375
|
+
let merged = {};
|
|
1376
|
+
for (const cls of chain) {
|
|
1377
|
+
merged = __runjsDeepMerge(merged, __runjsClassDefaultMeta.get(cls) || {});
|
|
1378
|
+
}
|
|
1379
|
+
if (locale) {
|
|
1380
|
+
for (const cls of chain) {
|
|
1381
|
+
const lmap = __runjsClassLocaleMeta.get(cls);
|
|
1382
|
+
if (lmap && lmap.has(locale)) {
|
|
1383
|
+
merged = __runjsDeepMerge(merged, lmap.get(locale));
|
|
1384
|
+
}
|
|
1385
|
+
}
|
|
1386
|
+
}
|
|
1387
|
+
if (!cacheForClass) {
|
|
1388
|
+
cacheForClass = /* @__PURE__ */ new Map();
|
|
1389
|
+
__runjsDocCache.set(self, cacheForClass);
|
|
1390
|
+
}
|
|
1391
|
+
cacheForClass.set(cacheKey, merged);
|
|
1392
|
+
return merged;
|
|
1393
|
+
}
|
|
1394
|
+
};
|
|
1395
|
+
__name(_FlowRunJSContext, "FlowRunJSContext");
|
|
1396
|
+
let FlowRunJSContext = _FlowRunJSContext;
|
|
1260
1397
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1261
1398
|
0 && (module.exports = {
|
|
1262
1399
|
FlowContext,
|
|
1263
1400
|
FlowEngineContext,
|
|
1264
1401
|
FlowForkModelContext,
|
|
1265
1402
|
FlowModelContext,
|
|
1266
|
-
|
|
1403
|
+
FlowRunJSContext,
|
|
1267
1404
|
FlowRuntimeContext
|
|
1268
1405
|
});
|
package/lib/flowEngine.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ import { FlowSettings } from './flowSettings';
|
|
|
5
5
|
import { FlowModel } from './models';
|
|
6
6
|
import { ReactView } from './ReactView';
|
|
7
7
|
import { FlowResource } from './resources';
|
|
8
|
+
import { Emitter } from './emitter';
|
|
9
|
+
import ModelOperationScheduler from './scheduler/ModelOperationScheduler';
|
|
10
|
+
import type { ScheduleOptions, ScheduledCancel } from './scheduler/ModelOperationScheduler';
|
|
8
11
|
import type { ActionDefinition, ApplyFlowCacheEntry, CreateModelOptions, EventDefinition, FlowModelOptions, IFlowModelRepository, ModelConstructor, PersistOptions, ResourceType } from './types';
|
|
9
12
|
/**
|
|
10
13
|
* FlowEngine is the core class of the flow engine, responsible for managing flow models, actions, model repository, and more.
|
|
@@ -81,6 +84,13 @@ export declare class FlowEngine {
|
|
|
81
84
|
private _previousEngine?;
|
|
82
85
|
private _nextEngine?;
|
|
83
86
|
private _resources;
|
|
87
|
+
/**
|
|
88
|
+
* 引擎事件总线(目前用于模型生命周期等事件)。
|
|
89
|
+
* ViewScopedFlowEngine 持有自己的实例,实现作用域隔离。
|
|
90
|
+
*/
|
|
91
|
+
emitter: Emitter;
|
|
92
|
+
/** 调度器:仅在 View 作用域引擎本地启用;根/Block 作用域默认不持有 */
|
|
93
|
+
private _modelOperationScheduler?;
|
|
84
94
|
logger: pino.Logger;
|
|
85
95
|
/**
|
|
86
96
|
* Flow settings, including components and form scopes.
|
|
@@ -95,13 +105,19 @@ export declare class FlowEngine {
|
|
|
95
105
|
*/
|
|
96
106
|
reactView: ReactView;
|
|
97
107
|
/**
|
|
98
|
-
* Flow executor that runs
|
|
108
|
+
* Flow executor that runs event flows.
|
|
99
109
|
*/
|
|
100
110
|
executor: FlowExecutor;
|
|
101
111
|
/**
|
|
102
112
|
* Constructor. Initializes React view, registers default model and form scopes.
|
|
103
113
|
*/
|
|
104
114
|
constructor();
|
|
115
|
+
/** 获取/创建当前引擎的调度器(仅在本地作用域) */
|
|
116
|
+
getScheduler(): ModelOperationScheduler;
|
|
117
|
+
/** 释放并清理当前引擎本地调度器(若存在) */
|
|
118
|
+
disposeScheduler(): void;
|
|
119
|
+
/** 在目标模型生命周期达成时执行操作(仅在 View 引擎本地存储计划) */
|
|
120
|
+
scheduleModelOperation(fromModelOrUid: FlowModel | string, toUid: string, fn: (model: FlowModel) => Promise<void> | void, options?: ScheduleOptions): ScheduledCancel;
|
|
105
121
|
/** 上一个引擎(根引擎为 undefined) */
|
|
106
122
|
get previousEngine(): FlowEngine | undefined;
|
|
107
123
|
/** 下一个引擎(若存在) */
|
|
@@ -304,6 +320,13 @@ export declare class FlowEngine {
|
|
|
304
320
|
* @returns {Promise<boolean>} Whether destroyed successfully
|
|
305
321
|
*/
|
|
306
322
|
destroyModel(uid: string): Promise<boolean>;
|
|
323
|
+
/**
|
|
324
|
+
* Duplicate a model tree via repository API.
|
|
325
|
+
* Returns the duplicated model JSON (root with subModels) or null if not available.
|
|
326
|
+
* @param {string} uid UID of the model to duplicate
|
|
327
|
+
* @returns {Promise<any | null>} Duplicated model JSON or null
|
|
328
|
+
*/
|
|
329
|
+
duplicateModel(uid: string): Promise<Record<string, any>>;
|
|
307
330
|
/**
|
|
308
331
|
* Replace a model instance with a new instance of a class.
|
|
309
332
|
* @template T New model type
|