{"version":3,"file":"register.js","sourceRoot":"","sources":["../../../src/interaction/action/register.ts"],"names":[],"mappings":";;;;AAEA,gEAAwC;AACxC,mCAAiC;AAWjC,cAAc;AACd,IAAM,WAAW,GAAiC,EAAE,CAAC;AAErD;;;;;GAKG;AACH,SAAgB,YAAY,CAAC,UAAkB,EAAE,OAA4B;IAC3E,IAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,YAAY,EAAE;QACR,IAAA,WAAW,GAAU,YAAY,YAAtB,EAAE,GAAG,GAAK,YAAY,IAAjB,CAAkB;QAC1C,MAAM,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;QACzB,MAAM,CAAC,IAAI,EAAE,CAAC;KACf;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAVD,oCAUC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,UAAkB;IAC/C,IAAM,YAAY,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,IAAA,UAAG,EAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC1C,CAAC;AAHD,wCAGC;AAED;;;;GAIG;AACH,SAAgB,cAAc,CAAC,UAAkB,EAAE,WAA8B,EAAE,GAAiB;IAClG,WAAW,CAAC,UAAU,CAAC,GAAG;QACxB,WAAW,aAAA;QACX,GAAG,KAAA;KACJ,CAAC;AACJ,CAAC;AALD,wCAKC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,OAAO,WAAW,CAAC,UAAU,CAAC,CAAC;AACjC,CAAC;AAFD,4CAEC;AAED;;;;;GAKG;AACH,SAAgB,oBAAoB,CAAC,QAAwB,EAAE,OAA4B;IACzF,IAAM,MAAM,GAAG,IAAI,kBAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,oDAKC","sourcesContent":["import { ActionCallback, IInteractionContext, LooseObject } from '../../interface';\nimport Action from './base';\nimport CallbackAction from './callback';\nimport { get } from '@antv/util';\n\n/** Action 构造函数 */\ntype ActionConstructor = new (context: IInteractionContext, cfg?: LooseObject) => Action;\n\n/** @ignore */\ninterface ActionOption {\n ActionClass: ActionConstructor;\n cfg: LooseObject;\n}\n\n// Action 类的缓存\nconst ActionCache: Record = {};\n\n/**\n * 根据名称获取 Action 实例\n * @param actionName - action 的名称\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createAction(actionName: string, context: IInteractionContext): Action {\n const actionOption = ActionCache[actionName];\n let action = null;\n if (actionOption) {\n const { ActionClass, cfg } = actionOption;\n action = new ActionClass(context, cfg);\n action.name = actionName;\n action.init();\n }\n return action;\n}\n\n/**\n * 根据 action 的 name 获取定义的类\n * @param actionName action 的 name\n */\nexport function getActionClass(actionName: string): ActionConstructor {\n const actionOption = ActionCache[actionName];\n return get(actionOption, 'ActionClass');\n}\n\n/**\n * 注册 Action\n * @param actionName - action 的名称\n * @param ActionClass - 继承自 action 的类\n */\nexport function registerAction(actionName: string, ActionClass: ActionConstructor, cfg?: LooseObject) {\n ActionCache[actionName] = {\n ActionClass,\n cfg,\n };\n}\n\n/**\n * 取消注册 Action\n * @param actionName action 名称\n */\nexport function unregisterAction(actionName: string) {\n delete ActionCache[actionName];\n}\n\n/**\n * 根据回调函数获取 Action 实例\n * @param callback - action 的回调函数\n * @param context 上下文\n * @returns Action 实例\n */\nexport function createCallbackAction(callback: ActionCallback, context: IInteractionContext): CallbackAction {\n const action = new CallbackAction(context);\n action.callback = callback;\n action.name = 'callback';\n return action;\n}\n"]}