UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

47 lines (42 loc) 2.28 kB
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); }; export const 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); })); }; export const releaseDataViews = dataViews => { const releaseDataViews = Array.from(new Set(dataViews.filter(Boolean))); releaseDataViews.length && (releaseDataViews.forEach(detachDataViewDependencies), releaseDataViews.forEach((dataView => { var _a; null === (_a = dataView.destroy) || void 0 === _a || _a.call(dataView); }))); }; export const releaseDataView = dataView => { releaseDataViews([ dataView ]); }; export 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), releaseDataViews([ dataView, ...releaseDependencies ]); }; //# sourceMappingURL=data-view-utils.js.map