@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
|
@@ -38,10 +38,10 @@ __export(forkFlowModel_exports, {
|
|
|
38
38
|
module.exports = __toCommonJS(forkFlowModel_exports);
|
|
39
39
|
var import_reactive = require("@formily/reactive");
|
|
40
40
|
var import_flowContext = require("../flowContext");
|
|
41
|
-
var
|
|
41
|
+
var import_secure = require("uid/secure");
|
|
42
42
|
var _flowContext;
|
|
43
43
|
const _ForkFlowModel = class _ForkFlowModel {
|
|
44
|
-
constructor(master, initialProps = {}, forkId
|
|
44
|
+
constructor(master, initialProps = {}, forkId) {
|
|
45
45
|
/** 与 master 相同的 UID,用于日志调试 */
|
|
46
46
|
__publicField(this, "uid");
|
|
47
47
|
/** 调试标识,便于在日志或断言中快速识别 */
|
|
@@ -65,7 +65,7 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
65
65
|
this.master = master;
|
|
66
66
|
this.uid = master.uid;
|
|
67
67
|
this.localProps = { ...initialProps };
|
|
68
|
-
this.forkId = forkId;
|
|
68
|
+
this.forkId = forkId || (0, import_secure.uid)();
|
|
69
69
|
this.hidden = this.master.hidden;
|
|
70
70
|
(0, import_reactive.define)(this, {
|
|
71
71
|
localProps: import_reactive.observable,
|
|
@@ -179,6 +179,12 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
179
179
|
this.localProps = { ...this.localProps, ...key };
|
|
180
180
|
}
|
|
181
181
|
}
|
|
182
|
+
/**
|
|
183
|
+
* 清理局部 props,仅影响当前 fork
|
|
184
|
+
*/
|
|
185
|
+
clearProps() {
|
|
186
|
+
return this.localProps = {};
|
|
187
|
+
}
|
|
182
188
|
/**
|
|
183
189
|
* render 依旧使用 master 的方法,但合并后的 props 需要透传
|
|
184
190
|
*/
|
|
@@ -194,10 +200,10 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
194
200
|
}
|
|
195
201
|
}
|
|
196
202
|
/**
|
|
197
|
-
*
|
|
203
|
+
* 事件缓存的作用域标识(fork 专用)。
|
|
198
204
|
*/
|
|
199
|
-
|
|
200
|
-
return String(this.forkId)
|
|
205
|
+
getFlowCacheScope(eventName) {
|
|
206
|
+
return `${String(eventName)}:${String(this.forkId)}`;
|
|
201
207
|
}
|
|
202
208
|
// onUnmount() {
|
|
203
209
|
// // 不在此处自动 dispose(避免破坏外部 fork 管理),但应透传到 master 的 onUnmount 钩子,
|
|
@@ -216,11 +222,35 @@ const _ForkFlowModel = class _ForkFlowModel {
|
|
|
216
222
|
* 释放 fork:从 master.forks 中移除自身并断开引用
|
|
217
223
|
*/
|
|
218
224
|
dispose() {
|
|
225
|
+
var _a;
|
|
219
226
|
if (this.disposed) return;
|
|
220
227
|
this.disposed = true;
|
|
228
|
+
try {
|
|
229
|
+
const cache = (_a = this.flowEngine) == null ? void 0 : _a.applyFlowCache;
|
|
230
|
+
if (cache && cache.size > 0) {
|
|
231
|
+
const uidSuffixes = [`:${this.uid}`, `-${this.uid}`];
|
|
232
|
+
const forkIdColon = `:${this.forkId}:`;
|
|
233
|
+
const forkIdHyphen = `-${this.forkId}-`;
|
|
234
|
+
for (const key of cache.keys()) {
|
|
235
|
+
const isEventCache = key.startsWith("event:") || key.startsWith("event-");
|
|
236
|
+
if (!isEventCache) continue;
|
|
237
|
+
const endMatches = uidSuffixes.some((s) => key.endsWith(s));
|
|
238
|
+
if (!endMatches) continue;
|
|
239
|
+
let trimmed = key;
|
|
240
|
+
for (const suf of uidSuffixes) {
|
|
241
|
+
if (trimmed.endsWith(suf)) {
|
|
242
|
+
trimmed = trimmed.slice(0, -suf.length);
|
|
243
|
+
break;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (trimmed.includes(forkIdColon) || trimmed.includes(forkIdHyphen)) {
|
|
247
|
+
cache.delete(key);
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
} catch {
|
|
252
|
+
}
|
|
221
253
|
if (this.master && this.master.forks) {
|
|
222
|
-
const forkCacheKey = import_flowEngine.FlowEngine.generateApplyFlowCacheKey(`${this.forkId}`, "all", this.uid);
|
|
223
|
-
this.flowEngine.applyFlowCache.delete(forkCacheKey);
|
|
224
254
|
this.master.forks.delete(this);
|
|
225
255
|
}
|
|
226
256
|
if (this.master && this.master.forkCache) {
|
package/lib/provider.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export declare const FlowEngineProvider: React.FC<FlowEngineProviderProps>;
|
|
|
17
17
|
export declare const FlowEngineGlobalsContextProvider: React.FC<{
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
}>;
|
|
20
|
-
export declare const useFlowEngine: (
|
|
20
|
+
export declare const useFlowEngine: ({ throwError }?: {
|
|
21
|
+
throwError?: boolean;
|
|
22
|
+
}) => FlowEngine;
|
|
21
23
|
export declare const useFlowEngineContext: () => FlowEngineContext;
|
|
22
24
|
export {};
|
package/lib/provider.js
CHANGED
|
@@ -49,14 +49,16 @@ var import_FlowContextProvider = require("./FlowContextProvider");
|
|
|
49
49
|
var import_views = require("./views");
|
|
50
50
|
var import_FlowView = require("./views/FlowView");
|
|
51
51
|
const FlowEngineReactContext = (0, import_react.createContext)(null);
|
|
52
|
-
const FlowEngineProvider =
|
|
52
|
+
const FlowEngineProvider = import_react.default.memo((props) => {
|
|
53
53
|
const { engine, children } = props;
|
|
54
54
|
if (!engine) {
|
|
55
55
|
throw new Error("FlowEngineProvider must be supplied with an engine.");
|
|
56
56
|
}
|
|
57
57
|
return /* @__PURE__ */ import_react.default.createElement(FlowEngineReactContext.Provider, { value: engine }, /* @__PURE__ */ import_react.default.createElement(import_FlowContextProvider.FlowContextProvider, { context: engine.context }, children));
|
|
58
|
-
}
|
|
58
|
+
});
|
|
59
|
+
FlowEngineProvider.displayName = "FlowEngineProvider";
|
|
59
60
|
const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) => {
|
|
61
|
+
var _a;
|
|
60
62
|
const { modal, message, notification } = import_antd.App.useApp();
|
|
61
63
|
const [drawer, contextHolder] = (0, import_views.useDrawer)();
|
|
62
64
|
const [embed, pageContextHolder] = (0, import_views.usePage)();
|
|
@@ -90,11 +92,11 @@ const FlowEngineGlobalsContextProvider = /* @__PURE__ */ __name(({ children }) =
|
|
|
90
92
|
}
|
|
91
93
|
engine.reactView.refresh();
|
|
92
94
|
}, [engine, drawer, modal, message, notification, config, popover, token, dialog, embed]);
|
|
93
|
-
return /* @__PURE__ */ import_react.default.createElement(
|
|
95
|
+
return /* @__PURE__ */ import_react.default.createElement(import_antd.ConfigProvider, { ...config, locale: (_a = engine.context.locales) == null ? void 0 : _a.antd, popupMatchSelectWidth: false }, children, contextHolder, popoverContextHolder, pageContextHolder, dialogContextHolder);
|
|
94
96
|
}, "FlowEngineGlobalsContextProvider");
|
|
95
|
-
const useFlowEngine = /* @__PURE__ */ __name(() => {
|
|
97
|
+
const useFlowEngine = /* @__PURE__ */ __name(({ throwError = true } = {}) => {
|
|
96
98
|
const context = (0, import_react.useContext)(FlowEngineReactContext);
|
|
97
|
-
if (!context) {
|
|
99
|
+
if (!context && throwError) {
|
|
98
100
|
throw new Error(
|
|
99
101
|
"useFlowEngine must be used within a FlowEngineProvider, and FlowEngineProvider must be supplied with an engine."
|
|
100
102
|
);
|
|
@@ -130,6 +130,7 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
130
130
|
async create(data, options) {
|
|
131
131
|
const config = this.mergeRequestConfig({ data }, this.createActionOptions, options);
|
|
132
132
|
await this.runAction("create", config);
|
|
133
|
+
this.emit("saved", data);
|
|
133
134
|
await this.refresh();
|
|
134
135
|
}
|
|
135
136
|
async get(filterByTk) {
|
|
@@ -144,17 +145,35 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
144
145
|
return data;
|
|
145
146
|
}
|
|
146
147
|
async update(filterByTk, data, options) {
|
|
148
|
+
const collection = this.context.collection;
|
|
149
|
+
const filterTargetKey = collection == null ? void 0 : collection.filterTargetKey;
|
|
150
|
+
const tkData = collection == null ? void 0 : collection.getFilterByTK(this.context.record);
|
|
151
|
+
let result = data;
|
|
152
|
+
if (collection && filterTargetKey) {
|
|
153
|
+
if (Array.isArray(filterTargetKey)) {
|
|
154
|
+
result = {
|
|
155
|
+
...data,
|
|
156
|
+
...tkData || {}
|
|
157
|
+
};
|
|
158
|
+
} else {
|
|
159
|
+
result = {
|
|
160
|
+
...data,
|
|
161
|
+
[filterTargetKey]: tkData
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
147
165
|
const config = this.mergeRequestConfig(
|
|
148
166
|
{
|
|
149
167
|
params: {
|
|
150
168
|
filterByTk
|
|
151
169
|
},
|
|
152
|
-
data
|
|
170
|
+
data: result
|
|
153
171
|
},
|
|
154
172
|
this.updateActionOptions,
|
|
155
173
|
options
|
|
156
174
|
);
|
|
157
175
|
await this.runAction("update", config);
|
|
176
|
+
this.emit("saved", data);
|
|
158
177
|
await this.refresh();
|
|
159
178
|
}
|
|
160
179
|
async destroySelectedRows() {
|
|
@@ -176,6 +195,11 @@ const _MultiRecordResource = class _MultiRecordResource extends import_baseRecor
|
|
|
176
195
|
options
|
|
177
196
|
);
|
|
178
197
|
await this.runAction("destroy", config);
|
|
198
|
+
const currentPage = this.getPage();
|
|
199
|
+
const lastPage = Math.ceil((this.getCount() - import_lodash.default.castArray(filterByTk).length) / this.getPageSize());
|
|
200
|
+
if (currentPage > lastPage) {
|
|
201
|
+
this.setPage(lastPage);
|
|
202
|
+
}
|
|
179
203
|
await this.refresh();
|
|
180
204
|
}
|
|
181
205
|
setItem(index, newDataItem) {
|
|
@@ -60,15 +60,33 @@ const _SingleRecordResource = class _SingleRecordResource extends import_baseRec
|
|
|
60
60
|
async save(data, options) {
|
|
61
61
|
const config = this.mergeRequestConfig(this.saveActionOptions, import_lodash.default.omit(options, ["refresh"]));
|
|
62
62
|
let actionName = "create";
|
|
63
|
+
let result = data;
|
|
63
64
|
if (!this.isNewRecord) {
|
|
64
65
|
config.params = config.params || {};
|
|
65
66
|
config.params.filterByTk = this.getFilterByTk();
|
|
66
67
|
actionName = "update";
|
|
68
|
+
const collection = this.context.collection;
|
|
69
|
+
const filterTargetKey = collection == null ? void 0 : collection.filterTargetKey;
|
|
70
|
+
const tkData = collection == null ? void 0 : collection.getFilterByTK(this.context.record);
|
|
71
|
+
if (collection && filterTargetKey) {
|
|
72
|
+
if (Array.isArray(filterTargetKey)) {
|
|
73
|
+
result = {
|
|
74
|
+
...data,
|
|
75
|
+
...tkData || {}
|
|
76
|
+
};
|
|
77
|
+
} else {
|
|
78
|
+
result = {
|
|
79
|
+
...data,
|
|
80
|
+
[filterTargetKey]: tkData
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
67
84
|
}
|
|
68
85
|
await this.runAction(actionName, {
|
|
69
86
|
...config,
|
|
70
|
-
data
|
|
87
|
+
data: result
|
|
71
88
|
});
|
|
89
|
+
this.emit("saved", data);
|
|
72
90
|
if ((options == null ? void 0 : options.refresh) !== false) {
|
|
73
91
|
await this.refresh();
|
|
74
92
|
}
|
|
@@ -61,6 +61,7 @@ export declare class SQLResource<TData = any> extends BaseRecordResource<TData>
|
|
|
61
61
|
setFilterByTk(filterByTk: any): this;
|
|
62
62
|
setFilter(filter: Record<string, any>): this;
|
|
63
63
|
setBind(bind: Record<string, any> | Array<any>): this;
|
|
64
|
+
setLiquidContext(liquidContext: Record<string, any>): this;
|
|
64
65
|
run(): Promise<any>;
|
|
65
66
|
runBySQL(): Promise<any>;
|
|
66
67
|
runById(): Promise<any>;
|
|
@@ -45,18 +45,7 @@ var import_reactive = require("@formily/reactive");
|
|
|
45
45
|
var import_lodash = __toESM(require("lodash"));
|
|
46
46
|
var import_flowContext = require("../flowContext");
|
|
47
47
|
var import_baseRecordResource = require("./baseRecordResource");
|
|
48
|
-
|
|
49
|
-
let index = 1;
|
|
50
|
-
const bind = {};
|
|
51
|
-
const sql = template.replace(/{{\s*([^}]+)\s*}}/g, (_2, expr) => {
|
|
52
|
-
const key = `__var${index}`;
|
|
53
|
-
bind[key] = `{{${expr.trim()}}}`;
|
|
54
|
-
index++;
|
|
55
|
-
return `$${key}`;
|
|
56
|
-
});
|
|
57
|
-
return { sql, bind };
|
|
58
|
-
}
|
|
59
|
-
__name(transformSQL, "transformSQL");
|
|
48
|
+
var import_client = require("@nocobase/utils/client");
|
|
60
49
|
const _FlowSQLRepository = class _FlowSQLRepository {
|
|
61
50
|
ctx;
|
|
62
51
|
constructor(ctx) {
|
|
@@ -72,16 +61,17 @@ const _FlowSQLRepository = class _FlowSQLRepository {
|
|
|
72
61
|
});
|
|
73
62
|
}
|
|
74
63
|
async run(sql, options = {}) {
|
|
75
|
-
const
|
|
76
|
-
const
|
|
64
|
+
const { sql: transformedSQL, bind, liquidContext } = await (0, import_client.transformSQL)(sql);
|
|
65
|
+
const resolved = await this.ctx.resolveJsonTemplate({ bind, liquidContext });
|
|
66
|
+
const parsedSQL = await (0, import_client.parseLiquidContext)(transformedSQL, resolved.liquidContext);
|
|
77
67
|
const { data } = await this.ctx.api.request({
|
|
78
68
|
method: "POST",
|
|
79
69
|
url: "flowSql:run",
|
|
80
70
|
data: {
|
|
81
|
-
sql:
|
|
71
|
+
sql: parsedSQL,
|
|
82
72
|
...options,
|
|
83
73
|
bind: {
|
|
84
|
-
...bind,
|
|
74
|
+
...resolved.bind,
|
|
85
75
|
...options.bind
|
|
86
76
|
}
|
|
87
77
|
}
|
|
@@ -105,7 +95,7 @@ const _FlowSQLRepository = class _FlowSQLRepository {
|
|
|
105
95
|
uid
|
|
106
96
|
}
|
|
107
97
|
});
|
|
108
|
-
const bind = await this.ctx.resolveJsonTemplate(response.data.data || {});
|
|
98
|
+
const { bind, liquidContext } = await this.ctx.resolveJsonTemplate(response.data.data || {});
|
|
109
99
|
const { data } = await this.ctx.api.request({
|
|
110
100
|
method: "POST",
|
|
111
101
|
url: "flowSql:runById",
|
|
@@ -114,8 +104,9 @@ const _FlowSQLRepository = class _FlowSQLRepository {
|
|
|
114
104
|
...options,
|
|
115
105
|
bind: {
|
|
116
106
|
...bind,
|
|
117
|
-
...options.bind
|
|
118
|
-
}
|
|
107
|
+
...options == null ? void 0 : options.bind
|
|
108
|
+
},
|
|
109
|
+
liquidContext
|
|
119
110
|
}
|
|
120
111
|
});
|
|
121
112
|
return data == null ? void 0 : data.data;
|
|
@@ -227,19 +218,23 @@ const _SQLResource = class _SQLResource extends import_baseRecordResource.BaseRe
|
|
|
227
218
|
this.request.data.bind = bind;
|
|
228
219
|
return this;
|
|
229
220
|
}
|
|
221
|
+
setLiquidContext(liquidContext) {
|
|
222
|
+
this.request.data.liquidContext = liquidContext;
|
|
223
|
+
return this;
|
|
224
|
+
}
|
|
230
225
|
async run() {
|
|
231
226
|
return this._debugEnabled ? await this.runBySQL() : await this.runById();
|
|
232
227
|
}
|
|
233
228
|
async runBySQL() {
|
|
234
229
|
const sql = this._sql;
|
|
235
|
-
const
|
|
236
|
-
const
|
|
230
|
+
const { sql: transformedSQL, bind, liquidContext } = await (0, import_client.transformSQL)(sql);
|
|
231
|
+
const resolved = await this.context.resolveJsonTemplate({ bind, liquidContext });
|
|
237
232
|
const options = import_lodash.default.cloneDeep({
|
|
238
233
|
method: "post",
|
|
239
234
|
...this.getRefreshRequestOptions()
|
|
240
235
|
});
|
|
241
|
-
options.data.
|
|
242
|
-
options.data.
|
|
236
|
+
options.data.sql = await (0, import_client.parseLiquidContext)(transformedSQL, resolved.liquidContext);
|
|
237
|
+
options.data.bind = resolved.bind;
|
|
243
238
|
return await this.runAction("run", options);
|
|
244
239
|
}
|
|
245
240
|
async runById() {
|
|
@@ -249,8 +244,9 @@ const _SQLResource = class _SQLResource extends import_baseRecordResource.BaseRe
|
|
|
249
244
|
uid: this.request.data.uid
|
|
250
245
|
}
|
|
251
246
|
});
|
|
252
|
-
const bind = await this.context.resolveJsonTemplate(data);
|
|
247
|
+
const { bind, liquidContext } = await this.context.resolveJsonTemplate(data);
|
|
253
248
|
this.setBind(bind);
|
|
249
|
+
this.setLiquidContext(liquidContext);
|
|
254
250
|
return await this.runAction("runById", {
|
|
255
251
|
method: "post",
|
|
256
252
|
...this.getRefreshRequestOptions()
|
|
@@ -6,11 +6,6 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { FlowRunJSContext } from '
|
|
9
|
+
import { FlowRunJSContext } from '../../flowContext';
|
|
10
10
|
export declare class FormJSFieldItemRunJSContext extends FlowRunJSContext {
|
|
11
|
-
static injectDefaultGlobals(): {
|
|
12
|
-
window: {};
|
|
13
|
-
document: {};
|
|
14
|
-
};
|
|
15
|
-
constructor(delegate: any);
|
|
16
11
|
}
|
|
@@ -30,36 +30,43 @@ __export(FormJSFieldItemRunJSContext_exports, {
|
|
|
30
30
|
FormJSFieldItemRunJSContext: () => FormJSFieldItemRunJSContext
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(FormJSFieldItemRunJSContext_exports);
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
const _FormJSFieldItemRunJSContext = class _FormJSFieldItemRunJSContext extends import_FlowRunJSContext.FlowRunJSContext {
|
|
36
|
-
static injectDefaultGlobals() {
|
|
37
|
-
return { window: (0, import_utils.createSafeWindow)(), document: (0, import_utils.createSafeDocument)() };
|
|
38
|
-
}
|
|
39
|
-
constructor(delegate) {
|
|
40
|
-
super(delegate);
|
|
41
|
-
this.defineProperty("element", { get: /* @__PURE__ */ __name(() => this._delegate["element"], "get") });
|
|
42
|
-
this.defineProperty("record", { get: /* @__PURE__ */ __name(() => this._delegate["record"], "get") });
|
|
43
|
-
this.defineProperty("value", { get: /* @__PURE__ */ __name(() => this._delegate["value"], "get") });
|
|
44
|
-
}
|
|
33
|
+
var import_flowContext = require("../../flowContext");
|
|
34
|
+
const _FormJSFieldItemRunJSContext = class _FormJSFieldItemRunJSContext extends import_flowContext.FlowRunJSContext {
|
|
45
35
|
};
|
|
46
36
|
__name(_FormJSFieldItemRunJSContext, "FormJSFieldItemRunJSContext");
|
|
47
37
|
let FormJSFieldItemRunJSContext = _FormJSFieldItemRunJSContext;
|
|
48
38
|
FormJSFieldItemRunJSContext.define({
|
|
49
39
|
label: "FormJSFieldItem RunJS context",
|
|
50
40
|
properties: {
|
|
51
|
-
element:
|
|
52
|
-
|
|
53
|
-
|
|
41
|
+
element: `ElementProxy instance providing a safe DOM container for form field rendering.
|
|
42
|
+
Supports innerHTML, append, and other DOM manipulation methods.`,
|
|
43
|
+
value: `Current field value (read-only in display mode; in controlled scenarios, use setProps to modify).`,
|
|
44
|
+
record: `Current record data object (read-only).
|
|
45
|
+
Contains all field values of the parent record.`
|
|
54
46
|
},
|
|
55
47
|
methods: {
|
|
56
|
-
onRefReady:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
48
|
+
onRefReady: `Wait for form field container DOM element to be ready before executing callback.
|
|
49
|
+
Parameters: (ref: React.RefObject, callback: (element: HTMLElement) => void, timeout?: number) => void`,
|
|
50
|
+
setProps: `Set form field properties programmatically.
|
|
51
|
+
Parameters: (fieldModel: any, props: { value?: any, disabled?: boolean, visible?: boolean }) => void
|
|
52
|
+
Example: ctx.setProps(fieldModel, { value: "new value" })`
|
|
61
53
|
}
|
|
62
54
|
});
|
|
55
|
+
FormJSFieldItemRunJSContext.define(
|
|
56
|
+
{
|
|
57
|
+
label: "\u8868\u5355 JS \u5B57\u6BB5\u9879 RunJS \u4E0A\u4E0B\u6587",
|
|
58
|
+
properties: {
|
|
59
|
+
element: "ElementProxy\uFF0C\u8868\u5355\u5B57\u6BB5\u5BB9\u5668",
|
|
60
|
+
value: "\u5B57\u6BB5\u503C\uFF08\u5C55\u793A\u6A21\u5F0F\u4E3A\u53EA\u8BFB\uFF1B\u53D7\u63A7\u573A\u666F\u7528 setProps \u4FEE\u6539\uFF09",
|
|
61
|
+
record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF09"
|
|
62
|
+
},
|
|
63
|
+
methods: {
|
|
64
|
+
onRefReady: "\u5BB9\u5668\u5C31\u7EEA\u56DE\u8C03",
|
|
65
|
+
setProps: "\u8BBE\u7F6E\u8868\u5355\u9879\u5C5E\u6027\uFF1A`setProps(fieldModel, { value })`\uFF08\u7531\u8054\u52A8/\u8868\u5355\u4E0A\u4E0B\u6587\u63D0\u4F9B\uFF09"
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{ locale: "zh-CN" }
|
|
69
|
+
);
|
|
63
70
|
// Annotate the CommonJS export names for ESM import in node:
|
|
64
71
|
0 && (module.exports = {
|
|
65
72
|
FormJSFieldItemRunJSContext
|
|
@@ -6,11 +6,6 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { FlowRunJSContext } from '
|
|
9
|
+
import { FlowRunJSContext } from '../../flowContext';
|
|
10
10
|
export declare class JSBlockRunJSContext extends FlowRunJSContext {
|
|
11
|
-
static injectDefaultGlobals(): {
|
|
12
|
-
window: {};
|
|
13
|
-
document: {};
|
|
14
|
-
};
|
|
15
|
-
constructor(delegate: any);
|
|
16
11
|
}
|
|
@@ -30,48 +30,61 @@ __export(JSBlockRunJSContext_exports, {
|
|
|
30
30
|
JSBlockRunJSContext: () => JSBlockRunJSContext
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(JSBlockRunJSContext_exports);
|
|
33
|
-
var
|
|
34
|
-
|
|
35
|
-
const _JSBlockRunJSContext = class _JSBlockRunJSContext extends import_FlowRunJSContext.FlowRunJSContext {
|
|
36
|
-
static injectDefaultGlobals() {
|
|
37
|
-
return { window: (0, import_utils.createSafeWindow)(), document: (0, import_utils.createSafeDocument)() };
|
|
38
|
-
}
|
|
39
|
-
constructor(delegate) {
|
|
40
|
-
super(delegate);
|
|
41
|
-
this.defineProperty("element", { get: /* @__PURE__ */ __name(() => this._delegate["element"], "get") });
|
|
42
|
-
this.defineProperty("record", { get: /* @__PURE__ */ __name(() => this._delegate["record"], "get") });
|
|
43
|
-
this.defineProperty("value", { get: /* @__PURE__ */ __name(() => this._delegate["value"], "get") });
|
|
44
|
-
}
|
|
33
|
+
var import_flowContext = require("../../flowContext");
|
|
34
|
+
const _JSBlockRunJSContext = class _JSBlockRunJSContext extends import_flowContext.FlowRunJSContext {
|
|
45
35
|
};
|
|
46
36
|
__name(_JSBlockRunJSContext, "JSBlockRunJSContext");
|
|
47
37
|
let JSBlockRunJSContext = _JSBlockRunJSContext;
|
|
48
38
|
JSBlockRunJSContext.define({
|
|
49
|
-
label: "
|
|
39
|
+
label: "RunJS context",
|
|
50
40
|
properties: {
|
|
51
|
-
element:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
41
|
+
element: {
|
|
42
|
+
description: `ElementProxy instance providing a safe DOM container.
|
|
43
|
+
Supports innerHTML, append, and other DOM manipulation methods.
|
|
44
|
+
Use this to render content in the JS block.`,
|
|
45
|
+
detail: "ElementProxy",
|
|
46
|
+
properties: {
|
|
47
|
+
innerHTML: "Set or read the HTML content of the container element."
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
record: `Current record data object (read-only).
|
|
51
|
+
Available when the JS block is within a data block or detail view context.`,
|
|
52
|
+
value: "Current value of the field or component, if available in the current context.",
|
|
53
|
+
React: "React library",
|
|
54
|
+
antd: "Ant Design library"
|
|
56
55
|
},
|
|
57
56
|
methods: {
|
|
58
|
-
onRefReady:
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
"Render React": { $ref: "scene/jsblock/render-react", prefix: "sn-jsb-react" },
|
|
64
|
-
"Init ECharts": { $ref: "libs/echarts-init", prefix: "sn-echarts" },
|
|
65
|
-
"Render card": { $ref: "scene/jsblock/render-card", prefix: "sn-jsb-card" },
|
|
66
|
-
"Button handler": { $ref: "scene/jsblock/render-button-handler", prefix: "sn-jsb-button" },
|
|
67
|
-
"JSX mount": { $ref: "scene/jsblock/jsx-mount", prefix: "sn-jsx-mount" },
|
|
68
|
-
"JSX unmount": { $ref: "scene/jsblock/jsx-unmount", prefix: "sn-jsx-unmount" },
|
|
69
|
-
Notification: { $ref: "global/notification-open", prefix: "sn-notify" },
|
|
70
|
-
"Window open": { $ref: "global/window-open", prefix: "sn-window-open" },
|
|
71
|
-
"Add click listener": { $ref: "scene/jsblock/add-event-listener", prefix: "sn-jsb-click" },
|
|
72
|
-
"Append style": { $ref: "scene/jsblock/append-style", prefix: "sn-jsb-style" }
|
|
57
|
+
onRefReady: `Wait for container DOM element to be ready before executing callback.
|
|
58
|
+
Parameters: (ref: React.RefObject, callback: (element: HTMLElement) => void, timeout?: number) => void
|
|
59
|
+
Example: ctx.onRefReady(ctx.ref, (el) => { el.innerHTML = "Ready!" })`,
|
|
60
|
+
requireAsync: "Load external library: `const lib = await ctx.requireAsync(url)`",
|
|
61
|
+
importAsync: "Dynamically import ESM module: `const mod = await ctx.importAsync(url)`"
|
|
73
62
|
}
|
|
74
63
|
});
|
|
64
|
+
JSBlockRunJSContext.define(
|
|
65
|
+
{
|
|
66
|
+
label: "RunJS \u4E0A\u4E0B\u6587",
|
|
67
|
+
properties: {
|
|
68
|
+
element: {
|
|
69
|
+
description: "ElementProxy\uFF0C\u5B89\u5168\u7684 DOM \u5BB9\u5668\uFF0C\u652F\u6301 innerHTML/append \u7B49",
|
|
70
|
+
detail: "ElementProxy",
|
|
71
|
+
properties: {
|
|
72
|
+
innerHTML: "\u8BFB\u53D6\u6216\u8BBE\u7F6E\u5BB9\u5668\u7684 HTML \u5185\u5BB9"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
record: "\u5F53\u524D\u8BB0\u5F55\uFF08\u53EA\u8BFB\uFF0C\u7528\u4E8E\u6570\u636E\u533A\u5757/\u8BE6\u60C5\u7B49\u573A\u666F\uFF09",
|
|
76
|
+
value: "\u5F53\u524D\u503C\uFF08\u82E5\u5B58\u5728\uFF09",
|
|
77
|
+
React: "React \u5E93",
|
|
78
|
+
antd: "Ant Design \u5E93"
|
|
79
|
+
},
|
|
80
|
+
methods: {
|
|
81
|
+
onRefReady: "\u5BB9\u5668 ref \u5C31\u7EEA\u56DE\u8C03\uFF1A\n```js\nctx.onRefReady(ctx.ref, el => { /* ... */ })\n```",
|
|
82
|
+
requireAsync: "\u52A0\u8F7D\u5916\u90E8\u5E93\uFF1A`const lib = await ctx.requireAsync(url)`",
|
|
83
|
+
importAsync: "\u6309 URL \u52A8\u6001\u5BFC\u5165 ESM \u6A21\u5757\uFF1A`const mod = await ctx.importAsync(url)`"
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
{ locale: "zh-CN" }
|
|
87
|
+
);
|
|
75
88
|
// Annotate the CommonJS export names for ESM import in node:
|
|
76
89
|
0 && (module.exports = {
|
|
77
90
|
JSBlockRunJSContext
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { FlowRunJSContext } from '
|
|
9
|
+
import { FlowRunJSContext } from '../../flowContext';
|
|
10
10
|
export declare class JSCollectionActionRunJSContext extends FlowRunJSContext {
|
|
11
|
-
constructor(delegate: any);
|
|
12
11
|
}
|
|
@@ -30,29 +30,28 @@ __export(JSCollectionActionRunJSContext_exports, {
|
|
|
30
30
|
JSCollectionActionRunJSContext: () => JSCollectionActionRunJSContext
|
|
31
31
|
});
|
|
32
32
|
module.exports = __toCommonJS(JSCollectionActionRunJSContext_exports);
|
|
33
|
-
var
|
|
34
|
-
const _JSCollectionActionRunJSContext = class _JSCollectionActionRunJSContext extends
|
|
35
|
-
constructor(delegate) {
|
|
36
|
-
super(delegate);
|
|
37
|
-
this.defineProperty("resource", { get: /* @__PURE__ */ __name(() => this._delegate["resource"], "get") });
|
|
38
|
-
}
|
|
33
|
+
var import_flowContext = require("../../flowContext");
|
|
34
|
+
const _JSCollectionActionRunJSContext = class _JSCollectionActionRunJSContext extends import_flowContext.FlowRunJSContext {
|
|
39
35
|
};
|
|
40
36
|
__name(_JSCollectionActionRunJSContext, "JSCollectionActionRunJSContext");
|
|
41
37
|
let JSCollectionActionRunJSContext = _JSCollectionActionRunJSContext;
|
|
42
38
|
JSCollectionActionRunJSContext.define({
|
|
43
39
|
label: "JSCollectionAction RunJS context",
|
|
44
40
|
properties: {
|
|
45
|
-
resource:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
runAction: "Run action",
|
|
49
|
-
message: "Message API"
|
|
50
|
-
},
|
|
51
|
-
snipastes: {
|
|
52
|
-
"Selected count": { $ref: "scene/actions/collection-selected-count", prefix: "sn-act-selected-count" },
|
|
53
|
-
"Iterate selected rows": { $ref: "scene/actions/iterate-selected-rows", prefix: "sn-act-iterate" }
|
|
41
|
+
resource: `Collection resource instance providing access to selected rows, pagination, and data operations.
|
|
42
|
+
Use ctx.resource.selectedRows to get selected records.
|
|
43
|
+
Use ctx.resource.pagination for page info.`
|
|
54
44
|
}
|
|
55
45
|
});
|
|
46
|
+
JSCollectionActionRunJSContext.define(
|
|
47
|
+
{
|
|
48
|
+
label: "JS \u96C6\u5408\u52A8\u4F5C RunJS \u4E0A\u4E0B\u6587",
|
|
49
|
+
properties: {
|
|
50
|
+
resource: "\u5217\u8868\u8D44\u6E90\uFF08\u5305\u542B\u9009\u4E2D\u884C/\u5206\u9875\u4FE1\u606F\u7B49\uFF09"
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
{ locale: "zh-CN" }
|
|
54
|
+
);
|
|
56
55
|
// Annotate the CommonJS export names for ESM import in node:
|
|
57
56
|
0 && (module.exports = {
|
|
58
57
|
JSCollectionActionRunJSContext
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
* This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
|
|
7
7
|
* For more information, please refer to: https://www.nocobase.com/agreement.
|
|
8
8
|
*/
|
|
9
|
-
import { FlowRunJSContext } from '
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import { FlowRunJSContext } from '../../flowContext';
|
|
10
|
+
/**
|
|
11
|
+
* RunJS context for JSColumnModel (table custom column).
|
|
12
|
+
* Focused on per-row rendering with access to current record and cell element.
|
|
13
|
+
*/
|
|
14
|
+
export declare class JSColumnRunJSContext extends FlowRunJSContext {
|
|
12
15
|
}
|