UNPKG

devexpress-richedit

Version:

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

44 lines (43 loc) 1.82 kB
import { Pair } from '@devexpress/utils/lib/class/pair'; import { BaseFormatter, StdProps } from './base-formatter'; import { SpanElement } from './elements'; export class ShortString { static SHORT_LEN = 14; str; halfOfShortLen; constructor(str, shortLen = ShortString.SHORT_LEN) { this.str = str; this.setLen(shortLen); } get fullString() { return new SpanElement().setText("\"" + this.str + "\"").setColor(BaseFormatter.stringColor); } get shortString() { if (!this.canShowAsShort()) return this.fullString; return new SpanElement() .setNode(new SpanElement().setText("\"" + this.str.substr(0, this.halfOfShortLen) + "").setColor(BaseFormatter.stringColor)) .setNode(new SpanElement().setText("~").setColor(BaseFormatter.blackColor)) .setNode(new SpanElement().setText(this.str.substring(this.str.length - this.halfOfShortLen) + "\"").setColor(BaseFormatter.stringColor)); } setLen(shortLen) { this.halfOfShortLen = Math.floor(shortLen / 2); return this; } canShowAsShort() { return this.str.length > this.halfOfShortLen * 2; } } export class CCF_ShortString extends BaseFormatter { isHandleObject(obj) { return obj instanceof ShortString; } getShortDescription(_config) { return this.stdShow(new StdProps([new Pair("", this.curr.shortString)]).showAsLine().setBoundChars("", "")); } availableFullDescription(_config) { return this.curr.canShowAsShort(); } getFullDescription(_config) { return this.stdShow(new StdProps([new Pair("", this.curr.fullString)]).showAsColumn()); } static _foo = BaseFormatter.addToFormattersList(new CCF_ShortString()); }