{"version":3,"file":"reset-button.js","sourceRoot":"","sources":["../../../src/interactions/actions/reset-button.ts"],"names":[],"mappings":"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","sourcesContent":["import { Action, IGroup, Util } from '@antv/g2';\nimport { get } from '@antv/util';\nimport { BBox, ButtonCfg } from '../../types';\nimport { deepAssign, normalPadding } from '../../utils';\n\nconst PADDING_RIGHT = 10;\nconst PADDING_TOP = 5;\n\n/**\n * Action 中的 Button 按钮配置\n *\n * 可能的使用场景:brush filter\n */\nexport const BUTTON_ACTION_CONFIG: ButtonCfg = {\n padding: [8, 10],\n text: 'reset',\n textStyle: {\n default: {\n x: 0,\n y: 0,\n fontSize: 12,\n fill: '#333333',\n cursor: 'pointer',\n },\n },\n buttonStyle: {\n default: {\n fill: '#f7f7f7',\n stroke: '#cccccc',\n cursor: 'pointer',\n },\n active: {\n fill: '#e6e6e6',\n },\n },\n};\n\n/**\n * @override 复写 G2 Button Action, 后续直接使用 GUI\n */\nclass ButtonAction extends Action {\n private buttonGroup: IGroup = null;\n private buttonCfg = {\n name: 'button',\n ...BUTTON_ACTION_CONFIG,\n };\n\n /**\n * 获取 mix 默认的配置和用户配置\n */\n private getButtonCfg(): ButtonCfg & { name: string } {\n const { view } = this.context;\n const buttonCfg: ButtonCfg = get(view, ['interactions', 'filter-action', 'cfg', 'buttonConfig']);\n\n return deepAssign(this.buttonCfg, buttonCfg, this.cfg);\n }\n\n /**\n * 绘制 Button 和 文本\n */\n private drawButton() {\n const config = this.getButtonCfg();\n const group = this.context.view.foregroundGroup.addGroup({\n name: config.name,\n });\n const textShape = this.drawText(group);\n this.drawBackground(group, textShape.getBBox());\n\n this.buttonGroup = group;\n }\n\n /**\n * 绘制文本\n */\n private drawText(group: IGroup) {\n const config = this.getButtonCfg();\n // 添加文本\n return group.addShape({\n type: 'text',\n name: 'button-text',\n attrs: {\n text: config.text,\n ...config.textStyle?.default,\n },\n });\n }\n\n private drawBackground(group: IGroup, bbox: BBox) {\n const config = this.getButtonCfg();\n const padding = normalPadding(config.padding);\n // 添加背景按钮\n const buttonShape = group.addShape({\n type: 'rect',\n name: 'button-rect',\n attrs: {\n x: bbox.x - padding[3],\n y: bbox.y - padding[0],\n width: bbox.width + padding[1] + padding[3],\n height: bbox.height + padding[0] + padding[2],\n ...config.buttonStyle?.default,\n },\n });\n buttonShape.toBack(); // 在后面\n\n // active 效果内置\n group.on('mouseenter', () => {\n buttonShape.attr(config.buttonStyle?.active);\n });\n group.on('mouseleave', () => {\n buttonShape.attr(config.buttonStyle?.default);\n });\n\n return buttonShape;\n }\n\n // 重置位置\n private resetPosition() {\n const view = this.context.view;\n const coord = view.getCoordinate();\n const point = coord.convert({ x: 1, y: 1 }); // 后面直接改成左上角\n const buttonGroup = this.buttonGroup;\n const bbox = buttonGroup.getBBox();\n const matrix = Util.transform(null, [\n ['t', point.x - bbox.width - PADDING_RIGHT, point.y + bbox.height + PADDING_TOP],\n ]);\n buttonGroup.setMatrix(matrix);\n }\n\n /**\n * 显示\n */\n public show() {\n if (!this.buttonGroup) {\n this.drawButton();\n }\n this.resetPosition();\n this.buttonGroup.show();\n }\n\n /**\n * 隐藏\n */\n public hide() {\n if (this.buttonGroup) {\n this.buttonGroup.hide();\n }\n }\n\n /**\n * 销毁\n */\n public destroy() {\n const buttonGroup = this.buttonGroup;\n if (buttonGroup) {\n buttonGroup.remove();\n }\n super.destroy();\n }\n}\n\nexport { ButtonAction };\n"]}