diff --git a/packages/dep/src/Watcher.ts b/packages/dep/src/Watcher.ts index da28b31a..268cbe88 100644 --- a/packages/dep/src/Watcher.ts +++ b/packages/dep/src/Watcher.ts @@ -1,3 +1,4 @@ +import { NODE_NO_CODE_BLOCK_KEY, NODE_NO_DATA_SOURCE_KEY } from '@tmagic/schema'; import { isObject } from '@tmagic/utils'; import type Target from './Target'; @@ -189,6 +190,19 @@ export default class Watcher { } public collectItem(node: TargetNode, target: Target, depExtendedData: DepExtendedData = {}, deep = false) { + const dataSourceTargetTypes: string[] = [ + DepTargetType.DATA_SOURCE, + DepTargetType.DATA_SOURCE_COND, + DepTargetType.DATA_SOURCE_METHOD, + ]; + if (node[NODE_NO_DATA_SOURCE_KEY] && dataSourceTargetTypes.includes(target.type)) { + return; + } + + if (node[NODE_NO_CODE_BLOCK_KEY] && target.type === DepTargetType.CODE_BLOCK) { + return; + } + const collectTarget = (config: Record, prop = '') => { const doCollect = (key: string, value: any) => { const keyIsItems = key === this.childrenProp; diff --git a/packages/schema/src/index.ts b/packages/schema/src/index.ts index 5196d1b3..dd22a6b0 100644 --- a/packages/schema/src/index.ts +++ b/packages/schema/src/index.ts @@ -47,6 +47,8 @@ export enum NodeType { } export const NODE_CONDS_KEY = 'displayConds'; +export const NODE_NO_DATA_SOURCE_KEY = '__tmagic_node_no_data_source'; +export const NODE_NO_CODE_BLOCK_KEY = '__tmagic_node_no_code_block'; export type Id = string | number;