UNPKG

@syncfusion/ej2-documenteditor

Version:

Feature-rich document editor control with built-in support for context menu, options pane and dialogs.

988 lines (987 loc) 41.9 kB
import { TextElementBox, ParagraphWidget, ElementBox } from '../viewer/page'; import { Dictionary } from '../../base/dictionary'; import { WUniqueFormat } from '../../base/unique-format'; import { WUniqueFormats } from '../../base/unique-formats'; import { WParagraphStyle, WCharacterStyle } from './style'; import { isNullOrUndefined } from '@syncfusion/ej2-base'; import { Revision } from '../track-changes/track-changes'; /* eslint-disable */ /** * @private */ var WCharacterFormat = /** @class */ (function () { function WCharacterFormat(node) { this.uniqueCharacterFormat = undefined; this.ownerBase = undefined; this.baseCharStyle = undefined; /** * @private */ this.removedIds = []; /** * @private */ this.revisions = []; this.ownerBase = node; } Object.defineProperty(WCharacterFormat.prototype, "bold", { get: function () { return this.getPropertyValue('bold'); }, set: function (value) { this.setPropertyValue('bold', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "italic", { get: function () { return this.getPropertyValue('italic'); }, set: function (value) { this.setPropertyValue('italic', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontSize", { get: function () { return this.getPropertyValue('fontSize'); }, set: function (value) { this.setPropertyValue('fontSize', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "characterSpacing", { get: function () { return this.getPropertyValue('characterSpacing'); }, set: function (value) { this.setPropertyValue('characterSpacing', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "scaling", { get: function () { return this.getPropertyValue('scaling'); }, set: function (value) { this.setPropertyValue('scaling', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontFamily", { get: function () { return this.getPropertyValue('fontFamily'); }, set: function (value) { this.setPropertyValue('fontFamily', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "underline", { get: function () { return this.getPropertyValue('underline'); }, set: function (value) { this.setPropertyValue('underline', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "underlineColor", { get: function () { return this.getPropertyValue('underlineColor'); }, set: function (value) { this.setPropertyValue('underlineColor', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontHintType", { get: function () { return this.getPropertyValue('fontHintType'); }, set: function (value) { this.setPropertyValue('fontHintType', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "strikethrough", { get: function () { return this.getPropertyValue('strikethrough'); }, set: function (value) { this.setPropertyValue('strikethrough', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "baselineAlignment", { get: function () { return this.getPropertyValue('baselineAlignment'); }, set: function (value) { this.setPropertyValue('baselineAlignment', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "highlightColor", { get: function () { return this.getPropertyValue('highlightColor'); }, set: function (value) { this.setPropertyValue('highlightColor', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontColor", { get: function () { return this.getPropertyValue('fontColor'); }, set: function (value) { this.setPropertyValue('fontColor', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "bidi", { get: function () { return this.getPropertyValue('bidi'); }, set: function (value) { this.setPropertyValue('bidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "localeIdBidi", { get: function () { return this.getPropertyValue('localeIdBidi'); }, set: function (value) { this.setPropertyValue('localeIdBidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "localeIdFarEast", { get: function () { return this.getPropertyValue('localeIdFarEast'); }, set: function (value) { this.setPropertyValue('localeIdFarEast', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "localeIdAscii", { get: function () { return this.getPropertyValue('localeIdAscii'); }, set: function (value) { this.setPropertyValue('localeIdAscii', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "bdo", { get: function () { return this.getPropertyValue('bdo'); }, set: function (value) { this.setPropertyValue('bdo', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "boldBidi", { get: function () { return this.getPropertyValue('boldBidi'); }, set: function (value) { this.setPropertyValue('boldBidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "italicBidi", { get: function () { return this.getPropertyValue('italicBidi'); }, set: function (value) { this.setPropertyValue('italicBidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontSizeBidi", { get: function () { return this.getPropertyValue('fontSizeBidi'); }, set: function (value) { this.setPropertyValue('fontSizeBidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontFamilyBidi", { get: function () { return this.getPropertyValue('fontFamilyBidi'); }, set: function (value) { this.setPropertyValue('fontFamilyBidi', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "allCaps", { get: function () { return this.getPropertyValue('allCaps'); }, set: function (value) { this.setPropertyValue('allCaps', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "Lowercase", { get: function () { return this.getPropertyValue('Lowercase'); }, set: function (value) { this.setPropertyValue('Lowercase', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "Uppercase", { get: function () { return this.getPropertyValue('Uppercase'); }, set: function (value) { this.setPropertyValue('Uppercase', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "SentenceCase", { get: function () { return this.getPropertyValue('SentenceCase'); }, set: function (value) { this.setPropertyValue('SentenceCase', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "ToggleCase", { get: function () { return this.getPropertyValue('ToggleCase'); }, set: function (value) { this.setPropertyValue('ToggleCase', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "CapitalizeEachWord", { get: function () { return this.getPropertyValue('CapitalizeEachWord'); }, set: function (value) { this.setPropertyValue('CapitalizeEachWord', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "complexScript", { get: function () { return this.getPropertyValue('complexScript'); }, set: function (value) { this.setPropertyValue('complexScript', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "hidden", { get: function () { return this.getPropertyValue('hidden'); }, set: function (value) { this.setPropertyValue('hidden', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontFamilyFarEast", { get: function () { return this.getPropertyValue('fontFamilyFarEast'); }, set: function (value) { this.setPropertyValue('fontFamilyFarEast', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontFamilyAscii", { get: function () { return this.getPropertyValue('fontFamilyAscii'); }, set: function (value) { this.setPropertyValue('fontFamilyAscii', value); }, enumerable: true, configurable: true }); Object.defineProperty(WCharacterFormat.prototype, "fontFamilyNonFarEast", { get: function () { return this.getPropertyValue('fontFamilyNonFarEast'); }, set: function (value) { this.setPropertyValue('fontFamilyNonFarEast', value); }, enumerable: true, configurable: true }); WCharacterFormat.prototype.getPropertyValue = function (property) { if (!this.hasValue(property)) { var charStyleValue = this.checkCharacterStyle(property); if (!isNullOrUndefined(charStyleValue)) { return charStyleValue; } else { if (!isNullOrUndefined(this.baseCharStyle)) { var paragraph = undefined; var line = undefined; if (!isNullOrUndefined(this.ownerBase)) { paragraph = this.ownerBase.paragraph; line = this.ownerBase.line; } if (!isNullOrUndefined(paragraph) && !isNullOrUndefined(line)) { var length_1 = line.children.length; for (var i = 0; i < length_1; i++) { var element = this.ownerBase.line.children[i]; if (element instanceof TextElementBox) { var text = element.text; if (text.startsWith('HYPERLINK')) { var index = text.indexOf('_Toc'); if (index !== -1) { this.baseCharStyle = this.ownerBase.paragraph.paragraphFormat.baseStyle; } } } } } } var baseStyleValue = this.checkBaseStyle(property); if (!isNullOrUndefined(baseStyleValue)) { return baseStyleValue; } } } else { var propertyType = WUniqueFormat.getPropertyType(WCharacterFormat.uniqueFormatType, property); if (!isNullOrUndefined(this.uniqueCharacterFormat) && this.uniqueCharacterFormat.propertiesHash.containsKey(propertyType)) { return this.uniqueCharacterFormat.propertiesHash.get(propertyType); } } return this.getDefaultValue(property); }; WCharacterFormat.prototype.getDefaultValue = function (property) { var propertyType = WUniqueFormat.getPropertyType(WCharacterFormat.uniqueFormatType, property); var docCharacterFormat = this.documentCharacterFormat(); if (!isNullOrUndefined(docCharacterFormat) && !isNullOrUndefined(docCharacterFormat.uniqueCharacterFormat) && docCharacterFormat.uniqueCharacterFormat.propertiesHash.containsKey(propertyType)) { return docCharacterFormat.uniqueCharacterFormat.propertiesHash.get(propertyType); } else { return WCharacterFormat.getPropertyDefaultValue(property); } }; WCharacterFormat.prototype.documentCharacterFormat = function () { if (isNullOrUndefined(this.ownerBase)) { return undefined; } var paragraph; if (this.ownerBase instanceof ElementBox) { paragraph = this.ownerBase.paragraph; } else if (this.ownerBase instanceof ParagraphWidget) { paragraph = this.ownerBase; } if (paragraph) { var bodyWidget = paragraph.bodyWidget; if (bodyWidget && bodyWidget.page && bodyWidget.page.documentHelper) { return bodyWidget.page.documentHelper.characterFormat; } } return undefined; }; WCharacterFormat.prototype.checkBaseStyle = function (property) { var baseStyle; if (!isNullOrUndefined(this.ownerBase)) { if (!isNullOrUndefined(this.ownerBase.paragraph)) { baseStyle = this.ownerBase.paragraph.paragraphFormat.baseStyle; } else { if ((this.ownerBase instanceof ParagraphWidget) && !isNullOrUndefined(this.ownerBase.paragraphFormat)) { baseStyle = this.ownerBase.paragraphFormat.baseStyle; } else { if (!isNullOrUndefined(this.ownerBase instanceof WParagraphStyle)) { baseStyle = this.ownerBase.basedOn; } } } } while (!isNullOrUndefined(baseStyle)) { if (baseStyle.characterFormat.hasValue(property)) { break; } else if (!isNullOrUndefined(baseStyle.link) && isNullOrUndefined(baseStyle.basedOn) && baseStyle.link.type == 'Character' && baseStyle.link.characterFormat.hasValue(property) && baseStyle.name != "Normal") { baseStyle = baseStyle.link; break; } else { baseStyle = baseStyle.basedOn; } } if (!isNullOrUndefined(baseStyle)) { var propertyType = WUniqueFormat.getPropertyType(WCharacterFormat.uniqueFormatType, property); return baseStyle.characterFormat.uniqueCharacterFormat.propertiesHash.get(propertyType); } return undefined; }; WCharacterFormat.prototype.checkCharacterStyle = function (property) { var baseStyle = this.baseCharStyle; if (!isNullOrUndefined(baseStyle)) { while (!isNullOrUndefined(baseStyle) && baseStyle.name !== 'Default Paragraph Font') { var hasKey = baseStyle.characterFormat.hasValue(property); if (hasKey) { if (property === 'bold' && !isNullOrUndefined(this.ownerBase) && this.ownerBase instanceof TextElementBox && !isNullOrUndefined(this.ownerBase.paragraph) && !isNullOrUndefined(this.ownerBase.paragraph.paragraphFormat.baseStyle) && this.ownerBase.paragraph.paragraphFormat.baseStyle instanceof WParagraphStyle && this.ownerBase.paragraph.paragraphFormat.baseStyle.characterFormat && baseStyle.name !== this.ownerBase.paragraph.paragraphFormat.baseStyle.name && baseStyle.characterFormat.hasValue(property) === this.ownerBase.paragraph.paragraphFormat.baseStyle.characterFormat.hasValue(property)) { return this.hasValue(property); } var returnPropertyType = WUniqueFormat.getPropertyType(WCharacterFormat.uniqueFormatType, property); return baseStyle.characterFormat.uniqueCharacterFormat.propertiesHash.get(returnPropertyType); } else { baseStyle = baseStyle.basedOn; } } } return undefined; }; WCharacterFormat.prototype.setPropertyValue = function (property, value) { if (isNullOrUndefined(value) || value === '') { value = WCharacterFormat.getPropertyDefaultValue(property); } if (isNullOrUndefined(this.uniqueCharacterFormat) || (isNullOrUndefined(this.uniqueCharacterFormat.propertiesHash) && isNullOrUndefined(this.uniqueCharacterFormat.uniqueFormatType) && isNullOrUndefined(this.uniqueCharacterFormat.referenceCount))) { this.initializeUniqueCharacterFormat(property, value); } else { var propertyType = WUniqueFormat.getPropertyType(this.uniqueCharacterFormat.uniqueFormatType, property); if (this.uniqueCharacterFormat.propertiesHash.containsKey(propertyType) && this.uniqueCharacterFormat.propertiesHash.get(propertyType) === value) { //Do nothing, since no change in property value and return return; } this.uniqueCharacterFormat = WCharacterFormat.uniqueCharacterFormats.updateUniqueFormat(this.uniqueCharacterFormat, property, value); } }; WCharacterFormat.prototype.initializeUniqueCharacterFormat = function (property, propValue) { var uniqueCharFormatTemp = new Dictionary(); this.addUniqueCharacterFormat('fontColor', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontFamily', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontSize', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('bold', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('italic', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('underline', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('underlineColor', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontHintType', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('strikethrough', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('baselineAlignment', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('highlightColor', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('styleName', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('bidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('bdo', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontFamilyBidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontSizeBidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('boldBidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('italicBidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('allCaps', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('Uppercase', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('Lowercase', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('SentenceCase', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('ToggleCase', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('CapitalizeEachWord', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('localeIdAscii', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('localeIdFarEast', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('localeIdBidi', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontFamilyFarEast', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontFamilyAscii', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('fontFamilyNonFarEast', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('complexScript', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('characterSpacing', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('scaling', property, propValue, uniqueCharFormatTemp); this.addUniqueCharacterFormat('hidden', property, propValue, uniqueCharFormatTemp); this.uniqueCharacterFormat = WCharacterFormat.uniqueCharacterFormats.addUniqueFormat(uniqueCharFormatTemp, WCharacterFormat.uniqueFormatType); }; WCharacterFormat.prototype.addUniqueCharacterFormat = function (property, modifiedProperty, propValue, uniqueCharFormatTemp) { var propertyType = WUniqueFormat.getPropertyType(WCharacterFormat.uniqueFormatType, property); if (property === modifiedProperty) { uniqueCharFormatTemp.add(propertyType, propValue); } }; WCharacterFormat.getPropertyDefaultValue = function (property) { var value = undefined; switch (property) { case 'bold': value = false; break; case 'italic': value = false; break; case 'fontSize': value = 11; break; case 'underline': value = 'None'; break; case 'underlineColor': value = undefined; break; case 'fontHintType': value = 'Default'; break; case 'strikethrough': value = 'None'; break; case 'baselineAlignment': value = 'Normal'; break; case 'highlightColor': value = 'NoColor'; break; case 'fontColor': value = '#00000000'; break; case 'fontFamily': value = 'Calibri'; break; case 'styleName': value = 'Default Paragraph Font'; break; case 'bidi': value = false; break; case 'bdo': value = 'None'; break; case 'boldBidi': value = false; break; case 'italicBidi': value = false; break; case 'fontSizeBidi': value = 11; break; case 'fontFamilyBidi': value = 'Calibri'; break; case 'allCaps': case 'Uppercase': case 'Lowercase': case 'CapitalizeEachWord': case 'SentenceCase': case 'ToggleCase': value = false; break; case 'localeIdAscii': case 'localeIdFarEast': case 'localeIdBidi': value = 0; break; case 'complexScript': value = false; break; case 'hidden': value = false; break; case 'fontFamilyFarEast': case 'fontFamilyAscii': case 'fontFamilyNonFarEast': value = undefined; break; case 'characterSpacing': value = 0; break; case 'scaling': value = 100; break; } return value; }; WCharacterFormat.prototype.isEqualFormat = function (format) { return (this.fontSize === format.fontSize && this.fontFamily === format.fontFamily && this.bold === format.bold && this.italic === format.italic && this.baselineAlignment === format.baselineAlignment && this.underline === format.underline && this.fontColor === format.fontColor && this.strikethrough === format.strikethrough && this.highlightColor === format.highlightColor && this.bidi === format.bidi && this.bdo === format.bdo && this.allCaps === format.allCaps && this.Uppercase === format.Uppercase && this.Lowercase === format.Lowercase && this.ToggleCase === format.ToggleCase && this.SentenceCase === format.SentenceCase && this.CapitalizeEachWord === format.CapitalizeEachWord && this.localeIdBidi === format.localeIdBidi && this.localeIdAscii === format.localeIdAscii && this.localeIdFarEast === format.localeIdFarEast && this.complexScript === format.complexScript && this.fontFamilyAscii === format.fontFamilyAscii && this.fontFamilyBidi === format.fontFamilyBidi && this.fontFamilyFarEast === format.fontFamilyFarEast && this.characterSpacing === format.characterSpacing && this.scaling === format.scaling && this.fontFamilyNonFarEast === format.fontFamilyNonFarEast && this.hidden === format.hidden); }; WCharacterFormat.prototype.isSameFormat = function (format) { return this.baseCharStyle === format.baseCharStyle && this.uniqueCharacterFormat === format.uniqueCharacterFormat; }; WCharacterFormat.prototype.cloneFormat = function () { var format = new WCharacterFormat(undefined); format.uniqueCharacterFormat = this.uniqueCharacterFormat; format.baseCharStyle = this.baseCharStyle; if (this.revisions.length > 0) { format.removedIds = Revision.cloneRevisions(this.revisions); } else { format.removedIds = this.removedIds.slice(); } return format; }; WCharacterFormat.prototype.hasValue = function (property) { if (!isNullOrUndefined(this.uniqueCharacterFormat) && !isNullOrUndefined(this.uniqueCharacterFormat.propertiesHash)) { var propertyType = WUniqueFormat.getPropertyType(this.uniqueCharacterFormat.uniqueFormatType, property); return this.uniqueCharacterFormat.propertiesHash.containsKey(propertyType); } return false; }; WCharacterFormat.prototype.clearFormat = function () { if (!isNullOrUndefined(this.uniqueCharacterFormat) && this.uniqueCharacterFormat.referenceCount === 0) { WCharacterFormat.uniqueCharacterFormats.remove(this.uniqueCharacterFormat); } this.uniqueCharacterFormat = undefined; this.baseCharStyle = undefined; }; WCharacterFormat.prototype.destroy = function () { if (!isNullOrUndefined(this.uniqueCharacterFormat)) { WCharacterFormat.uniqueCharacterFormats.remove(this.uniqueCharacterFormat); } this.uniqueCharacterFormat = undefined; this.baseCharStyle = undefined; this.ownerBase = undefined; }; WCharacterFormat.prototype.copyFormat = function (format) { if (!isNullOrUndefined(format)) { if (!isNullOrUndefined(format.uniqueCharacterFormat) && format.uniqueCharacterFormat.propertiesHash) { this.updateUniqueCharacterFormat(format); } if (!isNullOrUndefined(format.baseCharStyle)) { this.baseCharStyle = format.baseCharStyle; } if (format.revisions.length > 0) { this.removedIds = Revision.cloneRevisions(format.revisions); } else { this.removedIds = format.removedIds.slice(); } } }; WCharacterFormat.prototype.isEqualTocFormat = function (format) { return (this.fontFamily === format.fontFamily && this.bold === format.bold && this.italic === format.italic && this.strikethrough === format.strikethrough && this.highlightColor === format.highlightColor && this.fontFamilyAscii === format.fontFamilyAscii && this.fontFamilyFarEast === format.fontFamilyFarEast && this.fontFamilyNonFarEast === format.fontFamilyNonFarEast); }; WCharacterFormat.prototype.copyTocFormat = function (format) { if (!isNullOrUndefined(format.bold)) { this.bold = format.bold; } if (!isNullOrUndefined(format.italic)) { this.italic = format.italic; } if (!isNullOrUndefined(format.strikethrough)) { this.strikethrough = format.strikethrough; } if (!isNullOrUndefined(format.highlightColor)) { this.highlightColor = format.highlightColor; } if (!isNullOrUndefined(format.fontFamily)) { this.fontFamily = format.fontFamily; this.fontFamilyAscii = format.fontFamily; this.fontFamilyFarEast = format.fontFamily; this.fontFamilyNonFarEast = format.fontFamily; } }; WCharacterFormat.prototype.updateUniqueCharacterFormat = function (format) { var hash = undefined; if (this.uniqueCharacterFormat) { hash = this.uniqueCharacterFormat.mergeProperties(format.uniqueCharacterFormat); if (this.uniqueCharacterFormat.referenceCount === 0) { WCharacterFormat.uniqueCharacterFormats.remove(this.uniqueCharacterFormat); this.uniqueCharacterFormat = undefined; } } this.uniqueCharacterFormat = new WUniqueFormat(WCharacterFormat.uniqueFormatType); if (isNullOrUndefined(hash)) { hash = this.uniqueCharacterFormat.mergeProperties(format.uniqueCharacterFormat); } this.uniqueCharacterFormat = WCharacterFormat.uniqueCharacterFormats.addUniqueFormat(hash, WCharacterFormat.uniqueFormatType); }; WCharacterFormat.clear = function () { this.uniqueCharacterFormats.clear(); }; WCharacterFormat.prototype.applyStyle = function (baseCharStyle) { this.baseCharStyle = baseCharStyle; }; WCharacterFormat.prototype.getValue = function (property) { return this.hasValue(property) ? this.getPropertyValue(property) : undefined; }; WCharacterFormat.prototype.mergeFormat = function (format) { if (isNullOrUndefined(this.getValue('bold'))) { this.bold = format.getValue('bold'); } if (isNullOrUndefined(this.getValue('italic'))) { this.italic = format.getValue('italic'); } if (isNullOrUndefined(this.getValue('fontSize'))) { this.fontSize = format.getValue('fontSize'); } if (isNullOrUndefined(this.getValue('boldBidi'))) { this.boldBidi = format.getValue('boldBidi'); } if (isNullOrUndefined(this.getValue('italicBidi'))) { this.italicBidi = format.getValue('italicBidi'); } if (isNullOrUndefined(this.getValue('fontSizeBidi'))) { this.fontSizeBidi = format.getValue('fontSizeBidi'); } if (isNullOrUndefined(this.getValue('characterSpacing'))) { this.characterSpacing = format.getValue('characterSpacing'); } if (isNullOrUndefined(this.getValue('scaling'))) { this.scaling = format.getValue('scaling'); } if (isNullOrUndefined(this.getValue('fontFamily'))) { this.fontFamily = format.getValue('fontFamily'); } else { if (isNullOrUndefined(this.getValue('fontFamilyAscii'))) { this.fontFamilyAscii = format.getValue('fontFamily'); } if (isNullOrUndefined(this.getValue('fontFamilyFarEast'))) { this.fontFamilyFarEast = format.getValue('fontFamily'); } if (isNullOrUndefined(this.getValue('fontFamilyNonFarEast'))) { this.fontFamilyNonFarEast = format.getValue('fontFamily'); } } if (isNullOrUndefined(this.getValue('underline'))) { this.underline = format.getValue('underline'); } if (isNullOrUndefined(this.getValue('fontHintType'))) { this.fontHintType = format.getValue('fontHintType'); } if (isNullOrUndefined(this.getValue('strikethrough'))) { this.strikethrough = format.getValue('strikethrough'); } if (isNullOrUndefined(this.getValue('baselineAlignment'))) { this.baselineAlignment = format.getValue('baselineAlignment'); } if (isNullOrUndefined(this.getValue('highlightColor'))) { this.highlightColor = format.getValue('highlightColor'); } if (isNullOrUndefined(this.getValue('fontColor'))) { this.fontColor = format.getValue('fontColor'); } if (isNullOrUndefined(this.getValue('bidi'))) { this.bidi = format.getValue('bidi'); } if (isNullOrUndefined(this.getValue('bdo'))) { this.bdo = format.getValue('bdo'); } if (isNullOrUndefined(this.getValue('allCaps'))) { this.allCaps = format.getValue('allCaps'); } if (isNullOrUndefined(this.getValue('Lowercase'))) { this.Lowercase = format.getValue('Lowercase'); } if (isNullOrUndefined(this.getValue('SentenceCase'))) { this.SentenceCase = format.getValue('SentenceCase'); } if (isNullOrUndefined(this.getValue('ToggleCase'))) { this.ToggleCase = format.getValue('ToggleCase'); } if (isNullOrUndefined(this.getValue('CapitalizeEachWord'))) { this.CapitalizeEachWord = format.getValue('CapitalizeEachWord'); } if (isNullOrUndefined(this.getValue('Uppercase'))) { this.Uppercase = format.getValue('Uppercase'); } if (isNullOrUndefined(this.getValue('localeIdBidi'))) { this.localeIdBidi = format.getValue('localeIdBidi'); } if (isNullOrUndefined(this.getValue('localeIdAscii'))) { this.localeIdAscii = format.getValue('localeIdAscii'); } if (isNullOrUndefined(this.getValue('localeIdFarEast'))) { this.localeIdFarEast = format.getValue('localeIdFarEast'); } if (isNullOrUndefined(this.getValue('complexScript'))) { this.complexScript = format.getValue('complexScript'); } if (isNullOrUndefined(this.getValue('fontFamilyAscii'))) { this.fontFamilyAscii = format.getValue('fontFamilyAscii'); } if (isNullOrUndefined(this.getValue('fontFamilyBidi'))) { this.fontFamilyBidi = format.getValue('fontFamilyBidi'); } if (isNullOrUndefined(this.getValue('fontFamilyFarEast'))) { this.fontFamilyFarEast = format.getValue('fontFamilyFarEast'); } if (isNullOrUndefined(this.getValue('fontFamilyNonFarEast'))) { this.fontFamilyNonFarEast = format.getValue('fontFamilyNonFarEast'); } }; /** * Assinging the value for style dialog * @private * @returns {void} */ WCharacterFormat.prototype.assignFormat = function (format) { if (format.hasValue('bold')) { this.bold = format.getValue('bold'); } if (format.hasValue('italic')) { this.italic = format.getValue('italic'); } if (format.hasValue('fontSize')) { this.fontSize = format.getValue('fontSize'); } if (format.hasValue('characterSpacing')) { this.characterSpacing = format.getValue('characterSpacing'); } if (format.hasValue('scaling')) { this.scaling = format.getValue('scaling'); } if (format.hasValue('fontFamily')) { this.fontFamily = format.getValue('fontFamily'); this.fontFamilyFarEast = format.getValue('fontFamily'); this.fontFamilyAscii = format.getValue('fontFamily'); this.fontFamilyNonFarEast = format.getValue('fontFamily'); this.fontFamilyBidi = format.getValue('fontFamily'); } if (format.hasValue('underline')) { this.underline = format.getValue('underline'); } if (format.hasValue('fontHintType')) { this.fontHintType = format.getValue('fontHintType'); } if (format.hasValue('strikethrough')) { this.strikethrough = format.getValue('strikethrough'); } if (format.hasValue('baselineAlignment')) { this.baselineAlignment = format.getValue('baselineAlignment'); } if (format.hasValue('highlightColor')) { this.highlightColor = format.getValue('highlightColor'); } if (format.hasValue('fontColor')) { this.fontColor = format.getValue('fontColor'); } if (format.hasValue('bidi')) { this.bidi = format.getValue('bidi'); } if (format.hasValue('bdo')) { this.bdo = format.getValue('bdo'); } if (format.hasValue('allCaps')) { this.allCaps = format.getValue('allCaps'); } if (format.hasValue('Lowercase')) { this.Lowercase = format.getValue('Lowercase'); } if (format.hasValue('SentenceCase')) { this.SentenceCase = format.getValue('SentenceCase'); } if (format.hasValue('ToggleCase')) { this.ToggleCase = format.getValue('ToggleCase'); } if (format.hasValue('CapitalizeEachWord')) { this.CapitalizeEachWord = format.getValue('CapitalizeEachWord'); } if (format.hasValue('Uppercase')) { this.Uppercase = format.getValue('Uppercase'); } if (format.hasValue('localeIdBidi')) { this.localeIdBidi = format.getValue('localeIdBidi'); } if (format.hasValue('localeIdAscii')) { this.localeIdAscii = format.getValue('localeIdAscii'); } if (format.hasValue('localeIdFarEast')) { this.localeIdFarEast = format.getValue('localeIdFarEast'); } if (format.hasValue('complexScript')) { this.complexScript = format.getValue('complexScript'); } }; WCharacterFormat.prototype.hasValueWithParent = function (property) { // 2.1 Define direct VALUE var hasValue = this.hasValue(property); // 2.2 If SELF VALUE is NULL get BASE VALUE // if (!hasValue && this.BaseFormat != null && this.BaseFormat is WCharacterFormat) // hasValue = (this.BaseFormat as WCharacterFormat).HasValueWithParent(propertyKey); // 2.3 If VALUE not in hash, get CharStyle VALUE if (!hasValue && !isNullOrUndefined(this.baseCharStyle) && this.baseCharStyle instanceof WCharacterStyle) { hasValue = this.baseCharStyle.characterFormat.hasValue(property); } // 3. If VALUE is NULL get DEFAULT VALUE var defFormat = this.documentCharacterFormat(); if (!hasValue && !isNullOrUndefined(defFormat)) { hasValue = defFormat.hasValue(property); } return hasValue; }; WCharacterFormat.uniqueCharacterFormats = new WUniqueFormats(); WCharacterFormat.uniqueFormatType = 2; return WCharacterFormat; }()); export { WCharacterFormat };