UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

488 lines (479 loc) 30 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.DataFilterBaseComponent = void 0; const model_1 = require("../../util/model"), base_component_1 = require("../base/base-component"), interface_1 = require("../interface"), util_1 = require("./util"), register_1 = require("../../data/register"), vscale_1 = require("@visactor/vscale"), common_1 = require("../axis/cartesian/util/common"), vutils_1 = require("@visactor/vutils"), vdataset_1 = require("@visactor/vdataset"), compilable_data_1 = require("../../compile/data/compilable-data"), zoomable_1 = require("../../interaction/zoom/zoomable"), initialize_1 = require("../../data/initialize"), attribute_1 = require("../../constant/attribute"); class DataFilterBaseComponent extends base_component_1.BaseComponent { get relatedAxisComponent() { return this._relatedAxisComponent; } setStartAndEnd(start, end, rangeMode = [ "percent", "percent" ]) { const [startMode = "percent", endMode = "percent"] = rangeMode, startPercent = "percent" === startMode ? start : this.dataToStatePoint(start), endPercent = "percent" === endMode ? end : this.dataToStatePoint(end); this._handleChange(startPercent, endPercent, !0); } enableInteraction() { this._activeRoam = !0; } disableInteraction() { this._activeRoam = !1; } zoomIn(location) { this._handleChartZoom({ zoomDelta: 1.2, zoomX: null == location ? void 0 : location.x, zoomY: null == location ? void 0 : location.y }); } zoomOut(location) { this._handleChartZoom({ zoomDelta: .8, zoomX: null == location ? void 0 : location.x, zoomY: null == location ? void 0 : location.y }); } _handleChange(start, end, updateComponent) { var _a, _b; null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.zoomLock) && void 0 !== _b && _b || end - start !== this._spanCache && (end - start < this._minSpan || end - start > this._maxSpan) ? this._shouldChange = !1 : (this._shouldChange = !0, this._spanCache = end - start); } _isReverse() { const axis = this._relatedAxisComponent; if (!axis) return !1; const axisScale = axis.getScale(); return axisScale.range()[0] > axisScale.range()[1] && (!axis.getInverse() || this._isHorizontal); } _updateRangeFactor(tag) { const axis = this._relatedAxisComponent, axisScale = axis.getScale(), reverse = this._isReverse(), newRangeFactor = reverse ? [ 1 - this._end, 1 - this._start ] : [ this._start, this._end ]; if (reverse) switch (tag) { case "startHandler": axis.scaleRangeFactorEnd(newRangeFactor[1]); break; case "endHandler": axis.scaleRangeFactorStart(newRangeFactor[0]); break; default: axis.scaleRangeFactorStart(newRangeFactor[0], !0), axis.scaleRangeFactorEnd(newRangeFactor[1]); } else switch (tag) { case "startHandler": axis.scaleRangeFactorStart(newRangeFactor[0]); break; case "endHandler": axis.scaleRangeFactorEnd(newRangeFactor[1]); break; default: axis.scaleRangeFactorEnd(newRangeFactor[1], !0), axis.scaleRangeFactorStart(newRangeFactor[0]); } const newFactor = axisScale.rangeFactor(); newFactor ? (this._start = reverse ? 1 - newFactor[1] : newFactor[0], this._end = reverse ? 1 - newFactor[0] : newFactor[1]) : (this._start = 0, this._end = 1); } get visible() { return this._visible; } constructor(spec, options) { super(spec, options), this.layoutType = "none", this._orient = "left", this._cacheVisibility = void 0, this._dataUpdating = !1, this._shouldChange = !0, this._stateField = "x", this._activeRoam = !0, this._zoomAttr = { enable: !0, rate: 1, focus: !0 }, this._dragAttr = { enable: !0, rate: 1, reverse: !0 }, this._scrollAttr = { enable: !0, rate: 1, reverse: !0 }, this.effect = { onZoomChange: tag => { var _a, _b; const axis = this._relatedAxisComponent; if (axis && "axis" === this._filterMode) { const axisScale = axis.getScale(), axisSpec = axis.getSpec(); this._auto && this._getAxisBandSize(axisSpec) && this._spec.ignoreBandSize && (axisScale.bandwidth("auto"), axisScale.maxBandwidth("auto"), axisScale.minBandwidth("auto")), this._updateRangeFactor(tag), this._auto && (null === (_b = null === (_a = this._component) || void 0 === _a ? void 0 : _a.setStartAndEnd) || void 0 === _b || _b.call(_a, this._start, this._end)), axis.effect.scaleUpdate({ value: "force" }); } else (0, model_1.eachSeries)(this._regions, (s => { var _a; null === (_a = s.getViewData()) || void 0 === _a || _a.markRunning(); }), { userId: this._seriesUserId, specIndex: this._seriesIndex }), (0, model_1.eachSeries)(this._regions, (s => { s.reFilterViewData(); }), { userId: this._seriesUserId, specIndex: this._seriesIndex }); } }, this._visible = !0, this._handleStateChange = (startValue, endValue, tag) => { var _a, _b; return this._startValue = startValue, this._endValue = endValue, this._newDomain = this._parseDomainFromState(this._startValue, this._endValue), null === (_b = (_a = this.effect).onZoomChange) || void 0 === _b || _b.call(_a, tag), !0; }, this._handleChartZoom = (params, e) => { var _a, _b; if (!this._activeRoam || this._zoomAttr.filter && !this._zoomAttr.filter(params, e)) return; const {zoomDelta: zoomDelta, zoomX: zoomX, zoomY: zoomY} = params, {x: x, y: y} = this._regions[0].getLayoutStartPoint(), {width: width, height: height} = this._regions[0].getLayoutRect(), delta = Math.abs(this._start - this._end), zoomRate = null !== (_b = null === (_a = this._spec.roamZoom) || void 0 === _a ? void 0 : _a.rate) && void 0 !== _b ? _b : 1; if (delta >= 1 && zoomDelta < 1) return; if (delta <= .01 && zoomDelta > 1) return; const focusLoc = this._isHorizontal ? zoomX : zoomY, totalValue = delta * (zoomDelta - 1) * zoomRate; let startValue = totalValue / 2, endValue = totalValue / 2; if (focusLoc) { const startLoc = this._isHorizontal ? x : y, endLoc = this._isHorizontal ? width : height; startValue = Math.abs(startLoc - focusLoc) / Math.abs(endLoc - startLoc) * totalValue, endValue = Math.abs(endLoc - focusLoc) / Math.abs(endLoc - startLoc) * totalValue; } const start = (0, vutils_1.clamp)(this._start + startValue, 0, 1), end = (0, vutils_1.clamp)(this._end - endValue, 0, 1); this._handleChange(Math.min(start, end), Math.max(start, end), !0); }, this._handleChartScroll = (params, e) => { var _a; if (!this._activeRoam || this._scrollAttr.filter && !this._scrollAttr.filter(params, e)) return !1; const {scrollX: scrollX, scrollY: scrollY} = params; let value = this._isHorizontal ? scrollX : scrollY; const active = this._isHorizontal ? (0, vutils_1.abs)(scrollX / scrollY) >= .5 : (0, vutils_1.abs)(scrollY / scrollX) >= .5; this._scrollAttr.reverse || (value = -value), active && this._handleChartMove(value, null !== (_a = this._scrollAttr.rate) && void 0 !== _a ? _a : 1); const hasChange = 0 !== this._start && 1 !== this._end; return active && hasChange; }, this._handleChartDrag = (delta, e) => { var _a; if (!this._activeRoam || this._dragAttr.filter && !this._dragAttr.filter(delta, e)) return; const [dx, dy] = delta; let value = this._isHorizontal ? dx : dy; this._dragAttr.reverse && (value = -value), this._handleChartMove(value, null !== (_a = this._dragAttr.rate) && void 0 !== _a ? _a : 1); }, this._handleChartMove = (value, rate) => { const totalValue = this._isHorizontal ? this.getLayoutRect().width : this.getLayoutRect().height; if (Math.abs(value) >= 1e-6) if (value > 0 && this._end < 1) { const moveDelta = Math.min(1 - this._end, value / totalValue) * rate; this._handleChange(this._start + moveDelta, this._end + moveDelta, !0); } else if (value < 0 && this._start > 0) { const moveDelta = Math.max(-this._start, value / totalValue) * rate; this._handleChange(this._start + moveDelta, this._end + moveDelta, !0); } return !1; }, this._orient = (0, common_1.getOrient)(spec), this._isHorizontal = "horizontal" === (0, common_1.getDirectionByOrient)(this._orient); } created() { super.created(), this._setAxisFromSpec(), this._setRegionsFromSpec(), this._initEvent(), this._initData(), this._initStateScale(), this._setStateFromSpec(); } initLayout() { super.initLayout(), this._layout && (this._layout.layoutOrient = this._orient); } _setAxisFromSpec() { if ((0, vutils_1.isValid)(this._spec.axisId) ? this._relatedAxisComponent = this._option.getComponentByUserId(this._spec.axisId) : (0, vutils_1.isValid)(this._spec.axisIndex) && (this._relatedAxisComponent = this._option.getComponentByIndex("axes", this._spec.axisIndex)), (0, vutils_1.isNil)(this._spec.field) && !this._relatedAxisComponent) { const axes = this._option.getComponentsByKey("axes"), sameOrientAxis = axes.find((cm => cm._orient === this._orient)); if (sameOrientAxis) this._relatedAxisComponent = sameOrientAxis; else { const bandAxis = axes.find((cm => !(0, vscale_1.isContinuous)(cm.getScale().type))); this._relatedAxisComponent = bandAxis; } } this._relatedAxisComponent && "axis" === this._filterMode && (this._relatedAxisComponent.autoIndentOnce = !0); } _setRegionsFromSpec() { var _a, _b; this._regions = this._relatedAxisComponent ? this._relatedAxisComponent.getRegions() : this._option.getAllRegions(); const bindSeriesFilter = this._relatedAxisComponent ? null === (_b = (_a = this._relatedAxisComponent).getBindSeriesFilter) || void 0 === _b ? void 0 : _b.call(_a) : null; if ((0, vutils_1.isValid)(bindSeriesFilter) && ((0, vutils_1.isValid)(bindSeriesFilter.userId) && (this._seriesUserId = (0, vutils_1.array)(bindSeriesFilter.userId)), (0, vutils_1.isValid)(bindSeriesFilter.specIndex) && (this._seriesIndex = (0, vutils_1.array)(bindSeriesFilter.specIndex))), (0, vutils_1.isValid)(this._spec.seriesId)) { const specSeriesId = (0, vutils_1.array)(this._spec.seriesId); this._seriesUserId ? this._seriesUserId = this._seriesUserId.filter((s => specSeriesId.includes(s))) : this._seriesUserId = specSeriesId; } if ((0, vutils_1.isValid)(this._spec.seriesIndex)) { const specSeriesIndex = (0, vutils_1.array)(this._spec.seriesIndex); this._seriesIndex ? this._seriesIndex = this._seriesIndex.filter((s => specSeriesIndex.includes(s))) : this._seriesIndex = specSeriesIndex; } if ((0, vutils_1.isValid)(this._spec.regionIndex)) { const regionsFromSpec = this._option.getRegionsInIndex((0, vutils_1.array)(this._spec.regionIndex)); this._regions = this._regions.filter((r => regionsFromSpec.includes(r))); } else if ((0, vutils_1.isValid)(this._spec.regionId)) { const ids = (0, vutils_1.array)(this._spec.regionId); this._regions = ids.length ? this._regions.filter((r => ids.includes(r.id))) : []; } else ; } onDataUpdate() { var _a; const domain = this._computeDomainOfStateScale((0, vscale_1.isContinuous)(this._stateScale.type)); this._stateScale.domain(domain, !1), this._handleChange(this._start, this._end, !0), this._spec.auto && !(0, vutils_1.isEqual)(this._domainCache, domain) && (this._domainCache = domain, this._dataUpdating = !0, null === (_a = this.getChart()) || void 0 === _a || _a.setLayoutTag(!0, null, !1)); } _computeDomainOfStateScale(isContinuous) { if (this._spec.customDomain) return this._spec.customDomain; const domain = this._data.getLatestData().map((d => d[this._stateField])); if (isContinuous) { const domainNum = domain.map((n => 1 * n)); return domain.length ? [ (0, vutils_1.minInArray)(domainNum), (0, vutils_1.maxInArray)(domainNum) ] : [ -1 / 0, 1 / 0 ]; } return domain; } _initEvent() { this._initCommonEvent(); } _initData() { const dataCollection = [], stateFields = [], valueFields = []; let isCategoryState; if (this._relatedAxisComponent) { const originalStateFields = {}; (0, model_1.eachSeries)(this._regions, (s => { var _a, _b; const xAxisHelper = "cartesian" === s.coordinate ? s.getXAxisHelper() : "polar" === s.coordinate ? s.angleAxisHelper : null, yAxisHelper = "cartesian" === s.coordinate ? s.getYAxisHelper() : "polar" === s.coordinate ? s.radiusAxisHelper : null; if (!xAxisHelper || !yAxisHelper) return; const stateAxisHelper = xAxisHelper.getAxisId() === this._relatedAxisComponent.id ? xAxisHelper : yAxisHelper.getAxisId() === this._relatedAxisComponent.id ? yAxisHelper : this._isHorizontal ? xAxisHelper : yAxisHelper, valueAxisHelper = stateAxisHelper === xAxisHelper ? yAxisHelper : xAxisHelper; dataCollection.push(s.getRawData()); const seriesSpec = s.getSpec(), xField = "cartesian" === s.coordinate ? (0, vutils_1.array)(seriesSpec.xField) : (0, vutils_1.array)(null !== (_a = seriesSpec.angleField) && void 0 !== _a ? _a : seriesSpec.categoryField), yField = "cartesian" === s.coordinate ? (0, vutils_1.array)(seriesSpec.yField) : (0, vutils_1.array)(null !== (_b = seriesSpec.radiusField) && void 0 !== _b ? _b : seriesSpec.valueField); if (originalStateFields[s.id] = "link" === s.type ? [ "from_xField" ] : stateAxisHelper === xAxisHelper ? xField : yField, (0, vscale_1.isContinuous)(stateAxisHelper.getScale(0).type) ? (isCategoryState = !1, stateFields.push(originalStateFields[s.id])) : stateFields.push(originalStateFields[s.id][0]), this._valueField) { const valueField = "link" === s.type ? [ "from_yField" ] : valueAxisHelper === xAxisHelper ? xField : yField; (0, vscale_1.isContinuous)(valueAxisHelper.getScale(0).type) && valueFields.push(...valueField); } }), { userId: this._seriesUserId, specIndex: this._seriesIndex }), this._originalStateFields = originalStateFields; } else (0, model_1.eachSeries)(this._regions, (s => { dataCollection.push(s.getRawData()), stateFields.push(this._field), this._valueField && valueFields.push(this._spec.valueField); }), { userId: this._seriesUserId, specIndex: this._seriesIndex }); const {dataSet: dataSet} = this._option; (0, register_1.registerDataSetInstanceParser)(dataSet, "dataview", vdataset_1.dataViewParser), (0, register_1.registerDataSetInstanceTransform)(dataSet, "dataFilterComputeDomain", util_1.dataFilterComputeDomain); const data = new vdataset_1.DataView(dataSet, { name: `${this.type}_${this.id}_data` }); data.transform({ type: "dataFilterComputeDomain", options: { input: { dataCollection: dataCollection, stateFields: stateFields, valueFields: valueFields, isCategoryState: isCategoryState }, output: { stateField: this._stateField, valueField: this._valueField } } }, !1), this._data = new compilable_data_1.CompilableData(this._option, data), data.reRunAllTransform(), dataSet.multipleDataViewAddListener(dataCollection, "change", this._handleDataCollectionChange.bind(this)); } setAttrFromSpec() { var _a; super.setAttrFromSpec(), !0 === this._spec.roamZoom || this._spec.roamZoom ? this._zoomAttr = (0, vutils_1.merge)({}, this._zoomAttr, this._spec.roamZoom) : this._zoomAttr.enable = !1, !0 === this._spec.roamDrag || this._spec.roamDrag ? this._dragAttr = (0, vutils_1.merge)({}, this._dragAttr, this._spec.roamDrag) : this._dragAttr.enable = !1, !0 === this._spec.roamScroll || this._spec.roamScroll ? this._scrollAttr = (0, vutils_1.merge)({}, this._scrollAttr, this._spec.roamScroll) : this._scrollAttr.enable = !1, this._field = this._spec.field, this._width = this._computeWidth(), this._height = this._computeHeight(), this._visible = null === (_a = this._spec.visible) || void 0 === _a || _a; } statePointToData(state) { const scale = this._stateScale, domain = scale.domain(); if ((0, vscale_1.isContinuous)(scale.type)) return this._isReverse() ? domain[0] + ((0, vutils_1.last)(domain) - domain[0]) * (1 - state) : domain[0] + ((0, vutils_1.last)(domain) - domain[0]) * state; let range = scale.range(); this._isReverse() && (range = range.slice().reverse()); const posInRange = range[0] + ((0, vutils_1.last)(range) - range[0]) * state; return scale.invert(posInRange); } dataToStatePoint(data) { const scale = this._stateScale, pos = scale.scale(data); let range = scale.range(); return !this._isHorizontal && (0, vscale_1.isContinuous)(scale.type) && (range = range.slice().reverse()), (pos - range[0]) / ((0, vutils_1.last)(range) - range[0]); } _modeCheck(statePoint, mode) { return "start" === statePoint ? "percent" === mode && (0, vutils_1.isValid)(this._spec.start) || "value" === mode && (0, vutils_1.isValid)(this._spec.startValue) : "percent" === mode && (0, vutils_1.isValid)(this._spec.end) || "value" === mode && (0, vutils_1.isValid)(this._spec.endValue); } _setStateFromSpec() { var _a, _b; let start, end; if (this._auto = !!this._spec.auto, this._spec.rangeMode) { const [startMode, endMode] = this._spec.rangeMode; this._modeCheck("start", startMode) && this._modeCheck("end", endMode) && (start = "percent" === startMode ? this._spec.start : this.dataToStatePoint(this._spec.startValue), end = "percent" === endMode ? this._spec.end : this.dataToStatePoint(this._spec.endValue)); } else start = this._spec.start ? this._spec.start : this._spec.startValue ? this.dataToStatePoint(this._spec.startValue) : 0, end = this._spec.end ? this._spec.end : this._spec.endValue ? this.dataToStatePoint(this._spec.endValue) : 1; this._startValue = this.statePointToData(start), this._endValue = this.statePointToData(end), this._start = start, this._end = end, this._minSpan = null !== (_a = this._spec.minSpan) && void 0 !== _a ? _a : 0, this._maxSpan = null !== (_b = this._spec.maxSpan) && void 0 !== _b ? _b : 1, (0, vscale_1.isContinuous)(this._stateScale.type) && this._stateScale.domain()[0] !== (0, vutils_1.last)(this._stateScale.domain()) && (this._spec.minValueSpan && (this._minSpan = this._spec.minValueSpan / ((0, vutils_1.last)(this._stateScale.domain()) - this._stateScale.domain()[0])), this._spec.maxValueSpan && (this._maxSpan = this._spec.maxValueSpan / ((0, vutils_1.last)(this._stateScale.domain()) - this._stateScale.domain()[0]))), this._minSpan = Math.max(0, this._minSpan), this._maxSpan = Math.min(this._maxSpan, 1), this._relatedAxisComponent && "axis" === this._filterMode || 0 === this._start && 1 === this._end || (this._newDomain = this._parseDomainFromState(this._startValue, this._endValue)); } _parseFieldOfSeries(s) { var _a; return null === (_a = this._originalStateFields) || void 0 === _a ? void 0 : _a[s.id]; } _initStateScale() { const defaultRange = [ 0, 1 ]; if (this._relatedAxisComponent) { const scale = this._relatedAxisComponent.getScale(), isContinuousScale = (0, vscale_1.isContinuous)(scale.type), domain = this._computeDomainOfStateScale(isContinuousScale); if (this._stateScale = scale.clone(), isContinuousScale) { const domainNum = domain.map((n => 1 * n)); this._stateScale.domain(domain.length ? [ (0, vutils_1.minInArray)(domainNum), (0, vutils_1.maxInArray)(domainNum) ] : [ 0, 1 ], !0).range(defaultRange); } else this._stateScale.domain(domain, !0).range(defaultRange); } else this._stateScale = new vscale_1.BandScale, this._stateScale.domain(this._computeDomainOfStateScale(), !0).range(defaultRange); } init(option) { super.init(option), this._addTransformToSeries(), 0 === this._start && 1 === this._end || this.effect.onZoomChange(); } _addTransformToSeries() { this._relatedAxisComponent && "axis" === this._filterMode || ((0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "dataFilterWithNewDomain", util_1.dataFilterWithNewDomain), (0, register_1.registerDataSetInstanceTransform)(this._option.dataSet, "lockStatisticsFilter", util_1.lockStatisticsFilter), (0, model_1.eachSeries)(this._regions, (s => { s.getViewDataStatistics().transform({ type: "lockStatisticsFilter", options: { originalFields: () => s.getViewDataStatistics().getFields(), getNewDomain: () => this._newDomain, field: () => { var _a; return null !== (_a = this._field) && void 0 !== _a ? _a : this._parseFieldOfSeries(s); }, isContinuous: () => (0, vscale_1.isContinuous)(this._stateScale.type) }, level: 1 }, !1), s.addViewDataFilter({ type: "dataFilterWithNewDomain", options: { getNewDomain: () => this._newDomain, field: () => { var _a; return null !== (_a = this._field) && void 0 !== _a ? _a : this._parseFieldOfSeries(s); }, isContinuous: () => (0, vscale_1.isContinuous)(this._stateScale.type) }, level: initialize_1.TransformLevel.dataZoomFilter }); }), { userId: this._seriesUserId, specIndex: this._seriesIndex })); } _compareSpec(spec, prevSpec) { const result = super._compareSpec(spec, prevSpec); return result.reMake || (0, vutils_1.isEqual)(prevSpec, spec) || (result.reRender = !0, result.reMake = !0), result; } reInit(spec) { super.reInit(spec), this._marks.forEach((g => { g.getMarks().forEach((m => { this.initMarkStyleWithSpec(m, this._spec[m.name]); })); })); } _parseDomainFromState(startValue, endValue) { if ((0, vscale_1.isContinuous)(this._stateScale.type)) return [ Math.min(endValue, startValue), Math.max(endValue, startValue) ]; const allDomain = this._stateScale.domain(), startIndex = allDomain.indexOf(startValue), endIndex = allDomain.indexOf(endValue); return allDomain.slice(Math.min(startIndex, endIndex), Math.max(startIndex, endIndex) + 1); } _initCommonEvent() { var _a, _b, _c, _d, _e, _f, _g; const option = { delayType: null !== (_b = null === (_a = this._spec) || void 0 === _a ? void 0 : _a.delayType) && void 0 !== _b ? _b : "throttle", delayTime: (0, vutils_1.isValid)(null === (_c = this._spec) || void 0 === _c ? void 0 : _c.delayType) ? null !== (_e = null === (_d = this._spec) || void 0 === _d ? void 0 : _d.delayTime) && void 0 !== _e ? _e : 30 : 0, realTime: null === (_g = null === (_f = this._spec) || void 0 === _f ? void 0 : _f.realTime) || void 0 === _g || _g, allowComponentZoom: !0 }; this._zoomAttr.enable && this.initZoomEventOfRegions(this._regions, null, this._handleChartZoom, option), this._scrollAttr.enable && this.initScrollEventOfRegions(this._regions, null, this._handleChartScroll, option), this._dragAttr.enable && this.initDragEventOfRegions(this._regions, null, this._handleChartDrag, option); } updateLayoutAttribute() { this._visible && this._createOrUpdateComponent(), super.updateLayoutAttribute(); } _autoVisible(isShown) { if (!this._auto) return; isShown ? this.show() : this.hide(); const sizeKey = this._isHorizontal ? "height" : "width"; this.layout.setLayoutRect({ [sizeKey]: isShown ? this[`_${sizeKey}`] : 0 }, { [sizeKey]: attribute_1.AttributeLevel.Built_In }); } onLayoutStart(layoutRect, viewRect) { super.onLayoutStart(layoutRect, viewRect); const isShown = this._autoUpdate(layoutRect); this._autoVisible(isShown), this._dataUpdating = !1; } onLayoutEnd() { const isShown = !(0 === this._start && 1 === this._end); this._autoVisible(isShown), super.onLayoutEnd(); } getBoundsInRect(rect) { const result = { x1: this.getLayoutStartPoint().x, y1: this.getLayoutStartPoint().y, x2: 0, y2: 0 }; return this._isHorizontal ? (result.y2 = result.y1 + this._height, result.x2 = result.x1 + rect.width) : (result.x2 = result.x1 + this._width, result.y2 = result.y1 + rect.height), result; } hide() { var _a; null === (_a = this._component) || void 0 === _a || _a.hideAll(); } show() { var _a; null === (_a = this._component) || void 0 === _a || _a.showAll(); } _getAxisBandSize(axisSpec) { const bandSize = null == axisSpec ? void 0 : axisSpec.bandSize, maxBandSize = null == axisSpec ? void 0 : axisSpec.maxBandSize, minBandSize = null == axisSpec ? void 0 : axisSpec.minBandSize; if (bandSize || minBandSize || maxBandSize) return { bandSize: bandSize, maxBandSize: maxBandSize, minBandSize: minBandSize }; } _autoUpdate(rect) { var _a, _b, _c, _d, _e, _f; if (!this._auto) return this._cacheVisibility = void 0, !0; const axis = this._relatedAxisComponent, axisSpec = null == axis ? void 0 : axis.getSpec(), axisScale = null == axis ? void 0 : axis.getScale(), bandSizeResult = this._getAxisBandSize(axisSpec); if (!this._dataUpdating && (0, vscale_1.isDiscrete)(axisScale.type) && (null == rect ? void 0 : rect.height) === (null === (_a = this._cacheRect) || void 0 === _a ? void 0 : _a.height) && (null == rect ? void 0 : rect.width) === (null === (_b = this._cacheRect) || void 0 === _b ? void 0 : _b.width) && this._fixedBandSize === (null == bandSizeResult ? void 0 : bandSizeResult.bandSize)) return this._cacheVisibility; let isShown = !0; if (this._isHorizontal && (null == rect ? void 0 : rect.width) !== (null === (_c = this._cacheRect) || void 0 === _c ? void 0 : _c.width) ? axisScale.range(axis.getInverse() ? [ rect.width, 0 ] : [ 0, rect.width ]) : (null == rect ? void 0 : rect.height) !== (null === (_d = this._cacheRect) || void 0 === _d ? void 0 : _d.height) && axisScale.range(axis.getInverse() ? [ 0, rect.height ] : [ rect.height, 0 ]), this._cacheRect = { width: null == rect ? void 0 : rect.width, height: null == rect ? void 0 : rect.height }, this._fixedBandSize = null == bandSizeResult ? void 0 : bandSizeResult.bandSize, (0, vscale_1.isDiscrete)(axisScale.type)) { bandSizeResult && (this._start || this._end) && (this.type === interface_1.ComponentTypeEnum.scrollBar && (this._start = 0, this._end = 1), this._updateRangeFactor()); const [start, end] = null !== (_e = axisScale.rangeFactor()) && void 0 !== _e ? _e : []; isShown = (!(0, vutils_1.isNil)(start) || !(0, vutils_1.isNil)(end)) && !(0 === start && 1 === end); } else { const [start, end] = null !== (_f = axisScale.rangeFactor()) && void 0 !== _f ? _f : [ this._start, this._end ]; isShown = !(0 === start && 1 === end); } return this.setStartAndEnd(this._start, this._end), this._cacheVisibility = isShown, isShown; } _getNeedClearVRenderComponents() { return [ this._component ]; } } exports.DataFilterBaseComponent = DataFilterBaseComponent, (0, vutils_1.mixin)(DataFilterBaseComponent, zoomable_1.Zoomable); //# sourceMappingURL=data-filter-base-component.js.map