UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

59 lines (49 loc) 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.releaseDataViewWithDependencies = exports.releaseDataView = exports.releaseDataViews = exports.detachDataViewDependencies = void 0; const getDataViewsInDataSet = dataView => { var _a; const dataViewMap = null === (_a = null == dataView ? void 0 : dataView.dataSet) || void 0 === _a ? void 0 : _a.dataViewMap; return dataViewMap ? Object.values(dataViewMap).filter(Boolean) : []; }, detachDataViewListener = (source, target) => { var _a, _b; null === (_a = null == source ? void 0 : source.target) || void 0 === _a || _a.removeListener("change", target.reRunAllTransform), null === (_b = null == source ? void 0 : source.target) || void 0 === _b || _b.removeListener("markRunning", target.markRunning); }, detachDataViewDependencies = dataView => { if (!dataView) return; getDataViewsInDataSet(dataView).forEach((source => { detachDataViewListener(source, dataView); })); const dependencies = null == dataView ? void 0 : dataView.rawData; Array.isArray(dependencies) && dependencies.forEach((dependency => { detachDataViewListener(dependency, dataView); })); }; exports.detachDataViewDependencies = detachDataViewDependencies; const releaseDataViews = dataViews => { const releaseDataViews = Array.from(new Set(dataViews.filter(Boolean))); releaseDataViews.length && (releaseDataViews.forEach(exports.detachDataViewDependencies), releaseDataViews.forEach((dataView => { var _a; null === (_a = dataView.destroy) || void 0 === _a || _a.call(dataView); }))); }; exports.releaseDataViews = releaseDataViews; const releaseDataView = dataView => { (0, exports.releaseDataViews)([ dataView ]); }; exports.releaseDataView = releaseDataView; const releaseDataViewWithDependencies = (dataView, shouldReleaseDependency) => { if (!dataView) return; const dataViewsInDataSet = new Set(getDataViewsInDataSet(dataView)), releaseDependencies = [], collectReleaseDependencies = currentDataView => { const dependencies = null == currentDataView ? void 0 : currentDataView.rawData; Array.isArray(dependencies) && dependencies.forEach((dependency => { dataViewsInDataSet.has(dependency) && shouldReleaseDependency(dependency) && !releaseDependencies.includes(dependency) && (releaseDependencies.push(dependency), collectReleaseDependencies(dependency)); })); }; collectReleaseDependencies(dataView), (0, exports.releaseDataViews)([ dataView, ...releaseDependencies ]); }; exports.releaseDataViewWithDependencies = releaseDataViewWithDependencies; //# sourceMappingURL=data-view-utils.js.map