devexpress-richedit
Version:
DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.
56 lines (55 loc) • 2.64 kB
JavaScript
import { DomUtils } from '@devexpress/utils/lib/utils/dom';
import { ListUtils } from '@devexpress/utils/lib/utils/list';
import { NumberMapUtils } from '@devexpress/utils/lib/utils/map/number';
import { DocumentRenderer } from '../../../../../canvas/renderes/common/document-renderer';
import { DebugVisualizerType } from './debug-visualizer-type';
import { LayoutBoundsInfoHelper } from './layout-bounds-info-helper';
import { TableBoundsVisibleInfoHelper } from './table-bounds-visible-info-helper';
export class DebugVisualizerManager {
constructor(cache) {
this.vizualizers = {};
this.containers = {};
this.cache = cache;
this.vizualizers[DebugVisualizerType.TableBounds] = new TableBoundsVisibleInfoHelper();
this.vizualizers[DebugVisualizerType.LayoutBounds] = new LayoutBoundsInfoHelper();
}
show(vizType, layout, pageIndex) {
const viz = this.vizualizers[vizType];
const pageContainer = this.getPageContainer(viz, pageIndex);
DebugVisualizerManager.clearContainer(pageContainer);
viz.fillPageContainer(layout, pageContainer, pageIndex);
DocumentRenderer.getServiceContainerCore(this.cache[pageIndex].page).appendChild(pageContainer);
}
static clearContainer(container) {
while (container.firstChild)
DomUtils.hideNode(container.firstChild);
}
hide(vizType, pageIndex) {
const viz = this.vizualizers[vizType];
const currContainer = this.getPageContainer(viz, pageIndex);
DomUtils.hideNode(currContainer);
}
hideAll(vizType = DebugVisualizerType.None) {
const viz = this.vizualizers[vizType];
if (viz) {
let vizContainers = this.containers[viz.getType()];
if (vizContainers) {
ListUtils.forEach(vizContainers, (cont) => DomUtils.hideNode(cont));
delete this.containers[viz.getType()];
}
}
else {
NumberMapUtils.forEach(this.containers, (vizContainers) => ListUtils.forEach(vizContainers, (cont) => DomUtils.hideNode(cont)));
this.containers = {};
}
}
getPageContainer(viz, pageIndex) {
let vizContainers = this.containers[viz.getType()];
if (!vizContainers)
vizContainers = this.containers[viz.getType()] = [];
let currLen = vizContainers.length;
while (currLen <= pageIndex)
currLen = vizContainers.push(DocumentRenderer.renderContainer(viz.getContainerClassName()));
return vizContainers[pageIndex];
}
}