UNPKG

devexpress-richedit

Version:

DevExpress Rich Text Editor is an advanced word-processing tool designed for working with rich text documents.

46 lines (45 loc) 2.71 kB
import { RendererClassNames } from '../../renderer-class-names'; import { zIndexCssClassType, ZIndexHelper } from '../z-index-helper'; import { DomUtils } from '@devexpress/utils/lib/utils/dom'; import { NumberMapUtils } from '@devexpress/utils/lib/utils/map/number'; import { BaseRenderer } from './base-renderer'; export class TextBoxRenderer extends BaseRenderer { handlePageHide(_pageIndex) { return true; } handlePageRender(pageIndex) { const cacheElement = this.renderer.cache[pageIndex]; const layoutPage = this.renderer.layout.pages[pageIndex]; if (!cacheElement || !layoutPage) return false; const activeSubDocumentId = this.newSubDocumentInfo.subDocumentId; NumberMapUtils.forEach(cacheElement.otherAreas, (paNode, textBoxSubDocId) => { const obj = layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(textBoxSubDocId); if (obj) { const isTextBoxActive = textBoxSubDocId == activeSubDocumentId; const bgNode = cacheElement.textBoxBgElements[textBoxSubDocId]; const renderLevel = layoutPage.renderLevelCalculator.getRenderLevel(layoutPage.anchoredObjectHolder.getTextBoxByInternalSubDocId(textBoxSubDocId).rendererLevel); if (isTextBoxActive) { if (obj.rotationInRadians == 0) DomUtils.removeClassName(paNode, ZIndexHelper.getClassName(renderLevel, zIndexCssClassType.TextBox)); else DomUtils.addClassName(paNode, ZIndexHelper.getClassName(renderLevel, zIndexCssClassType.TextBox)); DomUtils.addClassName(paNode, RendererClassNames.SELECTED_TEXTBOX); DomUtils.addClassName(bgNode, RendererClassNames.SELECTED_TEXTBOX); } else { DomUtils.removeClassName(paNode, RendererClassNames.SELECTED_TEXTBOX); DomUtils.removeClassName(bgNode, RendererClassNames.SELECTED_TEXTBOX); DomUtils.addClassName(paNode, ZIndexHelper.getClassName(renderLevel, zIndexCssClassType.TextBox)); } if (isTextBoxActive || obj.belongsToSubDocId == activeSubDocumentId || (this.newSubDocumentInfo.isTextBox && this.newSubDocumentInfo.parentSubDocumentId == obj.belongsToSubDocId)) DomUtils.removeClassName(paNode, RendererClassNames.BLACKOUT); else DomUtils.addClassName(paNode, RendererClassNames.BLACKOUT); } }); return true; } }