UNPKG

devexpress-richedit

Version:

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

53 lines (52 loc) 1.84 kB
import { Flag } from '@devexpress/utils/lib/class/flag'; import { WordGroupMask } from './layout-word-bounds'; export class LayoutWordBoundsGroupSeparator { constructor() { this.isAnyGroupSet = false; } applyMask(mask) { if (!this.isAnyGroupSet) { this.isAnyGroupSet = true; this.whileNoOneGroupSet(mask); return false; } if (mask == this.ignoredGroupMask) return false; this.ignoredGroupMask = WordGroupMask.NoOne; if (this.mask.get(WordGroupMask.DiffersFromAll)) return true; this.mask.set(mask, true); if (this.prevMask && this.prevMask.getValue() != this.mask.getValue()) return true; this.prevMask = this.mask.clone(); return false; } } export class LayoutWordBoundsNextGroupSeparator extends LayoutWordBoundsGroupSeparator { constructor(isJoinSpacesOnEndWord) { super(); this.initGroup = isJoinSpacesOnEndWord ? WordGroupMask.Space : WordGroupMask.NoOne; } whileNoOneGroupSet(mask) { if (mask == WordGroupMask.DiffersFromAll) { this.mask = new Flag(mask); return; } this.ignoredGroupMask = mask; this.prevMask = new Flag(this.initGroup); this.mask = new Flag(this.initGroup); } } export class LayoutWordBoundsPrevGroupSeparator extends LayoutWordBoundsGroupSeparator { whileNoOneGroupSet(mask) { if (mask == WordGroupMask.Space) { this.ignoredGroupMask = WordGroupMask.Space; this.mask = new Flag(WordGroupMask.NoOne); this.prevMask = null; } else { this.mask = new Flag(mask); this.prevMask = this.mask.clone(); } } }