@nocobase/flow-engine 2.0.0-alpha.3 → 2.0.0-alpha.30
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/components/FieldModelRenderer.js +10 -4
- 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 +2 -5
- package/lib/components/FlowModelRenderer.js +16 -47
- package/lib/components/FormItem.js +5 -1
- package/lib/{runjs-context/snippets/global/requireAsync.snippet.d.ts → components/dnd/findModelUidPosition.d.ts} +4 -7
- package/lib/{runjs-context/snippets/scene/jsblock/jsx-mount.snippet.js → components/dnd/findModelUidPosition.js} +23 -19
- package/lib/components/dnd/gridDragPlanner.d.ts +130 -0
- package/lib/components/dnd/gridDragPlanner.js +497 -0
- package/lib/components/dnd/index.d.ts +2 -2
- package/lib/components/dnd/index.js +5 -5
- 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/StepSettingsDialog.js +7 -1
- package/lib/components/variables/VariableInput.js +16 -2
- package/lib/components/variables/VariableTag.js +43 -2
- package/lib/components/variables/types.d.ts +2 -0
- package/lib/data-source/index.d.ts +12 -4
- package/lib/data-source/index.js +19 -13
- package/lib/data-source/sortCollectionsByInherits.d.ts +10 -0
- package/lib/data-source/sortCollectionsByInherits.js +71 -0
- package/lib/executor/FlowExecutor.d.ts +4 -5
- package/lib/executor/FlowExecutor.js +135 -100
- package/lib/flowContext.d.ts +33 -5
- package/lib/flowContext.js +193 -76
- package/lib/flowEngine.d.ts +8 -1
- package/lib/flowEngine.js +18 -6
- package/lib/flowSettings.d.ts +2 -1
- package/lib/flowSettings.js +12 -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 +2 -0
- package/lib/models/CollectionFieldModel.js +43 -3
- package/lib/models/flowModel.d.ts +28 -29
- package/lib/models/flowModel.js +114 -92
- package/lib/models/forkFlowModel.d.ts +4 -4
- package/lib/models/forkFlowModel.js +32 -8
- package/lib/provider.d.ts +3 -1
- package/lib/provider.js +7 -5
- package/lib/resources/multiRecordResource.js +2 -0
- package/lib/resources/singleRecordResource.js +1 -0
- 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 +183 -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 +161 -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-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/types.d.ts +28 -3
- package/lib/types.js +4 -3
- 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/index.d.ts +3 -2
- package/lib/utils/index.js +5 -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/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/variablesParams.d.ts +9 -5
- package/lib/utils/variablesParams.js +47 -36
- package/lib/views/PageComponent.js +2 -1
- 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 +8 -8
- package/lib/views/useDialog.js +8 -7
- package/lib/views/useDrawer.d.ts +8 -8
- package/lib/views/useDrawer.js +40 -26
- package/lib/views/usePage.d.ts +8 -8
- package/lib/views/usePage.js +8 -7
- package/package.json +5 -3
- package/src/BlockScopedFlowEngine.ts +86 -0
- package/src/FlowContextProvider.tsx +4 -2
- package/src/JSRunner.ts +3 -0
- package/src/ViewScopedFlowEngine.ts +1 -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__/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__/globalFlowRegistry.test.ts +1 -1
- 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 +449 -0
- package/src/__tests__/runjsSnippets.test.ts +140 -0
- package/src/__tests__/viewScopedFlowEngine.test.ts +3 -3
- package/src/components/DynamicFlowsEditor.tsx +3 -4
- package/src/components/FieldModelRenderer.tsx +16 -5
- package/src/components/FieldSkeleton.tsx +27 -0
- package/src/components/FlowContextSelector.tsx +6 -2
- package/src/components/FlowModelRenderer.tsx +30 -78
- package/src/components/FormItem.tsx +8 -1
- package/src/components/__tests__/flow-model-render-error-fallback.test.tsx +5 -5
- package/src/components/__tests__/gridDragPlanner.test.ts +494 -0
- package/src/components/dnd/README.md +149 -0
- package/src/components/dnd/findModelUidPosition.ts +26 -0
- package/src/components/dnd/gridDragPlanner.ts +659 -0
- package/src/components/dnd/index.tsx +3 -3
- 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/StepSettingsDialog.tsx +14 -1
- package/src/components/settings/wrappers/contextual/__tests__/DefaultSettingsIcon.test.tsx +424 -0
- package/src/components/subModel/__tests__/AddSubModelButton.test.tsx +5 -7
- package/src/components/variables/VariableInput.tsx +22 -2
- 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 +17 -11
- package/src/data-source/sortCollectionsByInherits.ts +61 -0
- package/src/executor/FlowExecutor.ts +178 -121
- package/src/executor/__tests__/ctx-defs-injection.test.ts +197 -0
- package/src/executor/__tests__/flowExecutor.test.ts +151 -5
- package/src/flowContext.ts +266 -97
- package/src/flowEngine.ts +21 -6
- package/src/flowSettings.ts +9 -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 +43 -4
- package/src/models/__tests__/flowModel.getFlows.sort.test.ts +4 -4
- package/src/models/__tests__/flowModel.test.ts +234 -111
- package/src/models/__tests__/forkFlowModel.test.ts +22 -7
- package/src/models/flowModel.tsx +149 -125
- package/src/models/forkFlowModel.ts +41 -8
- package/src/provider.tsx +10 -7
- package/src/resources/multiRecordResource.ts +2 -0
- package/src/resources/singleRecordResource.ts +1 -0
- 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 +171 -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 +177 -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-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/types.ts +34 -0
- package/src/utils/__tests__/jsxTransform.test.ts +38 -0
- package/src/utils/__tests__/safeGlobals.test.ts +22 -1
- package/src/utils/buildSettingsViewInputArgs.ts +72 -0
- package/src/utils/createEphemeralContext.ts +142 -0
- package/src/utils/index.ts +2 -2
- package/src/utils/jsxTransform.ts +39 -0
- package/src/utils/params-resolvers.ts +2 -2
- 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/variablesParams.ts +50 -38
- package/src/views/PageComponent.tsx +1 -1
- package/src/views/createViewMeta.ts +393 -70
- package/src/views/index.tsx +1 -0
- package/src/views/useDialog.tsx +12 -10
- package/src/views/useDrawer.tsx +60 -36
- package/src/views/usePage.tsx +13 -10
- package/lib/components/dnd/getMousePositionOnElement.d.ts +0 -50
- package/lib/components/dnd/getMousePositionOnElement.js +0 -95
- package/lib/components/dnd/moveBlock.d.ts +0 -33
- package/lib/components/dnd/moveBlock.js +0 -302
- 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/api-request-post.snippet.js +0 -42
- 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/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/global/try-catch-async.snippet.js +0 -44
- 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-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/components/dnd/getMousePositionOnElement.ts +0 -115
- package/src/components/dnd/moveBlock.ts +0 -379
- 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,7 +51,7 @@ __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);
|
|
@@ -60,18 +60,21 @@ var antd = __toESM(require("antd"));
|
|
|
60
60
|
var import_lodash = __toESM(require("lodash"));
|
|
61
61
|
var import_qs = __toESM(require("qs"));
|
|
62
62
|
var import_react = __toESM(require("react"));
|
|
63
|
+
var ReactDOMClient = __toESM(require("react-dom/client"));
|
|
64
|
+
var import_ElementProxy = require("./ElementProxy");
|
|
63
65
|
var import_Acl = require("./acl/Acl");
|
|
64
66
|
var import_ContextPathProxy = require("./ContextPathProxy");
|
|
65
67
|
var import_data_source = require("./data-source");
|
|
66
68
|
var import_flowEngine = require("./flowEngine");
|
|
67
69
|
var import_flowI18n = require("./flowI18n");
|
|
68
70
|
var import_JSRunner = require("./JSRunner");
|
|
69
|
-
var import_models = require("./models");
|
|
70
71
|
var import_resources = require("./resources");
|
|
71
72
|
var import_utils = require("./utils");
|
|
72
73
|
var import_exceptions = require("./utils/exceptions");
|
|
73
74
|
var import_params_resolvers = require("./utils/params-resolvers");
|
|
74
75
|
var import_serverContextParams = require("./utils/serverContextParams");
|
|
76
|
+
var import_registry = require("./runjs-context/registry");
|
|
77
|
+
var import_createEphemeralContext = require("./utils/createEphemeralContext");
|
|
75
78
|
var _proxy, _FlowContext_instances, createChildNodes_fn, findMetaByPath_fn, findMetaInDelegatesDeep_fn, findMetaInProperty_fn, resolvePathInMeta_fn, resolvePathInMetaAsync_fn, buildParentTitles_fn, toTreeNode_fn;
|
|
76
79
|
function isRecordRefLike(val) {
|
|
77
80
|
return !!(val && typeof val === "object" && "collection" in val && "filterByTk" in val);
|
|
@@ -657,34 +660,6 @@ toTreeNode_fn = /* @__PURE__ */ __name(function(name, metaOrFactory, paths = [na
|
|
|
657
660
|
}, "#toTreeNode");
|
|
658
661
|
__name(_FlowContext, "FlowContext");
|
|
659
662
|
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
663
|
const _BaseFlowEngineContext = class _BaseFlowEngineContext extends FlowContext {
|
|
689
664
|
};
|
|
690
665
|
__name(_BaseFlowEngineContext, "BaseFlowEngineContext");
|
|
@@ -724,7 +699,7 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
724
699
|
});
|
|
725
700
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
726
701
|
const mergedGlobals = { ...(options == null ? void 0 : options.globals) || {}, ...variables || {} };
|
|
727
|
-
const runner = this.createJSRunner({
|
|
702
|
+
const runner = await this.createJSRunner({
|
|
728
703
|
...options || {},
|
|
729
704
|
globals: mergedGlobals
|
|
730
705
|
});
|
|
@@ -930,45 +905,54 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
930
905
|
);
|
|
931
906
|
});
|
|
932
907
|
});
|
|
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) {
|
|
908
|
+
this.defineMethod("importAsync", async (url) => {
|
|
909
|
+
if (!url || typeof url !== "string") {
|
|
910
|
+
throw new Error("invalid url");
|
|
953
911
|
}
|
|
954
|
-
|
|
912
|
+
const u = url.trim();
|
|
913
|
+
const g = globalThis;
|
|
914
|
+
g.__nocobaseImportAsyncCache = g.__nocobaseImportAsyncCache || /* @__PURE__ */ new Map();
|
|
915
|
+
const cache = g.__nocobaseImportAsyncCache;
|
|
916
|
+
if (cache.has(u)) return cache.get(u);
|
|
917
|
+
const nativeImport = /* @__PURE__ */ __name(() => import(
|
|
918
|
+
/* @vite-ignore */
|
|
919
|
+
/* webpackIgnore: true */
|
|
920
|
+
u
|
|
921
|
+
), "nativeImport");
|
|
922
|
+
const evalImport = /* @__PURE__ */ __name(() => {
|
|
923
|
+
const importer = (0, eval)("u => import(u)");
|
|
924
|
+
return importer(u);
|
|
925
|
+
}, "evalImport");
|
|
926
|
+
const p = (async () => {
|
|
955
927
|
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"));
|
|
928
|
+
return await nativeImport();
|
|
968
929
|
} catch (err) {
|
|
969
|
-
|
|
930
|
+
try {
|
|
931
|
+
return await evalImport();
|
|
932
|
+
} catch (err2) {
|
|
933
|
+
throw err2 || err;
|
|
934
|
+
}
|
|
970
935
|
}
|
|
971
|
-
});
|
|
936
|
+
})();
|
|
937
|
+
cache.set(u, p);
|
|
938
|
+
return p;
|
|
939
|
+
});
|
|
940
|
+
this.defineMethod("createJSRunner", async function(options) {
|
|
941
|
+
try {
|
|
942
|
+
const mod = await import("./runjs-context/setup");
|
|
943
|
+
if (typeof (mod == null ? void 0 : mod.setupRunJSContexts) === "function") await mod.setupRunJSContexts();
|
|
944
|
+
} catch (_2) {
|
|
945
|
+
}
|
|
946
|
+
const version = (options == null ? void 0 : options.version) || "v1";
|
|
947
|
+
const modelClass = (0, import_registry.getModelClassName)(this);
|
|
948
|
+
const Ctor = import_registry.RunJSContextRegistry.resolve(version, modelClass) || import_registry.RunJSContextRegistry.resolve(version, "*") || FlowRunJSContext;
|
|
949
|
+
let runCtx;
|
|
950
|
+
if (Ctor) {
|
|
951
|
+
runCtx = new Ctor(this);
|
|
952
|
+
}
|
|
953
|
+
const globals = { ctx: runCtx, ...(options == null ? void 0 : options.globals) || {} };
|
|
954
|
+
const { timeoutMs } = options || {};
|
|
955
|
+
return new import_JSRunner.JSRunner({ globals, timeoutMs });
|
|
972
956
|
});
|
|
973
957
|
this.defineMethod("buildServerContextParams", function(input) {
|
|
974
958
|
return (0, import_serverContextParams.buildServerContextParams)(this, input);
|
|
@@ -986,7 +970,7 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
986
970
|
"runAction",
|
|
987
971
|
async function(actionName, params) {
|
|
988
972
|
const def = this.engine.getAction(actionName);
|
|
989
|
-
const ctx =
|
|
973
|
+
const ctx = await (0, import_createEphemeralContext.createEphemeralContext)(this, def);
|
|
990
974
|
if (!def) {
|
|
991
975
|
throw new Error(`Action '${actionName}' not found.`);
|
|
992
976
|
}
|
|
@@ -1019,13 +1003,22 @@ const _FlowEngineContext = class _FlowEngineContext extends BaseFlowEngineContex
|
|
|
1019
1003
|
context: this.createProxy()
|
|
1020
1004
|
});
|
|
1021
1005
|
});
|
|
1006
|
+
this.defineMethod(
|
|
1007
|
+
"useResource",
|
|
1008
|
+
function(className) {
|
|
1009
|
+
if (this.has("resource")) return;
|
|
1010
|
+
this.defineProperty("resource", {
|
|
1011
|
+
get: /* @__PURE__ */ __name(() => this.createResource(className), "get")
|
|
1012
|
+
});
|
|
1013
|
+
}
|
|
1014
|
+
);
|
|
1022
1015
|
}
|
|
1023
1016
|
};
|
|
1024
1017
|
__name(_FlowEngineContext, "FlowEngineContext");
|
|
1025
1018
|
let FlowEngineContext = _FlowEngineContext;
|
|
1026
1019
|
const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
1027
1020
|
constructor(model) {
|
|
1028
|
-
if (!
|
|
1021
|
+
if (!model || typeof model !== "object") {
|
|
1029
1022
|
throw new Error("Invalid FlowModel instance");
|
|
1030
1023
|
}
|
|
1031
1024
|
super();
|
|
@@ -1034,7 +1027,7 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1034
1027
|
this.engine.reactView.onRefReady(ref, cb, timeout);
|
|
1035
1028
|
});
|
|
1036
1029
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1037
|
-
const runner = this.createJSRunner({
|
|
1030
|
+
const runner = await this.createJSRunner({
|
|
1038
1031
|
globals: variables,
|
|
1039
1032
|
version: options == null ? void 0 : options.version
|
|
1040
1033
|
});
|
|
@@ -1043,10 +1036,11 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1043
1036
|
this.defineProperty("model", {
|
|
1044
1037
|
value: model
|
|
1045
1038
|
});
|
|
1039
|
+
const stableRef = (0, import_react.createRef)();
|
|
1046
1040
|
this.defineProperty("ref", {
|
|
1047
1041
|
get: /* @__PURE__ */ __name(() => {
|
|
1048
1042
|
this.model["_refCreated"] = true;
|
|
1049
|
-
return
|
|
1043
|
+
return stableRef;
|
|
1050
1044
|
}, "get")
|
|
1051
1045
|
});
|
|
1052
1046
|
this.defineMethod("openView", async function(uid, options) {
|
|
@@ -1118,7 +1112,7 @@ const _FlowModelContext = class _FlowModelContext extends BaseFlowModelContext {
|
|
|
1118
1112
|
"runAction",
|
|
1119
1113
|
async function(actionName, params) {
|
|
1120
1114
|
const def = this.model.getAction(actionName);
|
|
1121
|
-
const ctx =
|
|
1115
|
+
const ctx = await (0, import_createEphemeralContext.createEphemeralContext)(this, def);
|
|
1122
1116
|
if (!def) {
|
|
1123
1117
|
throw new Error(`Action '${actionName}' not found.`);
|
|
1124
1118
|
}
|
|
@@ -1143,7 +1137,7 @@ __name(_FlowModelContext, "FlowModelContext");
|
|
|
1143
1137
|
let FlowModelContext = _FlowModelContext;
|
|
1144
1138
|
const _FlowForkModelContext = class _FlowForkModelContext extends BaseFlowModelContext {
|
|
1145
1139
|
constructor(master, fork) {
|
|
1146
|
-
if (!
|
|
1140
|
+
if (!master || typeof master !== "object") {
|
|
1147
1141
|
throw new Error("Invalid FlowModel instance");
|
|
1148
1142
|
}
|
|
1149
1143
|
super();
|
|
@@ -1156,14 +1150,15 @@ const _FlowForkModelContext = class _FlowForkModelContext extends BaseFlowModelC
|
|
|
1156
1150
|
this.defineProperty("model", {
|
|
1157
1151
|
get: /* @__PURE__ */ __name(() => this.fork, "get")
|
|
1158
1152
|
});
|
|
1153
|
+
const stableRef = (0, import_react.createRef)();
|
|
1159
1154
|
this.defineProperty("ref", {
|
|
1160
1155
|
get: /* @__PURE__ */ __name(() => {
|
|
1161
1156
|
this.fork["_refCreated"] = true;
|
|
1162
|
-
return
|
|
1157
|
+
return stableRef;
|
|
1163
1158
|
}, "get")
|
|
1164
1159
|
});
|
|
1165
1160
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1166
|
-
const runner = this.createJSRunner({
|
|
1161
|
+
const runner = await this.createJSRunner({
|
|
1167
1162
|
globals: variables,
|
|
1168
1163
|
version: options == null ? void 0 : options.version
|
|
1169
1164
|
});
|
|
@@ -1214,7 +1209,7 @@ const _FlowRuntimeContext = class _FlowRuntimeContext extends BaseFlowModelConte
|
|
|
1214
1209
|
this.engine.reactView.onRefReady(ref, cb, timeout);
|
|
1215
1210
|
});
|
|
1216
1211
|
this.defineMethod("runjs", async (code, variables, options) => {
|
|
1217
|
-
const runner = this.createJSRunner({
|
|
1212
|
+
const runner = await this.createJSRunner({
|
|
1218
1213
|
globals: variables,
|
|
1219
1214
|
version: options == null ? void 0 : options.version
|
|
1220
1215
|
});
|
|
@@ -1255,12 +1250,134 @@ const _FlowRuntimeContext = class _FlowRuntimeContext extends BaseFlowModelConte
|
|
|
1255
1250
|
};
|
|
1256
1251
|
__name(_FlowRuntimeContext, "FlowRuntimeContext");
|
|
1257
1252
|
let FlowRuntimeContext = _FlowRuntimeContext;
|
|
1253
|
+
const __runjsClassDefaultMeta = /* @__PURE__ */ new WeakMap();
|
|
1254
|
+
const __runjsClassLocaleMeta = /* @__PURE__ */ new WeakMap();
|
|
1255
|
+
const __runjsDocCache = /* @__PURE__ */ new WeakMap();
|
|
1256
|
+
function __runjsDeepMerge(base, patch) {
|
|
1257
|
+
if (patch === null) return void 0;
|
|
1258
|
+
if (Array.isArray(base) || Array.isArray(patch) || typeof base !== "object" || typeof patch !== "object") {
|
|
1259
|
+
return patch ?? base;
|
|
1260
|
+
}
|
|
1261
|
+
const out = { ...base };
|
|
1262
|
+
for (const k of Object.keys(patch)) {
|
|
1263
|
+
const v = __runjsDeepMerge(base == null ? void 0 : base[k], patch[k]);
|
|
1264
|
+
if (typeof v === "undefined") delete out[k];
|
|
1265
|
+
else out[k] = v;
|
|
1266
|
+
}
|
|
1267
|
+
return out;
|
|
1268
|
+
}
|
|
1269
|
+
__name(__runjsDeepMerge, "__runjsDeepMerge");
|
|
1270
|
+
const _FlowRunJSContext = class _FlowRunJSContext extends FlowContext {
|
|
1271
|
+
constructor(delegate) {
|
|
1272
|
+
super();
|
|
1273
|
+
this.addDelegate(delegate);
|
|
1274
|
+
this.defineProperty("React", { value: import_react.default });
|
|
1275
|
+
this.defineProperty("antd", { value: antd });
|
|
1276
|
+
const ReactDOMShim = {
|
|
1277
|
+
...ReactDOMClient,
|
|
1278
|
+
createRoot: /* @__PURE__ */ __name((container, options) => {
|
|
1279
|
+
const realContainer = (container == null ? void 0 : container.__el) || container;
|
|
1280
|
+
return this.engine.reactView.createRoot(realContainer, options);
|
|
1281
|
+
}, "createRoot")
|
|
1282
|
+
};
|
|
1283
|
+
this.defineProperty("ReactDOM", { value: ReactDOMShim });
|
|
1284
|
+
this.defineMethod(
|
|
1285
|
+
"render",
|
|
1286
|
+
function(vnode, container) {
|
|
1287
|
+
const el = container || this.element;
|
|
1288
|
+
if (!el) throw new Error("ctx.render: container not provided and ctx.element is not available");
|
|
1289
|
+
const containerEl = (el == null ? void 0 : el.__el) || el;
|
|
1290
|
+
const globalRef = globalThis;
|
|
1291
|
+
globalRef.__nbRunjsRoots = globalRef.__nbRunjsRoots || /* @__PURE__ */ new WeakMap();
|
|
1292
|
+
const rootMap = globalRef.__nbRunjsRoots;
|
|
1293
|
+
if (typeof vnode === "string") {
|
|
1294
|
+
const existingRoot = rootMap.get(containerEl);
|
|
1295
|
+
if (existingRoot && typeof existingRoot.unmount === "function") {
|
|
1296
|
+
try {
|
|
1297
|
+
existingRoot.unmount();
|
|
1298
|
+
} finally {
|
|
1299
|
+
rootMap.delete(containerEl);
|
|
1300
|
+
}
|
|
1301
|
+
}
|
|
1302
|
+
const proxy = new import_ElementProxy.ElementProxy(containerEl);
|
|
1303
|
+
proxy.innerHTML = String(vnode ?? "");
|
|
1304
|
+
return null;
|
|
1305
|
+
}
|
|
1306
|
+
if (vnode && vnode.nodeType && (vnode.nodeType === 1 || vnode.nodeType === 3 || vnode.nodeType === 11)) {
|
|
1307
|
+
const existingRoot = rootMap.get(containerEl);
|
|
1308
|
+
if (existingRoot && typeof existingRoot.unmount === "function") {
|
|
1309
|
+
try {
|
|
1310
|
+
existingRoot.unmount();
|
|
1311
|
+
} finally {
|
|
1312
|
+
rootMap.delete(containerEl);
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
while (containerEl.firstChild) containerEl.removeChild(containerEl.firstChild);
|
|
1316
|
+
containerEl.appendChild(vnode);
|
|
1317
|
+
return null;
|
|
1318
|
+
}
|
|
1319
|
+
let root = rootMap.get(containerEl);
|
|
1320
|
+
if (!root) {
|
|
1321
|
+
root = this.ReactDOM.createRoot(containerEl);
|
|
1322
|
+
rootMap.set(containerEl, root);
|
|
1323
|
+
}
|
|
1324
|
+
root.render(vnode);
|
|
1325
|
+
return root;
|
|
1326
|
+
}
|
|
1327
|
+
);
|
|
1328
|
+
}
|
|
1329
|
+
static define(meta, options) {
|
|
1330
|
+
const locale = options == null ? void 0 : options.locale;
|
|
1331
|
+
if (locale) {
|
|
1332
|
+
const map = __runjsClassLocaleMeta.get(this) || /* @__PURE__ */ new Map();
|
|
1333
|
+
const prev = map.get(locale) || {};
|
|
1334
|
+
map.set(locale, __runjsDeepMerge(prev, meta));
|
|
1335
|
+
__runjsClassLocaleMeta.set(this, map);
|
|
1336
|
+
} else {
|
|
1337
|
+
const prev = __runjsClassDefaultMeta.get(this) || {};
|
|
1338
|
+
__runjsClassDefaultMeta.set(this, __runjsDeepMerge(prev, meta));
|
|
1339
|
+
}
|
|
1340
|
+
__runjsDocCache.delete(this);
|
|
1341
|
+
}
|
|
1342
|
+
static getDoc(locale) {
|
|
1343
|
+
const self = this;
|
|
1344
|
+
let cacheForClass = __runjsDocCache.get(self);
|
|
1345
|
+
const cacheKey = String(locale || "default");
|
|
1346
|
+
if (cacheForClass && cacheForClass.has(cacheKey)) return cacheForClass.get(cacheKey);
|
|
1347
|
+
const chain = [];
|
|
1348
|
+
let cur = self;
|
|
1349
|
+
while (cur && cur.prototype) {
|
|
1350
|
+
chain.unshift(cur);
|
|
1351
|
+
cur = Object.getPrototypeOf(cur);
|
|
1352
|
+
}
|
|
1353
|
+
let merged = {};
|
|
1354
|
+
for (const cls of chain) {
|
|
1355
|
+
merged = __runjsDeepMerge(merged, __runjsClassDefaultMeta.get(cls) || {});
|
|
1356
|
+
}
|
|
1357
|
+
if (locale) {
|
|
1358
|
+
for (const cls of chain) {
|
|
1359
|
+
const lmap = __runjsClassLocaleMeta.get(cls);
|
|
1360
|
+
if (lmap && lmap.has(locale)) {
|
|
1361
|
+
merged = __runjsDeepMerge(merged, lmap.get(locale));
|
|
1362
|
+
}
|
|
1363
|
+
}
|
|
1364
|
+
}
|
|
1365
|
+
if (!cacheForClass) {
|
|
1366
|
+
cacheForClass = /* @__PURE__ */ new Map();
|
|
1367
|
+
__runjsDocCache.set(self, cacheForClass);
|
|
1368
|
+
}
|
|
1369
|
+
cacheForClass.set(cacheKey, merged);
|
|
1370
|
+
return merged;
|
|
1371
|
+
}
|
|
1372
|
+
};
|
|
1373
|
+
__name(_FlowRunJSContext, "FlowRunJSContext");
|
|
1374
|
+
let FlowRunJSContext = _FlowRunJSContext;
|
|
1258
1375
|
// Annotate the CommonJS export names for ESM import in node:
|
|
1259
1376
|
0 && (module.exports = {
|
|
1260
1377
|
FlowContext,
|
|
1261
1378
|
FlowEngineContext,
|
|
1262
1379
|
FlowForkModelContext,
|
|
1263
1380
|
FlowModelContext,
|
|
1264
|
-
|
|
1381
|
+
FlowRunJSContext,
|
|
1265
1382
|
FlowRuntimeContext
|
|
1266
1383
|
});
|
package/lib/flowEngine.d.ts
CHANGED
|
@@ -95,7 +95,7 @@ export declare class FlowEngine {
|
|
|
95
95
|
*/
|
|
96
96
|
reactView: ReactView;
|
|
97
97
|
/**
|
|
98
|
-
* Flow executor that runs
|
|
98
|
+
* Flow executor that runs event flows.
|
|
99
99
|
*/
|
|
100
100
|
executor: FlowExecutor;
|
|
101
101
|
/**
|
|
@@ -304,6 +304,13 @@ export declare class FlowEngine {
|
|
|
304
304
|
* @returns {Promise<boolean>} Whether destroyed successfully
|
|
305
305
|
*/
|
|
306
306
|
destroyModel(uid: string): Promise<boolean>;
|
|
307
|
+
/**
|
|
308
|
+
* Duplicate a model tree via repository API.
|
|
309
|
+
* Returns the duplicated model JSON (root with subModels) or null if not available.
|
|
310
|
+
* @param {string} uid UID of the model to duplicate
|
|
311
|
+
* @returns {Promise<any | null>} Duplicated model JSON or null
|
|
312
|
+
*/
|
|
313
|
+
duplicateModel(uid: string): Promise<Record<string, any>>;
|
|
307
314
|
/**
|
|
308
315
|
* Replace a model instance with a new instance of a class.
|
|
309
316
|
* @template T New model type
|
package/lib/flowEngine.js
CHANGED
|
@@ -132,7 +132,7 @@ const _FlowEngine = class _FlowEngine {
|
|
|
132
132
|
*/
|
|
133
133
|
__publicField(this, "reactView");
|
|
134
134
|
/**
|
|
135
|
-
* Flow executor that runs
|
|
135
|
+
* Flow executor that runs event flows.
|
|
136
136
|
*/
|
|
137
137
|
__publicField(this, "executor");
|
|
138
138
|
this.reactView = new import_ReactView.ReactView(this);
|
|
@@ -629,6 +629,16 @@ const _FlowEngine = class _FlowEngine {
|
|
|
629
629
|
}
|
|
630
630
|
return this.removeModel(uid);
|
|
631
631
|
}
|
|
632
|
+
/**
|
|
633
|
+
* Duplicate a model tree via repository API.
|
|
634
|
+
* Returns the duplicated model JSON (root with subModels) or null if not available.
|
|
635
|
+
* @param {string} uid UID of the model to duplicate
|
|
636
|
+
* @returns {Promise<any | null>} Duplicated model JSON or null
|
|
637
|
+
*/
|
|
638
|
+
async duplicateModel(uid) {
|
|
639
|
+
if (!this.ensureModelRepository()) return null;
|
|
640
|
+
return this._modelRepository.duplicate(uid);
|
|
641
|
+
}
|
|
632
642
|
/**
|
|
633
643
|
* Replace a model instance with a new instance of a class.
|
|
634
644
|
* @template T New model type
|
|
@@ -674,7 +684,7 @@ const _FlowEngine = class _FlowEngine {
|
|
|
674
684
|
}
|
|
675
685
|
if (currentParent) {
|
|
676
686
|
currentParent.emitter.setPaused(false);
|
|
677
|
-
currentParent.parent.
|
|
687
|
+
currentParent.parent.invalidateFlowCache("beforeRender", true);
|
|
678
688
|
(_a = currentParent.parent) == null ? void 0 : _a.rerender();
|
|
679
689
|
currentParent.emitter.emit("onSubModelReplaced", { oldModel, newModel });
|
|
680
690
|
}
|
|
@@ -704,7 +714,8 @@ const _FlowEngine = class _FlowEngine {
|
|
|
704
714
|
console.error("FlowModel.moveTo: Parent subModels must be an array to perform move operation.");
|
|
705
715
|
return false;
|
|
706
716
|
}
|
|
707
|
-
const
|
|
717
|
+
const subModelsCopy = [...subModels];
|
|
718
|
+
const findIndex = /* @__PURE__ */ __name((model) => subModelsCopy.findIndex((item) => item.uid === model.uid), "findIndex");
|
|
708
719
|
const currentIndex = findIndex(sourceModel2);
|
|
709
720
|
const targetIndex = findIndex(targetModel2);
|
|
710
721
|
if (currentIndex === -1 || targetIndex === -1) {
|
|
@@ -715,11 +726,12 @@ const _FlowEngine = class _FlowEngine {
|
|
|
715
726
|
console.warn("FlowModel.moveTo: Current model is already at the target position. No action taken.");
|
|
716
727
|
return false;
|
|
717
728
|
}
|
|
718
|
-
const [movedModel] =
|
|
719
|
-
|
|
720
|
-
|
|
729
|
+
const [movedModel] = subModelsCopy.splice(currentIndex, 1);
|
|
730
|
+
subModelsCopy.splice(targetIndex, 0, movedModel);
|
|
731
|
+
subModelsCopy.forEach((model, index) => {
|
|
721
732
|
model.sortIndex = index;
|
|
722
733
|
});
|
|
734
|
+
sourceModel2.parent.subModels[sourceModel2.subKey] = subModelsCopy;
|
|
723
735
|
return true;
|
|
724
736
|
}, "move");
|
|
725
737
|
move(sourceModel, targetModel);
|
package/lib/flowSettings.d.ts
CHANGED
|
@@ -227,12 +227,13 @@ export declare class FlowSettings {
|
|
|
227
227
|
* @param {any} form 表单实例(从外部传入以便统一管理)
|
|
228
228
|
* @returns {React.ReactElement} 渲染的表单元素
|
|
229
229
|
*/
|
|
230
|
-
renderStepForm({ uiSchema, initialValues, flowEngine, form, onFormValuesChange, }: {
|
|
230
|
+
renderStepForm({ uiSchema, initialValues, flowEngine, form, onFormValuesChange, key, }: {
|
|
231
231
|
uiSchema: any;
|
|
232
232
|
initialValues: any;
|
|
233
233
|
flowEngine: any;
|
|
234
234
|
form?: any;
|
|
235
235
|
onFormValuesChange?: (form: any) => void;
|
|
236
|
+
key?: string;
|
|
236
237
|
}): React.ReactElement;
|
|
237
238
|
/**
|
|
238
239
|
* 打开流程设置入口(聚合渲染多个 flow 的可配置步骤)
|
package/lib/flowSettings.js
CHANGED
|
@@ -152,7 +152,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
152
152
|
TreeSelect,
|
|
153
153
|
Upload
|
|
154
154
|
} = await import("@formily/antd-v5");
|
|
155
|
-
const { Button: Button2 } = await import("antd");
|
|
155
|
+
const { Button: Button2, Alert } = await import("antd");
|
|
156
156
|
this.components.Form = Form;
|
|
157
157
|
this.components.FormDialog = FormDialog;
|
|
158
158
|
this.components.FormDrawer = FormDrawer;
|
|
@@ -186,6 +186,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
186
186
|
this.components.Space = Space2;
|
|
187
187
|
this.components.Editable = Editable;
|
|
188
188
|
this.components.PreviewText = PreviewText;
|
|
189
|
+
this.components.Alert = Alert;
|
|
189
190
|
this.components.Button = Button2;
|
|
190
191
|
this.components.Submit = Submit;
|
|
191
192
|
this.components.Reset = Reset;
|
|
@@ -376,7 +377,8 @@ const _FlowSettings = class _FlowSettings {
|
|
|
376
377
|
initialValues,
|
|
377
378
|
flowEngine,
|
|
378
379
|
form,
|
|
379
|
-
onFormValuesChange: onFormValuesChange2
|
|
380
|
+
onFormValuesChange: onFormValuesChange2,
|
|
381
|
+
key
|
|
380
382
|
}) {
|
|
381
383
|
var _a, _b;
|
|
382
384
|
const scopes = {
|
|
@@ -399,7 +401,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
399
401
|
const SchemaField = (0, import_react.createSchemaField)();
|
|
400
402
|
return import_react2.default.createElement(
|
|
401
403
|
FormProviderWithForm,
|
|
402
|
-
{ form, initialValues, onFormValuesChange: onFormValuesChange2 },
|
|
404
|
+
{ form, initialValues, onFormValuesChange: onFormValuesChange2, key },
|
|
403
405
|
import_react2.default.createElement(SchemaField, {
|
|
404
406
|
schema: compiledSchema,
|
|
405
407
|
components: ((_b = flowEngine == null ? void 0 : flowEngine.flowSettings) == null ? void 0 : _b.components) || {},
|
|
@@ -436,7 +438,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
436
438
|
* @returns {Promise<boolean>} 是否成功打开弹窗
|
|
437
439
|
*/
|
|
438
440
|
async open(options) {
|
|
439
|
-
var _a, _b, _c, _d, _e
|
|
441
|
+
var _a, _b, _c, _d, _e;
|
|
440
442
|
__privateGet(this, _emitter).emit("beforeOpen", options);
|
|
441
443
|
const { model, flowKey, flowKeys, stepKey, uiMode = "dialog", preset, onCancel, onSaved } = options;
|
|
442
444
|
if (!model) {
|
|
@@ -471,7 +473,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
471
473
|
let actionDefaultParams = {};
|
|
472
474
|
let uiMode2;
|
|
473
475
|
if (step.use) {
|
|
474
|
-
const action = (
|
|
476
|
+
const action = (_b = model.getAction) == null ? void 0 : _b.call(model, step.use);
|
|
475
477
|
if (action) {
|
|
476
478
|
actionDefaultParams = action.defaultParams || {};
|
|
477
479
|
stepTitle = stepTitle || action.title;
|
|
@@ -509,7 +511,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
509
511
|
}
|
|
510
512
|
if (entries.length === 0) {
|
|
511
513
|
if (!preset) {
|
|
512
|
-
(
|
|
514
|
+
(_c = message == null ? void 0 : message.info) == null ? void 0 : _c.call(message, t("This model has no configurable flow settings"));
|
|
513
515
|
}
|
|
514
516
|
return false;
|
|
515
517
|
}
|
|
@@ -521,7 +523,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
521
523
|
const scopes = {
|
|
522
524
|
// 为 schema 表达式提供上下文能力(可在表达式中使用 useFlowSettingsContext 等)
|
|
523
525
|
useFlowSettingsContext: import_useFlowSettingsContext.useFlowSettingsContext,
|
|
524
|
-
...((
|
|
526
|
+
...((_d = flowEngine == null ? void 0 : flowEngine.flowSettings) == null ? void 0 : _d.scopes) || {}
|
|
525
527
|
};
|
|
526
528
|
let modeProps = typeof resolvedUiMode === "object" && resolvedUiMode ? resolvedUiMode.props || {} : {};
|
|
527
529
|
if (modeType === "embed") {
|
|
@@ -535,7 +537,7 @@ const _FlowSettings = class _FlowSettings {
|
|
|
535
537
|
target,
|
|
536
538
|
styles: {
|
|
537
539
|
body: {
|
|
538
|
-
padding: (
|
|
540
|
+
padding: (_e = flowEngine.context.themeToken) == null ? void 0 : _e.padding
|
|
539
541
|
}
|
|
540
542
|
},
|
|
541
543
|
...modeProps,
|
|
@@ -602,6 +604,8 @@ const _FlowSettings = class _FlowSettings {
|
|
|
602
604
|
zIndex: 5e3,
|
|
603
605
|
// 允许透传其它 props(如 maskClosable、footer 等),但确保 content 由我们接管
|
|
604
606
|
...modeProps,
|
|
607
|
+
// 统一构造 settings 弹窗的 inputArgs(集合/记录/父导航/关联)
|
|
608
|
+
inputArgs: (0, import_utils.buildSettingsViewInputArgs)(model, modeProps == null ? void 0 : modeProps.inputArgs),
|
|
605
609
|
content: /* @__PURE__ */ __name((currentView, viewCtx) => {
|
|
606
610
|
viewCtx == null ? void 0 : viewCtx.defineMethod("getStepFormValues", (flowKey2, stepKey2) => {
|
|
607
611
|
var _a2;
|
|
@@ -44,7 +44,8 @@ function useApplyAutoFlows(modelOrUid, inputArgs, options) {
|
|
|
44
44
|
model == null ? void 0 : model.useHooksBeforeRender();
|
|
45
45
|
const { loading, error } = (0, import_ahooks.useRequest)(
|
|
46
46
|
async () => {
|
|
47
|
-
|
|
47
|
+
if (!model) return;
|
|
48
|
+
await model.dispatchEvent("beforeRender", inputArgs);
|
|
48
49
|
},
|
|
49
50
|
{
|
|
50
51
|
refreshDeps: [model, inputArgs]
|
package/lib/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
export * from './types';
|
|
10
10
|
export * from './utils';
|
|
11
|
+
export { compileRunJs } from './utils/jsxTransform';
|
|
11
12
|
export * from './resources';
|
|
12
13
|
export * from './flowEngine';
|
|
13
14
|
export * from './hooks';
|
|
@@ -22,6 +23,11 @@ export * from './ElementProxy';
|
|
|
22
23
|
export * from './flowContext';
|
|
23
24
|
export * from './FlowContextProvider';
|
|
24
25
|
export * from './JSRunner';
|
|
25
|
-
export
|
|
26
|
+
export { getRunJSDocFor, createJSRunnerWithVersion, getRunJSScenesForModel, getRunJSScenesForContext, } from './runjs-context/helpers';
|
|
27
|
+
export { RunJSContextRegistry, getModelClassName } from './runjs-context/registry';
|
|
28
|
+
export { setupRunJSContexts } from './runjs-context/setup';
|
|
29
|
+
export { getSnippetBody, listSnippetsForContext } from './runjs-context/snippets';
|
|
26
30
|
export * from './views';
|
|
27
31
|
export * from './FlowDefinition';
|
|
32
|
+
export { createViewScopedEngine } from './ViewScopedFlowEngine';
|
|
33
|
+
export { createBlockScopedEngine } from './BlockScopedFlowEngine';
|