"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.ELEMENT_RANGE_HIGHLIGHT_EVENTS = void 0;
var tslib_1 = require("tslib");
var chart_1 = require("../../../chart");
var highlight_util_1 = require("./highlight-util");
var range_state_1 = (0, tslib_1.__importDefault)(require("./range-state"));
var EVENTS;
(function (EVENTS) {
    EVENTS["BEFORE_HIGHLIGHT"] = "element-range-highlight:beforehighlight";
    EVENTS["AFTER_HIGHLIGHT"] = "element-range-highlight:afterhighlight";
    EVENTS["BEFORE_CLEAR"] = "element-range-highlight:beforeclear";
    EVENTS["AFTER_CLEAR"] = "element-range-highlight:afterclear";
})(EVENTS || (EVENTS = {}));
exports.ELEMENT_RANGE_HIGHLIGHT_EVENTS = EVENTS;
/**
 * @ignore
 * 区域 highlight 的 Action
 */
var ElementRangeHighlight = /** @class */ (function (_super) {
    (0, tslib_1.__extends)(ElementRangeHighlight, _super);
    function ElementRangeHighlight() {
        var _this = _super !== null && _super.apply(this, arguments) || this;
        _this.stateName = 'active';
        return _this;
    }
    // 清理掉所有的 active， unactive 状态
    ElementRangeHighlight.prototype.clearViewState = function (view) {
        (0, highlight_util_1.clearHighlight)(view);
    };
    /**
     * 设置 highlight
     */
    ElementRangeHighlight.prototype.highlight = function () {
        var _a = this.context, view = _a.view, event = _a.event;
        var elements = this.getIntersectElements();
        var payload = { view: view, event: event, highlightElements: elements };
        view.emit(EVENTS.BEFORE_HIGHLIGHT, chart_1.Event.fromData(view, EVENTS.BEFORE_HIGHLIGHT, payload));
        this.setState();
        view.emit(EVENTS.AFTER_HIGHLIGHT, chart_1.Event.fromData(view, EVENTS.AFTER_HIGHLIGHT, payload));
    };
    /**
     * @overrider 添加事件
     */
    ElementRangeHighlight.prototype.clear = function () {
        var view = this.context.view;
        view.emit(EVENTS.BEFORE_CLEAR, chart_1.Event.fromData(view, EVENTS.BEFORE_CLEAR, {}));
        _super.prototype.clear.call(this);
        view.emit(EVENTS.AFTER_CLEAR, chart_1.Event.fromData(view, EVENTS.AFTER_CLEAR, {}));
    };
    ElementRangeHighlight.prototype.setElementsState = function (elements, enable, allElements) {
        (0, highlight_util_1.setHighlightBy)(allElements, function (el) { return elements.indexOf(el) >= 0; }, enable);
    };
    return ElementRangeHighlight;
}(range_state_1.default));
exports.default = ElementRangeHighlight;
//# sourceMappingURL=range-highlight.js.map