43 lines
1.3 KiB
Java
43 lines
1.3 KiB
Java
import { clone, isPlainObject, lowerCase, mix } from '@antv/util';
|
|
import GrammarInteraction from './grammar-interaction';
|
|
var Interactions = {};
|
|
/**
|
|
* 根据交互行为名字获取对应的交互类
|
|
* @param name 交互名字
|
|
* @returns 交互类
|
|
*/
|
|
export function getInteraction(name) {
|
|
return Interactions[lowerCase(name)];
|
|
}
|
|
/**
|
|
* 注册交互行为
|
|
* @param name 交互行为名字
|
|
* @param interaction 交互类
|
|
*/
|
|
export function registerInteraction(name, interaction) {
|
|
Interactions[lowerCase(name)] = interaction;
|
|
}
|
|
/**
|
|
* 创建交互实例
|
|
* @param name 交互名
|
|
* @param view 交互应用的 View 实例
|
|
* @param cfg 交互行为配置
|
|
*/
|
|
export function createInteraction(name, view, cfg) {
|
|
var interaciton = getInteraction(name);
|
|
if (!interaciton) {
|
|
return null;
|
|
}
|
|
if (isPlainObject(interaciton)) {
|
|
// 如果不 clone 则会多个 interaction 实例共享 step 的定义
|
|
var steps = mix(clone(interaciton), cfg);
|
|
return new GrammarInteraction(view, steps);
|
|
}
|
|
else {
|
|
var cls = interaciton;
|
|
return new cls(view, cfg);
|
|
}
|
|
}
|
|
export { default as Interaction } from './interaction';
|
|
export { Action, registerAction, getActionClass } from './action';
|
|
//# sourceMappingURL=index.js.map |