You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cryptpad/www/common/onlyoffice/v1/sdkjs/cell/sdk-all-min.js

32688 lines
1.2 MiB
JavaScript

5 years ago
/*
* Copyright (C) Ascensio System SIA 2012-2020. All rights reserved
*
* https://www.onlyoffice.com/
*
* Version: 0.0.0 (build:0)
*/
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
var AscBrowser = {
userAgent : "",
isIE : false,
isMacOs : false,
isSafariMacOs : false,
isAppleDevices : false,
isAndroid : false,
isMobile : false,
isGecko : false,
isChrome : false,
isOpera : false,
isWebkit : false,
isSafari : false,
isArm : false,
isMozilla : false,
isRetina : false,
isLinuxOS : false,
retinaPixelRatio : 1,
isVivaldiLinux : false
};
// user agent lower case
AscBrowser.userAgent = navigator.userAgent.toLowerCase();
// ie detect
AscBrowser.isIE = (AscBrowser.userAgent.indexOf("msie") > -1 ||
AscBrowser.userAgent.indexOf("trident") > -1 ||
AscBrowser.userAgent.indexOf("edge") > -1);
AscBrowser.isIeEdge = (AscBrowser.userAgent.indexOf("edge/") > -1);
AscBrowser.isIE9 = (AscBrowser.userAgent.indexOf("msie9") > -1 || AscBrowser.userAgent.indexOf("msie 9") > -1);
AscBrowser.isIE10 = (AscBrowser.userAgent.indexOf("msie10") > -1 || AscBrowser.userAgent.indexOf("msie 10") > -1);
// macOs detect
AscBrowser.isMacOs = (AscBrowser.userAgent.indexOf('mac') > -1);
// chrome detect
AscBrowser.isChrome = !AscBrowser.isIE && (AscBrowser.userAgent.indexOf("chrome") > -1);
// safari detect
AscBrowser.isSafari = !AscBrowser.isIE && !AscBrowser.isChrome && (AscBrowser.userAgent.indexOf("safari") > -1);
// macOs safari detect
AscBrowser.isSafariMacOs = (AscBrowser.isSafari && AscBrowser.isMacOs);
// apple devices detect
AscBrowser.isAppleDevices = (AscBrowser.userAgent.indexOf("ipad") > -1 ||
AscBrowser.userAgent.indexOf("iphone") > -1 ||
AscBrowser.userAgent.indexOf("ipod") > -1);
// android devices detect
AscBrowser.isAndroid = (AscBrowser.userAgent.indexOf("android") > -1);
// mobile detect
AscBrowser.isMobile = /android|avantgo|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od|ad)|iris|kindle|lge |maemo|midp|mmp|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent || navigator.vendor || window.opera);
// gecko detect
AscBrowser.isGecko = (AscBrowser.userAgent.indexOf("gecko/") > -1);
// opera detect
AscBrowser.isOpera = (!!window.opera || AscBrowser.userAgent.indexOf("opr/") > -1);
// webkit detect
AscBrowser.isWebkit = !AscBrowser.isIE && (AscBrowser.userAgent.indexOf("webkit") > -1);
// arm detect
AscBrowser.isArm = (AscBrowser.userAgent.indexOf("arm") > -1);
AscBrowser.isMozilla = !AscBrowser.isIE && (AscBrowser.userAgent.indexOf("firefox") > -1);
AscBrowser.isLinuxOS = (AscBrowser.userAgent.indexOf(" linux ") > -1);
AscBrowser.isVivaldiLinux = AscBrowser.isLinuxOS && (AscBrowser.userAgent.indexOf("vivaldi") > -1);
AscBrowser.zoom = 1;
AscBrowser.checkZoom = function()
{
if (AscBrowser.isAndroid)
{
AscBrowser.isRetina = (window.devicePixelRatio >= 1.9);
AscBrowser.retinaPixelRatio = window.devicePixelRatio;
return;
}
AscBrowser.zoom = 1.0;
AscBrowser.isRetina = false;
AscBrowser.retinaPixelRatio = 1;
if (AscBrowser.isChrome && !AscBrowser.isOpera && !AscBrowser.isMobile && document && document.firstElementChild && document.body)
{
if (false)
{
// этот код - рабочий, но только если этот ифрейм открыт на весь размер браузера
// (window.outerWidth и window.innerWidth зависимы)
if (window.innerWidth > 300)
AscBrowser.zoom = window.outerWidth / window.innerWidth;
if (Math.abs(AscBrowser.zoom - 1) < 0.1)
AscBrowser.zoom = 1;
AscBrowser.zoom = window.outerWidth / window.innerWidth;
var _devicePixelRatio = window.devicePixelRatio / AscBrowser.zoom;
// device pixel ratio: кратно 0.5
_devicePixelRatio = (5 * (((2.5 + 10 * _devicePixelRatio) / 5) >> 0)) / 10;
AscBrowser.zoom = window.devicePixelRatio / _devicePixelRatio;
if (2 == _devicePixelRatio)
AscBrowser.isRetina = true;
// chrome 54.x: zoom = "reset" - clear retina zoom (windows)
//document.firstElementChild.style.zoom = "reset";
document.firstElementChild.style.zoom = 1.0 / AscBrowser.zoom;
}
else
{
// делаем простую проверку
// считаем: 0 < window.devicePixelRatio < 2 => _devicePixelRatio = 1; zoom = window.devicePixelRatio / _devicePixelRatio;
// считаем: window.devicePixelRatio >= 2 => _devicePixelRatio = 2; zoom = window.devicePixelRatio / _devicePixelRatio;
if (window.devicePixelRatio > 0.1)
{
if (window.devicePixelRatio < 1.99)
{
var _devicePixelRatio = 1;
AscBrowser.zoom = window.devicePixelRatio / _devicePixelRatio;
}
else
{
var _devicePixelRatio = 2;
AscBrowser.zoom = window.devicePixelRatio / _devicePixelRatio;
AscBrowser.isRetina = true;
}
// chrome 54.x: zoom = "reset" - clear retina zoom (windows)
//document.firstElementChild.style.zoom = "reset";
document.firstElementChild.style.zoom = 1.0 / AscBrowser.zoom;
}
else
document.firstElementChild.style.zoom = "normal";
}
if (AscBrowser.isRetina)
AscBrowser.retinaPixelRatio = 2;
}
else
{
AscBrowser.isRetina = (Math.abs(2 - (window.devicePixelRatio / AscBrowser.zoom)) < 0.01);
if (AscBrowser.isRetina)
AscBrowser.retinaPixelRatio = 2;
if (AscBrowser.isMobile)
{
AscBrowser.isRetina = (window.devicePixelRatio >= 1.9);
AscBrowser.retinaPixelRatio = window.devicePixelRatio;
}
}
};
AscBrowser.checkZoom();
AscBrowser.convertToRetinaValue = function(value, isScale)
{
if (isScale === true)
return ((value * AscBrowser.retinaPixelRatio) + 0.5) >> 0;
else
return ((value / AscBrowser.retinaPixelRatio) + 0.5) >> 0;
};
//--------------------------------------------------------export----------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].AscBrowser = AscBrowser;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined)
{
var g_cCharDelimiter = String.fromCharCode(5);
var g_cGeneralFormat = 'General';
var FONT_THUMBNAIL_HEIGHT = (7 * 96.0 / 25.4) >> 0;
var c_oAscMaxColumnWidth = 255;
var c_oAscMaxRowHeight = 409.5;
var c_nMaxConversionTime = 900000;//depends on config
var c_nMaxDownloadTitleLen= 255;
var c_nVersionNoBase64 = 10;
var c_dMaxParaRunContentLength = 256;
var c_rUneditableTypes = /^(?:(pdf|djvu|xps))$/;
//files type for Saving & DownloadAs
var c_oAscFileType = {
UNKNOWN : 0,
PDF : 0x0201,
PDFA : 0x0901,
HTML : 0x0803,
// Word
DOCX : 0x0041,
DOC : 0x0042,
ODT : 0x0043,
RTF : 0x0044,
TXT : 0x0045,
MHT : 0x0047,
EPUB : 0x0048,
FB2 : 0x0049,
MOBI : 0x004a,
DOCY : 0x1001,
CANVAS_WORD : 0x2001,
JSON : 0x0808, // Для mail-merge
// Excel
XLSX : 0x0101,
XLS : 0x0102,
ODS : 0x0103,
CSV : 0x0104,
XLSY : 0x1002,
// PowerPoint
PPTX : 0x0081,
PPT : 0x0082,
ODP : 0x0083
};
var c_oAscError = {
Level : {
Critical : -1,
NoCritical : 0
},
ID : {
ServerSaveComplete : 3,
ConvertationProgress : 2,
DownloadProgress : 1,
No : 0,
Unknown : -1,
ConvertationTimeout : -2,
DownloadError : -4,
UnexpectedGuid : -5,
Database : -6,
FileRequest : -7,
FileVKey : -8,
UplImageSize : -9,
UplImageExt : -10,
UplImageFileCount : -11,
NoSupportClipdoard : -12,
UplImageUrl : -13,
MaxDataPointsError : -16,
StockChartError : -17,
CoAuthoringDisconnect : -18,
ConvertationPassword : -19,
VKeyEncrypt : -20,
KeyExpire : -21,
UserCountExceed : -22,
AccessDeny : -23,
LoadingScriptError : -24,
SplitCellMaxRows : -30,
SplitCellMaxCols : -31,
SplitCellRowsDivider : -32,
MobileUnexpectedCharCount : -35,
// Mail Merge
MailMergeLoadFile : -40,
MailMergeSaveFile : -41,
// for AutoFilter
AutoFilterDataRangeError : -50,
AutoFilterChangeFormatTableError : -51,
AutoFilterChangeError : -52,
AutoFilterMoveToHiddenRangeError : -53,
LockedAllError : -54,
LockedWorksheetRename : -55,
FTChangeTableRangeError : -56,
FTRangeIncludedOtherTables : -57,
PasteMaxRangeError : -64,
PastInMergeAreaError : -65,
CopyMultiselectAreaError : -66,
DataRangeError : -72,
CannotMoveRange : -71,
MaxDataSeriesError : -80,
CannotFillRange : -81,
ConvertationOpenError : -82,
ConvertationSaveError : -83,
UserDrop : -100,
Warning : -101,
PrintMaxPagesCount : -110,
SessionAbsolute: -120,
SessionIdle: -121,
SessionToken: -122,
/* для формул */
FrmlWrongCountParentheses : -300,
FrmlWrongOperator : -301,
FrmlWrongMaxArgument : -302,
FrmlWrongCountArgument : -303,
FrmlWrongFunctionName : -304,
FrmlAnotherParsingError : -305,
FrmlWrongArgumentRange : -306,
FrmlOperandExpected : -307,
FrmlParenthesesCorrectCount : -308,
FrmlWrongReferences : -309,
InvalidReferenceOrName : -310,
LockCreateDefName : -311,
LockedCellPivot : -312,
ForceSaveButton: -331,
ForceSaveTimeout: -332,
OpenWarning : 500,
DataEncrypted : -600,
}
};
var c_oAscAsyncAction = {
Open : 0, // открытие документа
Save : 1, // сохранение
LoadDocumentFonts : 2, // загружаем фонты документа (сразу после открытия)
LoadDocumentImages : 3, // загружаем картинки документа (сразу после загрузки шрифтов)
LoadFont : 4, // подгрузка нужного шрифта
LoadImage : 5, // подгрузка картинки
DownloadAs : 6, // cкачать
Print : 7, // конвертация в PDF и сохранение у пользователя
UploadImage : 8, // загрузка картинки
ApplyChanges : 9, // применение изменений от другого пользователя.
SlowOperation : 11, // медленная операция
LoadTheme : 12, // загрузка темы
MailMergeLoadFile : 13, // загрузка файла для mail merge
DownloadMerge : 14, // cкачать файл с mail merge
SendMailMerge : 15, // рассылка mail merge по почте
ForceSaveButton : 16,
ForceSaveTimeout : 17
};
var c_oAscAdvancedOptionsID = {
CSV : 0,
TXT : 1,
DRM : 2
};
var c_oAscAdvancedOptionsAction = {
None : 0,
Open : 1,
Save : 2
};
var c_oAscRestrictionType = {
None : 0,
OnlyForms : 1,
OnlyComments : 2,
OnlySignatures : 3,
View : 0xFF // Отличие данного ограничения от обычного ViewMode в том, что редактор открывается
// как полноценный редактор, просто мы запрещаем ЛЮБОЕ редактирование. А во ViewMode
// открывается именно просмотрщик.
};
// Режимы отрисовки
var c_oAscFontRenderingModeType = {
noHinting : 1,
hinting : 2,
hintingAndSubpixeling : 3
};
var c_oAscAsyncActionType = {
Information : 0,
BlockInteraction : 1
};
var DownloadType = {
None : '',
Download : 'asc_onDownloadUrl',
Print : 'asc_onPrintUrl',
MailMerge : 'asc_onSaveMailMerge'
};
var CellValueType = {
Number : 0,
String : 1,
Bool : 2,
Error : 3
};
/**
* NumFormat defines
* @enum {number}
*/
var c_oAscNumFormatType = {
None : -1,
General : 0,
Number : 1,
Scientific : 2,
Accounting : 3,
Currency : 4,
Date : 5,
Time : 6,
Percent : 7,
Fraction : 8,
Text : 9,
Custom : 10
};
var c_oAscDrawingLayerType = {
BringToFront : 0,
SendToBack : 1,
BringForward : 2,
SendBackward : 3
};
var c_oAscCellAnchorType = {
cellanchorAbsolute : 0,
cellanchorOneCell : 1,
cellanchorTwoCell : 2
};
var c_oAscChartDefines = {
defaultChartWidth : 478,
defaultChartHeight : 286
};
var c_oAscStyleImage = {
Default : 0,
Document : 1
};
var c_oAscTypeSelectElement = {
Paragraph : 0,
Table : 1,
Image : 2,
Header : 3,
Hyperlink : 4,
SpellCheck : 5,
Shape : 6,
Slide : 7,
Chart : 8,
Math : 9,
MailMerge : 10,
ContentControl : 11
};
var c_oAscLineDrawingRule = {
Left : 0,
Center : 1,
Right : 2,
Top : 0,
Bottom : 2
};
var align_Right = 0;
var align_Left = 1;
var align_Center = 2;
var align_Justify = 3;
var linerule_AtLeast = 0x00;
var linerule_Auto = 0x01;
var linerule_Exact = 0x02;
var c_oAscShdClear = 0;
var c_oAscShdNil = 1;
var vertalign_Baseline = 0;
var vertalign_SuperScript = 1;
var vertalign_SubScript = 2;
var hdrftr_Header = 0x01;
var hdrftr_Footer = 0x02;
var c_oAscDropCap = {
None : 0x00,
Drop : 0x01,
Margin : 0x02
};
var c_oAscChartTitleShowSettings = {
none : 0,
overlay : 1,
noOverlay : 2
};
var c_oAscChartHorAxisLabelShowSettings = {
none : 0,
noOverlay : 1
};
var c_oAscChartVertAxisLabelShowSettings = {
none : 0,
rotated : 1,
vertical : 2,
horizontal : 3
};
var c_oAscChartLegendShowSettings = {
none : 0,
left : 1,
top : 2,
right : 3,
bottom : 4,
leftOverlay : 5,
rightOverlay : 6,
layout : 7,
topRight : 8 // ToDo добавить в меню
};
var c_oAscChartDataLabelsPos = {
none : 0,
b : 1,
bestFit : 2,
ctr : 3,
inBase : 4,
inEnd : 5,
l : 6,
outEnd : 7,
r : 8,
t : 9
};
var c_oAscChartCatAxisSettings = {
none : 0,
leftToRight : 1,
rightToLeft : 2,
noLabels : 3
};
var c_oAscChartValAxisSettings = {
none : 0,
byDefault : 1,
thousands : 2,
millions : 3,
billions : 4,
log : 5
};
var c_oAscAxisTypeSettings = {
vert : 0,
hor : 1
};
var c_oAscGridLinesSettings = {
none : 0,
major : 1,
minor : 2,
majorMinor : 3
};
var c_oAscChartTypeSettings = {
barNormal : 0,
barStacked : 1,
barStackedPer : 2,
barNormal3d : 3,
barStacked3d : 4,
barStackedPer3d : 5,
barNormal3dPerspective : 6,
lineNormal : 7,
lineStacked : 8,
lineStackedPer : 9,
lineNormalMarker : 10,
lineStackedMarker : 11,
lineStackedPerMarker : 12,
line3d : 13,
pie : 14,
pie3d : 15,
hBarNormal : 16,
hBarStacked : 17,
hBarStackedPer : 18,
hBarNormal3d : 19,
hBarStacked3d : 20,
hBarStackedPer3d : 21,
areaNormal : 22,
areaStacked : 23,
areaStackedPer : 24,
doughnut : 25,
stock : 26,
scatter : 27,
scatterLine : 28,
scatterLineMarker : 29,
scatterMarker : 30,
scatterNone : 31,
scatterSmooth : 32,
scatterSmoothMarker : 33,
surfaceNormal : 34,
surfaceWireframe : 35,
contourNormal : 36,
contourWireframe : 37,
unknown : 38
};
var c_oAscValAxisRule = {
auto : 0,
fixed : 1
};
var c_oAscValAxUnits = {
none : 0,
BILLIONS : 1,
HUNDRED_MILLIONS : 2,
HUNDREDS : 3,
HUNDRED_THOUSANDS : 4,
MILLIONS : 5,
TEN_MILLIONS : 6,
TEN_THOUSANDS : 7,
TRILLIONS : 8,
CUSTOM : 9,
THOUSANDS : 10
};
var c_oAscTickMark = {
TICK_MARK_CROSS : 0,
TICK_MARK_IN : 1,
TICK_MARK_NONE : 2,
TICK_MARK_OUT : 3
};
var c_oAscTickLabelsPos = {
TICK_LABEL_POSITION_HIGH : 0,
TICK_LABEL_POSITION_LOW : 1,
TICK_LABEL_POSITION_NEXT_TO : 2,
TICK_LABEL_POSITION_NONE : 3
};
var c_oAscCrossesRule = {
auto : 0,
maxValue : 1,
value : 2,
minValue : 3
};
var c_oAscHorAxisType = {
auto : 0,
date : 1,
text : 2
};
var c_oAscBetweenLabelsRule = {
auto : 0,
manual : 1
};
var c_oAscLabelsPosition = {
byDivisions : 0,
betweenDivisions : 1
};
var c_oAscAxisType = {
auto : 0,
date : 1,
text : 2,
cat : 3,
val : 4
};
var c_oAscHAnchor = {
Margin : 0x00,
Page : 0x01,
Text : 0x02,
PageInternal : 0xFF // только для внутреннего использования
};
var c_oAscXAlign = {
Center : 0x00,
Inside : 0x01,
Left : 0x02,
Outside : 0x03,
Right : 0x04
};
var c_oAscYAlign = {
Bottom : 0x00,
Center : 0x01,
Inline : 0x02,
Inside : 0x03,
Outside : 0x04,
Top : 0x05
};
var c_oAscVAnchor = {
Margin : 0x00,
Page : 0x01,
Text : 0x02
};
var c_oAscRelativeFromH = {
Character : 0x00,
Column : 0x01,
InsideMargin : 0x02,
LeftMargin : 0x03,
Margin : 0x04,
OutsideMargin : 0x05,
Page : 0x06,
RightMargin : 0x07
};
var c_oAscSizeRelFromH = {
sizerelfromhMargin : 0,
sizerelfromhPage : 1,
sizerelfromhLeftMargin : 2,
sizerelfromhRightMargin : 3,
sizerelfromhInsideMargin : 4,
sizerelfromhOutsideMargin : 5
};
var c_oAscSizeRelFromV = {
sizerelfromvMargin : 0,
sizerelfromvPage : 1,
sizerelfromvTopMargin : 2,
sizerelfromvBottomMargin : 3,
sizerelfromvInsideMargin : 4,
sizerelfromvOutsideMargin : 5
};
var c_oAscRelativeFromV = {
BottomMargin : 0x00,
InsideMargin : 0x01,
Line : 0x02,
Margin : 0x03,
OutsideMargin : 0x04,
Page : 0x05,
Paragraph : 0x06,
TopMargin : 0x07
};
// image wrap style
var c_oAscWrapStyle = {
Inline : 0,
Flow : 1
};
// Толщина бордера
var c_oAscBorderWidth = {
None : 0, // 0px
Thin : 1, // 1px
Medium : 2, // 2px
Thick : 3 // 3px
};
/**
* Располагаются в порядке значимости для отрисовки
* @enum {number}
*/
var c_oAscBorderStyles = {
None : 0,
Double : 1,
Hair : 2,
DashDotDot : 3,
DashDot : 4,
Dotted : 5,
Dashed : 6,
Thin : 7,
MediumDashDotDot : 8,
SlantDashDot : 9,
MediumDashDot : 10,
MediumDashed : 11,
Medium : 12,
Thick : 13
};
var c_oAscBorderType = {
Hor : 1,
Ver : 2,
Diag : 3
};
// PageOrientation
var c_oAscPageOrientation = {
PagePortrait : 0x00,
PageLandscape : 0x01
};
/**
* lock types
* @const
*/
var c_oAscLockTypes = {
kLockTypeNone : 1, // никто не залочил данный объект
kLockTypeMine : 2, // данный объект залочен текущим пользователем
kLockTypeOther : 3, // данный объект залочен другим(не текущим) пользователем
kLockTypeOther2 : 4, // данный объект залочен другим(не текущим) пользователем (обновления уже пришли)
kLockTypeOther3 : 5 // данный объект был залочен (обновления пришли) и снова стал залочен
};
var c_oAscFormatPainterState = {
kOff : 0,
kOn : 1,
kMultiple : 2
};
var c_oAscSaveTypes = {
PartStart : 0,
Part : 1,
Complete : 2,
CompleteAll : 3
};
var c_oAscColor = {
COLOR_TYPE_NONE : 0,
COLOR_TYPE_SRGB : 1,
COLOR_TYPE_PRST : 2,
COLOR_TYPE_SCHEME : 3,
COLOR_TYPE_SYS : 4
};
var c_oAscFill = {
FILL_TYPE_NONE : 0,
FILL_TYPE_BLIP : 1,
FILL_TYPE_NOFILL : 2,
FILL_TYPE_SOLID : 3,
FILL_TYPE_GRAD : 4,
FILL_TYPE_PATT : 5,
FILL_TYPE_GRP : 6
};
// Chart defines
var c_oAscChartType = {
line : "Line",
bar : "Bar",
hbar : "HBar",
area : "Area",
pie : "Pie",
scatter : "Scatter",
stock : "Stock",
doughnut : "Doughnut"
};
var c_oAscChartSubType = {
normal : "normal",
stacked : "stacked",
stackedPer : "stackedPer"
};
var c_oAscFillGradType = {
GRAD_LINEAR : 1,
GRAD_PATH : 2
};
var c_oAscFillBlipType = {
STRETCH : 1,
TILE : 2
};
var c_oAscStrokeType = {
STROKE_NONE : 0,
STROKE_COLOR : 1
};
var c_oAscVAlign = {
Bottom : 0, // (Text Anchor Enum ( Bottom ))
Center : 1, // (Text Anchor Enum ( Center ))
Dist : 2, // (Text Anchor Enum ( Distributed ))
Just : 3, // (Text Anchor Enum ( Justified ))
Top : 4 // Top
};
var c_oAscVertDrawingText = {
normal : 1,
vert : 3,
vert270 : 4
};
var c_oAscLineJoinType = {
Round : 1,
Bevel : 2,
Miter : 3
};
var c_oAscLineCapType = {
Flat : 0,
Round : 1,
Square : 2
};
var c_oAscLineBeginType = {
None : 0,
Arrow : 1,
Diamond : 2,
Oval : 3,
Stealth : 4,
Triangle : 5
};
var c_oAscLineBeginSize = {
small_small : 0,
small_mid : 1,
small_large : 2,
mid_small : 3,
mid_mid : 4,
mid_large : 5,
large_small : 6,
large_mid : 7,
large_large : 8
};
var c_oAscCsvDelimiter = {
None : 0,
Tab : 1,
Semicolon : 2,
Colon : 3,
Comma : 4,
Space : 5
};
var c_oAscUrlType = {
Invalid : 0,
Http : 1,
Email : 2
};
var c_oAscCellTextDirection = {
LRTB : 0x00,
TBRL : 0x01,
BTLR : 0x02
};
var c_oAscDocumentUnits = {
Millimeter : 0,
Inch : 1,
Point : 2
};
var c_oAscMouseMoveDataTypes = {
Common : 0,
Hyperlink : 1,
LockedObject : 2,
Footnote : 3
};
// selection type
var c_oAscSelectionType = {
RangeCells : 1,
RangeCol : 2,
RangeRow : 3,
RangeMax : 4,
RangeImage : 5,
RangeChart : 6,
RangeShape : 7,
RangeShapeText : 8,
RangeChartText : 9,
RangeFrozen : 10
};
var c_oAscInsertOptions = {
InsertCellsAndShiftRight : 1,
InsertCellsAndShiftDown : 2,
InsertColumns : 3,
InsertRows : 4,
InsertTableRowAbove : 5,
InsertTableRowBelow : 6,
InsertTableColLeft : 7,
InsertTableColRight : 8
};
var c_oAscDeleteOptions = {
DeleteCellsAndShiftLeft : 1,
DeleteCellsAndShiftTop : 2,
DeleteColumns : 3,
DeleteRows : 4,
DeleteTable : 5
};
// Print default options (in mm)
var c_oAscPrintDefaultSettings = {
// Размеры страницы при печати
PageWidth : 210,
PageHeight : 297,
PageOrientation : c_oAscPageOrientation.PagePortrait,
// Поля для страницы при печати
PageLeftField : 17.8,
PageRightField : 17.8,
PageTopField : 19.1,
PageBottomField : 19.1,
MinPageLeftField : 0.17,
MinPageRightField : 0.17,
MinPageTopField : 0.17,
MinPageBottomField : 0.17,
PageGridLines : 0,
PageHeadings : 0
};
var c_oZoomType = {
FitToPage : 1,
FitToWidth : 2,
CustomMode : 3
};
var c_oNotifyType = {
Dirty: 0,
Shift: 1,
Move: 2,
Delete: 3,
RenameTableColumn: 4,
ChangeDefName: 5,
ChangeSheet: 6,
DelColumnTable: 7,
Prepare: 8
};
var c_oNotifyParentType = {
Change: 0,
ChangeFormula: 1,
EndCalculate: 2,
GetRangeCell: 3,
IsDefName: 4,
Shared: 5
};
var c_oDashType = {
dash : 0,
dashDot : 1,
dot : 2,
lgDash : 3,
lgDashDot : 4,
lgDashDotDot : 5,
solid : 6,
sysDash : 7,
sysDashDot : 8,
sysDashDotDot : 9,
sysDot : 10
};
/** @enum {number} */
var c_oAscMathInterfaceType = {
Common : 0x00,
Fraction : 0x01,
Script : 0x02,
Radical : 0x03,
LargeOperator : 0x04,
Delimiter : 0x05,
Function : 0x06,
Accent : 0x07,
BorderBox : 0x08,
Bar : 0x09,
Box : 0x0a,
Limit : 0x0b,
GroupChar : 0x0c,
Matrix : 0x0d,
EqArray : 0x0e,
Phantom : 0x0f
};
/** @enum {number} */
var c_oAscMathInterfaceBarPos = {
Top : 0,
Bottom : 1
};
/** @enum {number} */
var c_oAscMathInterfaceScript = {
None : 0x000, // Удаление скрипта
Sup : 0x001,
Sub : 0x002,
SubSup : 0x003,
PreSubSup : 0x004
};
/** @enum {number} */
var c_oAscMathInterfaceFraction = {
Bar : 0x001,
Skewed : 0x002,
Linear : 0x003,
NoBar : 0x004
};
/** @enum {number} */
var c_oAscMathInterfaceLimitPos = {
None : -1, // Удаление предела
Top : 0,
Bottom : 1
};
/** @enum {number} */
var c_oAscMathInterfaceMatrixMatrixAlign = {
Top : 0,
Center : 1,
Bottom : 2
};
/** @enum {number} */
var c_oAscMathInterfaceMatrixColumnAlign = {
Left : 0,
Center : 1,
Right : 2
};
/** @enum {number} */
var c_oAscMathInterfaceEqArrayAlign = {
Top : 0,
Center : 1,
Bottom : 2
};
/** @enum {number} */
var c_oAscMathInterfaceNaryLimitLocation = {
UndOvr : 0,
SubSup : 1
};
/** @enum {number} */
var c_oAscMathInterfaceGroupCharPos = {
None : -1, // Удаление GroupChar
Top : 0,
Bottom : 1
};
var c_oAscTabLeader = {
Dot : 0x00,
Heavy : 0x01,
Hyphen : 0x02,
MiddleDot : 0x03,
None : 0x04,
Underscore : 0x05
};
var c_oAscEncodings = [
[0, 28596, "ISO-8859-6", "Arabic (ISO 8859-6)"],
[1, 720, "DOS-720", "Arabic (OEM 720)"],
[2, 1256, "windows-1256", "Arabic (Windows)"],
[3, 28594, "ISO-8859-4", "Baltic (ISO 8859-4)"],
[4, 28603, "ISO-8859-13", "Baltic (ISO 8859-13)"],
[5, 775, "IBM775", "Baltic (OEM 775)"],
[6, 1257, "windows-1257", "Baltic (Windows)"],
[7, 28604, "ISO-8859-14", "Celtic (ISO 8859-14)"],
[8, 28595, "ISO-8859-5", "Cyrillic (ISO 8859-5)"],
[9, 20866, "KOI8-R", "Cyrillic (KOI8-R)"],
[10, 21866, "KOI8-U", "Cyrillic (KOI8-U)"],
[11, 10007, "x-mac-cyrillic", "Cyrillic (Mac)"],
[12, 855, "IBM855", "Cyrillic (OEM 855)"],
[13, 866, "cp866", "Cyrillic (OEM 866)"],
[14, 1251, "windows-1251", "Cyrillic (Windows)"],
[15, 852, "IBM852", "Central European (OEM 852)"],
[16, 1250, "windows-1250", "Central European (Windows)"],
[17, 950, "Big5", "Chinese (Big5 Traditional)"],
[18, 936, "GB2312", "Central (GB2312 Simplified)"],
[19, 28592, "ISO-8859-2", "Eastern European (ISO 8859-2)"],
[20, 28597, "ISO-8859-7", "Greek (ISO 8859-7)"],
[21, 737, "IBM737", "Greek (OEM 737)"],
[22, 869, "IBM869", "Greek (OEM 869)"],
[23, 1253, "windows-1253", "Greek (Windows)"],
[24, 28598, "ISO-8859-8", "Hebrew (ISO 8859-8)"],
[25, 862, "DOS-862", "Hebrew (OEM 862)"],
[26, 1255, "windows-1255", "Hebrew (Windows)"],
[27, 932, "Shift_JIS", "Japanese (Shift-JIS)"],
[28, 949, "KS_C_5601-1987", "Korean (Windows)"],
[29, 51949, "EUC-KR", "Korean (EUC)"],
[30, 861, "IBM861", "North European (Icelandic OEM 861)"],
[31, 865, "IBM865", "North European (Nordic OEM 865)"],
[32, 874, "windows-874", "Thai (TIS-620)"],
[33, 28593, "ISO-8859-3", "Turkish (ISO 8859-3)"],
[34, 28599, "ISO-8859-9", "Turkish (ISO 8859-9)"],
[35, 857, "IBM857", "Turkish (OEM 857)"],
[36, 1254, "windows-1254", "Turkish (Windows)"],
[37, 28591, "ISO-8859-1", "Western European (ISO-8859-1)"],
[38, 28605, "ISO-8859-15", "Western European (ISO-8859-15)"],
[39, 850, "IBM850", "Western European (OEM 850)"],
[40, 858, "IBM858", "Western European (OEM 858)"],
[41, 860, "IBM860", "Western European (OEM 860 : Portuguese)"],
[42, 863, "IBM863", "Western European (OEM 863 : French)"],
[43, 437, "IBM437", "Western European (OEM-US)"],
[44, 1252, "windows-1252", "Western European (Windows)"],
[45, 1258, "windows-1258", "Vietnamese (Windows)"],
[46, 65001, "UTF-8", "Unicode (UTF-8)"],
[47, 65000, "UTF-7", "Unicode (UTF-7)"],
[48, 1200, "UTF-16LE", "Unicode (UTF-16)"],
[49, 1201, "UTF-16BE", "Unicode (UTF-16 Big Endian)"],
[50, 12000, "UTF-32LE", "Unicode (UTF-32)"],
[51, 12001, "UTF-32BE", "Unicode (UTF-32 Big Endian)"]
];
var c_oAscEncodingsMap = {
"437" : 43, "720" : 1, "737" : 21, "775" : 5, "850" : 39, "852" : 15, "855" : 12, "857" : 35, "858" : 40, "860" : 41, "861" : 30, "862" : 25, "863" : 42, "865" : 31, "866" : 13, "869" : 22, "874" : 32, "932" : 27, "936" : 18, "949" : 28, "950" : 17, "1200" : 48, "1201" : 49, "1250" : 16, "1251" : 14, "1252" : 44, "1253" : 23, "1254" : 36, "1255" : 26, "1256" : 2, "1257" : 6, "1258" : 45, "10007" : 11, "12000" : 50, "12001" : 51, "20866" : 9, "21866" : 10, "28591" : 37, "28592" : 19,
"28593" : 33, "28594" : 3, "28595" : 8, "28596" : 0, "28597" : 20, "28598" : 24, "28599" : 34, "28603" : 4, "28604" : 7, "28605" : 38, "51949" : 29, "65000" : 47, "65001" : 46
};
var c_oAscCodePageNone = -1;
var c_oAscCodePageUtf7 = 47;//65000
var c_oAscCodePageUtf8 = 46;//65001
var c_oAscCodePageUtf16 = 48;//1200
var c_oAscCodePageUtf16BE = 49;//1201
var c_oAscCodePageUtf32 = 50;//12000
var c_oAscCodePageUtf32BE = 51;//12001
// https://support.office.com/en-us/article/Excel-specifications-and-limits-16c69c74-3d6a-4aaf-ba35-e6eb276e8eaa?ui=en-US&rs=en-US&ad=US&fromAR=1
var c_oAscMaxTooltipLength = 256;
var c_oAscMaxCellOrCommentLength = 32767;
var c_oAscMaxFormulaLength = 8192;
var locktype_None = 1; // никто не залочил данный объект
var locktype_Mine = 2; // данный объект залочен текущим пользователем
var locktype_Other = 3; // данный объект залочен другим(не текущим) пользователем
var locktype_Other2 = 4; // данный объект залочен другим(не текущим) пользователем (обновления уже пришли)
var locktype_Other3 = 5; // данный объект был залочен (обновления пришли) и снова стал залочен
var changestype_None = 0; // Ничего не происходит с выделенным элементом (проверка идет через дополнительный параметр)
var changestype_Paragraph_Content = 1; // Добавление/удаление элементов в параграф
var changestype_Paragraph_Properties = 2; // Изменение свойств параграфа
var changestype_Paragraph_AddText = 3; // Добавление текста
var changestype_Document_Content = 10; // Добавление/удаление элементов в Document или в DocumentContent
var changestype_Document_Content_Add = 11; // Добавление элемента в класс Document или в класс DocumentContent
var changestype_Document_SectPr = 12; // Изменения свойств данной секции (размер страницы, поля и ориентация)
var changestype_Document_Styles = 13; // Изменяем стили документа (добавление/удаление/модифицирование)
var changestype_Table_Properties = 20; // Любые изменения в таблице
var changestype_Table_RemoveCells = 21; // Удаление ячеек (строк или столбцов)
var changestype_Image_Properties = 23; // Изменения настроек картинки
var changestype_ContentControl_Remove = 24; // Удаление контейнера целиком
var changestype_ContentControl_Properties = 25; // Изменение свойств контейнера
var changestype_ContentControl_Add = 26; // Добавление контейнера
var changestype_HdrFtr = 30; // Изменения в колонтитуле (любые изменения)
var changestype_Remove = 40; // Удаление, через кнопку backspace (Удаление назад)
var changestype_Delete = 41; // Удаление, через кнопку delete (Удаление вперед)
var changestype_Drawing_Props = 51; // Изменение свойств фигуры
var changestype_ColorScheme = 60; // Изменение свойств фигуры
var changestype_Text_Props = 61; // Изменение свойств фигуры
var changestype_RemoveSlide = 62; // Изменение свойств фигуры
var changestype_PresentationProps = 63; // Изменение темы, цветовой схемы, размера слайда;
var changestype_Theme = 64; // Изменение темы;
var changestype_SlideSize = 65; // Изменение цветовой схемы;
var changestype_SlideBg = 66; // Изменение цветовой схемы;
var changestype_SlideTiming = 67; // Изменение цветовой схемы;
var changestype_MoveComment = 68;
var changestype_AddSp = 69;
var changestype_AddComment = 70;
var changestype_Layout = 71;
var changestype_AddShape = 72;
var changestype_AddShapes = 73;
var changestype_PresDefaultLang = 74;
var changestype_SlideHide = 75;
var changestype_2_InlineObjectMove = 1; // Передвигаем объект в заданную позцию (проверяем место, в которое пытаемся передвинуть)
var changestype_2_HdrFtr = 2; // Изменения с колонтитулом
var changestype_2_Comment = 3; // Работает с комментариями
var changestype_2_Element_and_Type = 4; // Проверяем возможно ли сделать изменение заданного типа с заданным элементом(а не с текущим)
var changestype_2_ElementsArray_and_Type = 5; // Аналогично предыдущему, только идет массив элементов
var changestype_2_AdditionalTypes = 6; // Дополнительные проверки типа 1
var changestype_2_Element_and_Type_Array = 7; // Проверяем возможно ли сделать изменения заданного типа с заданными элементами (для каждого элемента свое изменение)
var contentchanges_Add = 1;
var contentchanges_Remove = 2;
var PUNCTUATION_FLAG_BASE = 0x0001;
var PUNCTUATION_FLAG_CANT_BE_AT_BEGIN = 0x0010;
var PUNCTUATION_FLAG_CANT_BE_AT_END = 0x0020;
var PUNCTUATION_FLAG_EAST_ASIAN = 0x0100;
var PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E = 0x0002;
var PUNCTUATION_FLAG_CANT_BE_AT_END_E = 0x0004;
var g_aPunctuation = [];
g_aPunctuation[0x0021] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // !
g_aPunctuation[0x0022] = PUNCTUATION_FLAG_BASE; // "
g_aPunctuation[0x0023] = PUNCTUATION_FLAG_BASE; // #
g_aPunctuation[0x0024] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // $
g_aPunctuation[0x0025] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // %
g_aPunctuation[0x0026] = PUNCTUATION_FLAG_BASE; // &
g_aPunctuation[0x0027] = PUNCTUATION_FLAG_BASE; // '
g_aPunctuation[0x0028] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; // (
g_aPunctuation[0x0029] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // )
g_aPunctuation[0x002A] = PUNCTUATION_FLAG_BASE; // *
g_aPunctuation[0x002B] = PUNCTUATION_FLAG_BASE; // +
g_aPunctuation[0x002C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // ,
g_aPunctuation[0x002D] = PUNCTUATION_FLAG_BASE; // -
g_aPunctuation[0x002E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // .
g_aPunctuation[0x002F] = PUNCTUATION_FLAG_BASE; // /
g_aPunctuation[0x003A] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // :
g_aPunctuation[0x003B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // ;
g_aPunctuation[0x003C] = PUNCTUATION_FLAG_BASE; // <
g_aPunctuation[0x003D] = PUNCTUATION_FLAG_BASE; // =
g_aPunctuation[0x003E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // >
g_aPunctuation[0x003F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // ?
g_aPunctuation[0x0040] = PUNCTUATION_FLAG_BASE; // @
g_aPunctuation[0x005B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; // [
g_aPunctuation[0x005C] = PUNCTUATION_FLAG_BASE; // \
g_aPunctuation[0x005D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // ]
g_aPunctuation[0x005E] = PUNCTUATION_FLAG_BASE; // ^
g_aPunctuation[0x005F] = PUNCTUATION_FLAG_BASE; // _
g_aPunctuation[0x0060] = PUNCTUATION_FLAG_BASE; // `
g_aPunctuation[0x007B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; // {
g_aPunctuation[0x007C] = PUNCTUATION_FLAG_BASE; // |
g_aPunctuation[0x007D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // }
g_aPunctuation[0x007E] = PUNCTUATION_FLAG_BASE; // ~
g_aPunctuation[0x00A1] = PUNCTUATION_FLAG_BASE; // ¡
g_aPunctuation[0x00A2] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ¢
g_aPunctuation[0x00A3] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // £
g_aPunctuation[0x00A4] = PUNCTUATION_FLAG_BASE; // ¤
g_aPunctuation[0x00A5] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // ¥
g_aPunctuation[0x00A6] = PUNCTUATION_FLAG_BASE; // ¦
g_aPunctuation[0x00A7] = PUNCTUATION_FLAG_BASE; // §
g_aPunctuation[0x00A8] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ¨
g_aPunctuation[0x00A9] = PUNCTUATION_FLAG_BASE; // ©
g_aPunctuation[0x00AA] = PUNCTUATION_FLAG_BASE; // ª
g_aPunctuation[0x00AB] = PUNCTUATION_FLAG_BASE; // «
g_aPunctuation[0x00AC] = PUNCTUATION_FLAG_BASE; // ¬
g_aPunctuation[0x00AD] = PUNCTUATION_FLAG_BASE; // ­
g_aPunctuation[0x00AE] = PUNCTUATION_FLAG_BASE; // ®
g_aPunctuation[0x00AF] = PUNCTUATION_FLAG_BASE; // ¯
g_aPunctuation[0x00B0] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // °
g_aPunctuation[0x00B1] = PUNCTUATION_FLAG_BASE; // ±
g_aPunctuation[0x00B4] = PUNCTUATION_FLAG_BASE; // ´
g_aPunctuation[0x00B6] = PUNCTUATION_FLAG_BASE; // ¶
g_aPunctuation[0x00B7] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ·
g_aPunctuation[0x00B8] = PUNCTUATION_FLAG_BASE; // ¸
g_aPunctuation[0x00BA] = PUNCTUATION_FLAG_BASE; // º
g_aPunctuation[0x00BB] = PUNCTUATION_FLAG_BASE; // »
g_aPunctuation[0x00BB] = PUNCTUATION_FLAG_BASE; // »
g_aPunctuation[0x00BF] = PUNCTUATION_FLAG_BASE; // ¿
g_aPunctuation[0x2010] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2011] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2012] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2013] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2014] = PUNCTUATION_FLAG_BASE; // —
g_aPunctuation[0x2015] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ―
g_aPunctuation[0x2016] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ‖
g_aPunctuation[0x2017] = PUNCTUATION_FLAG_BASE; // ‗
g_aPunctuation[0x2018] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; //
g_aPunctuation[0x2019] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0x201A] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x201B] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x201C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // “
g_aPunctuation[0x201D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ”
g_aPunctuation[0x201E] = PUNCTUATION_FLAG_BASE; // „
g_aPunctuation[0x201F] = PUNCTUATION_FLAG_BASE; // ‟
g_aPunctuation[0x2020] = PUNCTUATION_FLAG_BASE; // †
g_aPunctuation[0x2021] = PUNCTUATION_FLAG_BASE; // ‡
g_aPunctuation[0x2022] = PUNCTUATION_FLAG_BASE; // •
g_aPunctuation[0x2023] = PUNCTUATION_FLAG_BASE; // ‣
g_aPunctuation[0x2024] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2025] = PUNCTUATION_FLAG_BASE; // ‥
g_aPunctuation[0x2026] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // …
g_aPunctuation[0x2027] = PUNCTUATION_FLAG_BASE; // ‧
g_aPunctuation[0x2030] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ‰
g_aPunctuation[0x2031] = PUNCTUATION_FLAG_BASE; // ‱
g_aPunctuation[0x2032] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0x2033] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ″
g_aPunctuation[0x2034] = PUNCTUATION_FLAG_BASE; // ‴
g_aPunctuation[0x2035] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2036] = PUNCTUATION_FLAG_BASE; // ‶
g_aPunctuation[0x2037] = PUNCTUATION_FLAG_BASE; // ‷
g_aPunctuation[0x2038] = PUNCTUATION_FLAG_BASE; // ‸
g_aPunctuation[0x2039] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x203A] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0x203B] = PUNCTUATION_FLAG_BASE; // ※
g_aPunctuation[0x203C] = PUNCTUATION_FLAG_BASE; // ‼
g_aPunctuation[0x203D] = PUNCTUATION_FLAG_BASE; // ‽
g_aPunctuation[0x203E] = PUNCTUATION_FLAG_BASE; // ‾
g_aPunctuation[0x203F] = PUNCTUATION_FLAG_BASE; // ‿
g_aPunctuation[0x2040] = PUNCTUATION_FLAG_BASE; // ⁀
g_aPunctuation[0x2041] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2042] = PUNCTUATION_FLAG_BASE; // ⁂
g_aPunctuation[0x2043] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2044] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2045] = PUNCTUATION_FLAG_BASE; // ⁅
g_aPunctuation[0x2046] = PUNCTUATION_FLAG_BASE; // ⁆
g_aPunctuation[0x2047] = PUNCTUATION_FLAG_BASE; // ⁇
g_aPunctuation[0x2048] = PUNCTUATION_FLAG_BASE; // ⁈
g_aPunctuation[0x2049] = PUNCTUATION_FLAG_BASE; // ⁉
g_aPunctuation[0x204A] = PUNCTUATION_FLAG_BASE; // ⁊
g_aPunctuation[0x204B] = PUNCTUATION_FLAG_BASE; // ⁋
g_aPunctuation[0x204C] = PUNCTUATION_FLAG_BASE; // ⁌
g_aPunctuation[0x204D] = PUNCTUATION_FLAG_BASE; // ⁍
g_aPunctuation[0x204E] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x204F] = PUNCTUATION_FLAG_BASE; // ⁏
g_aPunctuation[0x2050] = PUNCTUATION_FLAG_BASE; // ⁐
g_aPunctuation[0x2051] = PUNCTUATION_FLAG_BASE; // ⁑
g_aPunctuation[0x2052] = PUNCTUATION_FLAG_BASE; // ⁒
g_aPunctuation[0x2053] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x2054] = PUNCTUATION_FLAG_BASE; // ⁔
g_aPunctuation[0x2055] = PUNCTUATION_FLAG_BASE; // ⁕
g_aPunctuation[0x2056] = PUNCTUATION_FLAG_BASE; // ⁖
g_aPunctuation[0x2057] = PUNCTUATION_FLAG_BASE; // ⁗
g_aPunctuation[0x2058] = PUNCTUATION_FLAG_BASE; // ⁘
g_aPunctuation[0x2059] = PUNCTUATION_FLAG_BASE; // ⁙
g_aPunctuation[0x205A] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x205B] = PUNCTUATION_FLAG_BASE; // ⁛
g_aPunctuation[0x205C] = PUNCTUATION_FLAG_BASE; // ⁜
g_aPunctuation[0x205D] = PUNCTUATION_FLAG_BASE; // ⁝
g_aPunctuation[0x205E] = PUNCTUATION_FLAG_BASE; // ⁞
// Не смотря на то что следующий набор символов идет в блоке CJK Symbols and Punctuation
// Word не считает их как EastAsian script (w:lang->w:eastAsian)
g_aPunctuation[0x3001] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 、
g_aPunctuation[0x3002] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 。
g_aPunctuation[0x3003] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 〃
g_aPunctuation[0x3004] = PUNCTUATION_FLAG_BASE; // 〄
g_aPunctuation[0x3005] = PUNCTUATION_FLAG_BASE; // 々
g_aPunctuation[0x3006] = PUNCTUATION_FLAG_BASE; // 〆
g_aPunctuation[0x3007] = PUNCTUATION_FLAG_BASE; //
g_aPunctuation[0x3008] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 〈
g_aPunctuation[0x3009] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 〉
g_aPunctuation[0x300A] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 《
g_aPunctuation[0x300B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 》
g_aPunctuation[0x300C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 「
g_aPunctuation[0x300D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 」
g_aPunctuation[0x300E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 『
g_aPunctuation[0x300F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 』
g_aPunctuation[0x3010] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 【
g_aPunctuation[0x3011] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 】
g_aPunctuation[0x3012] = PUNCTUATION_FLAG_BASE; // 〒
g_aPunctuation[0x3013] = PUNCTUATION_FLAG_BASE; // 〓
g_aPunctuation[0x3014] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; //
g_aPunctuation[0x3015] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0x3016] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; //〖
g_aPunctuation[0x3017] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 〗
g_aPunctuation[0x3018] = PUNCTUATION_FLAG_BASE; // 〘
g_aPunctuation[0x3019] = PUNCTUATION_FLAG_BASE; // 〙
g_aPunctuation[0x301A] = PUNCTUATION_FLAG_BASE; // 〚
g_aPunctuation[0x301B] = PUNCTUATION_FLAG_BASE; // 〛
g_aPunctuation[0x301C] = PUNCTUATION_FLAG_BASE; // 〜
g_aPunctuation[0x301D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_END; // 〝
g_aPunctuation[0x301E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // 〞
g_aPunctuation[0x301F] = PUNCTUATION_FLAG_BASE; // 〟
g_aPunctuation[0xFF01] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF02] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0xFF03] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF04] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END; //
g_aPunctuation[0xFF05] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF06] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF07] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0xFF08] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; //
g_aPunctuation[0xFF09] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; // )
g_aPunctuation[0xFF0A] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF0B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF0C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF0D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF0E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF0F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF1A] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF1B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF1C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF1D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF1E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF1F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF20] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF3B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; //
g_aPunctuation[0xFF3C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF3D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF3E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFF3F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // _
g_aPunctuation[0xFF40] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0xFF5B] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END | PUNCTUATION_FLAG_CANT_BE_AT_END_E; //
g_aPunctuation[0xFF5C] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0xFF5D] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E; //
g_aPunctuation[0xFF5E] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; //
g_aPunctuation[0xFF5F] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ⦅
g_aPunctuation[0xFF60] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ⦆
g_aPunctuation[0xFF61] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // 。
g_aPunctuation[0xFF62] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // 「
g_aPunctuation[0xFF63] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // 」
g_aPunctuation[0xFF64] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // 、
g_aPunctuation[0xFF65] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ・
g_aPunctuation[0xFFE0] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_BEGIN; // ¢
g_aPunctuation[0xFFE1] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END; // £
g_aPunctuation[0xFFE2] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ¬
g_aPunctuation[0xFFE3] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //  ̄
g_aPunctuation[0xFFE4] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ¦
g_aPunctuation[0xFFE5] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN | PUNCTUATION_FLAG_CANT_BE_AT_END; // ¥
g_aPunctuation[0xFFE6] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ₩
g_aPunctuation[0xFFE8] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; //
g_aPunctuation[0xFFE9] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ←
g_aPunctuation[0xFFEA] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ↑
g_aPunctuation[0xFFEB] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // →
g_aPunctuation[0xFFEC] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ↓
g_aPunctuation[0xFFED] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ■
g_aPunctuation[0xFFEE] = PUNCTUATION_FLAG_BASE | PUNCTUATION_FLAG_EAST_ASIAN; // ○
var offlineMode = '_offline_';
var chartMode = '_chart_';
var c_oSpecialPasteProps = {
paste: 0,
pasteOnlyFormula: 1,
formulaNumberFormat: 2,
formulaAllFormatting: 3,
formulaWithoutBorders: 4,
formulaColumnWidth: 5,
mergeConditionalFormating: 6,
pasteOnlyValues: 7,
valueNumberFormat: 8,
valueAllFormating: 9,
pasteOnlyFormating: 10,
transpose: 11,
link: 12,
picture: 13,
linkedPicture: 14,
sourceformatting: 15,
destinationFormatting: 16,
mergeFormatting: 17,
uniteList: 18,
doNotUniteList: 19,
insertAsNestedTable: 20,
uniteIntoTable: 21,
insertAsNewRows: 22,
keepTextOnly: 23,
overwriteCells : 24
};
/** @enum {number} */
var c_oAscNumberingFormat = {
None : 0x0000,
Bullet : 0x1001,
Decimal : 0x2002,
LowerRoman : 0x2003,
UpperRoman : 0x2004,
LowerLetter : 0x2005,
UpperLetter : 0x2006,
DecimalZero : 0x2007,
BulletFlag : 0x1000,
NumberedFlag : 0x2000
};
/** enum {number} */
var c_oAscNumberingSuff = {
Tab : 0x01,
Space : 0x02,
None : 0x03
};
var c_oAscNumberingLvlTextType = {
Text : 0x00,
Num : 0x01
};
var c_oAscSdtAppearance = {
Frame : 1,
Hidden : 2
};
//------------------------------------------------------------export--------------------------------------------------
var prot;
window['Asc'] = window['Asc'] || {};
window['Asc']['FONT_THUMBNAIL_HEIGHT'] = FONT_THUMBNAIL_HEIGHT;
window['Asc']['c_oAscMaxColumnWidth'] = window['Asc'].c_oAscMaxColumnWidth = c_oAscMaxColumnWidth;
window['Asc']['c_oAscMaxRowHeight'] = window['Asc'].c_oAscMaxRowHeight = c_oAscMaxRowHeight;
window['Asc']['c_nMaxConversionTime'] = window['Asc'].c_nMaxConversionTime = c_nMaxConversionTime;
window['Asc']['c_nMaxDownloadTitleLen'] = window['Asc'].c_nMaxDownloadTitleLen = c_nMaxDownloadTitleLen;
window['Asc']['c_nVersionNoBase64'] = window['Asc'].c_nVersionNoBase64 = c_nVersionNoBase64;
window['Asc']['c_dMaxParaRunContentLength'] = window['Asc'].c_dMaxParaRunContentLength = c_dMaxParaRunContentLength;
window['Asc']['c_rUneditableTypes'] = window['Asc'].c_rUneditableTypes = c_rUneditableTypes;
window['Asc']['c_oAscFileType'] = window['Asc'].c_oAscFileType = c_oAscFileType;
prot = c_oAscFileType;
prot['UNKNOWN'] = prot.UNKNOWN;
prot['PDF'] = prot.PDF;
prot['PDFA'] = prot.PDFA;
prot['HTML'] = prot.HTML;
prot['DOCX'] = prot.DOCX;
prot['DOC'] = prot.DOC;
prot['ODT'] = prot.ODT;
prot['RTF'] = prot.RTF;
prot['TXT'] = prot.TXT;
prot['MHT'] = prot.MHT;
prot['EPUB'] = prot.EPUB;
prot['FB2'] = prot.FB2;
prot['MOBI'] = prot.MOBI;
prot['DOCY'] = prot.DOCY;
prot['JSON'] = prot.JSON;
prot['XLSX'] = prot.XLSX;
prot['XLS'] = prot.XLS;
prot['ODS'] = prot.ODS;
prot['CSV'] = prot.CSV;
prot['XLSY'] = prot.XLSY;
prot['PPTX'] = prot.PPTX;
prot['PPT'] = prot.PPT;
prot['ODP'] = prot.ODP;
window['Asc']['c_oAscError'] = window['Asc'].c_oAscError = c_oAscError;
prot = c_oAscError;
prot['Level'] = prot.Level;
prot['ID'] = prot.ID;
prot = c_oAscError.Level;
prot['Critical'] = prot.Critical;
prot['NoCritical'] = prot.NoCritical;
prot = c_oAscError.ID;
prot['ServerSaveComplete'] = prot.ServerSaveComplete;
prot['ConvertationProgress'] = prot.ConvertationProgress;
prot['DownloadProgress'] = prot.DownloadProgress;
prot['No'] = prot.No;
prot['Unknown'] = prot.Unknown;
prot['ConvertationTimeout'] = prot.ConvertationTimeout;
prot['DownloadError'] = prot.DownloadError;
prot['UnexpectedGuid'] = prot.UnexpectedGuid;
prot['Database'] = prot.Database;
prot['FileRequest'] = prot.FileRequest;
prot['FileVKey'] = prot.FileVKey;
prot['UplImageSize'] = prot.UplImageSize;
prot['UplImageExt'] = prot.UplImageExt;
prot['UplImageFileCount'] = prot.UplImageFileCount;
prot['NoSupportClipdoard'] = prot.NoSupportClipdoard;
prot['UplImageUrl'] = prot.UplImageUrl;
prot['MaxDataPointsError'] = prot.MaxDataPointsError;
prot['StockChartError'] = prot.StockChartError;
prot['CoAuthoringDisconnect'] = prot.CoAuthoringDisconnect;
prot['ConvertationPassword'] = prot.ConvertationPassword;
prot['VKeyEncrypt'] = prot.VKeyEncrypt;
prot['KeyExpire'] = prot.KeyExpire;
prot['UserCountExceed'] = prot.UserCountExceed;
prot['AccessDeny'] = prot.AccessDeny;
prot['LoadingScriptError'] = prot.LoadingScriptError;
prot['SplitCellMaxRows'] = prot.SplitCellMaxRows;
prot['SplitCellMaxCols'] = prot.SplitCellMaxCols;
prot['SplitCellRowsDivider'] = prot.SplitCellRowsDivider;
prot['MobileUnexpectedCharCount'] = prot.MobileUnexpectedCharCount;
prot['MailMergeLoadFile'] = prot.MailMergeLoadFile;
prot['MailMergeSaveFile'] = prot.MailMergeSaveFile;
prot['AutoFilterDataRangeError'] = prot.AutoFilterDataRangeError;
prot['AutoFilterChangeFormatTableError'] = prot.AutoFilterChangeFormatTableError;
prot['AutoFilterChangeError'] = prot.AutoFilterChangeError;
prot['AutoFilterMoveToHiddenRangeError'] = prot.AutoFilterMoveToHiddenRangeError;
prot['LockedAllError'] = prot.LockedAllError;
prot['LockedWorksheetRename'] = prot.LockedWorksheetRename;
prot['FTChangeTableRangeError'] = prot.FTChangeTableRangeError;
prot['FTRangeIncludedOtherTables'] = prot.FTRangeIncludedOtherTables;
prot['PasteMaxRangeError'] = prot.PasteMaxRangeError;
prot['PastInMergeAreaError'] = prot.PastInMergeAreaError;
prot['CopyMultiselectAreaError'] = prot.CopyMultiselectAreaError;
prot['DataRangeError'] = prot.DataRangeError;
prot['CannotMoveRange'] = prot.CannotMoveRange;
prot['MaxDataSeriesError'] = prot.MaxDataSeriesError;
prot['CannotFillRange'] = prot.CannotFillRange;
prot['ConvertationOpenError'] = prot.ConvertationOpenError;
prot['ConvertationSaveError'] = prot.ConvertationSaveError;
prot['UserDrop'] = prot.UserDrop;
prot['Warning'] = prot.Warning;
prot['PrintMaxPagesCount'] = prot.PrintMaxPagesCount;
prot['SessionAbsolute'] = prot.SessionAbsolute;
prot['SessionIdle'] = prot.SessionIdle;
prot['SessionToken'] = prot.SessionToken;
prot['FrmlWrongCountParentheses'] = prot.FrmlWrongCountParentheses;
prot['FrmlWrongOperator'] = prot.FrmlWrongOperator;
prot['FrmlWrongMaxArgument'] = prot.FrmlWrongMaxArgument;
prot['FrmlWrongCountArgument'] = prot.FrmlWrongCountArgument;
prot['FrmlWrongFunctionName'] = prot.FrmlWrongFunctionName;
prot['FrmlAnotherParsingError'] = prot.FrmlAnotherParsingError;
prot['FrmlWrongArgumentRange'] = prot.FrmlWrongArgumentRange;
prot['FrmlOperandExpected'] = prot.FrmlOperandExpected;
prot['FrmlParenthesesCorrectCount'] = prot.FrmlParenthesesCorrectCount;
prot['FrmlWrongReferences'] = prot.FrmlWrongReferences;
prot['InvalidReferenceOrName'] = prot.InvalidReferenceOrName;
prot['LockCreateDefName'] = prot.LockCreateDefName;
prot['LockedCellPivot'] = prot.LockedCellPivot;
prot['ForceSaveButton'] = prot.ForceSaveButton;
prot['ForceSaveTimeout'] = prot.ForceSaveTimeout;
prot['OpenWarning'] = prot.OpenWarning;
prot['DataEncrypted'] = prot.DataEncrypted;
window['Asc']['c_oAscAsyncAction'] = window['Asc'].c_oAscAsyncAction = c_oAscAsyncAction;
prot = c_oAscAsyncAction;
prot['Open'] = prot.Open;
prot['Save'] = prot.Save;
prot['LoadDocumentFonts'] = prot.LoadDocumentFonts;
prot['LoadDocumentImages'] = prot.LoadDocumentImages;
prot['LoadFont'] = prot.LoadFont;
prot['LoadImage'] = prot.LoadImage;
prot['DownloadAs'] = prot.DownloadAs;
prot['Print'] = prot.Print;
prot['UploadImage'] = prot.UploadImage;
prot['ApplyChanges'] = prot.ApplyChanges;
prot['SlowOperation'] = prot.SlowOperation;
prot['LoadTheme'] = prot.LoadTheme;
prot['MailMergeLoadFile'] = prot.MailMergeLoadFile;
prot['DownloadMerge'] = prot.DownloadMerge;
prot['SendMailMerge'] = prot.SendMailMerge;
prot['ForceSaveButton'] = prot.ForceSaveButton;
prot['ForceSaveTimeout'] = prot.ForceSaveTimeout;
window['Asc']['c_oAscAdvancedOptionsID'] = window['Asc'].c_oAscAdvancedOptionsID = c_oAscAdvancedOptionsID;
prot = c_oAscAdvancedOptionsID;
prot['CSV'] = prot.CSV;
prot['TXT'] = prot.TXT;
prot['DRM'] = prot.DRM;
window['Asc']['c_oAscFontRenderingModeType'] = window['Asc'].c_oAscFontRenderingModeType = c_oAscFontRenderingModeType;
prot = c_oAscFontRenderingModeType;
prot['noHinting'] = prot.noHinting;
prot['hinting'] = prot.hinting;
prot['hintingAndSubpixeling'] = prot.hintingAndSubpixeling;
window['Asc']['c_oAscAsyncActionType'] = window['Asc'].c_oAscAsyncActionType = c_oAscAsyncActionType;
prot = c_oAscAsyncActionType;
prot['Information'] = prot.Information;
prot['BlockInteraction'] = prot.BlockInteraction;
window['Asc']['c_oAscNumFormatType'] = window['Asc'].c_oAscNumFormatType = c_oAscNumFormatType;
prot = c_oAscNumFormatType;
prot['None'] = prot.None;
prot['General'] = prot.General;
prot['Number'] = prot.Number;
prot['Scientific'] = prot.Scientific;
prot['Accounting'] = prot.Accounting;
prot['Currency'] = prot.Currency;
prot['Date'] = prot.Date;
prot['Time'] = prot.Time;
prot['Percent'] = prot.Percent;
prot['Fraction'] = prot.Fraction;
prot['Text'] = prot.Text;
prot['Custom'] = prot.Custom;
window['Asc']['c_oAscDrawingLayerType'] = c_oAscDrawingLayerType;
prot = c_oAscDrawingLayerType;
prot['BringToFront'] = prot.BringToFront;
prot['SendToBack'] = prot.SendToBack;
prot['BringForward'] = prot.BringForward;
prot['SendBackward'] = prot.SendBackward;
window['Asc']['c_oAscTypeSelectElement'] = window['Asc'].c_oAscTypeSelectElement = c_oAscTypeSelectElement;
prot = c_oAscTypeSelectElement;
prot['Paragraph'] = prot.Paragraph;
prot['Table'] = prot.Table;
prot['Image'] = prot.Image;
prot['Header'] = prot.Header;
prot['Hyperlink'] = prot.Hyperlink;
prot['SpellCheck'] = prot.SpellCheck;
prot['Shape'] = prot.Shape;
prot['Slide'] = prot.Slide;
prot['Chart'] = prot.Chart;
prot['Math'] = prot.Math;
prot['MailMerge'] = prot.MailMerge;
window['Asc']['linerule_AtLeast'] = window['Asc'].linerule_AtLeast = linerule_AtLeast;
window['Asc']['linerule_Auto'] = window['Asc'].linerule_Auto = linerule_Auto;
window['Asc']['linerule_Exact'] = window['Asc'].linerule_Exact = linerule_Exact;
window['Asc']['c_oAscShdClear'] = window['Asc'].c_oAscShdClear = c_oAscShdClear;
window['Asc']['c_oAscShdNil'] = window['Asc'].c_oAscShdNil = c_oAscShdNil;
window['Asc']['c_oAscDropCap'] = window['Asc'].c_oAscDropCap = c_oAscDropCap;
prot = c_oAscDropCap;
prot['None'] = prot.None;
prot['Drop'] = prot.Drop;
prot['Margin'] = prot.Margin;
window['Asc']['c_oAscChartTitleShowSettings'] = window['Asc'].c_oAscChartTitleShowSettings = c_oAscChartTitleShowSettings;
prot = c_oAscChartTitleShowSettings;
prot['none'] = prot.none;
prot['overlay'] = prot.overlay;
prot['noOverlay'] = prot.noOverlay;
window['Asc']['c_oAscChartHorAxisLabelShowSettings'] = window['Asc'].c_oAscChartHorAxisLabelShowSettings = c_oAscChartHorAxisLabelShowSettings;
prot = c_oAscChartHorAxisLabelShowSettings;
prot['none'] = prot.none;
prot['noOverlay'] = prot.noOverlay;
window['Asc']['c_oAscChartVertAxisLabelShowSettings'] = window['Asc'].c_oAscChartVertAxisLabelShowSettings = c_oAscChartVertAxisLabelShowSettings;
prot = c_oAscChartVertAxisLabelShowSettings;
prot['none'] = prot.none;
prot['rotated'] = prot.rotated;
prot['vertical'] = prot.vertical;
prot['horizontal'] = prot.horizontal;
window['Asc']['c_oAscChartLegendShowSettings'] = window['Asc'].c_oAscChartLegendShowSettings = c_oAscChartLegendShowSettings;
prot = c_oAscChartLegendShowSettings;
prot['none'] = prot.none;
prot['left'] = prot.left;
prot['top'] = prot.top;
prot['right'] = prot.right;
prot['bottom'] = prot.bottom;
prot['leftOverlay'] = prot.leftOverlay;
prot['rightOverlay'] = prot.rightOverlay;
prot['layout'] = prot.layout;
prot['topRight'] = prot.topRight;
window['Asc']['c_oAscChartDataLabelsPos'] = window['Asc'].c_oAscChartDataLabelsPos = c_oAscChartDataLabelsPos;
prot = c_oAscChartDataLabelsPos;
prot['none'] = prot.none;
prot['b'] = prot.b;
prot['bestFit'] = prot.bestFit;
prot['ctr'] = prot.ctr;
prot['inBase'] = prot.inBase;
prot['inEnd'] = prot.inEnd;
prot['l'] = prot.l;
prot['outEnd'] = prot.outEnd;
prot['r'] = prot.r;
prot['t'] = prot.t;
window['Asc']['c_oAscGridLinesSettings'] = window['Asc'].c_oAscGridLinesSettings = c_oAscGridLinesSettings;
prot = c_oAscGridLinesSettings;
prot['none'] = prot.none;
prot['major'] = prot.major;
prot['minor'] = prot.minor;
prot['majorMinor'] = prot.majorMinor;
window['Asc']['c_oAscChartTypeSettings'] = window['Asc'].c_oAscChartTypeSettings = c_oAscChartTypeSettings;
prot = c_oAscChartTypeSettings;
prot['barNormal'] = prot.barNormal;
prot['barStacked'] = prot.barStacked;
prot['barStackedPer'] = prot.barStackedPer;
prot['barNormal3d'] = prot.barNormal3d;
prot['barStacked3d'] = prot.barStacked3d;
prot['barStackedPer3d'] = prot.barStackedPer3d;
prot['barNormal3dPerspective'] = prot.barNormal3dPerspective;
prot['lineNormal'] = prot.lineNormal;
prot['lineStacked'] = prot.lineStacked;
prot['lineStackedPer'] = prot.lineStackedPer;
prot['lineNormalMarker'] = prot.lineNormalMarker;
prot['lineStackedMarker'] = prot.lineStackedMarker;
prot['lineStackedPerMarker'] = prot.lineStackedPerMarker;
prot['line3d'] = prot.line3d;
prot['pie'] = prot.pie;
prot['pie3d'] = prot.pie3d;
prot['hBarNormal'] = prot.hBarNormal;
prot['hBarStacked'] = prot.hBarStacked;
prot['hBarStackedPer'] = prot.hBarStackedPer;
prot['hBarNormal3d'] = prot.hBarNormal3d;
prot['hBarStacked3d'] = prot.hBarStacked3d;
prot['hBarStackedPer3d'] = prot.hBarStackedPer3d;
prot['areaNormal'] = prot.areaNormal;
prot['areaStacked'] = prot.areaStacked;
prot['areaStackedPer'] = prot.areaStackedPer;
prot['doughnut'] = prot.doughnut;
prot['stock'] = prot.stock;
prot['scatter'] = prot.scatter;
prot['scatterLine'] = prot.scatterLine;
prot['scatterLineMarker'] = prot.scatterLineMarker;
prot['scatterMarker'] = prot.scatterMarker;
prot['scatterNone'] = prot.scatterNone;
prot['scatterSmooth'] = prot.scatterSmooth;
prot['scatterSmoothMarker'] = prot.scatterSmoothMarker;
prot['unknown'] = prot.unknown;
window['Asc']['c_oAscValAxisRule'] = window['Asc'].c_oAscValAxisRule = c_oAscValAxisRule;
prot = c_oAscValAxisRule;
prot['auto'] = prot.auto;
prot['fixed'] = prot.fixed;
window['Asc']['c_oAscValAxUnits'] = window['Asc'].c_oAscValAxUnits = c_oAscValAxUnits;
prot = c_oAscValAxUnits;
prot['BILLIONS'] = prot.BILLIONS;
prot['HUNDRED_MILLIONS'] = prot.HUNDRED_MILLIONS;
prot['HUNDREDS'] = prot.HUNDREDS;
prot['HUNDRED_THOUSANDS'] = prot.HUNDRED_THOUSANDS;
prot['MILLIONS'] = prot.MILLIONS;
prot['TEN_MILLIONS'] = prot.TEN_MILLIONS;
prot['TEN_THOUSANDS'] = prot.TEN_THOUSANDS;
prot['TRILLIONS'] = prot.TRILLIONS;
prot['CUSTOM'] = prot.CUSTOM;
prot['THOUSANDS'] = prot.THOUSANDS;
window['Asc']['c_oAscTickMark'] = window['Asc'].c_oAscTickMark = c_oAscTickMark;
prot = c_oAscTickMark;
prot['TICK_MARK_CROSS'] = prot.TICK_MARK_CROSS;
prot['TICK_MARK_IN'] = prot.TICK_MARK_IN;
prot['TICK_MARK_NONE'] = prot.TICK_MARK_NONE;
prot['TICK_MARK_OUT'] = prot.TICK_MARK_OUT;
window['Asc']['c_oAscTickLabelsPos'] = window['Asc'].c_oAscTickLabelsPos = c_oAscTickLabelsPos;
prot = c_oAscTickLabelsPos;
prot['TICK_LABEL_POSITION_HIGH'] = prot.TICK_LABEL_POSITION_HIGH;
prot['TICK_LABEL_POSITION_LOW'] = prot.TICK_LABEL_POSITION_LOW;
prot['TICK_LABEL_POSITION_NEXT_TO'] = prot.TICK_LABEL_POSITION_NEXT_TO;
prot['TICK_LABEL_POSITION_NONE'] = prot.TICK_LABEL_POSITION_NONE;
window['Asc']['c_oAscCrossesRule'] = window['Asc'].c_oAscCrossesRule = c_oAscCrossesRule;
prot = c_oAscCrossesRule;
prot['auto'] = prot.auto;
prot['maxValue'] = prot.maxValue;
prot['value'] = prot.value;
prot['minValue'] = prot.minValue;
window['Asc']['c_oAscBetweenLabelsRule'] = window['Asc'].c_oAscBetweenLabelsRule = c_oAscBetweenLabelsRule;
prot = c_oAscBetweenLabelsRule;
prot['auto'] = prot.auto;
prot['manual'] = prot.manual;
window['Asc']['c_oAscLabelsPosition'] = window['Asc'].c_oAscLabelsPosition = c_oAscLabelsPosition;
prot = c_oAscLabelsPosition;
prot['byDivisions'] = prot.byDivisions;
prot['betweenDivisions'] = prot.betweenDivisions;
window['Asc']['c_oAscAxisType'] = window['Asc'].c_oAscAxisType = c_oAscAxisType;
prot = c_oAscAxisType;
prot['auto'] = prot.auto;
prot['date'] = prot.date;
prot['text'] = prot.text;
prot['cat'] = prot.cat;
prot['val'] = prot.val;
window['Asc']['c_oAscHAnchor'] = window['Asc'].c_oAscHAnchor = c_oAscHAnchor;
prot = c_oAscHAnchor;
prot['Margin'] = prot.Margin;
prot['Page'] = prot.Page;
prot['Text'] = prot.Text;
prot['PageInternal'] = prot.PageInternal;
window['Asc']['c_oAscXAlign'] = window['Asc'].c_oAscXAlign = c_oAscXAlign;
prot = c_oAscXAlign;
prot['Center'] = prot.Center;
prot['Inside'] = prot.Inside;
prot['Left'] = prot.Left;
prot['Outside'] = prot.Outside;
prot['Right'] = prot.Right;
window['Asc']['c_oAscYAlign'] = window['Asc'].c_oAscYAlign = c_oAscYAlign;
prot = c_oAscYAlign;
prot['Bottom'] = prot.Bottom;
prot['Center'] = prot.Center;
prot['Inline'] = prot.Inline;
prot['Inside'] = prot.Inside;
prot['Outside'] = prot.Outside;
prot['Top'] = prot.Top;
window['Asc']['c_oAscVAnchor'] = window['Asc'].c_oAscVAnchor = c_oAscVAnchor;
prot = c_oAscVAnchor;
prot['Margin'] = prot.Margin;
prot['Page'] = prot.Page;
prot['Text'] = prot.Text;
window['Asc']['c_oAscRelativeFromH'] = window['Asc'].c_oAscRelativeFromH = c_oAscRelativeFromH;
prot = c_oAscRelativeFromH;
prot['Character'] = prot.Character;
prot['Column'] = prot.Column;
prot['InsideMargin'] = prot.InsideMargin;
prot['LeftMargin'] = prot.LeftMargin;
prot['Margin'] = prot.Margin;
prot['OutsideMargin'] = prot.OutsideMargin;
prot['Page'] = prot.Page;
prot['RightMargin'] = prot.RightMargin;
window['Asc']['c_oAscRelativeFromV'] = window['Asc'].c_oAscRelativeFromV = c_oAscRelativeFromV;
prot = c_oAscRelativeFromV;
prot['BottomMargin'] = prot.BottomMargin;
prot['InsideMargin'] = prot.InsideMargin;
prot['Line'] = prot.Line;
prot['Margin'] = prot.Margin;
prot['OutsideMargin'] = prot.OutsideMargin;
prot['Page'] = prot.Page;
prot['Paragraph'] = prot.Paragraph;
prot['TopMargin'] = prot.TopMargin;
window['Asc']['c_oAscBorderStyles'] = window['AscCommon'].c_oAscBorderStyles = c_oAscBorderStyles;
prot = c_oAscBorderStyles;
prot['None'] = prot.None;
prot['Double'] = prot.Double;
prot['Hair'] = prot.Hair;
prot['DashDotDot'] = prot.DashDotDot;
prot['DashDot'] = prot.DashDot;
prot['Dotted'] = prot.Dotted;
prot['Dashed'] = prot.Dashed;
prot['Thin'] = prot.Thin;
prot['MediumDashDotDot'] = prot.MediumDashDotDot;
prot['SlantDashDot'] = prot.SlantDashDot;
prot['MediumDashDot'] = prot.MediumDashDot;
prot['MediumDashed'] = prot.MediumDashed;
prot['Medium'] = prot.Medium;
prot['Thick'] = prot.Thick;
window['Asc']['c_oAscPageOrientation'] = window['Asc'].c_oAscPageOrientation = c_oAscPageOrientation;
prot = c_oAscPageOrientation;
prot['PagePortrait'] = prot.PagePortrait;
prot['PageLandscape'] = prot.PageLandscape;
window['Asc']['c_oAscColor'] = window['Asc'].c_oAscColor = c_oAscColor;
prot = c_oAscColor;
prot['COLOR_TYPE_NONE'] = prot.COLOR_TYPE_NONE;
prot['COLOR_TYPE_SRGB'] = prot.COLOR_TYPE_SRGB;
prot['COLOR_TYPE_PRST'] = prot.COLOR_TYPE_PRST;
prot['COLOR_TYPE_SCHEME'] = prot.COLOR_TYPE_SCHEME;
prot['COLOR_TYPE_SYS'] = prot.COLOR_TYPE_SYS;
window['Asc']['c_oAscFill'] = window['Asc'].c_oAscFill = c_oAscFill;
prot = c_oAscFill;
prot['FILL_TYPE_NONE'] = prot.FILL_TYPE_NONE;
prot['FILL_TYPE_BLIP'] = prot.FILL_TYPE_BLIP;
prot['FILL_TYPE_NOFILL'] = prot.FILL_TYPE_NOFILL;
prot['FILL_TYPE_SOLID'] = prot.FILL_TYPE_SOLID;
prot['FILL_TYPE_GRAD'] = prot.FILL_TYPE_GRAD;
prot['FILL_TYPE_PATT'] = prot.FILL_TYPE_PATT;
prot['FILL_TYPE_GRP'] = prot.FILL_TYPE_GRP;
window['Asc']['c_oAscFillGradType'] = window['Asc'].c_oAscFillGradType = c_oAscFillGradType;
prot = c_oAscFillGradType;
prot['GRAD_LINEAR'] = prot.GRAD_LINEAR;
prot['GRAD_PATH'] = prot.GRAD_PATH;
window['Asc']['c_oAscFillBlipType'] = window['Asc'].c_oAscFillBlipType = c_oAscFillBlipType;
prot = c_oAscFillBlipType;
prot['STRETCH'] = prot.STRETCH;
prot['TILE'] = prot.TILE;
window['Asc']['c_oAscStrokeType'] = window['Asc'].c_oAscStrokeType = c_oAscStrokeType;
prot = c_oAscStrokeType;
prot['STROKE_NONE'] = prot.STROKE_NONE;
prot['STROKE_COLOR'] = prot.STROKE_COLOR;
window['Asc']['c_oAscVAlign'] = window['Asc'].c_oAscVAlign = c_oAscVAlign;
prot = c_oAscVAlign;
prot['Bottom'] = prot.Bottom;
prot['Center'] = prot.Center;
prot['Dist'] = prot.Dist;
prot['Just'] = prot.Just;
prot['Top'] = prot.Top;
window['Asc']['c_oAscVertDrawingText'] = c_oAscVertDrawingText;
prot = c_oAscVertDrawingText;
prot['normal'] = prot.normal;
prot['vert'] = prot.vert;
prot['vert270'] = prot.vert270;
window['Asc']['c_oAscLineJoinType'] = c_oAscLineJoinType;
prot = c_oAscLineJoinType;
prot['Round'] = prot.Round;
prot['Bevel'] = prot.Bevel;
prot['Miter'] = prot.Miter;
window['Asc']['c_oAscLineCapType'] = c_oAscLineCapType;
prot = c_oAscLineCapType;
prot['Flat'] = prot.Flat;
prot['Round'] = prot.Round;
prot['Square'] = prot.Square;
window['Asc']['c_oAscLineBeginType'] = c_oAscLineBeginType;
prot = c_oAscLineBeginType;
prot['None'] = prot.None;
prot['Arrow'] = prot.Arrow;
prot['Diamond'] = prot.Diamond;
prot['Oval'] = prot.Oval;
prot['Stealth'] = prot.Stealth;
prot['Triangle'] = prot.Triangle;
window['Asc']['c_oAscLineBeginSize'] = c_oAscLineBeginSize;
prot = c_oAscLineBeginSize;
prot['small_small'] = prot.small_small;
prot['small_mid'] = prot.small_mid;
prot['small_large'] = prot.small_large;
prot['mid_small'] = prot.mid_small;
prot['mid_mid'] = prot.mid_mid;
prot['mid_large'] = prot.mid_large;
prot['large_small'] = prot.large_small;
prot['large_mid'] = prot.large_mid;
prot['large_large'] = prot.large_large;
window['Asc']['c_oAscCellTextDirection'] = window['Asc'].c_oAscCellTextDirection = c_oAscCellTextDirection;
prot = c_oAscCellTextDirection;
prot['LRTB'] = prot.LRTB;
prot['TBRL'] = prot.TBRL;
prot['BTLR'] = prot.BTLR;
window['Asc']['c_oAscDocumentUnits'] = window['Asc'].c_oAscDocumentUnits = c_oAscDocumentUnits;
prot = c_oAscDocumentUnits;
prot['Millimeter'] = prot.Millimeter;
prot['Inch'] = prot.Inch;
prot['Point'] = prot.Point;
window['Asc']['c_oAscMaxTooltipLength'] = window['Asc'].c_oAscMaxTooltipLength = c_oAscMaxTooltipLength;
window['Asc']['c_oAscMaxCellOrCommentLength'] = window['Asc'].c_oAscMaxCellOrCommentLength = c_oAscMaxCellOrCommentLength;
window['Asc']['c_oAscSelectionType'] = window['Asc'].c_oAscSelectionType = c_oAscSelectionType;
prot = c_oAscSelectionType;
prot['RangeCells'] = prot.RangeCells;
prot['RangeCol'] = prot.RangeCol;
prot['RangeRow'] = prot.RangeRow;
prot['RangeMax'] = prot.RangeMax;
prot['RangeImage'] = prot.RangeImage;
prot['RangeChart'] = prot.RangeChart;
prot['RangeShape'] = prot.RangeShape;
prot['RangeShapeText'] = prot.RangeShapeText;
prot['RangeChartText'] = prot.RangeChartText;
prot['RangeFrozen'] = prot.RangeFrozen;
window['Asc']['c_oAscInsertOptions'] = window['Asc'].c_oAscInsertOptions = c_oAscInsertOptions;
prot = c_oAscInsertOptions;
prot['InsertCellsAndShiftRight'] = prot.InsertCellsAndShiftRight;
prot['InsertCellsAndShiftDown'] = prot.InsertCellsAndShiftDown;
prot['InsertColumns'] = prot.InsertColumns;
prot['InsertRows'] = prot.InsertRows;
prot['InsertTableRowAbove'] = prot.InsertTableRowAbove;
prot['InsertTableRowBelow'] = prot.InsertTableRowBelow;
prot['InsertTableColLeft'] = prot.InsertTableColLeft;
prot['InsertTableColRight'] = prot.InsertTableColRight;
window['Asc']['c_oAscDeleteOptions'] = window['Asc'].c_oAscDeleteOptions = c_oAscDeleteOptions;
prot = c_oAscDeleteOptions;
prot['DeleteCellsAndShiftLeft'] = prot.DeleteCellsAndShiftLeft;
prot['DeleteCellsAndShiftTop'] = prot.DeleteCellsAndShiftTop;
prot['DeleteColumns'] = prot.DeleteColumns;
prot['DeleteRows'] = prot.DeleteRows;
prot['DeleteTable'] = prot.DeleteTable;
window['Asc']['c_oDashType'] = window['Asc'].c_oDashType = c_oDashType;
prot = c_oDashType;
prot['dash'] = prot.dash;
prot['dashDot'] = prot.dashDot;
prot['dot'] = prot.dot;
prot['lgDash'] = prot.lgDash;
prot['lgDashDot'] = prot.lgDashDot;
prot['lgDashDotDot'] = prot.lgDashDotDot;
prot['solid'] = prot.solid;
prot['sysDash'] = prot.sysDash;
prot['sysDashDot'] = prot.sysDashDot;
prot['sysDashDotDot'] = prot.sysDashDotDot;
prot['sysDot'] = prot.sysDot;
window['Asc']['c_oAscMathInterfaceType'] = window['Asc'].c_oAscMathInterfaceType = c_oAscMathInterfaceType;
prot = c_oAscMathInterfaceType;
prot['Common'] = prot.Common;
prot['Fraction'] = prot.Fraction;
prot['Script'] = prot.Script;
prot['Radical'] = prot.Radical;
prot['LargeOperator'] = prot.LargeOperator;
prot['Delimiter'] = prot.Delimiter;
prot['Function'] = prot.Function;
prot['Accent'] = prot.Accent;
prot['BorderBox'] = prot.BorderBox;
prot['Bar'] = prot.Bar;
prot['Box'] = prot.Box;
prot['Limit'] = prot.Limit;
prot['GroupChar'] = prot.GroupChar;
prot['Matrix'] = prot.Matrix;
prot['EqArray'] = prot.EqArray;
prot['Phantom'] = prot.Phantom;
prot = window['Asc']['c_oAscMathInterfaceBarPos'] = window['Asc'].c_oAscMathInterfaceBarPos = c_oAscMathInterfaceBarPos;
prot['Top'] = c_oAscMathInterfaceBarPos.Top;
prot['Bottom'] = c_oAscMathInterfaceBarPos.Bottom;
prot = window['Asc']['c_oAscMathInterfaceScript'] = window['Asc'].c_oAscMathInterfaceScript = c_oAscMathInterfaceScript;
prot['None'] = c_oAscMathInterfaceScript.None;
prot['Sup'] = c_oAscMathInterfaceScript.Sup;
prot['Sub'] = c_oAscMathInterfaceScript.Sub;
prot['SubSup'] = c_oAscMathInterfaceScript.SubSup;
prot['PreSubSup'] = c_oAscMathInterfaceScript.PreSubSup;
prot = window['Asc']['c_oAscMathInterfaceFraction'] = window['Asc'].c_oAscMathInterfaceFraction = c_oAscMathInterfaceFraction;
prot['None'] = c_oAscMathInterfaceFraction.Bar;
prot['Skewed'] = c_oAscMathInterfaceFraction.Skewed;
prot['Linear'] = c_oAscMathInterfaceFraction.Linear;
prot['NoBar'] = c_oAscMathInterfaceFraction.NoBar;
prot = window['Asc']['c_oAscMathInterfaceLimitPos'] = window['Asc'].c_oAscMathInterfaceLimitPos = c_oAscMathInterfaceLimitPos;
prot['None'] = c_oAscMathInterfaceLimitPos.None;
prot['Top'] = c_oAscMathInterfaceLimitPos.Top;
prot['Bottom'] = c_oAscMathInterfaceLimitPos.Bottom;
prot = window['Asc']['c_oAscMathInterfaceMatrixMatrixAlign'] = window['Asc'].c_oAscMathInterfaceMatrixMatrixAlign = c_oAscMathInterfaceMatrixMatrixAlign;
prot['Top'] = c_oAscMathInterfaceMatrixMatrixAlign.Top;
prot['Center'] = c_oAscMathInterfaceMatrixMatrixAlign.Center;
prot['Bottom'] = c_oAscMathInterfaceMatrixMatrixAlign.Bottom;
prot = window['Asc']['c_oAscMathInterfaceMatrixColumnAlign'] = window['Asc'].c_oAscMathInterfaceMatrixColumnAlign = c_oAscMathInterfaceMatrixColumnAlign;
prot['Left'] = c_oAscMathInterfaceMatrixColumnAlign.Left;
prot['Center'] = c_oAscMathInterfaceMatrixColumnAlign.Center;
prot['Right'] = c_oAscMathInterfaceMatrixColumnAlign.Right;
prot = window['Asc']['c_oAscMathInterfaceEqArrayAlign'] = window['Asc'].c_oAscMathInterfaceEqArrayAlign = c_oAscMathInterfaceEqArrayAlign;
prot['Top'] = c_oAscMathInterfaceEqArrayAlign.Top;
prot['Center'] = c_oAscMathInterfaceEqArrayAlign.Center;
prot['Bottom'] = c_oAscMathInterfaceEqArrayAlign.Bottom;
prot = window['Asc']['c_oAscMathInterfaceNaryLimitLocation'] = window['Asc'].c_oAscMathInterfaceNaryLimitLocation = c_oAscMathInterfaceNaryLimitLocation;
prot['UndOvr'] = c_oAscMathInterfaceNaryLimitLocation.UndOvr;
prot['SubSup'] = c_oAscMathInterfaceNaryLimitLocation.SubSup;
prot = window['Asc']['c_oAscMathInterfaceGroupCharPos'] = window['Asc'].c_oAscMathInterfaceGroupCharPos = c_oAscMathInterfaceGroupCharPos;
prot['None'] = c_oAscMathInterfaceGroupCharPos.None;
prot['Top'] = c_oAscMathInterfaceGroupCharPos.Top;
prot['Bottom'] = c_oAscMathInterfaceGroupCharPos.Bottom;
prot = window['Asc']['c_oAscTabLeader'] = window['Asc'].c_oAscTabLeader = c_oAscTabLeader;
prot["None"] = c_oAscTabLeader.None;
prot["Heavy"] = c_oAscTabLeader.Heavy;
prot["Dot"] = c_oAscTabLeader.Dot;
prot["Hyphen"] = c_oAscTabLeader.Hyphen;
prot["MiddleDot"] = c_oAscTabLeader.MiddleDot;
prot["Underscore"] = c_oAscTabLeader.Underscore;
prot = window['Asc']['c_oAscRestrictionType'] = window['Asc'].c_oAscRestrictionType = c_oAscRestrictionType;
prot['None'] = c_oAscRestrictionType.None;
prot['OnlyForms'] = c_oAscRestrictionType.OnlyForms;
prot['OnlyComments'] = c_oAscRestrictionType.OnlyComments;
prot['OnlySignatures'] = c_oAscRestrictionType.OnlySignatures;
prot['View'] = c_oAscRestrictionType.View;
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].g_cCharDelimiter = g_cCharDelimiter;
window["AscCommon"].g_cGeneralFormat = g_cGeneralFormat;
window["AscCommon"].bDate1904 = false;
window["AscCommon"].c_oAscAdvancedOptionsAction = c_oAscAdvancedOptionsAction;
window["AscCommon"].DownloadType = DownloadType;
window["AscCommon"].CellValueType = CellValueType;
window["AscCommon"].c_oAscCellAnchorType = c_oAscCellAnchorType;
window["AscCommon"].c_oAscChartDefines = c_oAscChartDefines;
window["AscCommon"].c_oAscStyleImage = c_oAscStyleImage;
window["AscCommon"].c_oAscLineDrawingRule = c_oAscLineDrawingRule;
window["AscCommon"].vertalign_Baseline = vertalign_Baseline;
window["AscCommon"].vertalign_SuperScript = vertalign_SuperScript;
window["AscCommon"].vertalign_SubScript = vertalign_SubScript;
window["AscCommon"].hdrftr_Header = hdrftr_Header;
window["AscCommon"].hdrftr_Footer = hdrftr_Footer;
window["AscCommon"].c_oAscSizeRelFromH = c_oAscSizeRelFromH;
window["AscCommon"].c_oAscSizeRelFromV = c_oAscSizeRelFromV;
window["AscCommon"].c_oAscWrapStyle = c_oAscWrapStyle;
window["AscCommon"].c_oAscBorderWidth = c_oAscBorderWidth;
window["AscCommon"].c_oAscBorderType = c_oAscBorderType;
window["AscCommon"].c_oAscLockTypes = c_oAscLockTypes;
window["AscCommon"].c_oAscFormatPainterState = c_oAscFormatPainterState;
window["AscCommon"].c_oAscSaveTypes = c_oAscSaveTypes;
window["AscCommon"].c_oAscChartType = c_oAscChartType;
window["AscCommon"].c_oAscChartSubType = c_oAscChartSubType;
window["AscCommon"].c_oAscCsvDelimiter = c_oAscCsvDelimiter;
window["AscCommon"].c_oAscUrlType = c_oAscUrlType;
window["AscCommon"].c_oAscMouseMoveDataTypes = c_oAscMouseMoveDataTypes;
window["AscCommon"].c_oAscPrintDefaultSettings = c_oAscPrintDefaultSettings;
window["AscCommon"].c_oZoomType = c_oZoomType;
window["AscCommon"].c_oNotifyType = c_oNotifyType;
window["AscCommon"].c_oNotifyParentType = c_oNotifyParentType;
window["AscCommon"].c_oAscEncodings = c_oAscEncodings;
window["AscCommon"].c_oAscEncodingsMap = c_oAscEncodingsMap;
window["AscCommon"].c_oAscCodePageNone = c_oAscCodePageNone;
window["AscCommon"].c_oAscCodePageUtf7 = c_oAscCodePageUtf7;
window["AscCommon"].c_oAscCodePageUtf8 = c_oAscCodePageUtf8;
window["AscCommon"].c_oAscCodePageUtf16 = c_oAscCodePageUtf16;
window["AscCommon"].c_oAscCodePageUtf16BE = c_oAscCodePageUtf16BE;
window["AscCommon"].c_oAscCodePageUtf32 = c_oAscCodePageUtf32;
window["AscCommon"].c_oAscCodePageUtf32BE = c_oAscCodePageUtf32BE;
window["AscCommon"].c_oAscMaxFormulaLength = c_oAscMaxFormulaLength;
window["AscCommon"].locktype_None = locktype_None;
window["AscCommon"].locktype_Mine = locktype_Mine;
window["AscCommon"].locktype_Other = locktype_Other;
window["AscCommon"].locktype_Other2 = locktype_Other2;
window["AscCommon"].locktype_Other3 = locktype_Other3;
window["AscCommon"].changestype_None = changestype_None;
window["AscCommon"].changestype_Paragraph_Content = changestype_Paragraph_Content;
window["AscCommon"].changestype_Paragraph_Properties = changestype_Paragraph_Properties;
window["AscCommon"].changestype_Paragraph_AddText = changestype_Paragraph_AddText;
window["AscCommon"].changestype_Document_Content = changestype_Document_Content;
window["AscCommon"].changestype_Document_Content_Add = changestype_Document_Content_Add;
window["AscCommon"].changestype_Document_SectPr = changestype_Document_SectPr;
window["AscCommon"].changestype_Document_Styles = changestype_Document_Styles;
window["AscCommon"].changestype_Table_Properties = changestype_Table_Properties;
window["AscCommon"].changestype_Table_RemoveCells = changestype_Table_RemoveCells;
window["AscCommon"].changestype_Image_Properties = changestype_Image_Properties;
window["AscCommon"].changestype_ContentControl_Remove = changestype_ContentControl_Remove;
window["AscCommon"].changestype_ContentControl_Properties = changestype_ContentControl_Properties;
window["AscCommon"].changestype_ContentControl_Add = changestype_ContentControl_Add;
window["AscCommon"].changestype_HdrFtr = changestype_HdrFtr;
window["AscCommon"].changestype_Remove = changestype_Remove;
window["AscCommon"].changestype_Delete = changestype_Delete;
window["AscCommon"].changestype_Drawing_Props = changestype_Drawing_Props;
window["AscCommon"].changestype_ColorScheme = changestype_ColorScheme;
window["AscCommon"].changestype_Text_Props = changestype_Text_Props;
window["AscCommon"].changestype_RemoveSlide = changestype_RemoveSlide;
window["AscCommon"].changestype_Theme = changestype_Theme;
window["AscCommon"].changestype_SlideSize = changestype_SlideSize;
window["AscCommon"].changestype_SlideBg = changestype_SlideBg;
window["AscCommon"].changestype_SlideTiming = changestype_SlideTiming;
window["AscCommon"].changestype_MoveComment = changestype_MoveComment;
window["AscCommon"].changestype_AddComment = changestype_AddComment;
window["AscCommon"].changestype_Layout = changestype_Layout;
window["AscCommon"].changestype_AddShape = changestype_AddShape;
window["AscCommon"].changestype_AddShapes = changestype_AddShapes;
window["AscCommon"].changestype_PresDefaultLang = changestype_PresDefaultLang;
window["AscCommon"].changestype_SlideHide = changestype_SlideHide;
window["AscCommon"].changestype_2_InlineObjectMove = changestype_2_InlineObjectMove;
window["AscCommon"].changestype_2_HdrFtr = changestype_2_HdrFtr;
window["AscCommon"].changestype_2_Comment = changestype_2_Comment;
window["AscCommon"].changestype_2_Element_and_Type = changestype_2_Element_and_Type;
window["AscCommon"].changestype_2_ElementsArray_and_Type = changestype_2_ElementsArray_and_Type;
window["AscCommon"].changestype_2_AdditionalTypes = changestype_2_AdditionalTypes;
window["AscCommon"].changestype_2_Element_and_Type_Array = changestype_2_Element_and_Type_Array;
window["AscCommon"].contentchanges_Add = contentchanges_Add;
window["AscCommon"].contentchanges_Remove = contentchanges_Remove;
window["AscCommon"].PUNCTUATION_FLAG_BASE = PUNCTUATION_FLAG_BASE;
window["AscCommon"].PUNCTUATION_FLAG_CANT_BE_AT_BEGIN = PUNCTUATION_FLAG_CANT_BE_AT_BEGIN;
window["AscCommon"].PUNCTUATION_FLAG_CANT_BE_AT_END = PUNCTUATION_FLAG_CANT_BE_AT_END;
window["AscCommon"].PUNCTUATION_FLAG_EAST_ASIAN = PUNCTUATION_FLAG_EAST_ASIAN;
window["AscCommon"].PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E = PUNCTUATION_FLAG_CANT_BE_AT_BEGIN_E;
window["AscCommon"].PUNCTUATION_FLAG_CANT_BE_AT_END_E = PUNCTUATION_FLAG_CANT_BE_AT_END_E;
window["AscCommon"].g_aPunctuation = g_aPunctuation;
window["AscCommon"].offlineMode = offlineMode;
window["AscCommon"].chartMode = chartMode;
window['AscCommon']['align_Right'] = window['AscCommon'].align_Right = align_Right;
window['AscCommon']['align_Left'] = window['AscCommon'].align_Left = align_Left;
window['AscCommon']['align_Center'] = window['AscCommon'].align_Center = align_Center;
window['AscCommon']['align_Justify'] = window['AscCommon'].align_Justify = align_Justify;
window['Asc']['c_oSpecialPasteProps'] = window['Asc'].c_oSpecialPasteProps = c_oSpecialPasteProps;
prot = c_oSpecialPasteProps;
prot['paste'] = prot.paste;
prot['pasteOnlyFormula'] = prot.pasteOnlyFormula;
prot['formulaNumberFormat'] = prot.formulaNumberFormat;
prot['formulaAllFormatting'] = prot.formulaAllFormatting;
prot['formulaWithoutBorders'] = prot.formulaWithoutBorders;
prot['formulaColumnWidth'] = prot.formulaColumnWidth;
prot['mergeConditionalFormating'] = prot.mergeConditionalFormating;
prot['pasteOnlyValues'] = prot.pasteOnlyValues;
prot['valueNumberFormat'] = prot.valueNumberFormat;
prot['valueAllFormating'] = prot.valueAllFormating;
prot['pasteOnlyFormating'] = prot.pasteOnlyFormating;
prot['transpose'] = prot.transpose;
prot['link'] = prot.link;
prot['picture'] = prot.picture;
prot['linkedPicture'] = prot.linkedPicture;
prot['sourceformatting'] = prot.sourceformatting;
prot['destinationFormatting'] = prot.destinationFormatting;
prot['mergeFormatting'] = prot.mergeFormatting;
prot['uniteList'] = prot.uniteList;
prot['doNotUniteList'] = prot.doNotUniteList;
prot['keepTextOnly'] = prot.keepTextOnly;
prot['insertAsNestedTable'] = prot.insertAsNestedTable;
prot['overwriteCells'] = prot.overwriteCells;
window['Asc']['c_oAscNumberingFormat'] = window['Asc'].c_oAscNumberingFormat = c_oAscNumberingFormat;
prot = c_oAscNumberingFormat;
prot['None'] = c_oAscNumberingFormat.None;
prot['Bullet'] = c_oAscNumberingFormat.Bullet;
prot['Decimal'] = c_oAscNumberingFormat.Decimal;
prot['LowerRoman'] = c_oAscNumberingFormat.LowerRoman;
prot['UpperRoman'] = c_oAscNumberingFormat.UpperRoman;
prot['LowerLetter'] = c_oAscNumberingFormat.LowerLetter;
prot['UpperLetter'] = c_oAscNumberingFormat.UpperLetter;
prot['DecimalZero'] = c_oAscNumberingFormat.DecimalZero;
window['Asc']['c_oAscNumberingSuff'] = window['Asc'].c_oAscNumberingSuff = c_oAscNumberingSuff;
prot = c_oAscNumberingSuff;
prot['Tab'] = c_oAscNumberingSuff.Tab;
prot['Space'] = c_oAscNumberingSuff.Space;
prot['None'] = c_oAscNumberingSuff.None;
window['Asc']['c_oAscNumberingLvlTextType'] = window['Asc'].c_oAscNumberingLvlTextType = c_oAscNumberingLvlTextType;
prot = c_oAscNumberingLvlTextType;
prot['Text'] = c_oAscNumberingLvlTextType.Text;
prot['Num'] = c_oAscNumberingLvlTextType.Num;
prot = window['Asc']['c_oAscSdtAppearance'] = window['Asc'].c_oAscSdtAppearance = c_oAscSdtAppearance;
prot['Frame'] = c_oAscSdtAppearance.Frame;
prot['Hidden'] = c_oAscSdtAppearance.Hidden;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined) {
/**
* Класс user для совместного редактирования/просмотра документа
* -----------------------------------------------------------------------------
*
* @constructor
* @memberOf Asc
*/
function asc_CUser(val) {
this.id = null; // уникальный id - пользователя
this.idOriginal = null; // уникальный id - пользователя
this.userName = null; // имя пользователя
this.state = undefined; // состояние (true - подключен, false - отключился)
this.indexUser = -1; // Индекс пользователя (фактически равно числу заходов в документ на сервере)
this.color = null; // цвет пользователя
this.view = false; // просмотр(true), редактор(false)
this._setUser(val);
return this;
}
asc_CUser.prototype._setUser = function(val) {
if (val) {
this.id = val['id'];
this.idOriginal = val['idOriginal'];
this.userName = val['username'];
this.indexUser = val['indexUser'];
this.color = window['AscCommon'].getUserColorById(this.idOriginal, this.userName, false, true);
this.view = val['view'];
}
};
asc_CUser.prototype.asc_getId = function() {
return this.id;
};
asc_CUser.prototype.asc_getIdOriginal = function() {
return this.idOriginal;
};
asc_CUser.prototype.asc_getUserName = function() {
return this.userName;
};
asc_CUser.prototype.asc_getFirstName = function() {
return this.firstName;
};
asc_CUser.prototype.asc_getLastName = function() {
return this.lastName;
};
asc_CUser.prototype.asc_getState = function() {
return this.state;
};
asc_CUser.prototype.asc_getColor = function() {
return '#' + ('000000' + this.color.toString(16)).substr(-6);
};
asc_CUser.prototype.asc_getView = function() {
return this.view;
};
asc_CUser.prototype.setId = function(val) {
this.id = val;
};
asc_CUser.prototype.setUserName = function(val) {
this.userName = val;
};
asc_CUser.prototype.setFirstName = function(val) {
this.firstName = val;
};
asc_CUser.prototype.setLastName = function(val) {
this.lastName = val;
};
asc_CUser.prototype.setState = function(val) {
this.state = val;
};
var ConnectionState = {
Reconnect: -1, // reconnect state
None: 0, // not initialized
WaitAuth: 1, // waiting session id
Authorized: 2, // authorized
ClosedCoAuth: 3, // closed coauthoring
ClosedAll: 4, // closed all
SaveChanges: 10, // save
AskSaveChanges: 11 // ask save
};
var c_oEditorId = {
Word:0,
Spreadsheet:1,
Presentation:2
};
var c_oCloseCode = {
serverShutdown: 4001,
sessionIdle: 4002,
sessionAbsolute: 4003,
accessDeny: 4004,
jwtExpired: 4005,
jwtError: 4006,
drop: 4007
};
var c_oAscServerCommandErrors = {
NoError: 0,
DocumentIdError: 1,
ParseError: 2,
UnknownError: 3,
NotModified: 4,
UnknownCommand: 5,
Token: 6,
TokenExpire: 7
};
var c_oAscForceSaveTypes = {
Command: 0,
Button: 1,
Timeout: 2
};
/*
* Export
* -----------------------------------------------------------------------------
*/
var prot;
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].asc_CUser = asc_CUser;
prot = asc_CUser.prototype;
prot["asc_getId"] = prot.asc_getId;
prot["asc_getIdOriginal"] = prot.asc_getIdOriginal;
prot["asc_getUserName"] = prot.asc_getUserName;
prot["asc_getState"] = prot.asc_getState;
prot["asc_getColor"] = prot.asc_getColor;
prot["asc_getView"] = prot.asc_getView;
window["AscCommon"].ConnectionState = ConnectionState;
window["AscCommon"].c_oEditorId = c_oEditorId;
window["AscCommon"].c_oCloseCode = c_oCloseCode;
window["AscCommon"].c_oAscServerCommandErrors = c_oAscServerCommandErrors;
window["AscCommon"].c_oAscForceSaveTypes = c_oAscForceSaveTypes;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function(window, undefined) {
'use strict';
var Asc = window['Asc'];
var AscCommon = window['AscCommon'];
var ConnectionState = AscCommon.ConnectionState;
var c_oEditorId = AscCommon.c_oEditorId;
var c_oCloseCode = AscCommon.c_oCloseCode;
var c_oAscServerCommandErrors = AscCommon.c_oAscServerCommandErrors;
var c_oAscForceSaveTypes = AscCommon.c_oAscForceSaveTypes;
// Класс надстройка, для online и offline работы
function CDocsCoApi(options) {
this._CoAuthoringApi = new DocsCoApi();
this._onlineWork = false;
if (options) {
this.onAuthParticipantsChanged = options.onAuthParticipantsChanged;
this.onParticipantsChanged = options.onParticipantsChanged;
this.onMessage = options.onMessage;
this.onServerVersion = options.onServerVersion;
this.onCursor = options.onCursor;
this.onMeta = options.onMeta;
this.onSession = options.onSession;
this.onExpiredToken = options.onExpiredToken;
this.onForceSave = options.onForceSave;
this.onHasForgotten = options.onHasForgotten;
this.onLocksAcquired = options.onLocksAcquired;
this.onLocksReleased = options.onLocksReleased;
this.onLocksReleasedEnd = options.onLocksReleasedEnd; // ToDo переделать на массив release locks
this.onDisconnect = options.onDisconnect;
this.onWarning = options.onWarning;
this.onFirstLoadChangesEnd = options.onFirstLoadChangesEnd;
this.onConnectionStateChanged = options.onConnectionStateChanged;
this.onSetIndexUser = options.onSetIndexUser;
this.onSpellCheckInit = options.onSpellCheckInit;
this.onSaveChanges = options.onSaveChanges;
this.onStartCoAuthoring = options.onStartCoAuthoring;
this.onEndCoAuthoring = options.onEndCoAuthoring;
this.onUnSaveLock = options.onUnSaveLock;
this.onRecalcLocks = options.onRecalcLocks;
this.onDocumentOpen = options.onDocumentOpen;
this.onFirstConnect = options.onFirstConnect;
this.onLicense = options.onLicense;
this.onLicenseChanged = options.onLicenseChanged;
}
}
CDocsCoApi.prototype.init = function(user, docid, documentCallbackUrl, token, editorType, documentFormatSave, docInfo) {
if (this._CoAuthoringApi && this._CoAuthoringApi.isRightURL()) {
var t = this;
this._CoAuthoringApi.onAuthParticipantsChanged = function(e, id) {
t.callback_OnAuthParticipantsChanged(e, id);
};
this._CoAuthoringApi.onParticipantsChanged = function(e) {
t.callback_OnParticipantsChanged(e);
};
this._CoAuthoringApi.onMessage = function(e, clear) {
t.callback_OnMessage(e, clear);
};
this._CoAuthoringApi.onServerVersion = function(e) {
t.callback_OnServerVersion(e);
};
this._CoAuthoringApi.onCursor = function(e) {
t.callback_OnCursor(e);
};
this._CoAuthoringApi.onMeta = function(e) {
t.callback_OnMeta(e);
};
this._CoAuthoringApi.onSession = function(e) {
t.callback_OnSession(e);
};
this._CoAuthoringApi.onExpiredToken = function(e) {
t.callback_OnExpiredToken(e);
};
this._CoAuthoringApi.onHasForgotten = function(e) {
t.callback_OnHasForgotten(e);
};
this._CoAuthoringApi.onForceSave = function(e) {
t.callback_OnForceSave(e);
};
this._CoAuthoringApi.onLocksAcquired = function(e) {
t.callback_OnLocksAcquired(e);
};
this._CoAuthoringApi.onLocksReleased = function(e, bChanges) {
t.callback_OnLocksReleased(e, bChanges);
};
this._CoAuthoringApi.onLocksReleasedEnd = function() {
t.callback_OnLocksReleasedEnd();
};
this._CoAuthoringApi.onDisconnect = function(e, error) {
t.callback_OnDisconnect(e, error);
};
this._CoAuthoringApi.onWarning = function(e) {
t.callback_OnWarning(e);
};
this._CoAuthoringApi.onFirstLoadChangesEnd = function() {
t.callback_OnFirstLoadChangesEnd();
};
this._CoAuthoringApi.onConnectionStateChanged = function(e) {
t.callback_OnConnectionStateChanged(e);
};
this._CoAuthoringApi.onSetIndexUser = function(e) {
t.callback_OnSetIndexUser(e);
};
this._CoAuthoringApi.onSpellCheckInit = function(e) {
t.callback_OnSpellCheckInit(e);
};
this._CoAuthoringApi.onSaveChanges = function(e, userId, bFirstLoad) {
t.callback_OnSaveChanges(e, userId, bFirstLoad);
};
// Callback есть пользователей больше 1
this._CoAuthoringApi.onStartCoAuthoring = function(e) {
t.callback_OnStartCoAuthoring(e);
};
this._CoAuthoringApi.onEndCoAuthoring = function(e) {
t.callback_OnEndCoAuthoring(e);
};
this._CoAuthoringApi.onUnSaveLock = function() {
t.callback_OnUnSaveLock();
};
this._CoAuthoringApi.onRecalcLocks = function(e) {
t.callback_OnRecalcLocks(e);
};
this._CoAuthoringApi.onDocumentOpen = function(data) {
t.callback_OnDocumentOpen(data);
};
this._CoAuthoringApi.onFirstConnect = function() {
t.callback_OnFirstConnect();
};
this._CoAuthoringApi.onLicense = function(res) {
t.callback_OnLicense(res);
};
this._CoAuthoringApi.onLicenseChanged = function(res) {
t.callback_OnLicenseChanged(res);
};
this._CoAuthoringApi.init(user, docid, documentCallbackUrl, token, editorType, documentFormatSave, docInfo);
this._onlineWork = true;
} else {
// Фиктивные вызовы
this.onFirstConnect();
this.onLicense(null);
}
};
CDocsCoApi.prototype.getDocId = function() {
if (this._CoAuthoringApi) {
return this._CoAuthoringApi.getDocId()
}
return undefined;
};
CDocsCoApi.prototype.setDocId = function(docId) {
if (this._CoAuthoringApi) {
return this._CoAuthoringApi.setDocId(docId)
}
};
CDocsCoApi.prototype.auth = function(isViewer, opt_openCmd, opt_isIdle) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.auth(isViewer, opt_openCmd, opt_isIdle);
} else {
// Фиктивные вызовы
this.callback_OnSpellCheckInit('');
this.callback_OnSetIndexUser('123');
this.onFirstLoadChangesEnd();
}
};
CDocsCoApi.prototype.set_url = function(url) {
if (this._CoAuthoringApi) {
this._CoAuthoringApi.set_url(url);
}
};
CDocsCoApi.prototype.get_onlineWork = function() {
return this._onlineWork;
};
CDocsCoApi.prototype.get_state = function() {
if (this._CoAuthoringApi) {
return this._CoAuthoringApi.get_state();
}
return 0;
};
CDocsCoApi.prototype.openDocument = function(data) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.openDocument(data);
}
};
CDocsCoApi.prototype.sendRawData = function(data) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.sendRawData(data);
}
};
CDocsCoApi.prototype.getMessages = function() {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.getMessages();
}
};
CDocsCoApi.prototype.sendMessage = function(message) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.sendMessage(message);
}
};
CDocsCoApi.prototype.sendCursor = function(cursor) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.sendCursor(cursor);
}
};
CDocsCoApi.prototype.sendChangesError = function(data) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.sendChangesError(data);
}
};
CDocsCoApi.prototype.askLock = function(arrayBlockId, callback) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.askLock(arrayBlockId, callback);
} else {
var t = this;
window.setTimeout(function() {
if (callback) {
var lengthArray = (arrayBlockId) ? arrayBlockId.length : 0;
if (0 < lengthArray) {
callback({"lock": arrayBlockId[0]});
// Фиктивные вызовы
for (var i = 0; i < lengthArray; ++i) {
t.callback_OnLocksAcquired({"state": 2, "block": arrayBlockId[i]});
}
}
}
}, 1);
}
};
CDocsCoApi.prototype.askSaveChanges = function(callback) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.askSaveChanges(callback);
} else {
window.setTimeout(function() {
if (callback) {
// Фиктивные вызовы
callback({"saveLock": false});
}
}, 100);
}
};
CDocsCoApi.prototype.unSaveLock = function() {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.unSaveLock();
} else {
var t = this;
window.setTimeout(function() {
// Фиктивные вызовы
t.callback_OnUnSaveLock();
}, 100);
}
};
CDocsCoApi.prototype.saveChanges = function(arrayChanges, deleteIndex, excelAdditionalInfo, canUnlockDocument, canReleaseLocks) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.canUnlockDocument = canUnlockDocument;
this._CoAuthoringApi.canReleaseLocks = canReleaseLocks;
this._CoAuthoringApi.saveChanges(arrayChanges, null, deleteIndex, excelAdditionalInfo);
}
};
CDocsCoApi.prototype.unLockDocument = function(isSave, canUnlockDocument, deleteIndex, canReleaseLocks) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.canUnlockDocument = canUnlockDocument;
this._CoAuthoringApi.canReleaseLocks = canReleaseLocks;
this._CoAuthoringApi.unLockDocument(isSave, deleteIndex);
}
};
CDocsCoApi.prototype.getUsers = function() {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.getUsers();
}
};
CDocsCoApi.prototype.getUserConnectionId = function() {
if (this._CoAuthoringApi && this._onlineWork) {
return this._CoAuthoringApi.getUserConnectionId();
}
return null;
};
CDocsCoApi.prototype.get_indexUser = function() {
if (this._CoAuthoringApi && this._onlineWork) {
return this._CoAuthoringApi.get_indexUser();
}
return null;
};
CDocsCoApi.prototype.get_isAuth = function() {
if (this._CoAuthoringApi && this._onlineWork) {
return this._CoAuthoringApi.get_isAuth();
}
return null;
};
CDocsCoApi.prototype.get_jwt = function() {
if (this._CoAuthoringApi && this._onlineWork) {
return this._CoAuthoringApi.get_jwt();
}
return null;
};
CDocsCoApi.prototype.releaseLocks = function(blockId) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.releaseLocks(blockId);
}
};
CDocsCoApi.prototype.disconnect = function(opt_code, opt_reason) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.disconnect(opt_code, opt_reason);
}
};
CDocsCoApi.prototype.extendSession = function(idleTime) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.extendSession(idleTime);
}
};
CDocsCoApi.prototype.versionHistory = function(data) {
if (this._CoAuthoringApi && this._onlineWork) {
this._CoAuthoringApi.versionHistory(data);
}
};
CDocsCoApi.prototype.forceSave = function() {
if (this._CoAuthoringApi && this._onlineWork) {
return this._CoAuthoringApi.forceSave();
}
return false;
};
CDocsCoApi.prototype.callback_OnAuthParticipantsChanged = function(e, id) {
if (this.onAuthParticipantsChanged) {
this.onAuthParticipantsChanged(e, id);
}
};
CDocsCoApi.prototype.callback_OnParticipantsChanged = function(e) {
if (this.onParticipantsChanged) {
this.onParticipantsChanged(e);
}
};
CDocsCoApi.prototype.callback_OnMessage = function(e, clear) {
if (this.onMessage) {
this.onMessage(e, clear);
}
};
CDocsCoApi.prototype.callback_OnServerVersion = function(e) {
if (this.onServerVersion) {
this.onServerVersion(e);
}
};
CDocsCoApi.prototype.callback_OnCursor = function(e) {
if (this.onCursor) {
this.onCursor(e);
}
};
CDocsCoApi.prototype.callback_OnMeta = function(e) {
if (this.onMeta) {
this.onMeta(e);
}
};
CDocsCoApi.prototype.callback_OnSession = function(e) {
if (this.onSession) {
this.onSession(e);
}
};
CDocsCoApi.prototype.callback_OnExpiredToken = function(e) {
if (this.onExpiredToken) {
this.onExpiredToken(e);
}
};
CDocsCoApi.prototype.callback_OnForceSave = function(e) {
if (this.onForceSave) {
this.onForceSave(e);
}
};
CDocsCoApi.prototype.callback_OnHasForgotten = function(e) {
if (this.onHasForgotten) {
this.onHasForgotten(e);
}
};
CDocsCoApi.prototype.callback_OnLocksAcquired = function(e) {
if (this.onLocksAcquired) {
this.onLocksAcquired(e);
}
};
CDocsCoApi.prototype.callback_OnLocksReleased = function(e, bChanges) {
if (this.onLocksReleased) {
this.onLocksReleased(e, bChanges);
}
};
CDocsCoApi.prototype.callback_OnLocksReleasedEnd = function() {
if (this.onLocksReleasedEnd) {
this.onLocksReleasedEnd();
}
};
/**
* Event об отсоединении от сервера
* @param {jQuery} e event об отсоединении с причиной
* @param {code: Asc.c_oAscError.ID, level: Asc.c_oAscError.Level} error
*/
CDocsCoApi.prototype.callback_OnDisconnect = function(e, error) {
if (this.onDisconnect) {
this.onDisconnect(e, error);
}
};
CDocsCoApi.prototype.callback_OnWarning = function(e) {
if (this.onWarning) {
this.onWarning(e);
}
};
CDocsCoApi.prototype.callback_OnFirstLoadChangesEnd = function() {
if (this.onFirstLoadChangesEnd) {
this.onFirstLoadChangesEnd();
}
};
CDocsCoApi.prototype.callback_OnConnectionStateChanged = function(e) {
if (this.onConnectionStateChanged) {
this.onConnectionStateChanged(e);
}
};
CDocsCoApi.prototype.callback_OnSetIndexUser = function(e) {
if (this.onSetIndexUser) {
this.onSetIndexUser(e);
}
};
CDocsCoApi.prototype.callback_OnSpellCheckInit = function(e) {
if (this.onSpellCheckInit) {
this.onSpellCheckInit(e);
}
};
CDocsCoApi.prototype.callback_OnSaveChanges = function(e, userId, bFirstLoad) {
if (this.onSaveChanges) {
this.onSaveChanges(e, userId, bFirstLoad);
}
};
CDocsCoApi.prototype.callback_OnStartCoAuthoring = function(e) {
if (this.onStartCoAuthoring) {
this.onStartCoAuthoring(e);
}
};
CDocsCoApi.prototype.callback_OnEndCoAuthoring = function(e) {
if (this.onEndCoAuthoring) {
this.onEndCoAuthoring(e);
}
};
CDocsCoApi.prototype.callback_OnUnSaveLock = function() {
if (this.onUnSaveLock) {
this.onUnSaveLock();
}
};
CDocsCoApi.prototype.callback_OnRecalcLocks = function(e) {
if (this.onRecalcLocks) {
this.onRecalcLocks(e);
}
};
CDocsCoApi.prototype.callback_OnDocumentOpen = function(e) {
if (this.onDocumentOpen) {
this.onDocumentOpen(e);
}
};
CDocsCoApi.prototype.callback_OnFirstConnect = function() {
if (this.onFirstConnect) {
this.onFirstConnect();
}
};
CDocsCoApi.prototype.callback_OnLicense = function(res) {
if (this.onLicense) {
this.onLicense(res);
}
};
CDocsCoApi.prototype.callback_OnLicenseChanged = function(res) {
if (this.onLicenseChanged) {
this.onLicenseChanged(res);
}
};
function LockBufferElement(arrayBlockId, callback) {
this._arrayBlockId = arrayBlockId ? arrayBlockId.slice() : null;
this._callback = callback;
}
function DocsCoApi(options) {
if (options) {
this.onAuthParticipantsChanged = options.onAuthParticipantsChanged;
this.onParticipantsChanged = options.onParticipantsChanged;
this.onMessage = options.onMessage;
this.onServerVersion = options.onServerVersion;
this.onCursor = options.onCursor;
this.onMeta = options.onMeta;
this.onSession = options.onSession;
this.onExpiredToken = options.onExpiredToken;
this.onForceSave = options.onForceSave;
this.onHasForgotten = options.onHasForgotten;
this.onLocksAcquired = options.onLocksAcquired;
this.onLocksReleased = options.onLocksReleased;
this.onLocksReleasedEnd = options.onLocksReleasedEnd; // ToDo переделать на массив release locks
this.onRelockFailed = options.onRelockFailed;
this.onDisconnect = options.onDisconnect;
this.onWarning = options.onWarning;
this.onSetIndexUser = options.onSetIndexUser;
this.onSpellCheckInit = options.onSpellCheckInit;
this.onSaveChanges = options.onSaveChanges;
this.onFirstLoadChangesEnd = options.onFirstLoadChangesEnd;
this.onConnectionStateChanged = options.onConnectionStateChanged;
this.onUnSaveLock = options.onUnSaveLock;
this.onRecalcLocks = options.onRecalcLocks;
this.onDocumentOpen = options.onDocumentOpen;
this.onFirstConnect = options.onFirstConnect;
this.onLicense = options.onLicense;
this.onLicenseChanged = options.onLicenseChanged;
}
this._state = ConnectionState.None;
// Online-пользователи в документе
this._participants = {};
this._participantsTimestamp;
this._countEditUsers = 0;
this._countUsers = 0;
this.isLicenseInit = false;
this._locks = {};
this._msgBuffer = [];
this._msgInputBuffer = [];
this._lockCallbacks = {};
this._lockCallbacksErrorTimerId = {};
this._saveCallback = [];
this.saveLockCallbackErrorTimeOutId = null;
this.saveCallbackErrorTimeOutId = null;
this.unSaveLockCallbackErrorTimeOutId = null;
this._id = null;
this._sessionTimeConnect = null;
this._allChangesSaved = null;
this._lastForceSaveButtonTime = null;
this._lastForceSaveTimeoutTime = null;
this._indexUser = -1;
// Если пользователей больше 1, то совместно редактируем
this.isCoAuthoring = false;
// Мы сами отключились от совместного редактирования
this.isCloseCoAuthoring = false;
// Максимальное число изменений, посылаемое на сервер (не может быть нечетным, т.к. пересчет обоих индексов должен быть)
this.maxCountSaveChanges = 20000;
// Текущий индекс для колличества изменений
this.currentIndex = 0;
// Индекс, с которого мы начинаем сохранять изменения
this.deleteIndex = 0;
// Массив изменений
this.arrayChanges = null;
// Время последнего сохранения (для разрыва соединения)
this.lastOtherSaveTime = -1;
this.lastOwnSaveTime = -1;
// Локальный индекс изменений
this.changesIndex = 0;
// Дополнительная информация для Excel
this.excelAdditionalInfo = null;
// Unlock document
this.canUnlockDocument = false;
// Release locks
this.canReleaseLocks = false;
this._url = "";
this.reconnectTimeout = null;
this.attemptCount = 0;
this.maxAttemptCount = 50;
this.reconnectInterval = 2000;
this.errorTimeOut = 10000;
this.errorTimeOutSave = 60000; // ToDo стоит переделать это, т.к. могут дублироваться изменения...
this._docid = null;
this._documentCallbackUrl = null;
this._token = null;
this._user = null;
this._userId = "Anonymous";
this.ownedLockBlocks = [];
this.sockjs_url = null;
this.sockjs = null;
this.editorType = -1;
this._isExcel = false;
this._isPresentation = false;
this._isAuth = false;
this._documentFormatSave = 0;
this.mode = undefined;
this.permissions = undefined;
this.lang = undefined;
this.jwtOpen = undefined;
this.jwtSession = undefined;
this.encrypted = undefined;
this._isViewer = false;
this._isReSaveAfterAuth = false; // Флаг для сохранения после повторной авторизации (для разрыва соединения во время сохранения)
this._lockBuffer = [];
this._authChanges = [];
this._authOtherChanges = [];
}
DocsCoApi.prototype.isRightURL = function() {
return ("" != this._url);
};
DocsCoApi.prototype.set_url = function(url) {
this._url = url;
};
DocsCoApi.prototype.get_state = function() {
return this._state;
};
DocsCoApi.prototype.check_state = function () {
return ConnectionState.Authorized === this._state || ConnectionState.SaveChanges === this._state ||
ConnectionState.AskSaveChanges === this._state;
};
DocsCoApi.prototype.get_indexUser = function() {
return this._indexUser;
};
DocsCoApi.prototype.get_isAuth = function() {
return this._isAuth;
};
DocsCoApi.prototype.get_jwt = function() {
return this.jwtSession || this.jwtOpen;
};
DocsCoApi.prototype.getSessionId = function() {
return this._id;
};
DocsCoApi.prototype.getUserConnectionId = function() {
return this._userId;
};
DocsCoApi.prototype.getLocks = function() {
return this._locks;
};
DocsCoApi.prototype._sendBufferedLocks = function() {
var elem;
for (var i = 0, length = this._lockBuffer.length; i < length; ++i) {
elem = this._lockBuffer[i];
this.askLock(elem._arrayBlockId, elem._callback);
}
this._lockBuffer = [];
};
DocsCoApi.prototype.askLock = function(arrayBlockId, callback) {
if (ConnectionState.SaveChanges === this._state || ConnectionState.AskSaveChanges === this._state) {
// Мы в режиме сохранения. Lock-и запросим после окончания.
this._lockBuffer.push(new LockBufferElement(arrayBlockId, callback));
return;
}
// ask all elements in array
var t = this;
var i = 0;
var lengthArray = (arrayBlockId) ? arrayBlockId.length : 0;
var isLock = false;
var idLockInArray = null;
for (; i < lengthArray; ++i) {
idLockInArray = (this._isExcel || this._isPresentation) ? arrayBlockId[i]['guid'] : arrayBlockId[i];
if (this._locks[idLockInArray] && 0 !== this._locks[idLockInArray].state) {
isLock = true;
break;
}
}
if (0 === lengthArray) {
isLock = true;
}
idLockInArray = (this._isExcel || this._isPresentation) ? arrayBlockId[0]['guid'] : arrayBlockId[0];
if (!isLock) {
if (this._lockCallbacksErrorTimerId.hasOwnProperty(idLockInArray)) {
// Два раза для одного id нельзя запрашивать lock, не дождавшись ответа
return;
}
//Ask
this._locks[idLockInArray] = {'state': 1};//1-asked for block
if (callback) {
this._lockCallbacks[idLockInArray] = callback;
//Set reconnectTimeout
this._lockCallbacksErrorTimerId[idLockInArray] = window.setTimeout(function() {
if (t._lockCallbacks.hasOwnProperty(idLockInArray)) {
//Not signaled already
t._lockCallbacks[idLockInArray]({error: 'Timed out'});
delete t._lockCallbacks[idLockInArray];
delete t._lockCallbacksErrorTimerId[idLockInArray];
}
}, this.errorTimeOut);
}
this._send({"type": 'getLock', 'block': arrayBlockId});
} else {
// Вернем ошибку, т.к. залочены элементы
window.setTimeout(function() {
if (callback) {
callback({error: idLockInArray + '-lock'});
}
}, 100);
}
};
DocsCoApi.prototype.askSaveChanges = function(callback) {
if (this._saveCallback[this._saveCallback.length - 1]) {
// Мы еще не отработали старый callback и ждем ответа
return;
}
// Очищаем предыдущий таймер
if (null !== this.saveLockCallbackErrorTimeOutId) {
clearTimeout(this.saveLockCallbackErrorTimeOutId);
}
// Проверим состояние, если мы не подсоединились, то сразу отправим ошибку
if (ConnectionState.Authorized !== this._state) {
this.saveLockCallbackErrorTimeOutId = window.setTimeout(function() {
if (callback) {
// Фиктивные вызовы
callback({error: "No connection"});
}
}, 100);
return;
}
if (callback) {
var t = this;
var indexCallback = this._saveCallback.length;
this._saveCallback[indexCallback] = callback;
//Set reconnectTimeout
this.saveLockCallbackErrorTimeOutId = window.setTimeout(function() {
t.saveLockCallbackErrorTimeOutId = null;
var oTmpCallback = t._saveCallback[indexCallback];
if (oTmpCallback) {
t._saveCallback[indexCallback] = null;
//Not signaled already
oTmpCallback({error: "Timed out"});
t._state = ConnectionState.Authorized;
// Делаем отложенные lock-и
t._sendBufferedLocks();
}
}, this.errorTimeOut);
}
this._state = ConnectionState.AskSaveChanges;
this._send({"type": "isSaveLock"});
};
DocsCoApi.prototype.unSaveLock = function() {
// ToDo при разрыве соединения нужно перестать делать unSaveLock!
var t = this;
this.unSaveLockCallbackErrorTimeOutId = window.setTimeout(function() {
t.unSaveLockCallbackErrorTimeOutId = null;
t.unSaveLock();
}, this.errorTimeOut);
this._send({"type": "unSaveLock"});
};
DocsCoApi.prototype.releaseLocks = function(blockId) {
if (this._locks[blockId] && 2 === this._locks[blockId].state /*lock is ours*/) {
//Ask
this._locks[blockId] = {"state": 0};//0-released
}
};
DocsCoApi.prototype._reSaveChanges = function(reSaveType) {
this.saveChanges(this.arrayChanges, this.currentIndex, undefined, undefined, reSaveType);
};
DocsCoApi.prototype.saveChanges = function(arrayChanges, currentIndex, deleteIndex, excelAdditionalInfo, reSave) {
if (null === currentIndex) {
this.deleteIndex = deleteIndex;
if (null != this.deleteIndex && -1 !== this.deleteIndex) {
this.deleteIndex += this.changesIndex;
}
this.currentIndex = 0;
this.arrayChanges = arrayChanges;
this.excelAdditionalInfo = excelAdditionalInfo;
} else {
this.currentIndex = currentIndex;
}
var startIndex = this.currentIndex * this.maxCountSaveChanges;
var endIndex = Math.min(this.maxCountSaveChanges * (this.currentIndex + 1), arrayChanges.length);
if (endIndex === arrayChanges.length) {
for (var key in this._locks) if (this._locks.hasOwnProperty(key)) {
if (2 === this._locks[key].state /*lock is ours*/) {
delete this._locks[key];
}
}
}
//Set errorTimeout
var t = this;
this.saveCallbackErrorTimeOutId = window.setTimeout(function() {
t.saveCallbackErrorTimeOutId = null;
t._reSaveChanges(1);
}, this.errorTimeOutSave);
// Выставляем состояние сохранения
this._state = ConnectionState.SaveChanges;
this._send({'type': 'saveChanges', 'changes': JSON.stringify(arrayChanges.slice(startIndex, endIndex)),
'startSaveChanges': (startIndex === 0), 'endSaveChanges': (endIndex === arrayChanges.length),
'isCoAuthoring': this.isCoAuthoring, 'isExcel': this._isExcel, 'deleteIndex': this.deleteIndex,
'excelAdditionalInfo': this.excelAdditionalInfo ? JSON.stringify(this.excelAdditionalInfo) : null,
'unlock': this.canUnlockDocument, 'releaseLocks': this.canReleaseLocks, 'reSave': reSave});
};
DocsCoApi.prototype.unLockDocument = function(isSave, deleteIndex) {
this.deleteIndex = deleteIndex;
if (null != this.deleteIndex && -1 !== this.deleteIndex) {
this.deleteIndex += this.changesIndex;
}
this._send({'type': 'unLockDocument', 'isSave': isSave, 'unlock': this.canUnlockDocument,
'deleteIndex': this.deleteIndex, 'releaseLocks': this.canReleaseLocks});
};
DocsCoApi.prototype.getUsers = function() {
// Специально для возможности получения после прохождения авторизации (Стоит переделать)
if (this.onAuthParticipantsChanged) {
this.onAuthParticipantsChanged(this._participants, this._userId);
}
};
DocsCoApi.prototype.disconnect = function(opt_code, opt_reason) {
// Отключаемся сами
this.isCloseCoAuthoring = true;
if (opt_code) {
this.sockjs.close(opt_code, opt_reason);
} else {
this._send({"type": "close"});
this._state = ConnectionState.ClosedCoAuth;
}
};
DocsCoApi.prototype.extendSession = function(idleTime) {
this._send({'type': 'extendSession', 'idletime': idleTime});
};
DocsCoApi.prototype.versionHistory = function(data) {
this._send({'type': 'versionHistory', 'cmd': data});
};
DocsCoApi.prototype.forceSave = function() {
var res = false;
var newForceSaveButtonTime = Math.max(this.lastOtherSaveTime, this.lastOwnSaveTime);
if (this._lastForceSaveButtonTime < newForceSaveButtonTime) {
this._lastForceSaveButtonTime = newForceSaveButtonTime;
this._send({'type': 'forceSaveStart'});
res = true;
}
return res;
};
DocsCoApi.prototype.openDocument = function(data) {
this._send({"type": "openDocument", "message": data});
};
DocsCoApi.prototype.sendRawData = function(data) {
this._sendRaw(data);
};
DocsCoApi.prototype.getMessages = function() {
this._send({"type": "getMessages"});
};
DocsCoApi.prototype.sendMessage = function(message) {
if (typeof message === 'string') {
this._send({"type": "message", "message": message});
}
};
DocsCoApi.prototype.sendCursor = function(cursor) {
if (typeof cursor === 'string') {
this._send({"type": "cursor", "cursor": cursor});
}
};
DocsCoApi.prototype.sendChangesError = function(data) {
if (typeof data === 'string') {
this._send({'type': 'changesError', 'stack': data});
}
};
DocsCoApi.prototype._applyPrebuffered = function () {
for (var i = 0; i < this._msgInputBuffer.length; ++i) {
this._msgInputBuffer[i]();
}
this._msgInputBuffer = [];
};
DocsCoApi.prototype._sendPrebuffered = function() {
for (var i = 0; i < this._msgBuffer.length; i++) {
this._sendRaw(this._msgBuffer[i]);
}
this._msgBuffer = [];
};
DocsCoApi.prototype._send = function(data, useEncryption) {
if (!useEncryption && data && data["type"] == "saveChanges" && AscCommon.EncryptionWorker && AscCommon.EncryptionWorker.isInit())
return AscCommon.EncryptionWorker.sendChanges(this, data, AscCommon.EncryptionMessageType.Encrypt);
if (data !== null && typeof data === "object") {
if (this._state > 0) {
this.sockjs.send(JSON.stringify(data));
} else {
this._msgBuffer.push(JSON.stringify(data));
}
}
};
DocsCoApi.prototype._sendRaw = function(data) {
if (data !== null && typeof data === "string") {
if (this._state > 0) {
this.sockjs.send(data);
} else {
this._msgBuffer.push(data);
}
}
};
DocsCoApi.prototype._onMessages = function(data, clear) {
if (this.check_state() && data["messages"] && this.onMessage) {
this.onMessage(data["messages"], clear);
}
};
DocsCoApi.prototype._onServerVersion = function (data) {
if (this.onServerVersion) {
this.onServerVersion(data['buildVersion'], data['buildNumber']);
}
};
DocsCoApi.prototype._onCursor = function(data) {
if (this.check_state() && data["messages"] && this.onCursor) {
this.onCursor(data["messages"]);
}
};
DocsCoApi.prototype._onMeta = function(data) {
if (data["messages"] && this.onMeta) {
this.onMeta(data["messages"]);
}
};
DocsCoApi.prototype._onSession = function(data) {
if (this.check_state() && data["messages"] && this.onSession) {
this.onSession(data["messages"]);
}
};
DocsCoApi.prototype._onExpiredToken = function(data) {
if (this.onExpiredToken) {
this.onExpiredToken();
}
};
DocsCoApi.prototype._onHasForgotten = function(data) {
if (this.onHasForgotten) {
this.onHasForgotten();
}
};
DocsCoApi.prototype._onRefreshToken = function(jwt) {
this.jwtOpen = undefined;
if (jwt) {
this.jwtSession = jwt;
}
};
DocsCoApi.prototype._onForceSaveStart = function(data) {
var code = data['code'];
if (code === c_oAscServerCommandErrors.NoError) {
this._lastForceSaveButtonTime = data['time'];
this.onForceSave({type: c_oAscForceSaveTypes.Button, start: true});
} else if (code === c_oAscServerCommandErrors.NotModified) {
this.onForceSave({type: c_oAscForceSaveTypes.Button, refuse: true});
} else {
this.onWarning(Asc.c_oAscError.ID.Unknown);
}
};
DocsCoApi.prototype._onForceSave = function(data) {
var type = data['type'];
if (c_oAscForceSaveTypes.Button === type) {
if (this._lastForceSaveButtonTime == data['time']) {
this.onForceSave({type: type, success: data['success']});
}
} else {
if (data['start']) {
this.onForceSave({type: type, start: true});
this._lastForceSaveTimeoutTime = data['time'];
} else {
if (this._lastForceSaveTimeoutTime == data['time']) {
this.onForceSave({type: type, success: data['success']});
}
}
}
};
DocsCoApi.prototype._onGetLock = function(data) {
if (this.check_state() && data["locks"]) {
for (var key in data["locks"]) {
if (data["locks"].hasOwnProperty(key)) {
var lock = data["locks"][key], blockTmp = (this._isExcel || this._isPresentation) ? lock["block"]["guid"] : key, blockValue = (this._isExcel || this._isPresentation) ? lock["block"] : key;
if (lock !== null) {
var changed = true;
if (this._locks[blockTmp] && 1 !== this._locks[blockTmp].state /*asked for it*/) {
//Exists
//Check lock state
changed = !(this._locks[blockTmp].state === (lock["user"] === this._userId ? 2 : 3) && this._locks[blockTmp]["user"] === lock["user"] && this._locks[blockTmp]["time"] === lock["time"] && this._locks[blockTmp]["block"] === blockTmp);
}
if (changed) {
this._locks[blockTmp] = {"state": lock["user"] === this._userId ? 2 : 3, "user": lock["user"], "time": lock["time"], "block": blockTmp, "blockValue": blockValue};//2-acquired by me!
}
if (this._lockCallbacks.hasOwnProperty(blockTmp)) {
if (lock["user"] === this._userId) {
//Do call back
this._lockCallbacks[blockTmp]({"lock": this._locks[blockTmp]});
} else {
this._lockCallbacks[blockTmp]({"error": "Already locked by " + lock["user"]});
}
if (this._lockCallbacksErrorTimerId.hasOwnProperty(blockTmp)) {
clearTimeout(this._lockCallbacksErrorTimerId[blockTmp]);
delete this._lockCallbacksErrorTimerId[blockTmp];
}
delete this._lockCallbacks[blockTmp];
}
if (this.onLocksAcquired && changed) {
this.onLocksAcquired(this._locks[blockTmp]);
}
}
}
}
}
};
DocsCoApi.prototype._onReleaseLock = function(data) {
if (this.check_state() && data["locks"]) {
var bSendEnd = false;
for (var block in data["locks"]) {
if (data["locks"].hasOwnProperty(block)) {
var lock = data["locks"][block], blockTmp = (this._isExcel || this._isPresentation) ? lock["block"]["guid"] : lock["block"];
if (lock !== null) {
this._locks[blockTmp] = {"state": 0, "user": lock["user"], "time": lock["time"], "changes": lock["changes"], "block": lock["block"]};
if (this.onLocksReleased) {
// false - user not save changes
this.onLocksReleased(this._locks[blockTmp], false);
bSendEnd = true;
}
}
}
}
if (bSendEnd && this.onLocksReleasedEnd) {
this.onLocksReleasedEnd();
}
}
};
DocsCoApi.prototype._documentOpen = function(data) {
this.onDocumentOpen(data);
};
DocsCoApi.prototype._onSaveChanges = function(data, useEncryption) {
if (!this.check_state()) {
if (!this.get_isAuth()) {
this._authOtherChanges.push(data);
}
return;
}
if (!useEncryption && AscCommon.EncryptionWorker && AscCommon.EncryptionWorker.isInit())
return AscCommon.EncryptionWorker.sendChanges(this, data, AscCommon.EncryptionMessageType.Decrypt);
if (data["locks"]) {
var bSendEnd = false;
for (var block in data["locks"]) {
if (data["locks"].hasOwnProperty(block)) {
var lock = data["locks"][block];
if (lock !== null) {
var blockTmp = (this._isExcel || this._isPresentation) ? lock["block"]["guid"] : lock["block"];
this._locks[blockTmp] = {"state": 0, "user": lock["user"], "time": lock["time"], "changes": lock["changes"], "block": lock["block"]};
if (this.onLocksReleased) {
// true - lock with save
this.onLocksReleased(this._locks[blockTmp], true);
bSendEnd = true;
}
}
}
}
if (bSendEnd && this.onLocksReleasedEnd) {
this.onLocksReleasedEnd();
}
}
this._updateChanges(data["changes"], data["changesIndex"], false);
if (this.onRecalcLocks) {
this.onRecalcLocks(data["excelAdditionalInfo"]);
}
};
DocsCoApi.prototype._onStartCoAuthoring = function(isStartEvent, isWaitAuth) {
if (false === this.isCoAuthoring) {
this.isCoAuthoring = true;
if (this.onStartCoAuthoring) {
this.onStartCoAuthoring(isStartEvent);
}
} else if (isWaitAuth) {
//it is a stub for unexpected situation(no direct reproduce scenery)
//isCoAuthoring is true when more then one editor, but isWaitAuth mean than server has one editor
this.canUnlockDocument = true;
this.unLockDocument(false);
}
};
DocsCoApi.prototype._onEndCoAuthoring = function(isStartEvent) {
if (true === this.isCoAuthoring) {
this.isCoAuthoring = false;
if (this.onEndCoAuthoring) {
this.onEndCoAuthoring(isStartEvent);
}
}
};
DocsCoApi.prototype._onSaveLock = function (data) {
if (null != data["saveLock"]) {
var indexCallback = this._saveCallback.length - 1;
var oTmpCallback = this._saveCallback[indexCallback];
if (oTmpCallback) {
// Очищаем предыдущий таймер
if (null !== this.saveLockCallbackErrorTimeOutId) {
clearTimeout(this.saveLockCallbackErrorTimeOutId);
this.saveLockCallbackErrorTimeOutId = null;
}
this._saveCallback[indexCallback] = null;
oTmpCallback(data);
}
}
if (null == data["saveLock"] || data['error'] || data["saveLock"]) {
this._state = ConnectionState.Authorized;
// Делаем отложенные lock-и
this._sendBufferedLocks();
}
};
DocsCoApi.prototype._onUnSaveLock = function(data) {
// Очищаем предыдущий таймер сохранения
if (null !== this.saveCallbackErrorTimeOutId) {
clearTimeout(this.saveCallbackErrorTimeOutId);
this.saveCallbackErrorTimeOutId = null;
}
// Очищаем предыдущий таймер снятия блокировки
if (null !== this.unSaveLockCallbackErrorTimeOutId) {
clearTimeout(this.unSaveLockCallbackErrorTimeOutId);
this.unSaveLockCallbackErrorTimeOutId = null;
}
// Возвращаем состояние
this._state = ConnectionState.Authorized;
// Делаем отложенные lock-и
this._sendBufferedLocks();
if (-1 !== data['index']) {
this.changesIndex = data['index'];
}
if (-1 !== data['time']) {
this.lastOwnSaveTime = data['time'];
}
if (this.onUnSaveLock) {
this.onUnSaveLock();
}
};
DocsCoApi.prototype._updateChanges = function(allServerChanges, changesIndex, bFirstLoad) {
if (this.onSaveChanges) {
this.changesIndex = changesIndex;
if (allServerChanges) {
for (var i = 0; i < allServerChanges.length; ++i) {
var change = allServerChanges[i];
var changesOneUser = change['change'];
if (changesOneUser) {
if (change['user'] !== this._userId) {
this.lastOtherSaveTime = change['time'];
}
this.onSaveChanges(JSON.parse(changesOneUser), change['useridoriginal'], bFirstLoad);
}
}
}
}
};
DocsCoApi.prototype._onSetIndexUser = function(data) {
if (this.onSetIndexUser) {
this.onSetIndexUser(data);
}
};
DocsCoApi.prototype._onSpellCheckInit = function(data) {
if (this.onSpellCheckInit) {
this.onSpellCheckInit(data);
}
};
DocsCoApi.prototype._onSavePartChanges = function(data) {
// Очищаем предыдущий таймер
if (null !== this.saveCallbackErrorTimeOutId) {
clearTimeout(this.saveCallbackErrorTimeOutId);
this.saveCallbackErrorTimeOutId = null;
}
if (-1 !== data['changesIndex']) {
this.changesIndex = data['changesIndex'];
}
this.saveChanges(this.arrayChanges, this.currentIndex + 1);
};
DocsCoApi.prototype._onPreviousLocks = function(locks, previousLocks) {
var i = 0;
if (locks && previousLocks) {
for (var block in locks) {
if (locks.hasOwnProperty(block)) {
var lock = locks[block];
if (lock !== null && lock["block"]) {
//Find in previous
for (i = 0; i < previousLocks.length; i++) {
if (previousLocks[i] === lock["block"] && lock["user"] === this._userId) {
//Lock is ours
previousLocks.remove(i);
break;
}
}
}
}
}
if (previousLocks.length > 0 && this.onRelockFailed) {
this.onRelockFailed(previousLocks);
}
previousLocks = [];
}
};
DocsCoApi.prototype._onParticipantsChanged = function(participants, needChanged) {
var participantsNew = {};
var countEditUsersNew = 0;
var countUsersNew = 0;
var tmpUser;
var i;
var usersStateChanged = [];
if (participants) {
for (i = 0; i < participants.length; ++i) {
tmpUser = new AscCommon.asc_CUser(participants[i]);
participantsNew[tmpUser.asc_getId()] = tmpUser;
if (!tmpUser.asc_getView()) {
++countEditUsersNew;
}
++countUsersNew;
}
}
if (needChanged) {
for (i in participantsNew) {
if (!this._participants[i]) {
tmpUser = participantsNew[i];
tmpUser.setState(true);
usersStateChanged.push(tmpUser);
}
}
for (i in this._participants) {
if (!participantsNew[i]) {
tmpUser = this._participants[i];
tmpUser.setState(false);
usersStateChanged.push(tmpUser);
}
}
}
this._participants = participantsNew;
this._countEditUsers = countEditUsersNew;
this._countUsers = countUsersNew;
return usersStateChanged;
};
DocsCoApi.prototype._onAuthParticipantsChanged = function(participants) {
this._participants = {};
this._countEditUsers = 0;
this._countUsers = 0;
if (participants) {
this._onParticipantsChanged(participants);
if (this.onAuthParticipantsChanged) {
this.onAuthParticipantsChanged(this._participants, this._userId);
}
// Посылаем эвент о совместном редактировании
if (1 < this._countEditUsers) {
this._onStartCoAuthoring(/*isStartEvent*/true);
} else {
this._onEndCoAuthoring(/*isStartEvent*/true);
}
}
};
DocsCoApi.prototype._onConnectionStateChanged = function(data) {
var t = this;
if (!this.check_state()) {
this._msgInputBuffer.push(function () {
t._onConnectionStateChanged(data);
});
return;
}
var isWaitAuth = data['waitAuth'];
var usersStateChanged;
if (this.onConnectionStateChanged && (!this._participantsTimestamp || this._participantsTimestamp <= data['participantsTimestamp'])) {
this._participantsTimestamp = data['participantsTimestamp'];
usersStateChanged = this._onParticipantsChanged(data['participants'], true);
if (usersStateChanged.length > 0) {
// Посылаем эвент о совместном редактировании
if (1 < this._countEditUsers) {
this._onStartCoAuthoring(/*isStartEvent*/false, isWaitAuth);
} else {
this._onEndCoAuthoring(/*isStartEvent*/false);
}
this.onParticipantsChanged(this._participants);
for (var i = 0; i < usersStateChanged.length; ++i) {
this.onConnectionStateChanged(usersStateChanged[i]);
}
}
}
};
DocsCoApi.prototype._onLicenseChanged = function (data) {
this.onLicenseChanged(data['licenseType']);
};
DocsCoApi.prototype._onDrop = function(data) {
this.disconnect();
this.onDisconnect(data ? data['description'] : '', this._getDisconnectErrorCode());
};
DocsCoApi.prototype._onWarning = function(data) {
this.onWarning(Asc.c_oAscError.ID.Warning);
};
DocsCoApi.prototype._onLicense = function(data) {
if (!this.isLicenseInit) {
this.isLicenseInit = true;
this.onLicense(data['license']);
}
};
DocsCoApi.prototype._onAuth = function(data) {
var t = this;
this._onRefreshToken(data['jwt']);
if (true === this._isAuth) {
this._state = ConnectionState.Authorized;
// Мы должны только соединиться для получения файла. Совместное редактирование уже было отключено.
if (this.isCloseCoAuthoring) {
return;
}
this._onServerVersion(data);
this._onLicenseChanged(data);
// Мы уже авторизовывались, нужно обновить пользователей (т.к. пользователи могли входить и выходить пока у нас не было соединения)
this._onAuthParticipantsChanged(data['participants']);
//if (this.ownedLockBlocks && this.ownedLockBlocks.length > 0) {
// this._onPreviousLocks(data["locks"], this.ownedLockBlocks);
//}
this._onMessages(data, true);
this._onGetLock(data);
//Apply prebuffered
this._applyPrebuffered();
if (this._isReSaveAfterAuth) {
this._isReSaveAfterAuth = false;
var callbackAskSaveChanges = function(e) {
if (false === e["saveLock"]) {
t._reSaveChanges(2);
} else {
setTimeout(function() {
t.askSaveChanges(callbackAskSaveChanges);
}, 1000);
}
};
this.askSaveChanges(callbackAskSaveChanges);
}
return;
}
if (data['result'] === 1) {
// Выставляем флаг, что мы уже авторизовывались
this._isAuth = true;
//TODO: add checks
this._state = ConnectionState.Authorized;
this._id = data['sessionId'];
this._indexUser = data['indexUser'];
this._userId = this._user.asc_getId() + this._indexUser;
this._sessionTimeConnect = data['sessionTimeConnect'];
if (data['settings'] && data['settings']['reconnection']) {
this.maxAttemptCount = data['settings']['reconnection']['attempts'];
this.reconnectInterval = data['settings']['reconnection']['delay'];
}
this._onLicenseChanged(data);
this._onAuthParticipantsChanged(data['participants']);
this._onSpellCheckInit(data['g_cAscSpellCheckUrl']);
this._onSetIndexUser(this._indexUser);
this._onMessages(data, false);
this._onGetLock(data);
if (data['hasForgotten']) {
this._onHasForgotten();
}
// Применения изменений пользователя
if (window['AscApplyChanges'] && window['AscChanges']) {
var userOfflineChanges = window['AscChanges'], changeOneUser;
for (var i = 0; i < userOfflineChanges.length; ++i) {
changeOneUser = userOfflineChanges[i];
for (var j = 0; j < changeOneUser.length; ++j)
this.onSaveChanges(changeOneUser[j], null, true);
}
}
this._updateAuthChanges();
// Посылать нужно всегда, т.к. на это рассчитываем при открытии
if (this.onFirstLoadChangesEnd) {
this.onFirstLoadChangesEnd();
}
//Apply prebuffered
this._applyPrebuffered();
//Send prebuffered
this._sendPrebuffered();
}
//TODO: Add errors
};
DocsCoApi.prototype._onAuthChanges = function(data) {
this._authChanges.push(data["changes"]);
};
DocsCoApi.prototype._updateAuthChanges = function() {
//todo apply changes with chunk on arrival
var changesIndex = 0, i, changes, data, indexDiff;
for (i = 0; i < this._authChanges.length; ++i) {
changes = this._authChanges[i];
changesIndex += changes.length;
this._updateChanges(changes, changesIndex, true);
}
this._authChanges = [];
for (i = 0; i < this._authOtherChanges.length; ++i) {
data = this._authOtherChanges[i];
indexDiff = data["changesIndex"] - changesIndex;
if (indexDiff > 0) {
if (indexDiff >= data["changes"].length) {
changes = data["changes"];
} else {
changes = data["changes"].splice(data["changes"].length - indexDiff, indexDiff);
}
changesIndex += changes.length;
this._updateChanges(changes, changesIndex, true);
}
}
this._authOtherChanges = [];
};
DocsCoApi.prototype.init = function(user, docid, documentCallbackUrl, token, editorType, documentFormatSave, docInfo) {
this._user = user;
this._docid = null;
this._documentCallbackUrl = documentCallbackUrl;
this._token = token;
this.ownedLockBlocks = [];
this.sockjs_url = null;
this.editorType = editorType;
this._isExcel = c_oEditorId.Spreadsheet === editorType;
this._isPresentation = c_oEditorId.Presentation === editorType;
this._isAuth = false;
this._documentFormatSave = documentFormatSave;
this.mode = docInfo.get_Mode();
this.permissions = docInfo.get_Permissions();
this.lang = docInfo.get_Lang();
this.jwtOpen = docInfo.get_Token();
this.encrypted = docInfo.get_Encrypted();
this.setDocId(docid);
this._initSocksJs();
};
DocsCoApi.prototype.getDocId = function() {
return this._docid;
};
DocsCoApi.prototype.setDocId = function(docid) {
//todo возможно надо менять sockjs_url
this._docid = docid;
this.sockjs_url = AscCommon.getBaseUrl() + '../../../../doc/' + docid + '/c';
};
// Авторизация (ее нужно делать после выставления состояния редактора view-mode)
DocsCoApi.prototype.auth = function(isViewer, opt_openCmd, opt_isIdle) {
this._isViewer = isViewer;
if (this._locks) {
this.ownedLockBlocks = [];
//If we already have locks
for (var block in this._locks) if (this._locks.hasOwnProperty(block)) {
var lock = this._locks[block];
if (lock["state"] === 2) {
//Our lock.
this.ownedLockBlocks.push(lock["blockValue"]);
}
}
this._locks = {};
}
this._send({
'type': 'auth',
'docid': this._docid,
'documentCallbackUrl': this._documentCallbackUrl,
'token': this._token,
'user': {
'id': this._user.asc_getId(),
'username': this._user.asc_getUserName(),
'firstname': this._user.asc_getFirstName(),
'lastname': this._user.asc_getLastName(),
'indexUser': this._indexUser
},
'editorType': this.editorType,
'lastOtherSaveTime': this.lastOtherSaveTime,
'block': this.ownedLockBlocks,
'sessionId': this._id,
'sessionTimeConnect': this._sessionTimeConnect,
'sessionTimeIdle': opt_isIdle >= 0 ? opt_isIdle : 0,
'documentFormatSave': this._documentFormatSave,
'view': this._isViewer,
'isCloseCoAuthoring': this.isCloseCoAuthoring,
'openCmd': opt_openCmd,
'lang': this.lang,
'mode': this.mode,
'permissions': this.permissions,
'encrypted': this.encrypted,
'jwtOpen': this.jwtOpen,
'jwtSession': this.jwtSession
});
};
DocsCoApi.prototype._initSocksJs = function () {
var t = this;
var sockjs;
sockjs = this.sockjs = {};
var send = function (data) {
setTimeout(function () {
sockjs.onmessage({
data: JSON.stringify(data)
});
});
};
var license = {
type: 'license',
license: {
type: 3,
mode: 0,
//light: false,
//trial: false,
rights: 1,
buildVersion: "5.2.6",
buildNumber: 2,
//branding: false
}
};
var channel;
require([
'/common/outer/worker-channel.js',
'/common/common-util.js'
], function (Channel, Util) {
var msgEv = Util.mkEvent();
var p = window.parent;
window.addEventListener('message', function (msg) {
if (msg.source !== p) { return; }
msgEv.fire(msg);
});
var postMsg = function (data) {
p.postMessage(data, '*');
};
Channel.create(msgEv, postMsg, function (chan) {
channel = chan;
send(license);
chan.on('CMD', function (obj) {
send(obj);
});
});
});
sockjs.onopen = function() {
t._state = ConnectionState.WaitAuth;
t.onFirstConnect();
};
sockjs.onopen();
sockjs.close = function () {
console.error('Close realtime');
};
sockjs.send = function (data) {
try {
var obj = JSON.parse(data);
} catch (e) {
console.error(e);
return;
}
if (channel) {
channel.event('CMD', obj);
}
};
sockjs.onmessage = function (e) {
t._onServerMessage(e.data);
};
return sockjs;
};
DocsCoApi.prototype._onServerOpen = function () {
if (this.reconnectTimeout) {
clearTimeout(this.reconnectTimeout);
this.reconnectTimeout = null;
this.attemptCount = 0;
}
this._state = ConnectionState.WaitAuth;
this.onFirstConnect();
};
DocsCoApi.prototype._onServerMessage = function (data) {
//TODO: add checks and error handling
//Get data type
var dataObject = JSON.parse(data);
switch (dataObject['type']) {
case 'auth' :
this._onAuth(dataObject);
break;
case 'message' :
this._onMessages(dataObject, false);
break;
case 'cursor' :
this._onCursor(dataObject);
break;
case 'meta' :
this._onMeta(dataObject);
break;
case 'getLock' :
this._onGetLock(dataObject);
break;
case 'releaseLock' :
this._onReleaseLock(dataObject);
break;
case 'connectState' :
this._onConnectionStateChanged(dataObject);
break;
case 'saveChanges' :
this._onSaveChanges(dataObject);
break;
case 'authChanges' :
this._onAuthChanges(dataObject);
break;
case 'saveLock' :
this._onSaveLock(dataObject);
break;
case 'unSaveLock' :
this._onUnSaveLock(dataObject);
break;
case 'savePartChanges' :
this._onSavePartChanges(dataObject);
break;
case 'drop' :
this._onDrop(dataObject);
break;
case 'waitAuth' : /*Ждем, когда придет auth, документ залочен*/
break;
case 'error' : /*Старая версия sdk*/
this._onDrop(dataObject);
break;
case 'documentOpen' :
this._documentOpen(dataObject);
break;
case 'warning':
this._onWarning(dataObject);
break;
case 'license':
this._onLicense(dataObject);
break;
case 'session' :
this._onSession(dataObject);
break;
case 'refreshToken' :
this._onRefreshToken(dataObject["messages"]);
break;
case 'expiredToken' :
this._onExpiredToken();
break;
case 'forceSaveStart' :
this._onForceSaveStart(dataObject["messages"]);
break;
case 'forceSave' :
this._onForceSave(dataObject["messages"]);
break;
}
};
DocsCoApi.prototype._onServerClose = function (evt) {
if (ConnectionState.SaveChanges === this._state) {
// Мы сохраняли изменения и разорвалось соединение
this._isReSaveAfterAuth = true;
// Очищаем предыдущий таймер
if (null !== this.saveCallbackErrorTimeOutId) {
clearTimeout(this.saveCallbackErrorTimeOutId);
this.saveCallbackErrorTimeOutId = null;
}
}
this._state = ConnectionState.Reconnect;
var bIsDisconnectAtAll = ((c_oCloseCode.serverShutdown <= evt.code && evt.code <= c_oCloseCode.drop) ||
this.attemptCount >= this.maxAttemptCount);
var error = null;
if (bIsDisconnectAtAll) {
this._state = ConnectionState.ClosedAll;
error = this._getDisconnectErrorCode(evt.code);
}
if (this.onDisconnect) {
this.onDisconnect(evt.reason, error);
}
//Try reconect
if (!bIsDisconnectAtAll) {
this._tryReconnect();
}
};
DocsCoApi.prototype._reconnect = function () {
delete this.sockjs;
this._initSocksJs();
};
DocsCoApi.prototype._tryReconnect = function () {
var t = this;
if (this.reconnectTimeout) {
clearTimeout(this.reconnectTimeout);
t.reconnectTimeout = null;
}
++this.attemptCount;
this.reconnectTimeout = setTimeout(function () {
t._reconnect();
}, this.reconnectInterval);
};
DocsCoApi.prototype._getDisconnectErrorCode = function(opt_closeCode) {
var code = this.isCloseCoAuthoring ? Asc.c_oAscError.ID.UserDrop : Asc.c_oAscError.ID.CoAuthoringDisconnect;
var level = Asc.c_oAscError.Level.NoCritical;
if (c_oCloseCode.serverShutdown === opt_closeCode) {
code = Asc.c_oAscError.ID.CoAuthoringDisconnect;
} else if (c_oCloseCode.sessionIdle === opt_closeCode) {
code = Asc.c_oAscError.ID.SessionIdle;
} else if (c_oCloseCode.sessionAbsolute === opt_closeCode) {
code = Asc.c_oAscError.ID.SessionAbsolute;
} else if (c_oCloseCode.accessDeny === opt_closeCode) {
code = Asc.c_oAscError.ID.AccessDeny;
} else if (c_oCloseCode.jwtExpired === opt_closeCode) {
if (this.jwtSession) {
code = Asc.c_oAscError.ID.SessionToken;
} else {
code = Asc.c_oAscError.ID.KeyExpire;
level = Asc.c_oAscError.Level.Critical;
}
} else if (c_oCloseCode.jwtError === opt_closeCode) {
code = Asc.c_oAscError.ID.VKeyEncrypt;
level = Asc.c_oAscError.Level.Critical;
} else if (c_oCloseCode.drop === opt_closeCode) {
code = Asc.c_oAscError.ID.UserDrop;
}
return {code: code, level: level};
};
//----------------------------------------------------------export----------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].CDocsCoApi = CDocsCoApi;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
var Asc = window['Asc'];
var AscCommon = window['AscCommon'];
// Import
var prot;
var c_oAscMouseMoveDataTypes = AscCommon.c_oAscMouseMoveDataTypes;
var c_oAscColor = Asc.c_oAscColor;
var c_oAscFill = Asc.c_oAscFill;
var c_oAscFillBlipType = Asc.c_oAscFillBlipType;
var c_oAscChartTypeSettings = Asc.c_oAscChartTypeSettings;
var c_oAscTickMark = Asc.c_oAscTickMark;
var c_oAscAxisType = Asc.c_oAscAxisType;
// ---------------------------------------------------------------------------------------------------------------
var c_oAscArrUserColors = [16757719, 7929702, 56805, 10081791, 12884479, 16751001, 6748927, 16762931, 6865407,
15650047, 16737894, 3407768, 16759142, 10852863, 6750176, 16774656, 13926655, 13815039, 3397375, 11927347, 16752947,
9404671, 4980531, 16744678, 3407830, 15919360, 16731553, 52479, 13330175, 16743219, 3386367, 14221056, 16737966,
1896960, 65484, 10970879, 16759296, 16711680, 13496832, 62072, 49906, 16734720, 10682112, 7890687, 16731610, 65406,
38655, 16747008, 59890, 12733951, 15859712, 47077, 15050496, 15224319, 10154496, 58807, 16724950, 1759488, 9981439,
15064320, 15893248, 16724883, 58737, 15007744, 36594, 12772608, 12137471, 6442495, 15039488, 16718470, 14274816,
53721, 16718545, 1625088, 15881472, 13419776, 32985, 16711800, 1490688, 16711884, 8991743, 13407488, 41932, 7978752,
15028480, 52387, 15007927, 12114176, 1421824, 55726, 13041893, 10665728, 30924, 49049, 14241024, 36530, 11709440,
13397504, 45710, 34214];
function CreateAscColorCustom(r, g, b, auto) {
var ret = new asc_CColor();
ret.type = c_oAscColor.COLOR_TYPE_SRGB;
ret.r = r;
ret.g = g;
ret.b = b;
ret.a = 255;
ret.Auto = ( undefined === auto ? false : auto );
return ret;
}
function CreateAscColor(unicolor) {
if (null == unicolor || null == unicolor.color) {
return new asc_CColor();
}
var ret = new asc_CColor();
ret.r = unicolor.RGBA.R;
ret.g = unicolor.RGBA.G;
ret.b = unicolor.RGBA.B;
ret.a = unicolor.RGBA.A;
var _color = unicolor.color;
switch (_color.type) {
case c_oAscColor.COLOR_TYPE_SRGB:
case c_oAscColor.COLOR_TYPE_SYS: {
break;
}
case c_oAscColor.COLOR_TYPE_PRST:
case c_oAscColor.COLOR_TYPE_SCHEME: {
ret.type = _color.type;
ret.value = _color.id;
break;
}
default:
break;
}
return ret;
}
function CreateGUID()
{
function s4() { return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1); }
var val = '{' + s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4() + '}';
val = val.toUpperCase();
return val;
}
var c_oLicenseResult = {
Error : 1,
Expired : 2,
Success : 3,
UnknownUser : 4,
Connections : 5,
ExpiredTrial : 6,
SuccessLimit : 7,
UsersCount : 8,
ConnectionsOS : 9,
UsersCountOS : 10
};
var c_oRights = {
None : 0,
Edit : 1,
Review : 2,
Comment : 3,
View : 4
};
var c_oLicenseMode = {
None: 0,
Trial: 1,
Developer: 2
};
var EPluginDataType = {
none: "none",
text: "text",
ole: "ole",
html: "html",
desktop: "desktop"
};
/** @constructor */
function asc_CSignatureLine()
{
this.id = undefined;
this.guid = "";
this.signer1 = "";
this.signer2 = "";
this.email = "";
this.instructions = "";
this.showDate = false;
this.valid = 0;
this.image = "";
this.date = "";
this.isvisible = false;
this.isrequested = false;
}
asc_CSignatureLine.prototype.correct = function()
{
if (this.id == null)
this.id = "0";
if (this.guid == null)
this.guid = "";
if (this.signer1 == null)
this.signer1 = "";
if (this.signer2 == null)
this.signer2 = "";
if (this.email == null)
this.email = "";
if (this.instructions == null)
this.instructions = "";
if (this.showDate == null)
this.showDate = false;
if (this.valid == null)
this.valid = 0;
if (this.image == null)
this.image = "";
if (this.date == null)
this.date = "";
if (this.isvisible == null)
this.isvisible = false;
};
asc_CSignatureLine.prototype.asc_getId = function(){ return this.id; };
asc_CSignatureLine.prototype.asc_setId = function(v){ this.id = v; };
asc_CSignatureLine.prototype.asc_getGuid = function(){ return this.guid; };
asc_CSignatureLine.prototype.asc_setGuid = function(v){ this.guid = v; };
asc_CSignatureLine.prototype.asc_getSigner1 = function(){ return this.signer1; };
asc_CSignatureLine.prototype.asc_setSigner1 = function(v){ this.signer1 = v; };
asc_CSignatureLine.prototype.asc_getSigner2 = function(){ return this.signer2; };
asc_CSignatureLine.prototype.asc_setSigner2 = function(v){ this.signer2 = v; };
asc_CSignatureLine.prototype.asc_getEmail = function(){ return this.email; };
asc_CSignatureLine.prototype.asc_setEmail = function(v){ this.email = v; };
asc_CSignatureLine.prototype.asc_getInstructions = function(){ return this.instructions; };
asc_CSignatureLine.prototype.asc_setInstructions = function(v){ this.instructions = v; };
asc_CSignatureLine.prototype.asc_getShowDate = function(){ return this.showDate; };
asc_CSignatureLine.prototype.asc_setShowDate = function(v){ this.showDate = v; };
asc_CSignatureLine.prototype.asc_getValid = function(){ return this.valid; };
asc_CSignatureLine.prototype.asc_setValid = function(v){ this.valid = v; };
asc_CSignatureLine.prototype.asc_getDate = function(){ return this.date; };
asc_CSignatureLine.prototype.asc_setDate = function(v){ this.date = v; };
asc_CSignatureLine.prototype.asc_getVisible = function(){ return this.isvisible; };
asc_CSignatureLine.prototype.asc_setVisible = function(v){ this.isvisible = v; };
asc_CSignatureLine.prototype.asc_getRequested = function(){ return this.isrequested; };
asc_CSignatureLine.prototype.asc_setRequested = function(v){ this.isrequested = v; };
/**
* Класс asc_CAscEditorPermissions для прав редакторов
* -----------------------------------------------------------------------------
*
* @constructor
* @memberOf Asc
*/
function asc_CAscEditorPermissions() {
this.licenseType = c_oLicenseResult.Error;
this.licenseMode = c_oLicenseMode.None;
this.isLight = false;
this.rights = c_oRights.None;
this.canCoAuthoring = true;
this.canReaderMode = true;
this.canBranding = false;
this.isAutosaveEnable = true;
this.AutosaveMinInterval = 300;
this.isAnalyticsEnable = false;
this.buildVersion = null;
this.buildNumber = null;
return this;
}
asc_CAscEditorPermissions.prototype.asc_getLicenseType = function () {
return this.licenseType;
};
asc_CAscEditorPermissions.prototype.asc_getCanCoAuthoring = function () {
return this.canCoAuthoring;
};
asc_CAscEditorPermissions.prototype.asc_getCanReaderMode = function () {
return this.canReaderMode;
};
asc_CAscEditorPermissions.prototype.asc_getCanBranding = function () {
return this.canBranding;
};
asc_CAscEditorPermissions.prototype.asc_getIsAutosaveEnable = function () {
return this.isAutosaveEnable;
};
asc_CAscEditorPermissions.prototype.asc_getAutosaveMinInterval = function () {
return this.AutosaveMinInterval;
};
asc_CAscEditorPermissions.prototype.asc_getIsAnalyticsEnable = function () {
return this.isAnalyticsEnable;
};
asc_CAscEditorPermissions.prototype.asc_getIsLight = function () {
return this.isLight;
};
asc_CAscEditorPermissions.prototype.asc_getLicenseMode = function () {
return this.licenseMode;
};
asc_CAscEditorPermissions.prototype.asc_getRights = function () {
return this.rights;
};
asc_CAscEditorPermissions.prototype.asc_getBuildVersion = function () {
return this.buildVersion;
};
asc_CAscEditorPermissions.prototype.asc_getBuildNumber = function () {
return this.buildNumber;
};
asc_CAscEditorPermissions.prototype.setLicenseType = function (v) {
this.licenseType = v;
};
asc_CAscEditorPermissions.prototype.setCanBranding = function (v) {
this.canBranding = v;
};
asc_CAscEditorPermissions.prototype.setIsLight = function (v) {
this.isLight = v;
};
asc_CAscEditorPermissions.prototype.setLicenseMode = function (v) {
this.licenseMode = v;
};
asc_CAscEditorPermissions.prototype.setRights = function (v) {
this.rights = v;
};
asc_CAscEditorPermissions.prototype.setBuildVersion = function (v) {
this.buildVersion = v;
};
asc_CAscEditorPermissions.prototype.setBuildNumber = function (v) {
this.buildNumber = v;
};
/** @constructor */
function asc_ValAxisSettings() {
this.minValRule = null;
this.minVal = null;
this.maxValRule = null;
this.maxVal = null;
this.invertValOrder = null;
this.logScale = null;
this.logBase = null;
this.dispUnitsRule = null;
this.units = null;
this.showUnitsOnChart = null;
this.majorTickMark = null;
this.minorTickMark = null;
this.tickLabelsPos = null;
this.crossesRule = null;
this.crosses = null;
this.axisType = c_oAscAxisType.val;
}
asc_ValAxisSettings.prototype = {
isEqual: function(oPr){
if(!oPr){
return false;
}
if(this.minValRule !== oPr.minValRule){
return false;
}
if(this.minVal !== oPr.minVal){
return false;
}
if(this.maxValRule !== oPr.maxValRule){
return false;
}
if(this.maxVal !== oPr.maxVal){
return false;
}
if(this.invertValOrder !== oPr.invertValOrder){
return false;
}
if(this.logScale !== oPr.logScale){
return false;
}
if(this.logBase !== oPr.logBase){
return false;
}
if(this.dispUnitsRule !== oPr.dispUnitsRule){
return false;
}
if(this.units !== oPr.units){
return false;
}
if(this.showUnitsOnChart !== oPr.showUnitsOnChart){
return false;
}
if(this.majorTickMark !== oPr.majorTickMark){
return false;
}
if(this.minorTickMark !== oPr.minorTickMark){
return false;
}
if(this.tickLabelsPos !== oPr.tickLabelsPos){
return false;
}
if(this.crossesRule !== oPr.crossesRule){
return false;
}
if(this.crosses !== oPr.crosses){
return false;
}
if(this.axisType !== oPr.axisType){
return false;
}
return true;
},
putAxisType: function (v) {
this.axisType = v;
},
putMinValRule: function (v) {
this.minValRule = v;
}, putMinVal: function (v) {
this.minVal = v;
}, putMaxValRule: function (v) {
this.maxValRule = v;
}, putMaxVal: function (v) {
this.maxVal = v;
}, putInvertValOrder: function (v) {
this.invertValOrder = v;
}, putLogScale: function (v) {
this.logScale = v;
}, putLogBase: function (v) {
this.logBase = v;
}, putUnits: function (v) {
this.units = v;
}, putShowUnitsOnChart: function (v) {
this.showUnitsOnChart = v;
}, putMajorTickMark: function (v) {
this.majorTickMark = v;
}, putMinorTickMark: function (v) {
this.minorTickMark = v;
}, putTickLabelsPos: function (v) {
this.tickLabelsPos = v;
}, putCrossesRule: function (v) {
this.crossesRule = v;
}, putCrosses: function (v) {
this.crosses = v;
},
putDispUnitsRule: function (v) {
this.dispUnitsRule = v;
},
getAxisType: function () {
return this.axisType;
},
getDispUnitsRule: function () {
return this.dispUnitsRule;
},
getMinValRule: function () {
return this.minValRule;
}, getMinVal: function () {
return this.minVal;
}, getMaxValRule: function () {
return this.maxValRule;
}, getMaxVal: function () {
return this.maxVal;
}, getInvertValOrder: function () {
return this.invertValOrder;
}, getLogScale: function () {
return this.logScale;
}, getLogBase: function () {
return this.logBase;
}, getUnits: function () {
return this.units;
}, getShowUnitsOnChart: function () {
return this.showUnitsOnChart;
}, getMajorTickMark: function () {
return this.majorTickMark;
}, getMinorTickMark: function () {
return this.minorTickMark;
}, getTickLabelsPos: function () {
return this.tickLabelsPos;
}, getCrossesRule: function () {
return this.crossesRule;
}, getCrosses: function () {
return this.crosses;
}, setDefault: function () {
this.putMinValRule(Asc.c_oAscValAxisRule.auto);
this.putMaxValRule(Asc.c_oAscValAxisRule.auto);
this.putTickLabelsPos(Asc.c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO);
this.putInvertValOrder(false);
this.putDispUnitsRule(Asc.c_oAscValAxUnits.none);
this.putMajorTickMark(c_oAscTickMark.TICK_MARK_OUT);
this.putMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
this.putCrossesRule(Asc.c_oAscCrossesRule.auto);
}
};
/** @constructor */
function asc_CatAxisSettings() {
this.intervalBetweenTick = null;
this.intervalBetweenLabelsRule = null;
this.intervalBetweenLabels = null;
this.invertCatOrder = null;
this.labelsAxisDistance = null;
this.majorTickMark = null;
this.minorTickMark = null;
this.tickLabelsPos = null;
this.crossesRule = null;
this.crosses = null;
this.labelsPosition = null;
this.axisType = c_oAscAxisType.cat;
this.crossMinVal = null;
this.crossMaxVal = null;
}
asc_CatAxisSettings.prototype = {
isEqual: function(oPr){
if(!oPr){
return false;
}
if(this.intervalBetweenTick !== oPr.intervalBetweenTick){
return false;
}
if(this.intervalBetweenLabelsRule !== oPr.intervalBetweenLabelsRule){
return false;
}
if(this.intervalBetweenLabels !== oPr.intervalBetweenLabels){
return false;
}
if(this.invertCatOrder !== oPr.invertCatOrder){
return false;
}
if(this.labelsAxisDistance !== oPr.labelsAxisDistance){
return false;
}
if(this.majorTickMark !== oPr.majorTickMark){
return false;
}
if(this.minorTickMark !== oPr.minorTickMark){
return false;
}
if(this.tickLabelsPos !== oPr.tickLabelsPos){
return false;
}
if(this.crossesRule !== oPr.crossesRule){
return false;
}
if(this.crosses !== oPr.crosses){
return false;
}
if(this.labelsPosition !== oPr.labelsPosition){
return false;
}
if(this.axisType !== oPr.axisType){
return false;
}
if(this.crossMinVal !== oPr.crossMinVal){
return false;
}
if(this.crossMaxVal !== oPr.crossMaxVal){
return false;
}
return true;
},
putIntervalBetweenTick: function (v) {
this.intervalBetweenTick = v;
}, putIntervalBetweenLabelsRule: function (v) {
this.intervalBetweenLabelsRule = v;
}, putIntervalBetweenLabels: function (v) {
this.intervalBetweenLabels = v;
}, putInvertCatOrder: function (v) {
this.invertCatOrder = v;
}, putLabelsAxisDistance: function (v) {
this.labelsAxisDistance = v;
}, putMajorTickMark: function (v) {
this.majorTickMark = v;
}, putMinorTickMark: function (v) {
this.minorTickMark = v;
}, putTickLabelsPos: function (v) {
this.tickLabelsPos = v;
}, putCrossesRule: function (v) {
this.crossesRule = v;
}, putCrosses: function (v) {
this.crosses = v;
},
putAxisType: function (v) {
this.axisType = v;
},
putLabelsPosition: function (v) {
this.labelsPosition = v;
},
getIntervalBetweenTick: function (v) {
return this.intervalBetweenTick;
},
getIntervalBetweenLabelsRule: function () {
return this.intervalBetweenLabelsRule;
}, getIntervalBetweenLabels: function () {
return this.intervalBetweenLabels;
}, getInvertCatOrder: function () {
return this.invertCatOrder;
}, getLabelsAxisDistance: function () {
return this.labelsAxisDistance;
}, getMajorTickMark: function () {
return this.majorTickMark;
}, getMinorTickMark: function () {
return this.minorTickMark;
}, getTickLabelsPos: function () {
return this.tickLabelsPos;
}, getCrossesRule: function () {
return this.crossesRule;
}, getCrosses: function () {
return this.crosses;
},
getAxisType: function () {
return this.axisType;
},
getLabelsPosition: function () {
return this.labelsPosition;
},
getCrossMinVal: function () {
return this.crossMinVal;
},
getCrossMaxVal: function () {
return this.crossMaxVal;
},
putCrossMinVal: function (val) {
this.crossMinVal = val;
},
putCrossMaxVal: function (val) {
this.crossMaxVal = val;
},
setDefault: function () {
this.putIntervalBetweenLabelsRule(Asc.c_oAscBetweenLabelsRule.auto);
this.putLabelsPosition(Asc.c_oAscLabelsPosition.betweenDivisions);
this.putTickLabelsPos(Asc.c_oAscTickLabelsPos.TICK_LABEL_POSITION_NEXT_TO);
this.putLabelsAxisDistance(100);
this.putMajorTickMark(c_oAscTickMark.TICK_MARK_OUT);
this.putMinorTickMark(c_oAscTickMark.TICK_MARK_NONE);
this.putIntervalBetweenTick(1);
this.putCrossesRule(Asc.c_oAscCrossesRule.auto);
}
};
/** @constructor */
function asc_ChartSettings() {
this.style = null;
this.title = null;
this.rowCols = null;
this.horAxisLabel = null;
this.vertAxisLabel = null;
this.legendPos = null;
this.dataLabelsPos = null;
this.vertAx = null;
this.horAx = null;
this.horGridLines = null;
this.vertGridLines = null;
this.type = null;
this.showSerName = null;
this.showCatName = null;
this.showVal = null;
this.separator = null;
this.horAxisProps = null;
this.vertAxisProps = null;
this.range = null;
this.inColumns = null;
this.showMarker = null;
this.bLine = null;
this.smooth = null;
this.showHorAxis = null;
this.showVerAxis = null;
}
asc_ChartSettings.prototype = {
equalBool: function(a, b){
return ((!!a) === (!!b));
},
isEqual: function(oPr){
if(!oPr){
return false;
}
if(this.style !== oPr.style){
return false;
}
if(this.title !== oPr.title){
return false;
}
if(this.rowCols !== oPr.rowCols){
return false;
}
if(this.horAxisLabel !== oPr.horAxisLabel){
return false;
}
if(this.vertAxisLabel !== oPr.vertAxisLabel){
return false;
}
if(this.legendPos !== oPr.legendPos){
return false;
}
if(this.dataLabelsPos !== oPr.dataLabelsPos){
return false;
}
if(this.vertAx !== oPr.vertAx){
return false;
}
if(this.horAx !== oPr.horAx){
return false;
}
if(this.horGridLines !== oPr.horGridLines){
return false;
}
if(this.vertGridLines !== oPr.vertGridLines){
return false;
}
if(this.type !== oPr.type){
return false;
}
if(!this.equalBool(this.showSerName, oPr.showSerName)){
return false;
}
if(!this.equalBool(this.showCatName, oPr.showCatName)){
return false;
}
if(!this.equalBool(this.showVal, oPr.showVal)){
return false;
}
if(this.separator !== oPr.separator &&
!(this.separator === ' ' && oPr.separator == null || oPr.separator === ' ' && this.separator == null)){
return false;
}
if(!this.horAxisProps){
if(oPr.horAxisProps){
return false;
}
}
else{
if(!this.horAxisProps.isEqual(oPr.horAxisProps)){
return false;
}
}
if(!this.vertAxisProps){
if(oPr.vertAxisProps){
return false;
}
}
else{
if(!this.vertAxisProps.isEqual(oPr.vertAxisProps)){
return false;
}
}
if(this.range !== oPr.range){
return false;
}
if(!this.equalBool(this.inColumns, oPr.inColumns)){
return false;
}
if(!this.equalBool(this.showMarker, oPr.showMarker)){
return false;
}
if(!this.equalBool(this.bLine, oPr.bLine)){
return false;
}
if(!this.equalBool(this.smooth, oPr.smooth)){
return false;
}
if(!this.equalBool(this.showHorAxis, oPr.showHorAxis)){
return false;
}
if(!this.equalBool(this.showVerAxis, oPr.showVerAxis)){
return false;
}
return true;
},
putShowMarker: function (v) {
this.showMarker = v;
},
getShowMarker: function () {
return this.showMarker;
},
putLine: function (v) {
this.bLine = v;
},
getLine: function () {
return this.bLine;
},
putSmooth: function (v) {
this.smooth = v;
},
getSmooth: function () {
return this.smooth;
},
putStyle: function (index) {
this.style = parseInt(index, 10);
},
getStyle: function () {
return this.style;
},
putRange: function (range) {
this.range = range;
},
getRange: function () {
return this.range;
},
putInColumns: function (inColumns) {
this.inColumns = inColumns;
},
getInColumns: function () {
return this.inColumns;
},
putTitle: function (v) {
this.title = v;
},
getTitle: function () {
return this.title;
},
putRowCols: function (v) {
this.rowCols = v;
},
getRowCols: function () {
return this.rowCols;
},
putHorAxisLabel: function (v) {
this.horAxisLabel = v;
}, putVertAxisLabel: function (v) {
this.vertAxisLabel = v;
}, putLegendPos: function (v) {
this.legendPos = v;
}, putDataLabelsPos: function (v) {
this.dataLabelsPos = v;
}, putCatAx: function (v) {
this.vertAx = v;
}, putValAx: function (v) {
this.horAx = v;
},
getHorAxisLabel: function (v) {
return this.horAxisLabel;
}, getVertAxisLabel: function (v) {
return this.vertAxisLabel;
}, getLegendPos: function (v) {
return this.legendPos;
}, getDataLabelsPos: function (v) {
return this.dataLabelsPos;
}, getVertAx: function (v) {
return this.vertAx;
}, getHorAx: function (v) {
return this.horAx;
},
putHorGridLines: function (v) {
this.horGridLines = v;
},
getHorGridLines: function (v) {
return this.horGridLines;
},
putVertGridLines: function (v) {
this.vertGridLines = v;
},
getVertGridLines: function () {
return this.vertGridLines;
},
getType: function () {
return this.type;
},
putType: function (v) {
return this.type = v;
},
putShowSerName: function (v) {
return this.showSerName = v;
}, putShowCatName: function (v) {
return this.showCatName = v;
}, putShowVal: function (v) {
return this.showVal = v;
},
getShowSerName: function () {
return this.showSerName;
}, getShowCatName: function () {
return this.showCatName;
}, getShowVal: function () {
return this.showVal;
},
putSeparator: function (v) {
this.separator = v;
},
getSeparator: function () {
return this.separator;
},
putHorAxisProps: function (v) {
this.horAxisProps = v;
},
getHorAxisProps: function () {
return this.horAxisProps;
},
putVertAxisProps: function (v) {
this.vertAxisProps = v;
},
getVertAxisProps: function () {
return this.vertAxisProps;
},
checkSwapAxisProps: function(bHBar){
var hor_axis_settings = this.getHorAxisProps();
var vert_axis_settings = this.getVertAxisProps();
if(!bHBar){
if(hor_axis_settings){
if(hor_axis_settings.getAxisType() !== c_oAscAxisType.cat){
if(vert_axis_settings && vert_axis_settings.getAxisType() === c_oAscAxisType.cat){
this.putHorAxisProps(vert_axis_settings);
}
else{
var new_hor_axis_settings = new asc_CatAxisSettings();
new_hor_axis_settings.setDefault();
this.putHorAxisProps(new_hor_axis_settings);
}
}
}
else{
var new_hor_axis_settings = new asc_CatAxisSettings();
new_hor_axis_settings.setDefault();
this.putHorAxisProps(new_hor_axis_settings);
}
if(vert_axis_settings){
if(vert_axis_settings.getAxisType() !== c_oAscAxisType.val){
if(hor_axis_settings && hor_axis_settings.getAxisType() === c_oAscAxisType.val){
this.putVertAxisProps(hor_axis_settings);
}
else{
var new_vert_axis_settings = new asc_ValAxisSettings();
new_vert_axis_settings.setDefault();
this.putVertAxisProps(new_vert_axis_settings);
}
}
}
else{
var new_vert_axis_settings = new asc_ValAxisSettings();
new_vert_axis_settings.setDefault();
this.putVertAxisProps(new_vert_axis_settings);
}
}
else{
if(hor_axis_settings){
if(hor_axis_settings.getAxisType() !== c_oAscAxisType.val){
if(vert_axis_settings && vert_axis_settings.getAxisType() === c_oAscAxisType.val){
this.putHorAxisProps(vert_axis_settings);
}
else{
var new_hor_axis_settings = new asc_ValAxisSettings();
new_hor_axis_settings.setDefault();
this.putHorAxisProps(new_hor_axis_settings);
}
}
}
else{
var new_hor_axis_settings = new asc_ValAxisSettings();
new_hor_axis_settings.setDefault();
this.putHorAxisProps(new_hor_axis_settings);
}
if(vert_axis_settings){
if(vert_axis_settings.getAxisType() !== c_oAscAxisType.cat){
if(hor_axis_settings && hor_axis_settings.getAxisType() === c_oAscAxisType.cat){
this.putVertAxisProps(hor_axis_settings);
}
else{
var new_vert_axis_settings = new asc_CatAxisSettings();
new_vert_axis_settings.setDefault();
this.putVertAxisProps(new_vert_axis_settings);
}
}
}
else{
var new_vert_axis_settings = new asc_CatAxisSettings();
new_vert_axis_settings.setDefault();
this.putVertAxisProps(new_vert_axis_settings);
}
}
},
changeType: function (type) {
if(null === this.type){
this.putType(type);
return;
}
if (this.type === type) {
return;
}
var bSwapGridLines = ((this.type === c_oAscChartTypeSettings.hBarNormal ||
this.type === c_oAscChartTypeSettings.hBarStacked || this.type === c_oAscChartTypeSettings.hBarStackedPer
|| this.type === c_oAscChartTypeSettings.hBarNormal3d || this.type === c_oAscChartTypeSettings.hBarStacked3d
|| this.type === c_oAscChartTypeSettings.hBarStackedPer3d) !==
(type === c_oAscChartTypeSettings.hBarNormal || type === c_oAscChartTypeSettings.hBarStacked ||
type === c_oAscChartTypeSettings.hBarStackedPer || this.type === c_oAscChartTypeSettings.hBarNormal3d
|| this.type === c_oAscChartTypeSettings.hBarStacked3d || this.type === c_oAscChartTypeSettings.hBarStackedPer3d) );
var bSwapLines = ((
type === c_oAscChartTypeSettings.lineNormal || type === c_oAscChartTypeSettings.lineStacked ||
type === c_oAscChartTypeSettings.lineStackedPer || type === c_oAscChartTypeSettings.lineNormalMarker ||
type === c_oAscChartTypeSettings.lineStackedMarker || type === c_oAscChartTypeSettings.lineStackedPerMarker || type === c_oAscChartTypeSettings.line3d
) !== (
this.type === c_oAscChartTypeSettings.lineNormal || this.type === c_oAscChartTypeSettings.lineStacked ||
this.type === c_oAscChartTypeSettings.lineStackedPer ||
this.type === c_oAscChartTypeSettings.lineNormalMarker ||
this.type === c_oAscChartTypeSettings.lineStackedMarker ||
this.type === c_oAscChartTypeSettings.lineStackedPerMarker ||
this.type === c_oAscChartTypeSettings.line3d
));
var bSwapScatter = ((this.type === c_oAscChartTypeSettings.scatter) !==
(type === c_oAscChartTypeSettings.scatter));
var nOldType = this.type;
this.putType(type);
var hor_axis_settings = this.getHorAxisProps();
var vert_axis_settings = this.getVertAxisProps();
var new_hor_axis_settings, new_vert_axis_settings, oTempVal;
if (bSwapGridLines) {
oTempVal = hor_axis_settings;
hor_axis_settings = vert_axis_settings;
vert_axis_settings = oTempVal;
this.putHorAxisProps(hor_axis_settings);
this.putVertAxisProps(vert_axis_settings);
oTempVal = this.horGridLines;
this.putHorGridLines(this.vertGridLines);
this.putVertGridLines(oTempVal);
}
switch (type) {
case c_oAscChartTypeSettings.pie :
case c_oAscChartTypeSettings.pie3d :
case c_oAscChartTypeSettings.doughnut : {
this.putHorAxisProps(null);
this.putVertAxisProps(null);
this.putHorAxisLabel(null);
this.putVertAxisLabel(null);
this.putShowHorAxis(null);
this.putShowVerAxis(null);
break;
}
case c_oAscChartTypeSettings.barNormal :
case c_oAscChartTypeSettings.barStacked :
case c_oAscChartTypeSettings.barStackedPer :
case c_oAscChartTypeSettings.barNormal3d :
case c_oAscChartTypeSettings.barStacked3d :
case c_oAscChartTypeSettings.barStackedPer3d :
case c_oAscChartTypeSettings.barNormal3dPerspective :
case c_oAscChartTypeSettings.lineNormal :
case c_oAscChartTypeSettings.lineStacked :
case c_oAscChartTypeSettings.lineStackedPer :
case c_oAscChartTypeSettings.lineNormalMarker :
case c_oAscChartTypeSettings.lineStackedMarker :
case c_oAscChartTypeSettings.lineStackedPerMarker:
case c_oAscChartTypeSettings.line3d:
case c_oAscChartTypeSettings.areaNormal :
case c_oAscChartTypeSettings.areaStacked :
case c_oAscChartTypeSettings.areaStackedPer :
case c_oAscChartTypeSettings.stock :
case c_oAscChartTypeSettings.surfaceNormal :
case c_oAscChartTypeSettings.surfaceWireframe :
case c_oAscChartTypeSettings.contourNormal :
case c_oAscChartTypeSettings.contourWireframe :
{
this.checkSwapAxisProps(false);
if (bSwapLines) {
this.putShowMarker(false);
this.putSmooth(null);
this.putLine(true);
}
if (nOldType === c_oAscChartTypeSettings.hBarNormal || nOldType === c_oAscChartTypeSettings.hBarStacked ||
nOldType === c_oAscChartTypeSettings.hBarStackedPer || nOldType === c_oAscChartTypeSettings.hBarNormal3d ||
nOldType === c_oAscChartTypeSettings.hBarStacked3d || nOldType === c_oAscChartTypeSettings.hBarStackedPer3d) {
var bTemp = this.showHorAxis;
this.putShowHorAxis(this.showVerAxis);
this.putShowVerAxis(bTemp);
} else if (nOldType === c_oAscChartTypeSettings.pie || nOldType === c_oAscChartTypeSettings.pie3d || nOldType === c_oAscChartTypeSettings.doughnut) {
this.putShowHorAxis(true);
this.putShowVerAxis(true);
}
var oHorAxisProps = this.getHorAxisProps();
if(oHorAxisProps && oHorAxisProps.getAxisType() === c_oAscAxisType.cat){
if(type === c_oAscChartTypeSettings.areaNormal ||
type === c_oAscChartTypeSettings.areaStacked ||
type === c_oAscChartTypeSettings.areaStackedPer||
type === c_oAscChartTypeSettings.stock ||
type === c_oAscChartTypeSettings.surfaceNormal ||
type === c_oAscChartTypeSettings.surfaceWireframe ||
type === c_oAscChartTypeSettings.contourNormal ||
type === c_oAscChartTypeSettings.contourWireframe){
oHorAxisProps.putLabelsPosition(Asc.c_oAscLabelsPosition.byDivisions);
}
else{
oHorAxisProps.putLabelsPosition(Asc.c_oAscLabelsPosition.betweenDivisions);
}
}
break;
}
case c_oAscChartTypeSettings.hBarNormal :
case c_oAscChartTypeSettings.hBarStacked :
case c_oAscChartTypeSettings.hBarStackedPer :
case c_oAscChartTypeSettings.hBarNormal3d :
case c_oAscChartTypeSettings.hBarStacked3d :
case c_oAscChartTypeSettings.hBarStackedPer3d :
{
this.checkSwapAxisProps(true);
if (nOldType === c_oAscChartTypeSettings.pie || nOldType === c_oAscChartTypeSettings.pie3d || nOldType === c_oAscChartTypeSettings.doughnut) {
this.putShowHorAxis(true);
this.putShowVerAxis(true);
} else if (nOldType !== c_oAscChartTypeSettings.hBarNormal &&
nOldType !== c_oAscChartTypeSettings.hBarStacked && nOldType !== c_oAscChartTypeSettings.hBarStackedPer || nOldType !== c_oAscChartTypeSettings.hBarNormal3d ||
nOldType !== c_oAscChartTypeSettings.hBarStacked3d || nOldType !== c_oAscChartTypeSettings.hBarStackedPer3d) {
var bTemp = this.showHorAxis;
this.putShowHorAxis(this.showVerAxis);
this.putShowVerAxis(bTemp);
}
var oVertAxisProps = this.getVertAxisProps();
if(oVertAxisProps && oVertAxisProps.getAxisType() === c_oAscAxisType.cat){
oVertAxisProps.putLabelsPosition(Asc.c_oAscLabelsPosition.betweenDivisions);
}
//this.putHorGridLines(c_oAscGridLinesSettings.none);
//this.putVertGridLines(c_oAscGridLinesSettings.major);
break;
}
case c_oAscChartTypeSettings.scatter :
case c_oAscChartTypeSettings.scatterLine :
case c_oAscChartTypeSettings.scatterLineMarker :
case c_oAscChartTypeSettings.scatterMarker :
case c_oAscChartTypeSettings.scatterNone :
case c_oAscChartTypeSettings.scatterSmooth :
case c_oAscChartTypeSettings.scatterSmoothMarker : {
if (!hor_axis_settings || hor_axis_settings.getAxisType() !== c_oAscAxisType.val) {
new_hor_axis_settings = new asc_ValAxisSettings();
new_hor_axis_settings.setDefault();
this.putHorAxisProps(new_hor_axis_settings);
}
if (!vert_axis_settings || vert_axis_settings.getAxisType() !== c_oAscAxisType.val) {
new_vert_axis_settings = new asc_ValAxisSettings();
new_vert_axis_settings.setDefault();
this.putVertAxisProps(new_vert_axis_settings);
}
//this.putHorGridLines(c_oAscGridLinesSettings.major);
//this.putVertGridLines(c_oAscGridLinesSettings.major);
if (bSwapScatter) {
this.putShowMarker(true);
this.putSmooth(null);
this.putLine(false);
}
if (nOldType === c_oAscChartTypeSettings.hBarNormal || nOldType === c_oAscChartTypeSettings.hBarStacked ||
nOldType === c_oAscChartTypeSettings.hBarStackedPer || nOldType === c_oAscChartTypeSettings.hBarNormal3d ||
nOldType === c_oAscChartTypeSettings.hBarStacked3d || nOldType === c_oAscChartTypeSettings.hBarStackedPer3d) {
var bTemp = this.showHorAxis;
this.putShowHorAxis(this.showVerAxis);
this.putShowVerAxis(bTemp);
} else if (nOldType === c_oAscChartTypeSettings.pie || nOldType === c_oAscChartTypeSettings.pie3d || nOldType === c_oAscChartTypeSettings.doughnut) {
this.putShowHorAxis(true);
this.putShowVerAxis(true);
}
break;
}
}
},
putShowHorAxis: function (v) {
this.showHorAxis = v;
}, getShowHorAxis: function () {
return this.showHorAxis;
},
putShowVerAxis: function (v) {
this.showVerAxis = v;
}, getShowVerAxis: function () {
return this.showVerAxis;
}
};
/** @constructor */
function asc_CRect(x, y, width, height) {
// private members
this._x = x;
this._y = y;
this._width = width;
this._height = height;
}
asc_CRect.prototype = {
asc_getX: function () {
return this._x;
}, asc_getY: function () {
return this._y;
}, asc_getWidth: function () {
return this._width;
}, asc_getHeight: function () {
return this._height;
}
};
/**
* Класс CColor для работы с цветами
* -----------------------------------------------------------------------------
*
* @constructor
* @memberOf window
*/
function CColor(r, g, b, a) {
this.r = (undefined == r) ? 0 : r;
this.g = (undefined == g) ? 0 : g;
this.b = (undefined == b) ? 0 : b;
this.a = (undefined == a) ? 1 : a;
}
CColor.prototype = {
constructor: CColor, getR: function () {
return this.r
}, get_r: function () {
return this.r
}, put_r: function (v) {
this.r = v;
this.hex = undefined;
}, getG: function () {
return this.g
}, get_g: function () {
return this.g;
}, put_g: function (v) {
this.g = v;
this.hex = undefined;
}, getB: function () {
return this.b
}, get_b: function () {
return this.b;
}, put_b: function (v) {
this.b = v;
this.hex = undefined;
}, getA: function () {
return this.a
}, get_hex: function () {
if (!this.hex) {
var r = this.r.toString(16);
var g = this.g.toString(16);
var b = this.b.toString(16);
this.hex = ( r.length == 1 ? "0" + r : r) + ( g.length == 1 ? "0" + g : g) + ( b.length == 1 ? "0" + b : b);
}
return this.hex;
},
Compare: function (Color) {
return (this.r === Color.r && this.g === Color.g && this.b === Color.b && this.a === Color.a);
}, Copy: function () {
return new CColor(this.r, this.g, this.b, this.a);
}
};
/** @constructor */
function asc_CColor() {
this.type = c_oAscColor.COLOR_TYPE_SRGB;
this.value = null;
this.r = 0;
this.g = 0;
this.b = 0;
this.a = 255;
this.Auto = false;
this.Mods = [];
this.ColorSchemeId = -1;
if (1 === arguments.length) {
this.r = arguments[0].r;
this.g = arguments[0].g;
this.b = arguments[0].b;
} else {
if (3 <= arguments.length) {
this.r = arguments[0];
this.g = arguments[1];
this.b = arguments[2];
}
if (4 === arguments.length) {
this.a = arguments[3];
}
}
}
asc_CColor.prototype = {
constructor: asc_CColor, asc_getR: function () {
return this.r
}, asc_putR: function (v) {
this.r = v;
this.hex = undefined;
}, asc_getG: function () {
return this.g;
}, asc_putG: function (v) {
this.g = v;
this.hex = undefined;
}, asc_getB: function () {
return this.b;
}, asc_putB: function (v) {
this.b = v;
this.hex = undefined;
}, asc_getA: function () {
return this.a;
}, asc_putA: function (v) {
this.a = v;
this.hex = undefined;
}, asc_getType: function () {
return this.type;
}, asc_putType: function (v) {
this.type = v;
}, asc_getValue: function () {
return this.value;
}, asc_putValue: function (v) {
this.value = v;
}, asc_getHex: function () {
if (!this.hex) {
var a = this.a.toString(16);
var r = this.r.toString(16);
var g = this.g.toString(16);
var b = this.b.toString(16);
this.hex = ( a.length == 1 ? "0" + a : a) + ( r.length == 1 ? "0" + r : r) + ( g.length == 1 ? "0" + g : g) +
( b.length == 1 ? "0" + b : b);
}
return this.hex;
}, asc_getColor: function () {
return new CColor(this.r, this.g, this.b);
}, asc_putAuto: function (v) {
this.Auto = v;
}, asc_getAuto: function () {
return this.Auto;
}
};
/** @constructor */
function asc_CTextBorder(obj) {
if (obj) {
if (obj.Color instanceof asc_CColor) {
this.Color = obj.Color;
} else {
this.Color =
(undefined != obj.Color && null != obj.Color) ? CreateAscColorCustom(obj.Color.r, obj.Color.g, obj.Color.b) :
null;
}
this.Size = (undefined != obj.Size) ? obj.Size : null;
this.Value = (undefined != obj.Value) ? obj.Value : null;
this.Space = (undefined != obj.Space) ? obj.Space : null;
} else {
this.Color = CreateAscColorCustom(0, 0, 0);
this.Size = 0.5 * window["AscCommonWord"].g_dKoef_pt_to_mm;
this.Value = window["AscCommonWord"].border_Single;
this.Space = 0;
}
}
asc_CTextBorder.prototype.asc_getColor = function () {
return this.Color;
};
asc_CTextBorder.prototype.asc_putColor = function (v) {
this.Color = v;
};
asc_CTextBorder.prototype.asc_getSize = function () {
return this.Size;
};
asc_CTextBorder.prototype.asc_putSize = function (v) {
this.Size = v;
};
asc_CTextBorder.prototype.asc_getValue = function () {
return this.Value;
};
asc_CTextBorder.prototype.asc_putValue = function (v) {
this.Value = v;
};
asc_CTextBorder.prototype.asc_getSpace = function () {
return this.Space;
};
asc_CTextBorder.prototype.asc_putSpace = function (v) {
this.Space = v;
};
asc_CTextBorder.prototype.asc_getForSelectedCells = function () {
return this.ForSelectedCells;
};
asc_CTextBorder.prototype.asc_putForSelectedCells = function (v) {
this.ForSelectedCells = v;
};
/** @constructor */
function asc_CParagraphBorders(obj) {
if (obj) {
this.Left = (undefined != obj.Left && null != obj.Left) ? new asc_CTextBorder(obj.Left) : null;
this.Top = (undefined != obj.Top && null != obj.Top) ? new asc_CTextBorder(obj.Top) : null;
this.Right = (undefined != obj.Right && null != obj.Right) ? new asc_CTextBorder(obj.Right) : null;
this.Bottom = (undefined != obj.Bottom && null != obj.Bottom) ? new asc_CTextBorder(obj.Bottom) : null;
this.Between = (undefined != obj.Between && null != obj.Between) ? new asc_CTextBorder(obj.Between) : null;
} else {
this.Left = null;
this.Top = null;
this.Right = null;
this.Bottom = null;
this.Between = null;
}
}
asc_CParagraphBorders.prototype = {
asc_getLeft: function () {
return this.Left;
}, asc_putLeft: function (v) {
this.Left = (v) ? new asc_CTextBorder(v) : null;
}, asc_getTop: function () {
return this.Top;
}, asc_putTop: function (v) {
this.Top = (v) ? new asc_CTextBorder(v) : null;
}, asc_getRight: function () {
return this.Right;
}, asc_putRight: function (v) {
this.Right = (v) ? new asc_CTextBorder(v) : null;
}, asc_getBottom: function () {
return this.Bottom;
}, asc_putBottom: function (v) {
this.Bottom = (v) ? new asc_CTextBorder(v) : null;
}, asc_getBetween: function () {
return this.Between;
}, asc_putBetween: function (v) {
this.Between = (v) ? new asc_CTextBorder(v) : null;
}
};
/** @constructor */
function asc_CListType(obj) {
if (obj) {
this.Type = (undefined == obj.Type) ? null : obj.Type;
this.SubType = (undefined == obj.Type) ? null : obj.SubType;
} else {
this.Type = null;
this.SubType = null;
}
}
asc_CListType.prototype.asc_getListType = function () {
return this.Type;
};
asc_CListType.prototype.asc_getListSubType = function () {
return this.SubType;
};
/** @constructor */
function asc_CTextFontFamily(obj) {
if (obj) {
this.Name = (undefined != obj.Name) ? obj.Name : null; // "Times New Roman"
this.Index = (undefined != obj.Index) ? obj.Index : null; // -1
} else {
this.Name = "Times New Roman";
this.Index = -1;
}
}
asc_CTextFontFamily.prototype = {
asc_getName: function () {
return this.Name;
}, asc_getIndex: function () {
return this.Index;
}
};
/** @constructor */
function asc_CParagraphTab(Pos, Value, Leader)
{
this.Pos = Pos;
this.Value = Value;
this.Leader = Leader;
}
asc_CParagraphTab.prototype.asc_getValue = function()
{
return this.Value;
};
asc_CParagraphTab.prototype.asc_putValue = function(v)
{
this.Value = v;
};
asc_CParagraphTab.prototype.asc_getPos = function()
{
return this.Pos;
};
asc_CParagraphTab.prototype.asc_putPos = function(v)
{
this.Pos = v;
};
asc_CParagraphTab.prototype.asc_getLeader = function()
{
if (Asc.c_oAscTabLeader.Heavy === this.Leader)
return Asc.c_oAscTabLeader.Underscore;
return this.Leader;
};
asc_CParagraphTab.prototype.asc_putLeader = function(v)
{
this.Leader = v;
};
/** @constructor */
function asc_CParagraphTabs(obj) {
this.Tabs = [];
if (undefined != obj) {
var Count = obj.Tabs.length;
for (var Index = 0; Index < Count; Index++) {
this.Tabs.push(new asc_CParagraphTab(obj.Tabs[Index].Pos, obj.Tabs[Index].Value, obj.Tabs[Index].Leader));
}
}
}
asc_CParagraphTabs.prototype = {
asc_getCount: function () {
return this.Tabs.length;
}, asc_getTab: function (Index) {
return this.Tabs[Index];
}, asc_addTab: function (Tab) {
this.Tabs.push(Tab)
}, asc_clear: function () {
this.Tabs.length = 0;
}
};
/** @constructor */
function asc_CParagraphShd(obj) {
if (obj) {
this.Value = (undefined != obj.Value) ? obj.Value : null;
if (obj.Unifill && obj.Unifill.fill && obj.Unifill.fill.type === c_oAscFill.FILL_TYPE_SOLID &&
obj.Unifill.fill.color) {
this.Color = CreateAscColor(obj.Unifill.fill.color);
} else {
this.Color =
(undefined != obj.Color && null != obj.Color) ? CreateAscColorCustom(obj.Color.r, obj.Color.g, obj.Color.b) :
null;
}
} else {
this.Value = Asc.c_oAscShdNil;
this.Color = CreateAscColorCustom(255, 255, 255);
}
}
asc_CParagraphShd.prototype = {
asc_getValue: function () {
return this.Value;
}, asc_putValue: function (v) {
this.Value = v;
}, asc_getColor: function () {
return this.Color;
}, asc_putColor: function (v) {
this.Color = (v) ? v : null;
}
};
/** @constructor */
function asc_CParagraphFrame(obj) {
if (obj) {
this.FromDropCapMenu = false;
this.DropCap = obj.DropCap;
this.H = obj.H;
this.HAnchor = obj.HAnchor;
this.HRule = obj.HRule;
this.HSpace = obj.HSpace;
this.Lines = obj.Lines;
this.VAnchor = obj.VAnchor;
this.VSpace = obj.VSpace;
this.W = obj.W;
this.Wrap = obj.Wrap;
this.X = obj.X;
this.XAlign = obj.XAlign;
this.Y = obj.Y;
this.YAlign = obj.YAlign;
this.Brd = (undefined != obj.Brd && null != obj.Brd) ? new asc_CParagraphBorders(obj.Brd) : null;
this.Shd = (undefined != obj.Shd && null != obj.Shd) ? new asc_CParagraphShd(obj.Shd) : null;
this.FontFamily =
(undefined != obj.FontFamily && null != obj.FontFamily) ? new asc_CTextFontFamily(obj.FontFamily) : null;
} else {
this.FromDropCapMenu = false;
this.DropCap = undefined;
this.H = undefined;
this.HAnchor = undefined;
this.HRule = undefined;
this.HSpace = undefined;
this.Lines = undefined;
this.VAnchor = undefined;
this.VSpace = undefined;
this.W = undefined;
this.Wrap = undefined;
this.X = undefined;
this.XAlign = undefined;
this.Y = undefined;
this.YAlign = undefined;
this.Shd = null;
this.Brd = null;
this.FontFamily = null;
}
}
asc_CParagraphFrame.prototype.asc_getDropCap = function () {
return this.DropCap;
};
asc_CParagraphFrame.prototype.asc_putDropCap = function (v) {
this.DropCap = v;
};
asc_CParagraphFrame.prototype.asc_getH = function () {
return this.H;
};
asc_CParagraphFrame.prototype.asc_putH = function (v) {
this.H = v;
};
asc_CParagraphFrame.prototype.asc_getHAnchor = function () {
return this.HAnchor;
};
asc_CParagraphFrame.prototype.asc_putHAnchor = function (v) {
this.HAnchor = v;
};
asc_CParagraphFrame.prototype.asc_getHRule = function () {
return this.HRule;
};
asc_CParagraphFrame.prototype.asc_putHRule = function (v) {
this.HRule = v;
};
asc_CParagraphFrame.prototype.asc_getHSpace = function () {
return this.HSpace;
};
asc_CParagraphFrame.prototype.asc_putHSpace = function (v) {
this.HSpace = v;
};
asc_CParagraphFrame.prototype.asc_getLines = function () {
return this.Lines;
};
asc_CParagraphFrame.prototype.asc_putLines = function (v) {
this.Lines = v;
};
asc_CParagraphFrame.prototype.asc_getVAnchor = function () {
return this.VAnchor;
};
asc_CParagraphFrame.prototype.asc_putVAnchor = function (v) {
this.VAnchor = v;
};
asc_CParagraphFrame.prototype.asc_getVSpace = function () {
return this.VSpace;
};
asc_CParagraphFrame.prototype.asc_putVSpace = function (v) {
this.VSpace = v;
};
asc_CParagraphFrame.prototype.asc_getW = function () {
return this.W;
};
asc_CParagraphFrame.prototype.asc_putW = function (v) {
this.W = v;
};
asc_CParagraphFrame.prototype.asc_getWrap = function () {
return this.Wrap;
};
asc_CParagraphFrame.prototype.asc_putWrap = function (v) {
this.Wrap = v;
};
asc_CParagraphFrame.prototype.asc_getX = function () {
return this.X;
};
asc_CParagraphFrame.prototype.asc_putX = function (v) {
this.X = v;
};
asc_CParagraphFrame.prototype.asc_getXAlign = function () {
return this.XAlign;
};
asc_CParagraphFrame.prototype.asc_putXAlign = function (v) {
this.XAlign = v;
};
asc_CParagraphFrame.prototype.asc_getY = function () {
return this.Y;
};
asc_CParagraphFrame.prototype.asc_putY = function (v) {
this.Y = v;
};
asc_CParagraphFrame.prototype.asc_getYAlign = function () {
return this.YAlign;
};
asc_CParagraphFrame.prototype.asc_putYAlign = function (v) {
this.YAlign = v;
};
asc_CParagraphFrame.prototype.asc_getBorders = function () {
return this.Brd;
};
asc_CParagraphFrame.prototype.asc_putBorders = function (v) {
this.Brd = v;
};
asc_CParagraphFrame.prototype.asc_getShade = function () {
return this.Shd;
};
asc_CParagraphFrame.prototype.asc_putShade = function (v) {
this.Shd = v;
};
asc_CParagraphFrame.prototype.asc_getFontFamily = function () {
return this.FontFamily;
};
asc_CParagraphFrame.prototype.asc_putFontFamily = function (v) {
this.FontFamily = v;
};
asc_CParagraphFrame.prototype.asc_putFromDropCapMenu = function (v) {
this.FromDropCapMenu = v;
};
/** @constructor */
function asc_CParagraphSpacing(obj) {
if (obj) {
this.Line = (undefined != obj.Line ) ? obj.Line : null; // Расстояние между строками внутри абзаца
this.LineRule = (undefined != obj.LineRule) ? obj.LineRule : null; // Тип расстрояния между строками
this.Before = (undefined != obj.Before ) ? obj.Before : null; // Дополнительное расстояние до абзаца
this.After = (undefined != obj.After ) ? obj.After : null; // Дополнительное расстояние после абзаца
} else {
this.Line = undefined; // Расстояние между строками внутри абзаца
this.LineRule = undefined; // Тип расстрояния между строками
this.Before = undefined; // Дополнительное расстояние до абзаца
this.After = undefined; // Дополнительное расстояние после абзаца
}
}
asc_CParagraphSpacing.prototype = {
asc_getLine: function () {
return this.Line;
}, asc_getLineRule: function () {
return this.LineRule;
}, asc_getBefore: function () {
return this.Before;
}, asc_getAfter: function () {
return this.After;
}
};
/** @constructor */
function asc_CParagraphInd(obj) {
if (obj) {
this.Left = (undefined != obj.Left ) ? obj.Left : null; // Левый отступ
this.Right = (undefined != obj.Right ) ? obj.Right : null; // Правый отступ
this.FirstLine = (undefined != obj.FirstLine) ? obj.FirstLine : null; // Первая строка
} else {
this.Left = undefined; // Левый отступ
this.Right = undefined; // Правый отступ
this.FirstLine = undefined; // Первая строка
}
}
asc_CParagraphInd.prototype = {
asc_getLeft: function () {
return this.Left;
}, asc_putLeft: function (v) {
this.Left = v;
}, asc_getRight: function () {
return this.Right;
}, asc_putRight: function (v) {
this.Right = v;
}, asc_getFirstLine: function () {
return this.FirstLine;
}, asc_putFirstLine: function (v) {
this.FirstLine = v;
}
};
/** @constructor */
function asc_CParagraphProperty(obj) {
if (obj) {
this.ContextualSpacing = (undefined != obj.ContextualSpacing) ? obj.ContextualSpacing : null;
this.Ind = (undefined != obj.Ind && null != obj.Ind) ? new asc_CParagraphInd(obj.Ind) : null;
this.KeepLines = (undefined != obj.KeepLines) ? obj.KeepLines : null;
this.KeepNext = (undefined != obj.KeepNext) ? obj.KeepNext : undefined;
this.WidowControl = (undefined != obj.WidowControl ? obj.WidowControl : undefined );
this.PageBreakBefore = (undefined != obj.PageBreakBefore) ? obj.PageBreakBefore : null;
this.Spacing = (undefined != obj.Spacing && null != obj.Spacing) ? new asc_CParagraphSpacing(obj.Spacing) : null;
this.Brd = (undefined != obj.Brd && null != obj.Brd) ? new asc_CParagraphBorders(obj.Brd) : null;
this.Shd = (undefined != obj.Shd && null != obj.Shd) ? new asc_CParagraphShd(obj.Shd) : null;
this.Tabs = (undefined != obj.Tabs) ? new asc_CParagraphTabs(obj.Tabs) : undefined;
this.DefaultTab = obj.DefaultTab != null ? obj.DefaultTab : window["AscCommonWord"].Default_Tab_Stop;
this.Locked = (undefined != obj.Locked && null != obj.Locked ) ? obj.Locked : false;
this.CanAddTable = (undefined != obj.CanAddTable ) ? obj.CanAddTable : true;
this.FramePr = (undefined != obj.FramePr ) ? new asc_CParagraphFrame(obj.FramePr) : undefined;
this.CanAddDropCap = (undefined != obj.CanAddDropCap ) ? obj.CanAddDropCap : false;
this.CanAddImage = (undefined != obj.CanAddImage ) ? obj.CanAddImage : false;
this.Subscript = (undefined != obj.Subscript) ? obj.Subscript : undefined;
this.Superscript = (undefined != obj.Superscript) ? obj.Superscript : undefined;
this.SmallCaps = (undefined != obj.SmallCaps) ? obj.SmallCaps : undefined;
this.AllCaps = (undefined != obj.AllCaps) ? obj.AllCaps : undefined;
this.Strikeout = (undefined != obj.Strikeout) ? obj.Strikeout : undefined;
this.DStrikeout = (undefined != obj.DStrikeout) ? obj.DStrikeout : undefined;
this.TextSpacing = (undefined != obj.TextSpacing) ? obj.TextSpacing : undefined;
this.Position = (undefined != obj.Position) ? obj.Position : undefined;
} else {
//ContextualSpacing : false, // Удалять ли интервал между параграфами одинакового стиля
//
// Ind :
// {
// Left : 0, // Левый отступ
// Right : 0, // Правый отступ
// FirstLine : 0 // Первая строка
// },
//
// Jc : align_Left, // Прилегание параграфа
//
// KeepLines : false, // переносить параграф на новую страницу,
// // если на текущей он целиком не убирается
// KeepNext : false, // переносить параграф вместе со следующим параграфом
//
// PageBreakBefore : false, // начинать параграф с новой страницы
this.ContextualSpacing = undefined;
this.Ind = new asc_CParagraphInd();
this.KeepLines = undefined;
this.KeepNext = undefined;
this.WidowControl = undefined;
this.PageBreakBefore = undefined;
this.Spacing = new asc_CParagraphSpacing();
this.Brd = undefined;
this.Shd = undefined;
this.Locked = false;
this.CanAddTable = true;
this.Tabs = undefined;
this.Subscript = undefined;
this.Superscript = undefined;
this.SmallCaps = undefined;
this.AllCaps = undefined;
this.Strikeout = undefined;
this.DStrikeout = undefined;
this.TextSpacing = undefined;
this.Position = undefined;
}
}
asc_CParagraphProperty.prototype = {
asc_getContextualSpacing: function () {
return this.ContextualSpacing;
}, asc_putContextualSpacing: function (v) {
this.ContextualSpacing = v;
}, asc_getInd: function () {
return this.Ind;
}, asc_putInd: function (v) {
this.Ind = v;
}, asc_getKeepLines: function () {
return this.KeepLines;
}, asc_putKeepLines: function (v) {
this.KeepLines = v;
}, asc_getKeepNext: function () {
return this.KeepNext;
}, asc_putKeepNext: function (v) {
this.KeepNext = v;
}, asc_getPageBreakBefore: function () {
return this.PageBreakBefore;
}, asc_putPageBreakBefore: function (v) {
this.PageBreakBefore = v;
}, asc_getWidowControl: function () {
return this.WidowControl;
}, asc_putWidowControl: function (v) {
this.WidowControl = v;
}, asc_getSpacing: function () {
return this.Spacing;
}, asc_putSpacing: function (v) {
this.Spacing = v;
}, asc_getBorders: function () {
return this.Brd;
}, asc_putBorders: function (v) {
this.Brd = v;
}, asc_getShade: function () {
return this.Shd;
}, asc_putShade: function (v) {
this.Shd = v;
}, asc_getLocked: function () {
return this.Locked;
}, asc_getCanAddTable: function () {
return this.CanAddTable;
}, asc_getSubscript: function () {
return this.Subscript;
}, asc_putSubscript: function (v) {
this.Subscript = v;
}, asc_getSuperscript: function () {
return this.Superscript;
}, asc_putSuperscript: function (v) {
this.Superscript = v;
}, asc_getSmallCaps: function () {
return this.SmallCaps;
}, asc_putSmallCaps: function (v) {
this.SmallCaps = v;
}, asc_getAllCaps: function () {
return this.AllCaps;
}, asc_putAllCaps: function (v) {
this.AllCaps = v;
}, asc_getStrikeout: function () {
return this.Strikeout;
}, asc_putStrikeout: function (v) {
this.Strikeout = v;
}, asc_getDStrikeout: function () {
return this.DStrikeout;
}, asc_putDStrikeout: function (v) {
this.DStrikeout = v;
}, asc_getTextSpacing: function () {
return this.TextSpacing;
}, asc_putTextSpacing: function (v) {
this.TextSpacing = v;
}, asc_getPosition: function () {
return this.Position;
}, asc_putPosition: function (v) {
this.Position = v;
}, asc_getTabs: function () {
return this.Tabs;
}, asc_putTabs: function (v) {
this.Tabs = v;
}, asc_getDefaultTab: function () {
return this.DefaultTab;
}, asc_putDefaultTab: function (v) {
this.DefaultTab = v;
},
asc_getFramePr: function () {
return this.FramePr;
}, asc_putFramePr: function (v) {
this.FramePr = v;
}, asc_getCanAddDropCap: function () {
return this.CanAddDropCap;
}, asc_getCanAddImage: function () {
return this.CanAddImage;
}
};
/** @constructor */
function asc_CTexture() {
this.Id = 0;
this.Image = "";
}
asc_CTexture.prototype = {
asc_getId: function () {
return this.Id;
}, asc_getImage: function () {
return this.Image;
}
};
/** @constructor */
function asc_CImageSize(width, height, isCorrect) {
this.Width = (undefined == width) ? 0.0 : width;
this.Height = (undefined == height) ? 0.0 : height;
this.IsCorrect = isCorrect;
}
asc_CImageSize.prototype = {
asc_getImageWidth: function () {
return this.Width;
}, asc_getImageHeight: function () {
return this.Height;
}, asc_getIsCorrect: function () {
return this.IsCorrect;
}
};
/** @constructor */
function asc_CPaddings(obj) {
if (obj) {
this.Left = (undefined == obj.Left) ? null : obj.Left;
this.Top = (undefined == obj.Top) ? null : obj.Top;
this.Bottom = (undefined == obj.Bottom) ? null : obj.Bottom;
this.Right = (undefined == obj.Right) ? null : obj.Right;
} else {
this.Left = null;
this.Top = null;
this.Bottom = null;
this.Right = null;
}
}
asc_CPaddings.prototype = {
asc_getLeft: function () {
return this.Left;
}, asc_putLeft: function (v) {
this.Left = v;
}, asc_getTop: function () {
return this.Top;
}, asc_putTop: function (v) {
this.Top = v;
}, asc_getBottom: function () {
return this.Bottom;
}, asc_putBottom: function (v) {
this.Bottom = v;
}, asc_getRight: function () {
return this.Right;
}, asc_putRight: function (v) {
this.Right = v;
}
};
/** @constructor */
function asc_CShapeProperty() {
this.type = null; // custom
this.fill = null;
this.stroke = null;
this.paddings = null;
this.canFill = true;
this.canChangeArrows = false;
this.bFromChart = false;
this.bFromImage = false;
this.Locked = false;
this.w = null;
this.h = null;
this.vert = null;
this.verticalTextAlign = null;
this.textArtProperties = null;
this.lockAspect = null;
this.title = null;
this.description = null;
this.columnNumber = null;
this.columnSpace = null;
this.signatureId = null;
}
asc_CShapeProperty.prototype = {
constructor: asc_CShapeProperty,
asc_getType: function () {
return this.type;
}, asc_putType: function (v) {
this.type = v;
}, asc_getFill: function () {
return this.fill;
}, asc_putFill: function (v) {
this.fill = v;
}, asc_getStroke: function () {
return this.stroke;
}, asc_putStroke: function (v) {
this.stroke = v;
}, asc_getPaddings: function () {
return this.paddings;
}, asc_putPaddings: function (v) {
this.paddings = v;
}, asc_getCanFill: function () {
return this.canFill;
}, asc_putCanFill: function (v) {
this.canFill = v;
}, asc_getCanChangeArrows: function () {
return this.canChangeArrows;
}, asc_setCanChangeArrows: function (v) {
this.canChangeArrows = v;
}, asc_getFromChart: function () {
return this.bFromChart;
}, asc_setFromChart: function (v) {
this.bFromChart = v;
}, asc_getLocked: function () {
return this.Locked;
}, asc_setLocked: function (v) {
this.Locked = v;
},
asc_getWidth: function () {
return this.w;
}, asc_putWidth: function (v) {
this.w = v;
}, asc_getHeight: function () {
return this.h;
}, asc_putHeight: function (v) {
this.h = v;
}, asc_getVerticalTextAlign: function () {
return this.verticalTextAlign;
}, asc_putVerticalTextAlign: function (v) {
this.verticalTextAlign = v;
}, asc_getVert: function () {
return this.vert;
}, asc_putVert: function (v) {
this.vert = v;
}, asc_getTextArtProperties: function () {
return this.textArtProperties;
}, asc_putTextArtProperties: function (v) {
this.textArtProperties = v;
}, asc_getLockAspect: function () {
return this.lockAspect
}, asc_putLockAspect: function (v) {
this.lockAspect = v;
}, asc_getTitle: function () {
return this.title;
}, asc_putTitle: function (v) {
this.title = v;
}, asc_getDescription: function () {
return this.description;
}, asc_putDescription: function (v) {
this.description = v;
},
asc_getColumnNumber: function(){
return this.columnNumber;
},
asc_putColumnNumber: function(v){
this.columnNumber = v;
},
asc_getColumnSpace: function(){
return this.columnSpace;
},
asc_putColumnSpace: function(v){
this.columnSpace = v;
},
asc_getSignatureId: function(){
return this.signatureId;
},
asc_putSignatureId: function(v){
this.signatureId = v;
},
asc_getFromImage: function(){
return this.bFromImage;
},
asc_putFromImage: function(v){
this.bFromImage = v;
}
};
/** @constructor */
function asc_TextArtProperties(obj) {
if (obj) {
this.Fill = obj.Fill;//asc_Fill
this.Line = obj.Line;//asc_Stroke
this.Form = obj.Form;//srting
this.Style = obj.Style;//
} else {
this.Fill = undefined;
this.Line = undefined;
this.Form = undefined;
this.Style = undefined;
}
}
asc_TextArtProperties.prototype.asc_putFill = function (oAscFill) {
this.Fill = oAscFill;
};
asc_TextArtProperties.prototype.asc_getFill = function () {
return this.Fill;
};
asc_TextArtProperties.prototype.asc_putLine = function (oAscStroke) {
this.Line = oAscStroke;
};
asc_TextArtProperties.prototype.asc_getLine = function () {
return this.Line;
};
asc_TextArtProperties.prototype.asc_putForm = function (sForm) {
this.Form = sForm;
};
asc_TextArtProperties.prototype.asc_getForm = function () {
return this.Form;
};
asc_TextArtProperties.prototype.asc_putStyle = function (Style) {
this.Style = Style;
};
asc_TextArtProperties.prototype.asc_getStyle = function () {
return this.Style;
};
function CImagePositionH(obj) {
if (obj) {
this.RelativeFrom = ( undefined === obj.RelativeFrom ) ? undefined : obj.RelativeFrom;
this.UseAlign = ( undefined === obj.UseAlign ) ? undefined : obj.UseAlign;
this.Align = ( undefined === obj.Align ) ? undefined : obj.Align;
this.Value = ( undefined === obj.Value ) ? undefined : obj.Value;
this.Percent = ( undefined === obj.Percent ) ? undefined : obj.Percent;
} else {
this.RelativeFrom = undefined;
this.UseAlign = undefined;
this.Align = undefined;
this.Value = undefined;
this.Percent = undefined;
}
}
CImagePositionH.prototype.get_RelativeFrom = function () {
return this.RelativeFrom;
};
CImagePositionH.prototype.put_RelativeFrom = function (v) {
this.RelativeFrom = v;
};
CImagePositionH.prototype.get_UseAlign = function () {
return this.UseAlign;
};
CImagePositionH.prototype.put_UseAlign = function (v) {
this.UseAlign = v;
};
CImagePositionH.prototype.get_Align = function () {
return this.Align;
};
CImagePositionH.prototype.put_Align = function (v) {
this.Align = v;
};
CImagePositionH.prototype.get_Value = function () {
return this.Value;
};
CImagePositionH.prototype.put_Value = function (v) {
this.Value = v;
};
CImagePositionH.prototype.get_Percent = function () {
return this.Percent
};
CImagePositionH.prototype.put_Percent = function (v) {
this.Percent = v;
};
function CImagePositionV(obj) {
if (obj) {
this.RelativeFrom = ( undefined === obj.RelativeFrom ) ? undefined : obj.RelativeFrom;
this.UseAlign = ( undefined === obj.UseAlign ) ? undefined : obj.UseAlign;
this.Align = ( undefined === obj.Align ) ? undefined : obj.Align;
this.Value = ( undefined === obj.Value ) ? undefined : obj.Value;
this.Percent = ( undefined === obj.Percent ) ? undefined : obj.Percent;
} else {
this.RelativeFrom = undefined;
this.UseAlign = undefined;
this.Align = undefined;
this.Value = undefined;
this.Percent = undefined;
}
}
CImagePositionV.prototype.get_RelativeFrom = function () {
return this.RelativeFrom;
};
CImagePositionV.prototype.put_RelativeFrom = function (v) {
this.RelativeFrom = v;
};
CImagePositionV.prototype.get_UseAlign = function () {
return this.UseAlign;
};
CImagePositionV.prototype.put_UseAlign = function (v) {
this.UseAlign = v;
};
CImagePositionV.prototype.get_Align = function () {
return this.Align;
};
CImagePositionV.prototype.put_Align = function (v) {
this.Align = v;
};
CImagePositionV.prototype.get_Value = function () {
return this.Value;
};
CImagePositionV.prototype.put_Value = function (v) {
this.Value = v;
};
CImagePositionV.prototype.get_Percent = function () {
return this.Percent
};
CImagePositionV.prototype.put_Percent = function (v) {
this.Percent = v;
};
function CPosition(obj) {
if (obj) {
this.X = (undefined == obj.X) ? null : obj.X;
this.Y = (undefined == obj.Y) ? null : obj.Y;
} else {
this.X = null;
this.Y = null;
}
}
CPosition.prototype.get_X = function () {
return this.X;
};
CPosition.prototype.put_X = function (v) {
this.X = v;
};
CPosition.prototype.get_Y = function () {
return this.Y;
};
CPosition.prototype.put_Y = function (v) {
this.Y = v;
};
/** @constructor */
function asc_CImgProperty(obj) {
if (obj) {
this.CanBeFlow = (undefined != obj.CanBeFlow) ? obj.CanBeFlow : true;
this.Width = (undefined != obj.Width ) ? obj.Width : undefined;
this.Height = (undefined != obj.Height ) ? obj.Height : undefined;
this.WrappingStyle = (undefined != obj.WrappingStyle) ? obj.WrappingStyle : undefined;
this.Paddings = (undefined != obj.Paddings ) ? new asc_CPaddings(obj.Paddings) : undefined;
this.Position = (undefined != obj.Position ) ? new CPosition(obj.Position) : undefined;
this.AllowOverlap = (undefined != obj.AllowOverlap ) ? obj.AllowOverlap : undefined;
this.PositionH = (undefined != obj.PositionH ) ? new CImagePositionH(obj.PositionH) : undefined;
this.PositionV = (undefined != obj.PositionV ) ? new CImagePositionV(obj.PositionV) : undefined;
this.SizeRelH = (undefined != obj.SizeRelH) ? new CImagePositionH(obj.SizeRelH) : undefined;
this.SizeRelV = (undefined != obj.SizeRelV) ? new CImagePositionV(obj.SizeRelV) : undefined;
this.Internal_Position = (undefined != obj.Internal_Position) ? obj.Internal_Position : null;
this.ImageUrl = (undefined != obj.ImageUrl) ? obj.ImageUrl : null;
this.Locked = (undefined != obj.Locked) ? obj.Locked : false;
this.lockAspect = (undefined != obj.lockAspect) ? obj.lockAspect : false;
this.ChartProperties = (undefined != obj.ChartProperties) ? obj.ChartProperties : null;
this.ShapeProperties = (undefined != obj.ShapeProperties) ? obj.ShapeProperties : null;
this.ChangeLevel = (undefined != obj.ChangeLevel) ? obj.ChangeLevel : null;
this.Group = (obj.Group != undefined) ? obj.Group : null;
this.fromGroup = obj.fromGroup != undefined ? obj.fromGroup : null;
this.severalCharts = obj.severalCharts != undefined ? obj.severalCharts : false;
this.severalChartTypes = obj.severalChartTypes != undefined ? obj.severalChartTypes : undefined;
this.severalChartStyles = obj.severalChartStyles != undefined ? obj.severalChartStyles : undefined;
this.verticalTextAlign = obj.verticalTextAlign != undefined ? obj.verticalTextAlign : undefined;
this.vert = obj.vert != undefined ? obj.vert : undefined;
//oleObjects
this.pluginGuid = obj.pluginGuid !== undefined ? obj.pluginGuid : undefined;
this.pluginData = obj.pluginData !== undefined ? obj.pluginData : undefined;
this.oleWidth = obj.oleWidth != undefined ? obj.oleWidth : undefined;
this.oleHeight = obj.oleHeight != undefined ? obj.oleHeight : undefined;
this.title = obj.title != undefined ? obj.title : undefined;
this.description = obj.description != undefined ? obj.description : undefined;
this.columnNumber = obj.columnNumber != undefined ? obj.columnNumber : undefined;
this.columnSpace = obj.columnSpace != undefined ? obj.columnSpace : undefined;
} else {
this.CanBeFlow = true;
this.Width = undefined;
this.Height = undefined;
this.WrappingStyle = undefined;
this.Paddings = undefined;
this.Position = undefined;
this.PositionH = undefined;
this.PositionV = undefined;
this.SizeRelH = undefined;
this.SizeRelV = undefined;
this.Internal_Position = null;
this.ImageUrl = null;
this.Locked = false;
this.ChartProperties = null;
this.ShapeProperties = null;
this.ImageProperties = null;
this.ChangeLevel = null;
this.Group = null;
this.fromGroup = null;
this.severalCharts = false;
this.severalChartTypes = undefined;
this.severalChartStyles = undefined;
this.verticalTextAlign = undefined;
this.vert = undefined;
//oleObjects
this.pluginGuid = undefined;
this.pluginData = undefined;
this.oleWidth = undefined;
this.oleHeight = undefined;
this.title = undefined;
this.description = undefined;
this.columnNumber = undefined;
this.columnSpace = undefined;
}
}
asc_CImgProperty.prototype = {
constructor: asc_CImgProperty,
asc_getChangeLevel: function () {
return this.ChangeLevel;
}, asc_putChangeLevel: function (v) {
this.ChangeLevel = v;
},
asc_getCanBeFlow: function () {
return this.CanBeFlow;
}, asc_getWidth: function () {
return this.Width;
}, asc_putWidth: function (v) {
this.Width = v;
}, asc_getHeight: function () {
return this.Height;
}, asc_putHeight: function (v) {
this.Height = v;
}, asc_getWrappingStyle: function () {
return this.WrappingStyle;
}, asc_putWrappingStyle: function (v) {
this.WrappingStyle = v;
},
// Возвращается объект класса Asc.asc_CPaddings
asc_getPaddings: function () {
return this.Paddings;
}, // Аргумент объект класса Asc.asc_CPaddings
asc_putPaddings: function (v) {
this.Paddings = v;
}, asc_getAllowOverlap: function () {
return this.AllowOverlap;
}, asc_putAllowOverlap: function (v) {
this.AllowOverlap = v;
}, // Возвращается объект класса CPosition
asc_getPosition: function () {
return this.Position;
}, // Аргумент объект класса CPosition
asc_putPosition: function (v) {
this.Position = v;
}, asc_getPositionH: function () {
return this.PositionH;
}, asc_putPositionH: function (v) {
this.PositionH = v;
}, asc_getPositionV: function () {
return this.PositionV;
}, asc_putPositionV: function (v) {
this.PositionV = v;
},
asc_getSizeRelH: function () {
return this.SizeRelH;
},
asc_putSizeRelH: function (v) {
this.SizeRelH = v;
},
asc_getSizeRelV: function () {
return this.SizeRelV;
},
asc_putSizeRelV: function (v) {
this.SizeRelV = v;
},
asc_getValue_X: function (RelativeFrom) {
if (null != this.Internal_Position) {
return this.Internal_Position.Calculate_X_Value(RelativeFrom);
}
return 0;
}, asc_getValue_Y: function (RelativeFrom) {
if (null != this.Internal_Position) {
return this.Internal_Position.Calculate_Y_Value(RelativeFrom);
}
return 0;
},
asc_getImageUrl: function () {
return this.ImageUrl;
}, asc_putImageUrl: function (v) {
this.ImageUrl = v;
}, asc_getGroup: function () {
return this.Group;
}, asc_putGroup: function (v) {
this.Group = v;
}, asc_getFromGroup: function () {
return this.fromGroup;
}, asc_putFromGroup: function (v) {
this.fromGroup = v;
},
asc_getisChartProps: function () {
return this.isChartProps;
}, asc_putisChartPross: function (v) {
this.isChartProps = v;
},
asc_getSeveralCharts: function () {
return this.severalCharts;
}, asc_putSeveralCharts: function (v) {
this.severalCharts = v;
}, asc_getSeveralChartTypes: function () {
return this.severalChartTypes;
}, asc_putSeveralChartTypes: function (v) {
this.severalChartTypes = v;
},
asc_getSeveralChartStyles: function () {
return this.severalChartStyles;
}, asc_putSeveralChartStyles: function (v) {
this.severalChartStyles = v;
},
asc_getVerticalTextAlign: function () {
return this.verticalTextAlign;
}, asc_putVerticalTextAlign: function (v) {
this.verticalTextAlign = v;
}, asc_getVert: function () {
return this.vert;
}, asc_putVert: function (v) {
this.vert = v;
},
asc_getLocked: function () {
return this.Locked;
}, asc_getLockAspect: function () {
return this.lockAspect;
}, asc_putLockAspect: function (v) {
this.lockAspect = v;
}, asc_getChartProperties: function () {
return this.ChartProperties;
}, asc_putChartProperties: function (v) {
this.ChartProperties = v;
}, asc_getShapeProperties: function () {
return this.ShapeProperties;
}, asc_putShapeProperties: function (v) {
this.ShapeProperties = v;
},
asc_getOriginSize: function (api) {
if (window['AscFormat'].isRealNumber(this.oleWidth) && window['AscFormat'].isRealNumber(this.oleHeight)) {
return new asc_CImageSize(this.oleWidth, this.oleHeight, true);
}
if(this.ImageUrl === null)
{
return new asc_CImageSize(50, 50, false);
}
var _section_select = api.WordControl.m_oLogicDocument.Get_PageSizesByDrawingObjects();
var _page_width = AscCommon.Page_Width;
var _page_height = AscCommon.Page_Height;
var _page_x_left_margin = AscCommon.X_Left_Margin;
var _page_y_top_margin = AscCommon.Y_Top_Margin;
var _page_x_right_margin = AscCommon.X_Right_Margin;
var _page_y_bottom_margin = AscCommon.Y_Bottom_Margin;
if (_section_select) {
if (_section_select.W) {
_page_width = _section_select.W;
}
if (_section_select.H) {
_page_height = _section_select.H;
}
}
var _image = api.ImageLoader.map_image_index[AscCommon.getFullImageSrc2(this.ImageUrl)];
if (_image != undefined && _image.Image != null && _image.Status == window['AscFonts'].ImageLoadStatus.Complete) {
var _w = Math.max(1, _page_width - (_page_x_left_margin + _page_x_right_margin));
var _h = Math.max(1, _page_height - (_page_y_top_margin + _page_y_bottom_margin));
var bIsCorrect = false;
if (_image.Image != null) {
var __w = Math.max((_image.Image.width * AscCommon.g_dKoef_pix_to_mm), 1);
var __h = Math.max((_image.Image.height * AscCommon.g_dKoef_pix_to_mm), 1);
var dKoef = Math.max(__w / _w, __h / _h);
if (dKoef > 1) {
_w = Math.max(5, __w / dKoef);
_h = Math.max(5, __h / dKoef);
bIsCorrect = true;
} else {
_w = __w;
_h = __h;
}
}
return new asc_CImageSize(_w, _h, bIsCorrect);
}
return new asc_CImageSize(50, 50, false);
},
//oleObjects
asc_getPluginGuid: function () {
return this.pluginGuid;
},
asc_putPluginGuid: function (v) {
this.pluginGuid = v;
},
asc_getPluginData: function () {
return this.pluginData;
},
asc_putPluginData: function (v) {
this.pluginData = v;
},
asc_getTitle: function(){
return this.title;
},
asc_putTitle: function(v){
this.title = v;
},
asc_getDescription: function(){
return this.description;
},
asc_putDescription: function(v){
this.description = v;
},
asc_getColumnNumber: function(){
return this.columnNumber;
},
asc_putColumnNumber: function(v){
this.columnNumber = v;
},
asc_getColumnSpace: function(){
return this.columnSpace;
},
asc_putColumnSpace: function(v){
this.columnSpace = v;
},
asc_getSignatureId : function() {
if (this.ShapeProperties)
return this.ShapeProperties.asc_getSignatureId();
return undefined;
}
};
/** @constructor */
function asc_CSelectedObject(type, val) {
this.Type = (undefined != type) ? type : null;
this.Value = (undefined != val) ? val : null;
}
asc_CSelectedObject.prototype = {
asc_getObjectType: function () {
return this.Type;
}, asc_getObjectValue: function () {
return this.Value;
}
};
/** @constructor */
function asc_CShapeFill() {
this.type = null;
this.fill = null;
this.transparent = null;
}
asc_CShapeFill.prototype = {
asc_getType: function () {
return this.type;
}, asc_putType: function (v) {
this.type = v;
}, asc_getFill: function () {
return this.fill;
}, asc_putFill: function (v) {
this.fill = v;
}, asc_getTransparent: function () {
return this.transparent;
}, asc_putTransparent: function (v) {
this.transparent = v;
}, asc_CheckForseSet: function () {
if (null != this.transparent) {
return true;
}
if (null != this.fill && this.fill.Positions != null) {
return true;
}
return false;
}
};
/** @constructor */
function asc_CFillBlip() {
this.type = c_oAscFillBlipType.STRETCH;
this.url = "";
this.texture_id = null;
}
asc_CFillBlip.prototype = {
asc_getType: function () {
return this.type
}, asc_putType: function (v) {
this.type = v;
}, asc_getUrl: function () {
return this.url;
}, asc_putUrl: function (v) {
this.url = v;
}, asc_getTextureId: function () {
return this.texture_id;
}, asc_putTextureId: function (v) {
this.texture_id = v;
}
};
/** @constructor */
function asc_CFillHatch() {
this.PatternType = undefined;
this.fgClr = undefined;
this.bgClr = undefined;
}
asc_CFillHatch.prototype = {
asc_getPatternType: function () {
return this.PatternType;
}, asc_putPatternType: function (v) {
this.PatternType = v;
}, asc_getColorFg: function () {
return this.fgClr;
}, asc_putColorFg: function (v) {
this.fgClr = v;
}, asc_getColorBg: function () {
return this.bgClr;
}, asc_putColorBg: function (v) {
this.bgClr = v;
}
};
/** @constructor */
function asc_CFillGrad() {
this.Colors = undefined;
this.Positions = undefined;
this.GradType = 0;
this.LinearAngle = undefined;
this.LinearScale = true;
this.PathType = 0;
}
asc_CFillGrad.prototype = {
asc_getColors: function () {
return this.Colors;
}, asc_putColors: function (v) {
this.Colors = v;
}, asc_getPositions: function () {
return this.Positions;
}, asc_putPositions: function (v) {
this.Positions = v;
}, asc_getGradType: function () {
return this.GradType;
}, asc_putGradType: function (v) {
this.GradType = v;
}, asc_getLinearAngle: function () {
return this.LinearAngle;
}, asc_putLinearAngle: function (v) {
this.LinearAngle = v;
}, asc_getLinearScale: function () {
return this.LinearScale;
}, asc_putLinearScale: function (v) {
this.LinearScale = v;
}, asc_getPathType: function () {
return this.PathType;
}, asc_putPathType: function (v) {
this.PathType = v;
}
};
/** @constructor */
function asc_CFillSolid() {
this.color = new asc_CColor();
}
asc_CFillSolid.prototype = {
asc_getColor: function () {
return this.color
}, asc_putColor: function (v) {
this.color = v;
}
};
/** @constructor */
function asc_CStroke() {
this.type = null;
this.width = null;
this.color = null;
this.prstDash = null;
this.LineJoin = null;
this.LineCap = null;
this.LineBeginStyle = null;
this.LineBeginSize = null;
this.LineEndStyle = null;
this.LineEndSize = null;
this.canChangeArrows = false;
}
asc_CStroke.prototype = {
asc_getType: function () {
return this.type;
}, asc_putType: function (v) {
this.type = v;
}, asc_getWidth: function () {
return this.width;
}, asc_putWidth: function (v) {
this.width = v;
}, asc_getColor: function () {
return this.color;
}, asc_putColor: function (v) {
this.color = v;
},
asc_getLinejoin: function () {
return this.LineJoin;
}, asc_putLinejoin: function (v) {
this.LineJoin = v;
}, asc_getLinecap: function () {
return this.LineCap;
}, asc_putLinecap: function (v) {
this.LineCap = v;
},
asc_getLinebeginstyle: function () {
return this.LineBeginStyle;
}, asc_putLinebeginstyle: function (v) {
this.LineBeginStyle = v;
}, asc_getLinebeginsize: function () {
return this.LineBeginSize;
}, asc_putLinebeginsize: function (v) {
this.LineBeginSize = v;
}, asc_getLineendstyle: function () {
return this.LineEndStyle;
}, asc_putLineendstyle: function (v) {
this.LineEndStyle = v;
}, asc_getLineendsize: function () {
return this.LineEndSize;
}, asc_putLineendsize: function (v) {
this.LineEndSize = v;
},
asc_getCanChangeArrows: function () {
return this.canChangeArrows;
},
asc_putPrstDash: function (v) {
this.prstDash = v;
}, asc_getPrstDash: function () {
return this.prstDash;
}
};
// цвет. может быть трех типов:
// c_oAscColor.COLOR_TYPE_SRGB : value - не учитывается
// c_oAscColor.COLOR_TYPE_PRST : value - имя стандартного цвета (map_prst_color)
// c_oAscColor.COLOR_TYPE_SCHEME : value - тип цвета в схеме
// c_oAscColor.COLOR_TYPE_SYS : конвертируется в srgb
function CAscColorScheme() {
this.colors = [];
this.name = "";
}
CAscColorScheme.prototype.get_colors = function () {
return this.colors;
};
CAscColorScheme.prototype.get_name = function () {
return this.name;
};
CAscColorScheme.prototype.get_dk1 = function () {
return this.colors[0];
};
CAscColorScheme.prototype.get_lt1 = function () {
return this.colors[1];
};
CAscColorScheme.prototype.get_dk2 = function () {
return this.colors[2];
};
CAscColorScheme.prototype.get_lt2 = function () {
return this.colors[3];
};
CAscColorScheme.prototype.get_accent1 = function () {
return this.colors[4];
};
CAscColorScheme.prototype.get_accent2 = function () {
return this.colors[5];
};
CAscColorScheme.prototype.get_accent3 = function () {
return this.colors[6];
};
CAscColorScheme.prototype.get_accent4 = function () {
return this.colors[7];
};
CAscColorScheme.prototype.get_accent5 = function () {
return this.colors[8];
};
CAscColorScheme.prototype.get_accent6 = function () {
return this.colors[9];
};
CAscColorScheme.prototype.get_hlink = function () {
return this.colors[10];
};
CAscColorScheme.prototype.get_folHlink = function () {
return this.colors[11];
};
//-----------------------------------------------------------------
// События движения мыши
//-----------------------------------------------------------------
function CMouseMoveData(obj)
{
if (obj)
{
this.Type = ( undefined != obj.Type ) ? obj.Type : c_oAscMouseMoveDataTypes.Common;
this.X_abs = ( undefined != obj.X_abs ) ? obj.X_abs : 0;
this.Y_abs = ( undefined != obj.Y_abs ) ? obj.Y_abs : 0;
switch (this.Type)
{
case c_oAscMouseMoveDataTypes.Hyperlink :
{
this.Hyperlink = ( undefined != obj.PageNum ) ? obj.PageNum : 0;
break;
}
case c_oAscMouseMoveDataTypes.LockedObject :
{
this.UserId = ( undefined != obj.UserId ) ? obj.UserId : "";
this.HaveChanges = ( undefined != obj.HaveChanges ) ? obj.HaveChanges : false;
this.LockedObjectType =
( undefined != obj.LockedObjectType ) ? obj.LockedObjectType : Asc.c_oAscMouseMoveLockedObjectType.Common;
break;
}
case c_oAscMouseMoveDataTypes.Footnote:
{
this.Text = "";
this.Number = 1;
break;
}
}
}
else
{
this.Type = c_oAscMouseMoveDataTypes.Common;
this.X_abs = 0;
this.Y_abs = 0;
}
}
CMouseMoveData.prototype.get_Type = function () {
return this.Type;
};
CMouseMoveData.prototype.get_X = function () {
return this.X_abs;
};
CMouseMoveData.prototype.get_Y = function () {
return this.Y_abs;
};
CMouseMoveData.prototype.get_Hyperlink = function () {
return this.Hyperlink;
};
CMouseMoveData.prototype.get_UserId = function () {
return this.UserId;
};
CMouseMoveData.prototype.get_HaveChanges = function () {
return this.HaveChanges;
};
CMouseMoveData.prototype.get_LockedObjectType = function () {
return this.LockedObjectType;
};
CMouseMoveData.prototype.get_FootnoteText = function()
{
return this.Text;
};
CMouseMoveData.prototype.get_FootnoteNumber = function()
{
return this.Number;
};
/**
* Класс для работы с интерфейсом для гиперссылок
* @param obj
* @constructor
*/
function CHyperlinkProperty(obj)
{
if (obj)
{
this.Text = (undefined != obj.Text ) ? obj.Text : null;
this.Value = (undefined != obj.Value ) ? obj.Value : "";
this.ToolTip = (undefined != obj.ToolTip) ? obj.ToolTip : "";
this.Class = (undefined !== obj.Class ) ? obj.Class : null;
this.Anchor = (undefined !== obj.Anchor) ? obj.Anchor : null;
this.Heading = (obj.Heading ? obj.Heading : null);
}
else
{
this.Text = null;
this.Value = "";
this.ToolTip = "";
this.Class = null;
this.Anchor = null;
this.Heading = null;
}
}
CHyperlinkProperty.prototype.get_Value = function()
{
return this.Value;
};
CHyperlinkProperty.prototype.put_Value = function(v)
{
this.Value = v;
};
CHyperlinkProperty.prototype.get_ToolTip = function()
{
return this.ToolTip;
};
CHyperlinkProperty.prototype.put_ToolTip = function(v)
{
this.ToolTip = v ? v.slice(0, Asc.c_oAscMaxTooltipLength) : v;
};
CHyperlinkProperty.prototype.get_Text = function()
{
return this.Text;
};
CHyperlinkProperty.prototype.put_Text = function(v)
{
this.Text = v;
};
CHyperlinkProperty.prototype.put_InternalHyperlink = function(oClass)
{
this.Class = oClass;
};
CHyperlinkProperty.prototype.get_InternalHyperlink = function()
{
return this.Class;
};
CHyperlinkProperty.prototype.is_TopOfDocument = function()
{
return (this.Anchor === "_top");
};
CHyperlinkProperty.prototype.put_TopOfDocument = function()
{
this.Anchor = "_top";
};
CHyperlinkProperty.prototype.get_Bookmark = function()
{
return this.Anchor;
};
CHyperlinkProperty.prototype.put_Bookmark = function(sBookmark)
{
this.Anchor = sBookmark;
};
CHyperlinkProperty.prototype.is_Heading = function()
{
return (this.Heading instanceof AscCommonWord.Paragraph ? true : false)
};
CHyperlinkProperty.prototype.put_Heading = function(oParagraph)
{
this.Heading = oParagraph;
};
CHyperlinkProperty.prototype.get_Heading = function()
{
return this.Heading;
};
window['Asc']['CHyperlinkProperty'] = window['Asc'].CHyperlinkProperty = CHyperlinkProperty;
CHyperlinkProperty.prototype['get_Value'] = CHyperlinkProperty.prototype.get_Value;
CHyperlinkProperty.prototype['put_Value'] = CHyperlinkProperty.prototype.put_Value;
CHyperlinkProperty.prototype['get_ToolTip'] = CHyperlinkProperty.prototype.get_ToolTip;
CHyperlinkProperty.prototype['put_ToolTip'] = CHyperlinkProperty.prototype.put_ToolTip;
CHyperlinkProperty.prototype['get_Text'] = CHyperlinkProperty.prototype.get_Text;
CHyperlinkProperty.prototype['put_Text'] = CHyperlinkProperty.prototype.put_Text;
CHyperlinkProperty.prototype['get_InternalHyperlink'] = CHyperlinkProperty.prototype.get_InternalHyperlink;
CHyperlinkProperty.prototype['put_InternalHyperlink'] = CHyperlinkProperty.prototype.put_InternalHyperlink;
CHyperlinkProperty.prototype['is_TopOfDocument'] = CHyperlinkProperty.prototype.is_TopOfDocument;
CHyperlinkProperty.prototype['put_TopOfDocument'] = CHyperlinkProperty.prototype.put_TopOfDocument;
CHyperlinkProperty.prototype['get_Bookmark'] = CHyperlinkProperty.prototype.get_Bookmark;
CHyperlinkProperty.prototype['put_Bookmark'] = CHyperlinkProperty.prototype.put_Bookmark;
CHyperlinkProperty.prototype['is_Heading'] = CHyperlinkProperty.prototype.is_Heading;
CHyperlinkProperty.prototype['put_Heading'] = CHyperlinkProperty.prototype.put_Heading;
CHyperlinkProperty.prototype['get_Heading'] = CHyperlinkProperty.prototype.get_Heading;
/** @constructor */
function asc_CUserInfo() {
this.Id = null;
this.FullName = null;
this.FirstName = null;
this.LastName = null;
}
asc_CUserInfo.prototype.asc_putId = asc_CUserInfo.prototype.put_Id = function (v) {
this.Id = v;
};
asc_CUserInfo.prototype.asc_getId = asc_CUserInfo.prototype.get_Id = function () {
return this.Id;
};
asc_CUserInfo.prototype.asc_putFullName = asc_CUserInfo.prototype.put_FullName = function (v) {
this.FullName = v;
};
asc_CUserInfo.prototype.asc_getFullName = asc_CUserInfo.prototype.get_FullName = function () {
return this.FullName;
};
asc_CUserInfo.prototype.asc_putFirstName = asc_CUserInfo.prototype.put_FirstName = function (v) {
this.FirstName = v;
};
asc_CUserInfo.prototype.asc_getFirstName = asc_CUserInfo.prototype.get_FirstName = function () {
return this.FirstName;
};
asc_CUserInfo.prototype.asc_putLastName = asc_CUserInfo.prototype.put_LastName = function (v) {
this.LastName = v;
};
asc_CUserInfo.prototype.asc_getLastName = asc_CUserInfo.prototype.get_LastName = function () {
return this.LastName;
};
/** @constructor */
function asc_CDocInfo() {
this.Id = null;
this.Url = null;
this.Title = null;
this.Format = null;
this.VKey = null;
this.Token = null;
this.UserInfo = null;
this.Options = null;
this.CallbackUrl = null;
this.TemplateReplacement = null;
this.Mode = null;
this.Permissions = null;
this.Lang = null;
this.OfflineApp = false;
this.Encrypted;
}
prot = asc_CDocInfo.prototype;
prot.get_Id = prot.asc_getId = function () {
return this.Id
};
prot.put_Id = prot.asc_putId = function (v) {
this.Id = v;
};
prot.get_Url = prot.asc_getUrl = function () {
return this.Url;
};
prot.put_Url = prot.asc_putUrl = function (v) {
this.Url = v;
};
prot.get_Title = prot.asc_getTitle = function () {
return this.Title;
};
prot.put_Title = prot.asc_putTitle = function (v) {
this.Title = v;
};
prot.get_Format = prot.asc_getFormat = function () {
return this.Format;
};
prot.put_Format = prot.asc_putFormat = function (v) {
this.Format = v;
};
prot.get_VKey = prot.asc_getVKey = function () {
return this.VKey;
};
prot.put_VKey = prot.asc_putVKey = function (v) {
this.VKey = v;
};
prot.get_Token = prot.asc_getToken = function () {
return this.Token;
};
prot.put_Token = prot.asc_putToken = function (v) {
this.Token = v;
};
prot.get_OfflineApp = function () {
return this.OfflineApp;
};
prot.put_OfflineApp = function (v) {
this.OfflineApp = v;
};
prot.get_UserId = prot.asc_getUserId = function () {
return (this.UserInfo ? this.UserInfo.get_Id() : null );
};
prot.get_UserName = prot.asc_getUserName = function () {
return (this.UserInfo ? this.UserInfo.get_FullName() : null );
};
prot.get_FirstName = prot.asc_getFirstName = function () {
return (this.UserInfo ? this.UserInfo.get_FirstName() : null );
};
prot.get_LastName = prot.asc_getLastName = function () {
return (this.UserInfo ? this.UserInfo.get_LastName() : null );
};
prot.get_Options = prot.asc_getOptions = function () {
return this.Options;
};
prot.put_Options = prot.asc_putOptions = function (v) {
this.Options = v;
};
prot.get_CallbackUrl = prot.asc_getCallbackUrl = function () {
return this.CallbackUrl;
};
prot.put_CallbackUrl = prot.asc_putCallbackUrl = function (v) {
this.CallbackUrl = v;
};
prot.get_TemplateReplacement = prot.asc_getTemplateReplacement = function () {
return this.TemplateReplacement;
};
prot.put_TemplateReplacement = prot.asc_putTemplateReplacement = function (v) {
this.TemplateReplacement = v;
};
prot.get_UserInfo = prot.asc_getUserInfo = function () {
return this.UserInfo;
};
prot.put_UserInfo = prot.asc_putUserInfo = function (v) {
this.UserInfo = v;
};
prot.get_Mode = prot.asc_getMode = function () {
return this.Mode;
};
prot.put_Mode = prot.asc_putMode = function (v) {
this.Mode = v;
};
prot.get_Permissions = prot.asc_getPermissions = function () {
return this.Permissions;
};
prot.put_Permissions = prot.asc_putPermissions = function (v) {
this.Permissions = v;
};
prot.get_Lang = prot.asc_getLang = function () {
return this.Lang;
};
prot.put_Lang = prot.asc_putLang = function (v) {
this.Lang = v;
};
prot.get_Encrypted = prot.asc_getEncrypted = function () {
return this.Encrypted;
};
prot.put_Encrypted = prot.asc_putEncrypted = function (v) {
this.Encrypted = v;
};
function COpenProgress() {
this.Type = Asc.c_oAscAsyncAction.Open;
this.FontsCount = 0;
this.CurrentFont = 0;
this.ImagesCount = 0;
this.CurrentImage = 0;
}
COpenProgress.prototype.asc_getType = function () {
return this.Type
};
COpenProgress.prototype.asc_getFontsCount = function () {
return this.FontsCount
};
COpenProgress.prototype.asc_getCurrentFont = function () {
return this.CurrentFont
};
COpenProgress.prototype.asc_getImagesCount = function () {
return this.ImagesCount
};
COpenProgress.prototype.asc_getCurrentImage = function () {
return this.CurrentImage
};
function CErrorData() {
this.Value = 0;
}
CErrorData.prototype.put_Value = function (v) {
this.Value = v;
};
CErrorData.prototype.get_Value = function () {
return this.Value;
};
function CAscMathType() {
this.Id = 0;
this.X = 0;
this.Y = 0;
}
CAscMathType.prototype.get_Id = function () {
return this.Id;
};
CAscMathType.prototype.get_X = function () {
return this.X;
};
CAscMathType.prototype.get_Y = function () {
return this.Y;
};
function CAscMathCategory() {
this.Id = 0;
this.Data = [];
this.W = 0;
this.H = 0;
}
CAscMathCategory.prototype.get_Id = function () {
return this.Id;
};
CAscMathCategory.prototype.get_Data = function () {
return this.Data;
};
CAscMathCategory.prototype.get_W = function () {
return this.W;
};
CAscMathCategory.prototype.get_H = function () {
return this.H;
};
CAscMathCategory.prototype.private_Sort = function () {
this.Data.sort(function (a, b) {
return a.Id - b.Id;
});
};
function CStyleImage(name, type, image, uiPriority) {
this.Name = name;
this.type = type;
this.image = image;
this.uiPriority = uiPriority;
}
CStyleImage.prototype.asc_getName = CStyleImage.prototype.get_Name = function () {
return this.Name;
};
CStyleImage.prototype.asc_getType = CStyleImage.prototype.get_Type = function () {
return this.type;
};
CStyleImage.prototype.asc_getImage = function () {
return this.image;
};
/** @constructor */
function asc_CSpellCheckProperty(Word, Checked, Variants, ParaId, Element)
{
this.Word = Word;
this.Checked = Checked;
this.Variants = Variants;
this.ParaId = ParaId;
this.Element = Element;
}
asc_CSpellCheckProperty.prototype.get_Word = function()
{
return this.Word;
};
asc_CSpellCheckProperty.prototype.get_Checked = function()
{
return this.Checked;
};
asc_CSpellCheckProperty.prototype.get_Variants = function()
{
return this.Variants;
};
function CWatermarkOnDraw(htmlContent)
{
// example content:
/*
{
"type" : "rect",
"width" : 100, // mm
"height" : 100, // mm
"rotate" : -45, // degrees
"margins" : [ 10, 10, 10, 10 ], // text margins
"fill" : [255, 0, 0], // [] => none
"stroke-width" : 1, // mm
"stroke" : [0, 0, 255], // [] => none
"align" : 1, // vertical text align (4 - top, 1 - center, 0 - bottom)
"paragraphs" : [
{
"align" : 4, // horizontal text align [1 - left, 2 - center, 0 - right, 3 - justify]
"fill" : [255, 0, 0], // paragraph highlight. [] => none
"linespacing" : 0,
"runs" : [
{
"text" : "some text",
"fill" : [255, 255, 255], // text highlight. [] => none,
"font-family" : "Arial",
"font-size" : 24, // pt
"bold" : true,
"italic" : false,
"strikeout" : "false",
"underline" : "false"
},
{
"text" : "<%br%>"
}
]
}
]
}
*/
this.inputContentSrc = htmlContent;
this.replaceMap = {};
this.image = null;
this.imageBase64 = undefined;
this.width = 0;
this.height = 0;
this.transparent = 0.3;
this.zoom = 1;
this.calculatezoom = -1;
this.CheckParams = function(api)
{
this.replaceMap["%user_name%"] = api.User.userName;
};
this.Generate = function()
{
if (this.zoom == this.calculatezoom)
return;
this.calculatezoom = this.zoom;
var content = this.inputContentSrc;
for (var key in this.replaceMap)
{
if (!this.replaceMap.hasOwnProperty(key))
continue;
content = content.replace(new RegExp(key, 'g'), this.replaceMap[key]);
}
var _obj = {};
try
{
var _objTmp = JSON.parse(content);
_obj = _objTmp;
}
catch (err)
{
}
this.transparent = (undefined == _obj['transparent']) ? 0.3 : _obj['transparent'];
this.privateGenerateShape(_obj);
//var _data = this.image.toDataURL("image/png");
//console.log(_data);
};
this.Draw = function(context, dw_or_dx, dh_or_dy, dw, dh)
{
if (!this.image)
return;
var x = 0;
var y = 0;
if (undefined == dw)
{
x = (dw_or_dx - this.width) >> 1;
y = (dh_or_dy - this.height) >> 1;
}
else
{
x = (dw_or_dx + ((dw - this.width) / 2)) >> 0;
y = (dh_or_dy + ((dh - this.height) / 2)) >> 0;
}
var oldGlobalAlpha = context.globalAlpha;
context.globalAlpha = this.transparent;
context.drawImage(this.image, x, y);
context.globalAlpha = oldGlobalAlpha;
};
this.StartRenderer = function()
{
var canvasTransparent = document.createElement("canvas");
canvasTransparent.width = this.image.width;
canvasTransparent.height = this.image.height;
var ctx = canvasTransparent.getContext("2d");
ctx.globalAlpha = this.transparent;
ctx.drawImage(this.image, 0, 0);
this.imageBase64 = canvasTransparent.toDataURL("image/png");
canvasTransparent = null;
};
this.EndRenderer = function()
{
delete this.imageBase64;
this.imageBase64 = undefined;
};
this.DrawOnRenderer = function(renderer, w, h)
{
var wMM = this.width * g_dKoef_pix_to_mm / this.zoom;
var hMM = this.height * g_dKoef_pix_to_mm / this.zoom;
var x = (w - wMM) / 2;
var y = (h - hMM) / 2;
renderer.UseOriginImageUrl = true;
renderer.drawImage(this.imageBase64, x, y, wMM, hMM);
renderer.UseOriginImageUrl = false;
};
this.privateGenerateShape = function(obj)
{
AscFormat.ExecuteNoHistory(function(obj) {
var oShape = new AscFormat.CShape();
var bWord = false;
var oApi = Asc['editor'] || editor;
if(!oApi){
return null;
}
switch(oApi.getEditorId()){
case AscCommon.c_oEditorId.Word:{
oShape.setWordShape(true);
bWord = true;
break;
}
case AscCommon.c_oEditorId.Presentation:{
oShape.setWordShape(false);
oShape.setParent(oApi.WordControl.m_oLogicDocument.Slides[oApi.WordControl.m_oLogicDocument.CurPage]);
break;
}
case AscCommon.c_oEditorId.Spreadsheet:{
oShape.setWordShape(false);
oShape.setWorksheet(oApi.wb.getWorksheet().model);
break;
}
}
oShape.setBDeleted(false);
oShape.spPr = new AscFormat.CSpPr();
oShape.spPr.setParent(oShape);
oShape.spPr.setXfrm(new AscFormat.CXfrm());
oShape.spPr.xfrm.setParent(oShape.spPr);
oShape.spPr.xfrm.setOffX(0);
oShape.spPr.xfrm.setOffY(0);
oShape.spPr.xfrm.setExtX(obj['width']);
oShape.spPr.xfrm.setExtY(obj['height']);
oShape.spPr.xfrm.setRot(AscFormat.normalizeRotate(obj['rotate'] ? (obj['rotate'] * Math.PI / 180) : 0));
oShape.spPr.setGeometry(AscFormat.CreateGeometry(obj['type']));
if(obj['fill'] && obj['fill'].length === 3){
oShape.spPr.setFill(AscFormat.CreteSolidFillRGB(obj['fill'][0], obj['fill'][1], obj['fill'][2]));
}
if(AscFormat.isRealNumber(obj['stroke-width']) || Array.isArray(obj['stroke']) && obj['stroke'].length === 3){
var oUnifill;
if(Array.isArray(obj['stroke']) && obj['stroke'].length === 3){
oUnifill = AscFormat.CreteSolidFillRGB(obj['stroke'][0], obj['stroke'][1], obj['stroke'][2]);
}
else{
oUnifill = AscFormat.CreteSolidFillRGB(0, 0, 0);
}
oShape.spPr.setLn(AscFormat.CreatePenFromParams(oUnifill, undefined, undefined, undefined, undefined, AscFormat.isRealNumber(obj['stroke-width']) ? obj['stroke-width'] : 12700.0/36000.0))
}
if(bWord){
oShape.createTextBoxContent();
}
else{
oShape.createTextBody();
}
var align = obj['align'];
if(undefined != align){
oShape.setVerticalAlign(align);
}
if(Array.isArray(obj['margins']) && obj['margins'].length === 4){
oShape.setPaddings({Left: obj['margins'][0], Top: obj['margins'][1], Right: obj['margins'][2], Bottom: obj['margins'][3]});
}
var oContent = oShape.getDocContent();
var aParagraphsS = obj['paragraphs'];
if(aParagraphsS.length > 0){
oContent.Content.length = 0;
}
for(var i = 0; i < aParagraphsS.length; ++i){
var oCurParS = aParagraphsS[i];
var oNewParagraph = new Paragraph(oContent.DrawingDocument, oContent, !bWord);
if(AscFormat.isRealNumber(oCurParS['align'])){
oNewParagraph.Set_Align(oCurParS['align'])
}
if(Array.isArray(oCurParS['fill']) && oCurParS['fill'].length === 3){
var oShd = new CDocumentShd();
oShd.Value = Asc.c_oAscShdClear;
oShd.Color.r = oCurParS['fill'][0];
oShd.Color.g = oCurParS['fill'][1];
oShd.Color.b = oCurParS['fill'][2];
oNewParagraph.Set_Shd(oShd, true);
}
if(AscFormat.isRealNumber(oCurParS['linespacing'])){
oNewParagraph.Set_Spacing({Line: oCurParS['linespacing'], LineRule: Asc.linerule_Auto}, true);
}
var aRunsS = oCurParS['runs'];
for(var j = 0; j < aRunsS.length; ++j){
var oRunS = aRunsS[j];
var oRun = new AscCommonWord.ParaRun(oNewParagraph, false);
if(Array.isArray(oRunS['fill']) && oRunS['fill'].length === 3){
oRun.Set_Unifill(AscFormat.CreteSolidFillRGB(oRunS['fill'][0], oRunS['fill'][1], oRunS['fill'][2]));
}
if(oRunS['font-family']){
oRun.Set_RFonts_Ascii({Name : oRunS['font-family'], Index : -1});
oRun.Set_RFonts_CS({Name : oRunS['font-family'], Index : -1});
oRun.Set_RFonts_EastAsia({Name : oRunS['font-family'], Index : -1});
oRun.Set_RFonts_HAnsi({Name : oRunS['font-family'], Index : -1});
}
if(oRunS['font-size']){
oRun.Set_FontSize(oRunS['font-size']);
}
oRun.Set_Bold(oRunS['bold'] === true);
oRun.Set_Italic(oRunS['italic'] === true);
oRun.Set_Strikeout(oRunS['strikeout'] === true);
oRun.Set_Underline(oRunS['underline'] === true);
var sCustomText = oRunS['text'];
if(sCustomText === "<%br%>"){
oRun.AddToContent(0, new ParaNewLine(break_Line), false);
}
else{
oRun.AddText(sCustomText);
}
oNewParagraph.Internal_Content_Add(i, oRun, false);
}
oContent.Internal_Content_Add(oContent.Content.length, oNewParagraph);
}
oShape.recalculate();
if (oShape.bWordShape)
{
oShape.recalculateText();
}
var oldShowParaMarks;
if (window.editor)
{
oldShowParaMarks = editor.ShowParaMarks;
editor.ShowParaMarks = false;
}
AscCommon.IsShapeToImageConverter = true;
var _bounds_cheker = new AscFormat.CSlideBoundsChecker();
var w_mm = 210;
var h_mm = 297;
var w_px = AscCommon.AscBrowser.convertToRetinaValue(w_mm * g_dKoef_mm_to_pix * this.zoom, true);
var h_px = AscCommon.AscBrowser.convertToRetinaValue(h_mm * g_dKoef_mm_to_pix * this.zoom, true);
_bounds_cheker.init(w_px, h_px, w_mm, h_mm);
_bounds_cheker.transform(1,0,0,1,0,0);
_bounds_cheker.AutoCheckLineWidth = true;
_bounds_cheker.CheckLineWidth(oShape);
oShape.draw(_bounds_cheker, 0);
_bounds_cheker.CorrectBounds2();
var _need_pix_width = _bounds_cheker.Bounds.max_x - _bounds_cheker.Bounds.min_x + 1;
var _need_pix_height = _bounds_cheker.Bounds.max_y - _bounds_cheker.Bounds.min_y + 1;
if (_need_pix_width <= 0 || _need_pix_height <= 0)
return;
if (!this.image)
this.image = document.createElement("canvas");
this.image.width = _need_pix_width;
this.image.height = _need_pix_height;
this.width = _need_pix_width;
this.height = _need_pix_height;
var _ctx = this.image.getContext('2d');
var g = new AscCommon.CGraphics();
g.init(_ctx, w_px, h_px, w_mm, h_mm);
g.m_oFontManager = AscCommon.g_fontManager;
g.m_oCoordTransform.tx = -_bounds_cheker.Bounds.min_x;
g.m_oCoordTransform.ty = -_bounds_cheker.Bounds.min_y;
g.transform(1,0,0,1,0,0);
oShape.draw(g, 0);
AscCommon.IsShapeToImageConverter = false;
if (window.editor)
{
window.editor.ShowParaMarks = oldShowParaMarks;
}
}, this, [obj]);
};
}
window.TEST_WATERMARK_STRING = "\
{\
\"transparent\" : 0.3,\
\"type\" : \"rect\",\
\"width\" : 100,\
\"height\" : 100,\
\"rotate\" : -45,\
\"margins\" : [ 10, 10, 10, 10 ],\
\"fill\" : [255, 0, 0],\
\"stroke-width\" : 1,\
\"stroke\" : [0, 0, 255],\
\"align\" : 1,\
\
\"paragraphs\" : [\
{\
\"align\" : 2,\
\"fill\" : [255, 0, 0],\
\"linespacing\" : 1,\
\
\"runs\" : [\
{\
\"text\" : \"Do not steal, %user_name%!\",\
\"fill\" : [0, 0, 0],\
\"font-family\" : \"Arial\",\
\"font-size\" : 40,\
\"bold\" : true,\
\"italic\" : false,\
\"strikeout\" : false,\
\"underline\" : false\
},\
{\
\"text\" : \"<%br%>\"\
}\
]\
}\
]\
}";
// ----------------------------- plugins ------------------------------- //
function CPluginVariation()
{
this.description = "";
this.url = "";
this.baseUrl = "";
this.index = 0; // сверху не выставляем. оттуда в каком порядке пришли - в таком порядке и работают
this.icons = ["1x", "2x"];
this.isViewer = false;
this.EditorsSupport = ["word", "cell", "slide"];
this.isVisual = false; // визуальный ли
this.isModal = false; // модальное ли окно (используется только для визуального)
this.isInsideMode = false; // отрисовка не в окне а внутри редактора (в панели) (используется только для визуального немодального)
this.isCustomWindow = false; // ued only if this.isModal == true
this.initDataType = EPluginDataType.none;
this.initData = "";
this.isUpdateOleOnResize = false;
this.buttons = [{"text" : "Ok", "primary" : true}, {"text" : "Cancel", "primary" : false}];
this.size = undefined;
this.initOnSelectionChanged = undefined;
this.events = [];
this.eventsMap = {};
}
CPluginVariation.prototype["get_Description"] = function()
{
return this.description;
};
CPluginVariation.prototype["set_Description"] = function(value)
{
this.description = value;
};
CPluginVariation.prototype["get_Url"] = function()
{
return this.url;
};
CPluginVariation.prototype["set_Url"] = function(value)
{
this.url = value;
};
CPluginVariation.prototype["get_Icons"] = function()
{
return this.icons;
};
CPluginVariation.prototype["set_Icons"] = function(value)
{
this.icons = value;
};
CPluginVariation.prototype["get_Viewer"] = function()
{
return this.isViewer;
};
CPluginVariation.prototype["set_Viewer"] = function(value)
{
this.isViewer = value;
};
CPluginVariation.prototype["get_EditorsSupport"] = function()
{
return this.EditorsSupport;
};
CPluginVariation.prototype["set_EditorsSupport"] = function(value)
{
this.EditorsSupport = value;
};
CPluginVariation.prototype["get_Visual"] = function()
{
return this.isVisual;
};
CPluginVariation.prototype["set_Visual"] = function(value)
{
this.isVisual = value;
};
CPluginVariation.prototype["get_Modal"] = function()
{
return this.isModal;
};
CPluginVariation.prototype["set_Modal"] = function(value)
{
this.isModal = value;
};
CPluginVariation.prototype["get_InsideMode"] = function()
{
return this.isInsideMode;
};
CPluginVariation.prototype["set_InsideMode"] = function(value)
{
this.isInsideMode = value;
};
CPluginVariation.prototype["get_CustomWindow"] = function()
{
return this.isCustomWindow;
};
CPluginVariation.prototype["set_CustomWindow"] = function(value)
{
this.isCustomWindow = value;
};
CPluginVariation.prototype["get_InitDataType"] = function()
{
return this.initDataType;
};
CPluginVariation.prototype["set_InitDataType"] = function(value)
{
this.initDataType = value;
};
CPluginVariation.prototype["get_InitData"] = function()
{
return this.initData;
};
CPluginVariation.prototype["set_InitData"] = function(value)
{
this.initData = value;
};
CPluginVariation.prototype["get_UpdateOleOnResize"] = function()
{
return this.isUpdateOleOnResize;
};
CPluginVariation.prototype["set_UpdateOleOnResize"] = function(value)
{
this.isUpdateOleOnResize = value;
};
CPluginVariation.prototype["get_Buttons"] = function()
{
return this.buttons;
};
CPluginVariation.prototype["set_Buttons"] = function(value)
{
this.buttons = value;
};
CPluginVariation.prototype["get_Size"] = function()
{
return this.size;
};
CPluginVariation.prototype["set_Size"] = function(value)
{
this.size = value;
};
CPluginVariation.prototype["get_InitOnSelectionChanged"] = function()
{
return this.initOnSelectionChanged;
};
CPluginVariation.prototype["set_InitOnSelectionChanged"] = function(value)
{
this.initOnSelectionChanged = value;
};
CPluginVariation.prototype["get_Events"] = function()
{
return this.events;
};
CPluginVariation.prototype["set_Events"] = function(value)
{
if (!value)
return;
this.events = value.slice(0, value.length);
this.eventsMap = {};
for (var i = 0; i < this.events.length; i++)
this.eventsMap[this.events[i]] = true;
};
CPluginVariation.prototype["serialize"] = function()
{
var _object = {};
_object["description"] = this.description;
_object["url"] = this.url;
_object["index"] = this.index;
_object["icons"] = this.icons;
_object["isViewer"] = this.isViewer;
_object["EditorsSupport"] = this.EditorsSupport;
_object["isVisual"] = this.isVisual;
_object["isModal"] = this.isModal;
_object["isInsideMode"] = this.isInsideMode;
_object["isCustomWindow"] = this.isCustomWindow;
_object["initDataType"] = this.initDataType;
_object["initData"] = this.initData;
_object["isUpdateOleOnResize"] = this.isUpdateOleOnResize;
_object["buttons"] = this.buttons;
_object["size"] = this.size;
_object["initOnSelectionChanged"] = this.initOnSelectionChanged;
return _object;
};
CPluginVariation.prototype["deserialize"] = function(_object)
{
this.description = (_object["description"] != null) ? _object["description"] : this.description;
this.url = (_object["url"] != null) ? _object["url"] : this.url;
this.index = (_object["index"] != null) ? _object["index"] : this.index;
this.icons = (_object["icons"] != null) ? _object["icons"] : this.icons;
this.isViewer = (_object["isViewer"] != null) ? _object["isViewer"] : this.isViewer;
this.EditorsSupport = (_object["EditorsSupport"] != null) ? _object["EditorsSupport"] : this.EditorsSupport;
this.isVisual = (_object["isVisual"] != null) ? _object["isVisual"] : this.isVisual;
this.isModal = (_object["isModal"] != null) ? _object["isModal"] : this.isModal;
this.isInsideMode = (_object["isInsideMode"] != null) ? _object["isInsideMode"] : this.isInsideMode;
this.isCustomWindow = (_object["isCustomWindow"] != null) ? _object["isCustomWindow"] : this.isCustomWindow;
this.initDataType = (_object["initDataType"] != null) ? _object["initDataType"] : this.initDataType;
this.initData = (_object["initData"] != null) ? _object["initData"] : this.initData;
this.isUpdateOleOnResize = (_object["isUpdateOleOnResize"] != null) ? _object["isUpdateOleOnResize"] : this.isUpdateOleOnResize;
this.buttons = (_object["buttons"] != null) ? _object["buttons"] : this.buttons;
this.size = (_object["size"] != null) ? _object["size"] : this.size;
this.initOnSelectionChanged = (_object["initOnSelectionChanged"] != null) ? _object["initOnSelectionChanged"] : this.initOnSelectionChanged;
};
function CPlugin()
{
this.name = "";
this.guid = "";
this.baseUrl = "";
this.variations = [];
}
CPlugin.prototype["get_Name"] = function()
{
return this.name;
};
CPlugin.prototype["set_Name"] = function(value)
{
this.name = value;
};
CPlugin.prototype["get_Guid"] = function()
{
return this.guid;
};
CPlugin.prototype["set_Guid"] = function(value)
{
this.guid = value;
};
CPlugin.prototype["get_BaseUrl"] = function()
{
return this.baseUrl;
};
CPlugin.prototype["set_BaseUrl"] = function(value)
{
this.baseUrl = value;
};
CPlugin.prototype["get_Variations"] = function()
{
return this.variations;
};
CPlugin.prototype["set_Variations"] = function(value)
{
this.variations = value;
};
CPlugin.prototype["serialize"] = function()
{
var _object = {};
_object["name"] = this.name;
_object["guid"] = this.guid;
_object["baseUrl"] = this.baseUrl;
_object["variations"] = [];
for (var i = 0; i < this.variations.length; i++)
{
_object["variations"].push(this.variations[i].serialize());
}
return _object;
};
CPlugin.prototype["deserialize"] = function(_object)
{
this.name = (_object["name"] != null) ? _object["name"] : this.name;
this.guid = (_object["guid"] != null) ? _object["guid"] : this.guid;
this.baseUrl = (_object["baseUrl"] != null) ? _object["baseUrl"] : this.baseUrl;
this.variations = [];
for (var i = 0; i < _object["variations"].length; i++)
{
var _variation = new CPluginVariation();
_variation["deserialize"](_object["variations"][i]);
this.variations.push(_variation);
}
};
/*
* Export
* -----------------------------------------------------------------------------
*/
window['AscCommon'] = window['AscCommon'] || {};
window['Asc'] = window['Asc'] || {};
window['Asc']['c_oAscArrUserColors'] = window['Asc'].c_oAscArrUserColors = c_oAscArrUserColors;
window["AscCommon"].CreateAscColorCustom = CreateAscColorCustom;
window["AscCommon"].CreateAscColor = CreateAscColor;
window["AscCommon"].CreateGUID = CreateGUID;
window['Asc']['c_oLicenseResult'] = window['Asc'].c_oLicenseResult = c_oLicenseResult;
prot = c_oLicenseResult;
prot['Error'] = prot.Error;
prot['Expired'] = prot.Expired;
prot['Success'] = prot.Success;
prot['UnknownUser'] = prot.UnknownUser;
prot['Connections'] = prot.Connections;
prot['ExpiredTrial'] = prot.ExpiredTrial;
prot['SuccessLimit'] = prot.SuccessLimit;
prot['UsersCount'] = prot.UsersCount;
prot['ConnectionsOS'] = prot.ConnectionsOS;
prot['UsersCountOS'] = prot.UsersCountOS;
window['Asc']['c_oRights'] = window['Asc'].c_oRights = c_oRights;
prot = c_oRights;
prot['None'] = prot.None;
prot['Edit'] = prot.Edit;
prot['Review'] = prot.Review;
prot['Comment'] = prot.Comment;
prot['View'] = prot.View;
window['Asc']['c_oLicenseMode'] = window['Asc'].c_oLicenseMode = c_oLicenseMode;
prot = c_oLicenseMode;
prot['None'] = prot.None;
prot['Trial'] = prot.Trial;
prot['Developer'] = prot.Developer;
window["Asc"]["EPluginDataType"] = window["Asc"].EPluginDataType = EPluginDataType;
prot = EPluginDataType;
prot['none'] = prot.none;
prot['text'] = prot.text;
prot['ole'] = prot.ole;
prot['html'] = prot.html;
window["AscCommon"]["asc_CSignatureLine"] = window["AscCommon"].asc_CSignatureLine = asc_CSignatureLine;
prot = asc_CSignatureLine.prototype;
prot["asc_getId"] = prot.asc_getId;
prot["asc_setId"] = prot.asc_setId;
prot["asc_getGuid"] = prot.asc_getGuid;
prot["asc_setGuid"] = prot.asc_setGuid;
prot["asc_getSigner1"] = prot.asc_getSigner1;
prot["asc_setSigner1"] = prot.asc_setSigner1;
prot["asc_getSigner2"] = prot.asc_getSigner2;
prot["asc_setSigner2"] = prot.asc_setSigner2;
prot["asc_getEmail"] = prot.asc_getEmail;
prot["asc_setEmail"] = prot.asc_setEmail;
prot["asc_getInstructions"] = prot.asc_getInstructions;
prot["asc_setInstructions"] = prot.asc_setInstructions;
prot["asc_getShowDate"] = prot.asc_getShowDate;
prot["asc_setShowDate"] = prot.asc_setShowDate;
prot["asc_getValid"] = prot.asc_getValid;
prot["asc_setValid"] = prot.asc_setValid;
prot["asc_getDate"] = prot.asc_getDate;
prot["asc_setDate"] = prot.asc_setDate;
prot["asc_getVisible"] = prot.asc_getVisible;
prot["asc_setVisible"] = prot.asc_setVisible;
prot["asc_getRequested"] = prot.asc_getRequested;
prot["asc_setRequested"] = prot.asc_setRequested;
window["AscCommon"].asc_CAscEditorPermissions = asc_CAscEditorPermissions;
prot = asc_CAscEditorPermissions.prototype;
prot["asc_getLicenseType"] = prot.asc_getLicenseType;
prot["asc_getCanCoAuthoring"] = prot.asc_getCanCoAuthoring;
prot["asc_getCanReaderMode"] = prot.asc_getCanReaderMode;
prot["asc_getCanBranding"] = prot.asc_getCanBranding;
prot["asc_getIsAutosaveEnable"] = prot.asc_getIsAutosaveEnable;
prot["asc_getAutosaveMinInterval"] = prot.asc_getAutosaveMinInterval;
prot["asc_getIsAnalyticsEnable"] = prot.asc_getIsAnalyticsEnable;
prot["asc_getIsLight"] = prot.asc_getIsLight;
prot["asc_getLicenseMode"] = prot.asc_getLicenseMode;
prot["asc_getRights"] = prot.asc_getRights;
prot["asc_getBuildVersion"] = prot.asc_getBuildVersion;
prot["asc_getBuildNumber"] = prot.asc_getBuildNumber;
window["AscCommon"].asc_ValAxisSettings = asc_ValAxisSettings;
prot = asc_ValAxisSettings.prototype;
prot["putMinValRule"] = prot.putMinValRule;
prot["putMinVal"] = prot.putMinVal;
prot["putMaxValRule"] = prot.putMaxValRule;
prot["putMaxVal"] = prot.putMaxVal;
prot["putInvertValOrder"] = prot.putInvertValOrder;
prot["putLogScale"] = prot.putLogScale;
prot["putLogBase"] = prot.putLogBase;
prot["putUnits"] = prot.putUnits;
prot["putShowUnitsOnChart"] = prot.putShowUnitsOnChart;
prot["putMajorTickMark"] = prot.putMajorTickMark;
prot["putMinorTickMark"] = prot.putMinorTickMark;
prot["putTickLabelsPos"] = prot.putTickLabelsPos;
prot["putCrossesRule"] = prot.putCrossesRule;
prot["putCrosses"] = prot.putCrosses;
prot["putDispUnitsRule"] = prot.putDispUnitsRule;
prot["getDispUnitsRule"] = prot.getDispUnitsRule;
prot["putAxisType"] = prot.putAxisType;
prot["getAxisType"] = prot.getAxisType;
prot["getMinValRule"] = prot.getMinValRule;
prot["getMinVal"] = prot.getMinVal;
prot["getMaxValRule"] = prot.getMaxValRule;
prot["getMaxVal"] = prot.getMaxVal;
prot["getInvertValOrder"] = prot.getInvertValOrder;
prot["getLogScale"] = prot.getLogScale;
prot["getLogBase"] = prot.getLogBase;
prot["getUnits"] = prot.getUnits;
prot["getShowUnitsOnChart"] = prot.getShowUnitsOnChart;
prot["getMajorTickMark"] = prot.getMajorTickMark;
prot["getMinorTickMark"] = prot.getMinorTickMark;
prot["getTickLabelsPos"] = prot.getTickLabelsPos;
prot["getCrossesRule"] = prot.getCrossesRule;
prot["getCrosses"] = prot.getCrosses;
prot["setDefault"] = prot.setDefault;
window["AscCommon"].asc_CatAxisSettings = asc_CatAxisSettings;
prot = asc_CatAxisSettings.prototype;
prot["putIntervalBetweenTick"] = prot.putIntervalBetweenTick;
prot["putIntervalBetweenLabelsRule"] = prot.putIntervalBetweenLabelsRule;
prot["putIntervalBetweenLabels"] = prot.putIntervalBetweenLabels;
prot["putInvertCatOrder"] = prot.putInvertCatOrder;
prot["putLabelsAxisDistance"] = prot.putLabelsAxisDistance;
prot["putMajorTickMark"] = prot.putMajorTickMark;
prot["putMinorTickMark"] = prot.putMinorTickMark;
prot["putTickLabelsPos"] = prot.putTickLabelsPos;
prot["putCrossesRule"] = prot.putCrossesRule;
prot["putCrosses"] = prot.putCrosses;
prot["putAxisType"] = prot.putAxisType;
prot["putLabelsPosition"] = prot.putLabelsPosition;
prot["putCrossMaxVal"] = prot.putCrossMaxVal;
prot["putCrossMinVal"] = prot.putCrossMinVal;
prot["getIntervalBetweenTick"] = prot.getIntervalBetweenTick;
prot["getIntervalBetweenLabelsRule"] = prot.getIntervalBetweenLabelsRule;
prot["getIntervalBetweenLabels"] = prot.getIntervalBetweenLabels;
prot["getInvertCatOrder"] = prot.getInvertCatOrder;
prot["getLabelsAxisDistance"] = prot.getLabelsAxisDistance;
prot["getMajorTickMark"] = prot.getMajorTickMark;
prot["getMinorTickMark"] = prot.getMinorTickMark;
prot["getTickLabelsPos"] = prot.getTickLabelsPos;
prot["getCrossesRule"] = prot.getCrossesRule;
prot["getCrosses"] = prot.getCrosses;
prot["getAxisType"] = prot.getAxisType;
prot["getLabelsPosition"] = prot.getLabelsPosition;
prot["getCrossMaxVal"] = prot.getCrossMaxVal;
prot["getCrossMinVal"] = prot.getCrossMinVal;
prot["setDefault"] = prot.setDefault;
window["Asc"]["asc_ChartSettings"] = window["Asc"].asc_ChartSettings = asc_ChartSettings;
prot = asc_ChartSettings.prototype;
prot["putStyle"] = prot.putStyle;
prot["putTitle"] = prot.putTitle;
prot["putRowCols"] = prot.putRowCols;
prot["putHorAxisLabel"] = prot.putHorAxisLabel;
prot["putVertAxisLabel"] = prot.putVertAxisLabel;
prot["putLegendPos"] = prot.putLegendPos;
prot["putDataLabelsPos"] = prot.putDataLabelsPos;
prot["putCatAx"] = prot.putCatAx;
prot["putValAx"] = prot.putValAx;
prot["getStyle"] = prot.getStyle;
prot["getTitle"] = prot.getTitle;
prot["getRowCols"] = prot.getRowCols;
prot["getHorAxisLabel"] = prot.getHorAxisLabel;
prot["getVertAxisLabel"] = prot.getVertAxisLabel;
prot["getLegendPos"] = prot.getLegendPos;
prot["getDataLabelsPos"] = prot.getDataLabelsPos;
prot["getHorAx"] = prot.getHorAx;
prot["getVertAx"] = prot.getVertAx;
prot["getHorGridLines"] = prot.getHorGridLines;
prot["putHorGridLines"] = prot.putHorGridLines;
prot["getVertGridLines"] = prot.getVertGridLines;
prot["putVertGridLines"] = prot.putVertGridLines;
prot["getType"] = prot.getType;
prot["putType"] = prot.putType;
prot["putShowSerName"] = prot.putShowSerName;
prot["getShowSerName"] = prot.getShowSerName;
prot["putShowCatName"] = prot.putShowCatName;
prot["getShowCatName"] = prot.getShowCatName;
prot["putShowVal"] = prot.putShowVal;
prot["getShowVal"] = prot.getShowVal;
prot["putSeparator"] = prot.putSeparator;
prot["getSeparator"] = prot.getSeparator;
prot["putHorAxisProps"] = prot.putHorAxisProps;
prot["getHorAxisProps"] = prot.getHorAxisProps;
prot["putVertAxisProps"] = prot.putVertAxisProps;
prot["getVertAxisProps"] = prot.getVertAxisProps;
prot["putRange"] = prot.putRange;
prot["getRange"] = prot.getRange;
prot["putInColumns"] = prot.putInColumns;
prot["getInColumns"] = prot.getInColumns;
prot["putShowMarker"] = prot.putShowMarker;
prot["getShowMarker"] = prot.getShowMarker;
prot["putLine"] = prot.putLine;
prot["getLine"] = prot.getLine;
prot["putSmooth"] = prot.putSmooth;
prot["getSmooth"] = prot.getSmooth;
prot["changeType"] = prot.changeType;
prot["putShowHorAxis"] = prot.putShowHorAxis;
prot["getShowHorAxis"] = prot.getShowHorAxis;
prot["putShowVerAxis"] = prot.putShowVerAxis;
prot["getShowVerAxis"] = prot.getShowVerAxis;
window["AscCommon"].asc_CRect = asc_CRect;
prot = asc_CRect.prototype;
prot["asc_getX"] = prot.asc_getX;
prot["asc_getY"] = prot.asc_getY;
prot["asc_getWidth"] = prot.asc_getWidth;
prot["asc_getHeight"] = prot.asc_getHeight;
window["AscCommon"].CColor = CColor;
prot = CColor.prototype;
prot["getR"] = prot.getR;
prot["get_r"] = prot.get_r;
prot["put_r"] = prot.put_r;
prot["getG"] = prot.getG;
prot["get_g"] = prot.get_g;
prot["put_g"] = prot.put_g;
prot["getB"] = prot.getB;
prot["get_b"] = prot.get_b;
prot["put_b"] = prot.put_b;
prot["getA"] = prot.getA;
prot["get_hex"] = prot.get_hex;
window["Asc"]["asc_CColor"] = window["Asc"].asc_CColor = asc_CColor;
prot = asc_CColor.prototype;
prot["get_r"] = prot["asc_getR"] = prot.asc_getR;
prot["put_r"] = prot["asc_putR"] = prot.asc_putR;
prot["get_g"] = prot["asc_getG"] = prot.asc_getG;
prot["put_g"] = prot["asc_putG"] = prot.asc_putG;
prot["get_b"] = prot["asc_getB"] = prot.asc_getB;
prot["put_b"] = prot["asc_putB"] = prot.asc_putB;
prot["get_a"] = prot["asc_getA"] = prot.asc_getA;
prot["put_a"] = prot["asc_putA"] = prot.asc_putA;
prot["get_auto"] = prot["asc_getAuto"] = prot.asc_getAuto;
prot["put_auto"] = prot["asc_putAuto"] = prot.asc_putAuto;
prot["get_type"] = prot["asc_getType"] = prot.asc_getType;
prot["put_type"] = prot["asc_putType"] = prot.asc_putType;
prot["get_value"] = prot["asc_getValue"] = prot.asc_getValue;
prot["put_value"] = prot["asc_putValue"] = prot.asc_putValue;
prot["get_hex"] = prot["asc_getHex"] = prot.asc_getHex;
prot["get_color"] = prot["asc_getColor"] = prot.asc_getColor;
prot["get_hex"] = prot["asc_getHex"] = prot.asc_getHex;
window["Asc"]["asc_CTextBorder"] = window["Asc"].asc_CTextBorder = asc_CTextBorder;
prot = asc_CTextBorder.prototype;
prot["get_Color"] = prot["asc_getColor"] = prot.asc_getColor;
prot["put_Color"] = prot["asc_putColor"] = prot.asc_putColor;
prot["get_Size"] = prot["asc_getSize"] = prot.asc_getSize;
prot["put_Size"] = prot["asc_putSize"] = prot.asc_putSize;
prot["get_Value"] = prot["asc_getValue"] = prot.asc_getValue;
prot["put_Value"] = prot["asc_putValue"] = prot.asc_putValue;
prot["get_Space"] = prot["asc_getSpace"] = prot.asc_getSpace;
prot["put_Space"] = prot["asc_putSpace"] = prot.asc_putSpace;
prot["get_ForSelectedCells"] = prot["asc_getForSelectedCells"] = prot.asc_getForSelectedCells;
prot["put_ForSelectedCells"] = prot["asc_putForSelectedCells"] = prot.asc_putForSelectedCells;
window["Asc"]["asc_CParagraphBorders"] = asc_CParagraphBorders;
prot = asc_CParagraphBorders.prototype;
prot["get_Left"] = prot["asc_getLeft"] = prot.asc_getLeft;
prot["put_Left"] = prot["asc_putLeft"] = prot.asc_putLeft;
prot["get_Top"] = prot["asc_getTop"] = prot.asc_getTop;
prot["put_Top"] = prot["asc_putTop"] = prot.asc_putTop;
prot["get_Right"] = prot["asc_getRight"] = prot.asc_getRight;
prot["put_Right"] = prot["asc_putRight"] = prot.asc_putRight;
prot["get_Bottom"] = prot["asc_getBottom"] = prot.asc_getBottom;
prot["put_Bottom"] = prot["asc_putBottom"] = prot.asc_putBottom;
prot["get_Between"] = prot["asc_getBetween"] = prot.asc_getBetween;
prot["put_Between"] = prot["asc_putBetween"] = prot.asc_putBetween;
window["AscCommon"].asc_CListType = asc_CListType;
prot = asc_CListType.prototype;
prot["get_ListType"] = prot["asc_getListType"] = prot.asc_getListType;
prot["get_ListSubType"] = prot["asc_getListSubType"] = prot.asc_getListSubType;
window["AscCommon"].asc_CTextFontFamily = asc_CTextFontFamily;
prot = asc_CTextFontFamily.prototype;
prot["get_Name"] = prot["asc_getName"] = prot.asc_getName;
prot["get_Index"] = prot["asc_getIndex"] = prot.asc_getIndex;
window["Asc"]["asc_CParagraphTab"] = window["Asc"].asc_CParagraphTab = asc_CParagraphTab;
prot = asc_CParagraphTab.prototype;
prot["get_Value"] = prot["asc_getValue"] = prot.asc_getValue;
prot["put_Value"] = prot["asc_putValue"] = prot.asc_putValue;
prot["get_Pos"] = prot["asc_getPos"] = prot.asc_getPos;
prot["put_Pos"] = prot["asc_putPos"] = prot.asc_putPos;
prot["get_Leader"] = prot["asc_getLeader"] = prot.asc_getLeader;
prot["put_Leader"] = prot["asc_putLeader"] = prot.asc_putLeader;
window["Asc"]["asc_CParagraphTabs"] = window["Asc"].asc_CParagraphTabs = asc_CParagraphTabs;
prot = asc_CParagraphTabs.prototype;
prot["get_Count"] = prot["asc_getCount"] = prot.asc_getCount;
prot["get_Tab"] = prot["asc_getTab"] = prot.asc_getTab;
prot["add_Tab"] = prot["asc_addTab"] = prot.asc_addTab;
prot["clear"] = prot.clear = prot["asc_clear"] = prot.asc_clear;
window["Asc"]["asc_CParagraphShd"] = window["Asc"].asc_CParagraphShd = asc_CParagraphShd;
prot = asc_CParagraphShd.prototype;
prot["get_Value"] = prot["asc_getValue"] = prot.asc_getValue;
prot["put_Value"] = prot["asc_putValue"] = prot.asc_putValue;
prot["get_Color"] = prot["asc_getColor"] = prot.asc_getColor;
prot["put_Color"] = prot["asc_putColor"] = prot.asc_putColor;
window["Asc"]["asc_CParagraphFrame"] = window["Asc"].asc_CParagraphFrame = asc_CParagraphFrame;
prot = asc_CParagraphFrame.prototype;
prot["asc_getDropCap"] = prot["get_DropCap"] = prot.asc_getDropCap;
prot["asc_putDropCap"] = prot["put_DropCap"] = prot.asc_putDropCap;
prot["asc_getH"] = prot["get_H"] = prot.asc_getH;
prot["asc_putH"] = prot["put_H"] = prot.asc_putH;
prot["asc_getHAnchor"] = prot["get_HAnchor"] = prot.asc_getHAnchor;
prot["asc_putHAnchor"] = prot["put_HAnchor"] = prot.asc_putHAnchor;
prot["asc_getHRule"] = prot["get_HRule"] = prot.asc_getHRule;
prot["asc_putHRule"] = prot["put_HRule"] = prot.asc_putHRule;
prot["asc_getHSpace"] = prot["get_HSpace"] = prot.asc_getHSpace;
prot["asc_putHSpace"] = prot["put_HSpace"] = prot.asc_putHSpace;
prot["asc_getLines"] = prot["get_Lines"] = prot.asc_getLines;
prot["asc_putLines"] = prot["put_Lines"] = prot.asc_putLines;
prot["asc_getVAnchor"] = prot["get_VAnchor"] = prot.asc_getVAnchor;
prot["asc_putVAnchor"] = prot["put_VAnchor"] = prot.asc_putVAnchor;
prot["asc_getVSpace"] = prot["get_VSpace"] = prot.asc_getVSpace;
prot["asc_putVSpace"] = prot["put_VSpace"] = prot.asc_putVSpace;
prot["asc_getW"] = prot["get_W"] = prot.asc_getW;
prot["asc_putW"] = prot["put_W"] = prot.asc_putW;
prot["asc_getWrap"] = prot["get_Wrap"] = prot.asc_getWrap;
prot["asc_putWrap"] = prot["put_Wrap"] = prot.asc_putWrap;
prot["asc_getX"] = prot["get_X"] = prot.asc_getX;
prot["asc_putX"] = prot["put_X"] = prot.asc_putX;
prot["asc_getXAlign"] = prot["get_XAlign"] = prot.asc_getXAlign;
prot["asc_putXAlign"] = prot["put_XAlign"] = prot.asc_putXAlign;
prot["asc_getY"] = prot["get_Y"] = prot.asc_getY;
prot["asc_putY"] = prot["put_Y"] = prot.asc_putY;
prot["asc_getYAlign"] = prot["get_YAlign"] = prot.asc_getYAlign;
prot["asc_putYAlign"] = prot["put_YAlign"] = prot.asc_putYAlign;
prot["asc_getBorders"] = prot["get_Borders"] = prot.asc_getBorders;
prot["asc_putBorders"] = prot["put_Borders"] = prot.asc_putBorders;
prot["asc_getShade"] = prot["get_Shade"] = prot.asc_getShade;
prot["asc_putShade"] = prot["put_Shade"] = prot.asc_putShade;
prot["asc_getFontFamily"] = prot["get_FontFamily"] = prot.asc_getFontFamily;
prot["asc_putFontFamily"] = prot["put_FontFamily"] = prot.asc_putFontFamily;
prot["asc_putFromDropCapMenu"] = prot["put_FromDropCapMenu"] = prot.asc_putFromDropCapMenu;
window["AscCommon"].asc_CParagraphSpacing = asc_CParagraphSpacing;
prot = asc_CParagraphSpacing.prototype;
prot["get_Line"] = prot["asc_getLine"] = prot.asc_getLine;
prot["get_LineRule"] = prot["asc_getLineRule"] = prot.asc_getLineRule;
prot["get_Before"] = prot["asc_getBefore"] = prot.asc_getBefore;
prot["get_After"] = prot["asc_getAfter"] = prot.asc_getAfter;
window["Asc"]["asc_CParagraphInd"] = window["Asc"].asc_CParagraphInd = asc_CParagraphInd;
prot = asc_CParagraphInd.prototype;
prot["get_Left"] = prot["asc_getLeft"] = prot.asc_getLeft;
prot["put_Left"] = prot["asc_putLeft"] = prot.asc_putLeft;
prot["get_Right"] = prot["asc_getRight"] = prot.asc_getRight;
prot["put_Right"] = prot["asc_putRight"] = prot.asc_putRight;
prot["get_FirstLine"] = prot["asc_getFirstLine"] = prot.asc_getFirstLine;
prot["put_FirstLine"] = prot["asc_putFirstLine"] = prot.asc_putFirstLine;
window["Asc"]["asc_CParagraphProperty"] = window["Asc"].asc_CParagraphProperty = asc_CParagraphProperty;
prot = asc_CParagraphProperty.prototype;
prot["get_ContextualSpacing"] = prot["asc_getContextualSpacing"] = prot.asc_getContextualSpacing;
prot["put_ContextualSpacing"] = prot["asc_putContextualSpacing"] = prot.asc_putContextualSpacing;
prot["get_Ind"] = prot["asc_getInd"] = prot.asc_getInd;
prot["put_Ind"] = prot["asc_putInd"] = prot.asc_putInd;
prot["get_KeepLines"] = prot["asc_getKeepLines"] = prot.asc_getKeepLines;
prot["put_KeepLines"] = prot["asc_putKeepLines"] = prot.asc_putKeepLines;
prot["get_KeepNext"] = prot["asc_getKeepNext"] = prot.asc_getKeepNext;
prot["put_KeepNext"] = prot["asc_putKeepNext"] = prot.asc_putKeepNext;
prot["get_PageBreakBefore"] = prot["asc_getPageBreakBefore"] = prot.asc_getPageBreakBefore;
prot["put_PageBreakBefore"] = prot["asc_putPageBreakBefore"] = prot.asc_putPageBreakBefore;
prot["get_WidowControl"] = prot["asc_getWidowControl"] = prot.asc_getWidowControl;
prot["put_WidowControl"] = prot["asc_putWidowControl"] = prot.asc_putWidowControl;
prot["get_Spacing"] = prot["asc_getSpacing"] = prot.asc_getSpacing;
prot["put_Spacing"] = prot["asc_putSpacing"] = prot.asc_putSpacing;
prot["get_Borders"] = prot["asc_getBorders"] = prot.asc_getBorders;
prot["put_Borders"] = prot["asc_putBorders"] = prot.asc_putBorders;
prot["get_Shade"] = prot["asc_getShade"] = prot.asc_getShade;
prot["put_Shade"] = prot["asc_putShade"] = prot.asc_putShade;
prot["get_Locked"] = prot["asc_getLocked"] = prot.asc_getLocked;
prot["get_CanAddTable"] = prot["asc_getCanAddTable"] = prot.asc_getCanAddTable;
prot["get_Subscript"] = prot["asc_getSubscript"] = prot.asc_getSubscript;
prot["put_Subscript"] = prot["asc_putSubscript"] = prot.asc_putSubscript;
prot["get_Superscript"] = prot["asc_getSuperscript"] = prot.asc_getSuperscript;
prot["put_Superscript"] = prot["asc_putSuperscript"] = prot.asc_putSuperscript;
prot["get_SmallCaps"] = prot["asc_getSmallCaps"] = prot.asc_getSmallCaps;
prot["put_SmallCaps"] = prot["asc_putSmallCaps"] = prot.asc_putSmallCaps;
prot["get_AllCaps"] = prot["asc_getAllCaps"] = prot.asc_getAllCaps;
prot["put_AllCaps"] = prot["asc_putAllCaps"] = prot.asc_putAllCaps;
prot["get_Strikeout"] = prot["asc_getStrikeout"] = prot.asc_getStrikeout;
prot["put_Strikeout"] = prot["asc_putStrikeout"] = prot.asc_putStrikeout;
prot["get_DStrikeout"] = prot["asc_getDStrikeout"] = prot.asc_getDStrikeout;
prot["put_DStrikeout"] = prot["asc_putDStrikeout"] = prot.asc_putDStrikeout;
prot["get_TextSpacing"] = prot["asc_getTextSpacing"] = prot.asc_getTextSpacing;
prot["put_TextSpacing"] = prot["asc_putTextSpacing"] = prot.asc_putTextSpacing;
prot["get_Position"] = prot["asc_getPosition"] = prot.asc_getPosition;
prot["put_Position"] = prot["asc_putPosition"] = prot.asc_putPosition;
prot["get_Tabs"] = prot["asc_getTabs"] = prot.asc_getTabs;
prot["put_Tabs"] = prot["asc_putTabs"] = prot.asc_putTabs;
prot["get_DefaultTab"] = prot["asc_getDefaultTab"] = prot.asc_getDefaultTab;
prot["put_DefaultTab"] = prot["asc_putDefaultTab"] = prot.asc_putDefaultTab;
prot["get_FramePr"] = prot["asc_getFramePr"] = prot.asc_getFramePr;
prot["put_FramePr"] = prot["asc_putFramePr"] = prot.asc_putFramePr;
prot["get_CanAddDropCap"] = prot["asc_getCanAddDropCap"] = prot.asc_getCanAddDropCap;
prot["get_CanAddImage"] = prot["asc_getCanAddImage"] = prot.asc_getCanAddImage;
window["AscCommon"].asc_CTexture = asc_CTexture;
prot = asc_CTexture.prototype;
prot["get_id"] = prot["asc_getId"] = prot.asc_getId;
prot["get_image"] = prot["asc_getImage"] = prot.asc_getImage;
window["AscCommon"].asc_CImageSize = asc_CImageSize;
prot = asc_CImageSize.prototype;
prot["get_ImageWidth"] = prot["asc_getImageWidth"] = prot.asc_getImageWidth;
prot["get_ImageHeight"] = prot["asc_getImageHeight"] = prot.asc_getImageHeight;
prot["get_IsCorrect"] = prot["asc_getIsCorrect"] = prot.asc_getIsCorrect;
window["Asc"]["asc_CPaddings"] = window["Asc"].asc_CPaddings = asc_CPaddings;
prot = asc_CPaddings.prototype;
prot["get_Left"] = prot["asc_getLeft"] = prot.asc_getLeft;
prot["put_Left"] = prot["asc_putLeft"] = prot.asc_putLeft;
prot["get_Top"] = prot["asc_getTop"] = prot.asc_getTop;
prot["put_Top"] = prot["asc_putTop"] = prot.asc_putTop;
prot["get_Bottom"] = prot["asc_getBottom"] = prot.asc_getBottom;
prot["put_Bottom"] = prot["asc_putBottom"] = prot.asc_putBottom;
prot["get_Right"] = prot["asc_getRight"] = prot.asc_getRight;
prot["put_Right"] = prot["asc_putRight"] = prot.asc_putRight;
window["Asc"]["asc_CShapeProperty"] = window["Asc"].asc_CShapeProperty = asc_CShapeProperty;
prot = asc_CShapeProperty.prototype;
prot["get_type"] = prot["asc_getType"] = prot.asc_getType;
prot["put_type"] = prot["asc_putType"] = prot.asc_putType;
prot["get_fill"] = prot["asc_getFill"] = prot.asc_getFill;
prot["put_fill"] = prot["asc_putFill"] = prot.asc_putFill;
prot["get_stroke"] = prot["asc_getStroke"] = prot.asc_getStroke;
prot["put_stroke"] = prot["asc_putStroke"] = prot.asc_putStroke;
prot["get_paddings"] = prot["asc_getPaddings"] = prot.asc_getPaddings;
prot["put_paddings"] = prot["asc_putPaddings"] = prot.asc_putPaddings;
prot["get_CanFill"] = prot["asc_getCanFill"] = prot.asc_getCanFill;
prot["put_CanFill"] = prot["asc_putCanFill"] = prot.asc_putCanFill;
prot["get_CanChangeArrows"] = prot["asc_getCanChangeArrows"] = prot.asc_getCanChangeArrows;
prot["set_CanChangeArrows"] = prot["asc_setCanChangeArrows"] = prot.asc_setCanChangeArrows;
prot["get_FromChart"] = prot["asc_getFromChart"] = prot.asc_getFromChart;
prot["set_FromChart"] = prot["asc_setFromChart"] = prot.asc_setFromChart;
prot["get_Locked"] = prot["asc_getLocked"] = prot.asc_getLocked;
prot["set_Locked"] = prot["asc_setLocked"] = prot.asc_setLocked;
prot["get_Width"] = prot["asc_getWidth"] = prot.asc_getWidth;
prot["put_Width"] = prot["asc_putWidth"] = prot.asc_putWidth;
prot["get_Height"] = prot["asc_getHeight"] = prot.asc_getHeight;
prot["put_Height"] = prot["asc_putHeight"] = prot.asc_putHeight;
prot["get_VerticalTextAlign"] = prot["asc_getVerticalTextAlign"] = prot.asc_getVerticalTextAlign;
prot["put_VerticalTextAlign"] = prot["asc_putVerticalTextAlign"] = prot.asc_putVerticalTextAlign;
prot["get_Vert"] = prot["asc_getVert"] = prot.asc_getVert;
prot["put_Vert"] = prot["asc_putVert"] = prot.asc_putVert;
prot["get_TextArtProperties"] = prot["asc_getTextArtProperties"] = prot.asc_getTextArtProperties;
prot["put_TextArtProperties"] = prot["asc_putTextArtProperties"] = prot.asc_putTextArtProperties;
prot["get_LockAspect"] = prot["asc_getLockAspect"] = prot.asc_getLockAspect;
prot["put_LockAspect"] = prot["asc_putLockAspect"] = prot.asc_putLockAspect;
prot["get_Title"] = prot["asc_getTitle"] = prot.asc_getTitle;
prot["put_Title"] = prot["asc_putTitle"] = prot.asc_putTitle;
prot["get_Description"] = prot["asc_getDescription"] = prot.asc_getDescription;
prot["put_Description"] = prot["asc_putDescription"] = prot.asc_putDescription;
prot["get_ColumnNumber"] = prot["asc_getColumnNumber"] = prot.asc_getColumnNumber;
prot["put_ColumnNumber"] = prot["asc_putColumnNumber"] = prot.asc_putColumnNumber;
prot["get_ColumnSpace"] = prot["asc_getColumnSpace"] = prot.asc_getColumnSpace;
prot["put_ColumnSpace"] = prot["asc_putColumnSpace"] = prot.asc_putColumnSpace;
prot["get_SignatureId"] = prot["asc_getSignatureId"] = prot.asc_getSignatureId;
prot["put_SignatureId"] = prot["asc_putSignatureId"] = prot.asc_putSignatureId;
prot["get_FromImage"] = prot["asc_getFromImage"] = prot.asc_getFromImage;
prot["put_FromImage"] = prot["asc_putFromImage"] = prot.asc_putFromImage;
window["Asc"]["asc_TextArtProperties"] = window["Asc"].asc_TextArtProperties = asc_TextArtProperties;
prot = asc_TextArtProperties.prototype;
prot["asc_putFill"] = prot.asc_putFill;
prot["asc_getFill"] = prot.asc_getFill;
prot["asc_putLine"] = prot.asc_putLine;
prot["asc_getLine"] = prot.asc_getLine;
prot["asc_putForm"] = prot.asc_putForm;
prot["asc_getForm"] = prot.asc_getForm;
prot["asc_putStyle"] = prot.asc_putStyle;
prot["asc_getStyle"] = prot.asc_getStyle;
window['Asc']['CImagePositionH'] = window["Asc"].CImagePositionH = CImagePositionH;
prot = CImagePositionH.prototype;
prot['get_RelativeFrom'] = prot.get_RelativeFrom;
prot['put_RelativeFrom'] = prot.put_RelativeFrom;
prot['get_UseAlign'] = prot.get_UseAlign;
prot['put_UseAlign'] = prot.put_UseAlign;
prot['get_Align'] = prot.get_Align;
prot['put_Align'] = prot.put_Align;
prot['get_Value'] = prot.get_Value;
prot['put_Value'] = prot.put_Value;
prot['get_Percent'] = prot.get_Percent;
prot['put_Percent'] = prot.put_Percent;
window['Asc']['CImagePositionV'] = window["Asc"].CImagePositionV = CImagePositionV;
prot = CImagePositionV.prototype;
prot['get_RelativeFrom'] = prot.get_RelativeFrom;
prot['put_RelativeFrom'] = prot.put_RelativeFrom;
prot['get_UseAlign'] = prot.get_UseAlign;
prot['put_UseAlign'] = prot.put_UseAlign;
prot['get_Align'] = prot.get_Align;
prot['put_Align'] = prot.put_Align;
prot['get_Value'] = prot.get_Value;
prot['put_Value'] = prot.put_Value;
prot['get_Percent'] = prot.get_Percent;
prot['put_Percent'] = prot.put_Percent;
window['Asc']['CPosition'] = window["Asc"].CPosition = CPosition;
prot = CPosition.prototype;
prot['get_X'] = prot.get_X;
prot['put_X'] = prot.put_X;
prot['get_Y'] = prot.get_Y;
prot['put_Y'] = prot.put_Y;
window["Asc"]["asc_CImgProperty"] = window["Asc"].asc_CImgProperty = asc_CImgProperty;
prot = asc_CImgProperty.prototype;
prot["get_ChangeLevel"] = prot["asc_getChangeLevel"] = prot.asc_getChangeLevel;
prot["put_ChangeLevel"] = prot["asc_putChangeLevel"] = prot.asc_putChangeLevel;
prot["get_CanBeFlow"] = prot["asc_getCanBeFlow"] = prot.asc_getCanBeFlow;
prot["get_Width"] = prot["asc_getWidth"] = prot.asc_getWidth;
prot["put_Width"] = prot["asc_putWidth"] = prot.asc_putWidth;
prot["get_Height"] = prot["asc_getHeight"] = prot.asc_getHeight;
prot["put_Height"] = prot["asc_putHeight"] = prot.asc_putHeight;
prot["get_WrappingStyle"] = prot["asc_getWrappingStyle"] = prot.asc_getWrappingStyle;
prot["put_WrappingStyle"] = prot["asc_putWrappingStyle"] = prot.asc_putWrappingStyle;
prot["get_Paddings"] = prot["asc_getPaddings"] = prot.asc_getPaddings;
prot["put_Paddings"] = prot["asc_putPaddings"] = prot.asc_putPaddings;
prot["get_AllowOverlap"] = prot["asc_getAllowOverlap"] = prot.asc_getAllowOverlap;
prot["put_AllowOverlap"] = prot["asc_putAllowOverlap"] = prot.asc_putAllowOverlap;
prot["get_Position"] = prot["asc_getPosition"] = prot.asc_getPosition;
prot["put_Position"] = prot["asc_putPosition"] = prot.asc_putPosition;
prot["get_PositionH"] = prot["asc_getPositionH"] = prot.asc_getPositionH;
prot["put_PositionH"] = prot["asc_putPositionH"] = prot.asc_putPositionH;
prot["get_PositionV"] = prot["asc_getPositionV"] = prot.asc_getPositionV;
prot["put_PositionV"] = prot["asc_putPositionV"] = prot.asc_putPositionV;
prot["get_SizeRelH"] = prot["asc_getSizeRelH"] = prot.asc_getSizeRelH;
prot["put_SizeRelH"] = prot["asc_putSizeRelH"] = prot.asc_putSizeRelH;
prot["get_SizeRelV"] = prot["asc_getSizeRelV"] = prot.asc_getSizeRelV;
prot["put_SizeRelV"] = prot["asc_putSizeRelV"] = prot.asc_putSizeRelV;
prot["get_Value_X"] = prot["asc_getValue_X"] = prot.asc_getValue_X;
prot["get_Value_Y"] = prot["asc_getValue_Y"] = prot.asc_getValue_Y;
prot["get_ImageUrl"] = prot["asc_getImageUrl"] = prot.asc_getImageUrl;
prot["put_ImageUrl"] = prot["asc_putImageUrl"] = prot.asc_putImageUrl;
prot["get_Group"] = prot["asc_getGroup"] = prot.asc_getGroup;
prot["put_Group"] = prot["asc_putGroup"] = prot.asc_putGroup;
prot["get_FromGroup"] = prot["asc_getFromGroup"] = prot.asc_getFromGroup;
prot["put_FromGroup"] = prot["asc_putFromGroup"] = prot.asc_putFromGroup;
prot["get_isChartProps"] = prot["asc_getisChartProps"] = prot.asc_getisChartProps;
prot["put_isChartPross"] = prot["asc_putisChartPross"] = prot.asc_putisChartPross;
prot["get_SeveralCharts"] = prot["asc_getSeveralCharts"] = prot.asc_getSeveralCharts;
prot["put_SeveralCharts"] = prot["asc_putSeveralCharts"] = prot.asc_putSeveralCharts;
prot["get_SeveralChartTypes"] = prot["asc_getSeveralChartTypes"] = prot.asc_getSeveralChartTypes;
prot["put_SeveralChartTypes"] = prot["asc_putSeveralChartTypes"] = prot.asc_putSeveralChartTypes;
prot["get_SeveralChartStyles"] = prot["asc_getSeveralChartStyles"] = prot.asc_getSeveralChartStyles;
prot["put_SeveralChartStyles"] = prot["asc_putSeveralChartStyles"] = prot.asc_putSeveralChartStyles;
prot["get_VerticalTextAlign"] = prot["asc_getVerticalTextAlign"] = prot.asc_getVerticalTextAlign;
prot["put_VerticalTextAlign"] = prot["asc_putVerticalTextAlign"] = prot.asc_putVerticalTextAlign;
prot["get_Vert"] = prot["asc_getVert"] = prot.asc_getVert;
prot["put_Vert"] = prot["asc_putVert"] = prot.asc_putVert;
prot["get_Locked"] = prot["asc_getLocked"] = prot.asc_getLocked;
prot["getLockAspect"] = prot["asc_getLockAspect"] = prot.asc_getLockAspect;
prot["putLockAspect"] = prot["asc_putLockAspect"] = prot.asc_putLockAspect;
prot["get_ChartProperties"] = prot["asc_getChartProperties"] = prot.asc_getChartProperties;
prot["put_ChartProperties"] = prot["asc_putChartProperties"] = prot.asc_putChartProperties;
prot["get_ShapeProperties"] = prot["asc_getShapeProperties"] = prot.asc_getShapeProperties;
prot["put_ShapeProperties"] = prot["asc_putShapeProperties"] = prot.asc_putShapeProperties;
prot["get_OriginSize"] = prot["asc_getOriginSize"] = prot.asc_getOriginSize;
prot["get_PluginGuid"] = prot["asc_getPluginGuid"] = prot.asc_getPluginGuid;
prot["put_PluginGuid"] = prot["asc_putPluginGuid"] = prot.asc_putPluginGuid;
prot["get_PluginData"] = prot["asc_getPluginData"] = prot.asc_getPluginData;
prot["put_PluginData"] = prot["asc_putPluginData"] = prot.asc_putPluginData;
prot["get_Title"] = prot["asc_getTitle"] = prot.asc_getTitle;
prot["put_Title"] = prot["asc_putTitle"] = prot.asc_putTitle;
prot["get_Description"] = prot["asc_getDescription"] = prot.asc_getDescription;
prot["put_Description"] = prot["asc_putDescription"] = prot.asc_putDescription;
prot["get_ColumnNumber"] = prot["asc_getColumnNumber"] = prot.asc_getColumnNumber;
prot["put_ColumnNumber"] = prot["asc_putColumnNumber"] = prot.asc_putColumnNumber;
prot["get_ColumnSpace"] = prot["asc_getColumnSpace"] = prot.asc_getColumnSpace;
prot["put_ColumnSpace"] = prot["asc_putColumnSpace"] = prot.asc_putColumnSpace;
prot["asc_getSignatureId"] = prot["asc_getSignatureId"] = prot.asc_getSignatureId;
window["AscCommon"].asc_CSelectedObject = asc_CSelectedObject;
prot = asc_CSelectedObject.prototype;
prot["get_ObjectType"] = prot["asc_getObjectType"] = prot.asc_getObjectType;
prot["get_ObjectValue"] = prot["asc_getObjectValue"] = prot.asc_getObjectValue;
window["Asc"]["asc_CShapeFill"] = window["Asc"].asc_CShapeFill = asc_CShapeFill;
prot = asc_CShapeFill.prototype;
prot["get_type"] = prot["asc_getType"] = prot.asc_getType;
prot["put_type"] = prot["asc_putType"] = prot.asc_putType;
prot["get_fill"] = prot["asc_getFill"] = prot.asc_getFill;
prot["put_fill"] = prot["asc_putFill"] = prot.asc_putFill;
prot["get_transparent"] = prot["asc_getTransparent"] = prot.asc_getTransparent;
prot["put_transparent"] = prot["asc_putTransparent"] = prot.asc_putTransparent;
prot["asc_CheckForseSet"] = prot["asc_CheckForseSet"] = prot.asc_CheckForseSet;
window["Asc"]["asc_CFillBlip"] = window["Asc"].asc_CFillBlip = asc_CFillBlip;
prot = asc_CFillBlip.prototype;
prot["get_type"] = prot["asc_getType"] = prot.asc_getType;
prot["put_type"] = prot["asc_putType"] = prot.asc_putType;
prot["get_url"] = prot["asc_getUrl"] = prot.asc_getUrl;
prot["put_url"] = prot["asc_putUrl"] = prot.asc_putUrl;
prot["get_texture_id"] = prot["asc_getTextureId"] = prot.asc_getTextureId;
prot["put_texture_id"] = prot["asc_putTextureId"] = prot.asc_putTextureId;
window["Asc"]["asc_CFillHatch"] = window["Asc"].asc_CFillHatch = asc_CFillHatch;
prot = asc_CFillHatch.prototype;
prot["get_pattern_type"] = prot["asc_getPatternType"] = prot.asc_getPatternType;
prot["put_pattern_type"] = prot["asc_putPatternType"] = prot.asc_putPatternType;
prot["get_color_fg"] = prot["asc_getColorFg"] = prot.asc_getColorFg;
prot["put_color_fg"] = prot["asc_putColorFg"] = prot.asc_putColorFg;
prot["get_color_bg"] = prot["asc_getColorBg"] = prot.asc_getColorBg;
prot["put_color_bg"] = prot["asc_putColorBg"] = prot.asc_putColorBg;
window["Asc"]["asc_CFillGrad"] = window["Asc"].asc_CFillGrad = asc_CFillGrad;
prot = asc_CFillGrad.prototype;
prot["get_colors"] = prot["asc_getColors"] = prot.asc_getColors;
prot["put_colors"] = prot["asc_putColors"] = prot.asc_putColors;
prot["get_positions"] = prot["asc_getPositions"] = prot.asc_getPositions;
prot["put_positions"] = prot["asc_putPositions"] = prot.asc_putPositions;
prot["get_grad_type"] = prot["asc_getGradType"] = prot.asc_getGradType;
prot["put_grad_type"] = prot["asc_putGradType"] = prot.asc_putGradType;
prot["get_linear_angle"] = prot["asc_getLinearAngle"] = prot.asc_getLinearAngle;
prot["put_linear_angle"] = prot["asc_putLinearAngle"] = prot.asc_putLinearAngle;
prot["get_linear_scale"] = prot["asc_getLinearScale"] = prot.asc_getLinearScale;
prot["put_linear_scale"] = prot["asc_putLinearScale"] = prot.asc_putLinearScale;
prot["get_path_type"] = prot["asc_getPathType"] = prot.asc_getPathType;
prot["put_path_type"] = prot["asc_putPathType"] = prot.asc_putPathType;
window["Asc"]["asc_CFillSolid"] = window["Asc"].asc_CFillSolid = asc_CFillSolid;
prot = asc_CFillSolid.prototype;
prot["get_color"] = prot["asc_getColor"] = prot.asc_getColor;
prot["put_color"] = prot["asc_putColor"] = prot.asc_putColor;
window["Asc"]["asc_CStroke"] = window["Asc"].asc_CStroke = asc_CStroke;
prot = asc_CStroke.prototype;
prot["get_type"] = prot["asc_getType"] = prot.asc_getType;
prot["put_type"] = prot["asc_putType"] = prot.asc_putType;
prot["get_width"] = prot["asc_getWidth"] = prot.asc_getWidth;
prot["put_width"] = prot["asc_putWidth"] = prot.asc_putWidth;
prot["get_color"] = prot["asc_getColor"] = prot.asc_getColor;
prot["put_color"] = prot["asc_putColor"] = prot.asc_putColor;
prot["get_linejoin"] = prot["asc_getLinejoin"] = prot.asc_getLinejoin;
prot["put_linejoin"] = prot["asc_putLinejoin"] = prot.asc_putLinejoin;
prot["get_linecap"] = prot["asc_getLinecap"] = prot.asc_getLinecap;
prot["put_linecap"] = prot["asc_putLinecap"] = prot.asc_putLinecap;
prot["get_linebeginstyle"] = prot["asc_getLinebeginstyle"] = prot.asc_getLinebeginstyle;
prot["put_linebeginstyle"] = prot["asc_putLinebeginstyle"] = prot.asc_putLinebeginstyle;
prot["get_linebeginsize"] = prot["asc_getLinebeginsize"] = prot.asc_getLinebeginsize;
prot["put_linebeginsize"] = prot["asc_putLinebeginsize"] = prot.asc_putLinebeginsize;
prot["get_lineendstyle"] = prot["asc_getLineendstyle"] = prot.asc_getLineendstyle;
prot["put_lineendstyle"] = prot["asc_putLineendstyle"] = prot.asc_putLineendstyle;
prot["get_lineendsize"] = prot["asc_getLineendsize"] = prot.asc_getLineendsize;
prot["put_lineendsize"] = prot["asc_putLineendsize"] = prot.asc_putLineendsize;
prot["get_canChangeArrows"] = prot["asc_getCanChangeArrows"] = prot.asc_getCanChangeArrows;
prot["put_prstDash"] = prot["asc_putPrstDash"] = prot.asc_putPrstDash;
prot["get_prstDash"] = prot["asc_getPrstDash"] = prot.asc_getPrstDash;
window["AscCommon"].CAscColorScheme = CAscColorScheme;
prot = CAscColorScheme.prototype;
prot["get_colors"] = prot.get_colors;
prot["get_name"] = prot.get_name;
window["AscCommon"].CMouseMoveData = CMouseMoveData;
prot = CMouseMoveData.prototype;
prot["get_Type"] = prot.get_Type;
prot["get_X"] = prot.get_X;
prot["get_Y"] = prot.get_Y;
prot["get_Hyperlink"] = prot.get_Hyperlink;
prot["get_UserId"] = prot.get_UserId;
prot["get_HaveChanges"] = prot.get_HaveChanges;
prot["get_LockedObjectType"] = prot.get_LockedObjectType;
prot["get_FootnoteText"] = prot.get_FootnoteText;
prot["get_FootnoteNumber"] = prot.get_FootnoteNumber;
window["Asc"]["asc_CUserInfo"] = window["Asc"].asc_CUserInfo = asc_CUserInfo;
prot = asc_CUserInfo.prototype;
prot["asc_putId"] = prot["put_Id"] = prot.asc_putId;
prot["asc_getId"] = prot["get_Id"] = prot.asc_getId;
prot["asc_putFullName"] = prot["put_FullName"] = prot.asc_putFullName;
prot["asc_getFullName"] = prot["get_FullName"] = prot.asc_getFullName;
prot["asc_putFirstName"] = prot["put_FirstName"] = prot.asc_putFirstName;
prot["asc_getFirstName"] = prot["get_FirstName"] = prot.asc_getFirstName;
prot["asc_putLastName"] = prot["put_LastName"] = prot.asc_putLastName;
prot["asc_getLastName"] = prot["get_LastName"] = prot.asc_getLastName;
window["Asc"]["asc_CDocInfo"] = window["Asc"].asc_CDocInfo = asc_CDocInfo;
prot = asc_CDocInfo.prototype;
prot["get_Id"] = prot["asc_getId"] = prot.asc_getId;
prot["put_Id"] = prot["asc_putId"] = prot.asc_putId;
prot["get_Url"] = prot["asc_getUrl"] = prot.asc_getUrl;
prot["put_Url"] = prot["asc_putUrl"] = prot.asc_putUrl;
prot["get_Title"] = prot["asc_getTitle"] = prot.asc_getTitle;
prot["put_Title"] = prot["asc_putTitle"] = prot.asc_putTitle;
prot["get_Format"] = prot["asc_getFormat"] = prot.asc_getFormat;
prot["put_Format"] = prot["asc_putFormat"] = prot.asc_putFormat;
prot["get_VKey"] = prot["asc_getVKey"] = prot.asc_getVKey;
prot["put_VKey"] = prot["asc_putVKey"] = prot.asc_putVKey;
prot["get_UserId"] = prot["asc_getUserId"] = prot.asc_getUserId;
prot["get_UserName"] = prot["asc_getUserName"] = prot.asc_getUserName;
prot["get_Options"] = prot["asc_getOptions"] = prot.asc_getOptions;
prot["put_Options"] = prot["asc_putOptions"] = prot.asc_putOptions;
prot["get_CallbackUrl"] = prot["asc_getCallbackUrl"] = prot.asc_getCallbackUrl;
prot["put_CallbackUrl"] = prot["asc_putCallbackUrl"] = prot.asc_putCallbackUrl;
prot["get_TemplateReplacement"] = prot["asc_getTemplateReplacement"] = prot.asc_getTemplateReplacement;
prot["put_TemplateReplacement"] = prot["asc_putTemplateReplacement"] = prot.asc_putTemplateReplacement;
prot["get_UserInfo"] = prot["asc_getUserInfo"] = prot.asc_getUserInfo;
prot["put_UserInfo"] = prot["asc_putUserInfo"] = prot.asc_putUserInfo;
prot["get_Token"] = prot["asc_getToken"] = prot.asc_getToken;
prot["put_Token"] = prot["asc_putToken"] = prot.asc_putToken;
prot["get_Mode"] = prot["asc_getMode"] = prot.asc_getMode;
prot["put_Mode"] = prot["asc_putMode"] = prot.asc_putMode;
prot["get_Permissions"] = prot["asc_getPermissions"] = prot.asc_getPermissions;
prot["put_Permissions"] = prot["asc_putPermissions"] = prot.asc_putPermissions;
prot["get_Lang"] = prot["asc_getLang"] = prot.asc_getLang;
prot["put_Lang"] = prot["asc_putLang"] = prot.asc_putLang;
prot["get_Encrypted"] = prot["asc_getEncrypted"] = prot.asc_getEncrypted;
prot["put_Encrypted"] = prot["asc_putEncrypted"] = prot.asc_putEncrypted;
window["AscCommon"].COpenProgress = COpenProgress;
prot = COpenProgress.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getFontsCount"] = prot.asc_getFontsCount;
prot["asc_getCurrentFont"] = prot.asc_getCurrentFont;
prot["asc_getImagesCount"] = prot.asc_getImagesCount;
prot["asc_getCurrentImage"] = prot.asc_getCurrentImage;
window["AscCommon"].CErrorData = CErrorData;
prot = CErrorData.prototype;
prot["put_Value"] = prot.put_Value;
prot["get_Value"] = prot.get_Value;
window["AscCommon"].CAscMathType = CAscMathType;
prot = CAscMathType.prototype;
prot["get_Id"] = prot.get_Id;
prot["get_X"] = prot.get_X;
prot["get_Y"] = prot.get_Y;
window["AscCommon"].CAscMathCategory = CAscMathCategory;
prot = CAscMathCategory.prototype;
prot["get_Id"] = prot.get_Id;
prot["get_Data"] = prot.get_Data;
prot["get_W"] = prot.get_W;
prot["get_H"] = prot.get_H;
window["AscCommon"].CStyleImage = CStyleImage;
prot = CStyleImage.prototype;
prot["asc_getName"] = prot["get_Name"] = prot.asc_getName;
prot["asc_getType"] = prot["get_Type"] = prot.asc_getType;
prot["asc_getImage"] = prot.asc_getImage;
window["AscCommon"].asc_CSpellCheckProperty = asc_CSpellCheckProperty;
prot = asc_CSpellCheckProperty.prototype;
prot["get_Word"] = prot.get_Word;
prot["get_Checked"] = prot.get_Checked;
prot["get_Variants"] = prot.get_Variants;
window["AscCommon"].CWatermarkOnDraw = CWatermarkOnDraw;
window["Asc"]["CPluginVariation"] = window["Asc"].CPluginVariation = CPluginVariation;
window["Asc"]["CPlugin"] = window["Asc"].CPlugin = CPlugin;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function(window, undefined){
//зависимости
//stream
//memory
//c_oAscChartType
//todo
//BinaryCommonWriter
function inherit(proto) {
function F() {}
F.prototype = proto;
return new F;
}
if (!Object.create || !Object['create']) Object['create'] = Object.create = inherit;
var c_oSerConstants = {
ErrorFormat: -2,
ErrorUnknown: -1,
ReadOk:0,
ReadUnknown:1,
ErrorStream:0x55
};
var c_oSerPropLenType = {
Null:0,
Byte:1,
Short:2,
Three:3,
Long:4,
Double:5,
Variable:6
};
var c_oSer_ColorObjectType =
{
Rgb: 0,
Type: 1,
Theme: 2,
Tint: 3
};
var c_oSer_ColorType =
{
Auto: 0
};
var c_oSerBorderType = {
Color: 0,
Space: 1,
Size: 2,
Value: 3,
ColorTheme: 4
};
var c_oSerBordersType = {
left: 0,
top: 1,
right: 2,
bottom: 3,
insideV: 4,
insideH: 5,
start: 6,
end: 7,
tl2br: 8,
tr2bl: 9,
bar: 10,
between: 11
};
var c_oSerPaddingType = {
left: 0,
top: 1,
right: 2,
bottom: 3
};
var c_oSerShdType = {
Value: 0,
Color: 1,
ColorTheme: 2
};
var c_oSer_ColorThemeType = {
Auto: 0,
Color: 1,
Tint: 2,
Shade: 3
};
var c_oSerBookmark = {
Id: 0,
Name: 1,
DisplacedByCustomXml: 2,
ColFirst: 3,
ColLast: 4
};
function BinaryCommonWriter(memory)
{
this.memory = memory;
}
BinaryCommonWriter.prototype.WriteItem = function(type, fWrite)
{
//type
this.memory.WriteByte(type);
this.WriteItemWithLength(fWrite);
};
BinaryCommonWriter.prototype.WriteItemStart = function(type, fWrite)
{
this.memory.WriteByte(type);
return this.WriteItemWithLengthStart(fWrite);
};
BinaryCommonWriter.prototype.WriteItemEnd = function(nStart)
{
this.WriteItemWithLengthEnd(nStart);
};
BinaryCommonWriter.prototype.WriteItemWithLength = function(fWrite)
{
var nStart = this.WriteItemWithLengthStart();
fWrite();
this.WriteItemWithLengthEnd(nStart);
};
BinaryCommonWriter.prototype.WriteItemWithLengthStart = function()
{
//Запоминаем позицию чтобы в конце записать туда длину
var nStart = this.memory.GetCurPosition();
this.memory.Skip(4);
return nStart;
};
BinaryCommonWriter.prototype.WriteItemWithLengthEnd = function(nStart)
{
//Length
var nEnd = this.memory.GetCurPosition();
this.memory.Seek(nStart);
this.memory.WriteLong(nEnd - nStart - 4);
this.memory.Seek(nEnd);
};
BinaryCommonWriter.prototype.WriteBorder = function(border)
{
var _this = this;
if(null != border.Value)
{
var color = null;
if (null != border.Color)
color = border.Color;
else if (null != border.Unifill) {
var doc = window.editor.WordControl.m_oLogicDocument;
border.Unifill.check(doc.Get_Theme(), doc.Get_ColorMap());
var RGBA = border.Unifill.getRGBAColor();
color = new window['AscCommonWord'].CDocumentColor(RGBA.R, RGBA.G, RGBA.B);
}
if (null != color && !color.Auto)
this.WriteColor(c_oSerBorderType.Color, color);
if (null != border.Space) {
this.memory.WriteByte(c_oSerBorderType.Space);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(border.Space);
}
if (null != border.Size) {
this.memory.WriteByte(c_oSerBorderType.Size);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(border.Size);
}
if (null != border.Unifill || (null != border.Color && border.Color.Auto)) {
this.memory.WriteByte(c_oSerBorderType.ColorTheme);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.WriteItemWithLength(function () { _this.WriteColorTheme(border.Unifill, border.Color); });
}
this.memory.WriteByte(c_oSerBorderType.Value);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(border.Value);
}
};
BinaryCommonWriter.prototype.WriteBorders = function(Borders)
{
var oThis = this;
//Left
if(null != Borders.Left)
this.WriteItem(c_oSerBordersType.left, function(){oThis.WriteBorder(Borders.Left);});
//Top
if(null != Borders.Top)
this.WriteItem(c_oSerBordersType.top, function(){oThis.WriteBorder(Borders.Top);});
//Right
if(null != Borders.Right)
this.WriteItem(c_oSerBordersType.right, function(){oThis.WriteBorder(Borders.Right);});
//Bottom
if(null != Borders.Bottom)
this.WriteItem(c_oSerBordersType.bottom, function(){oThis.WriteBorder(Borders.Bottom);});
//InsideV
if(null != Borders.InsideV)
this.WriteItem(c_oSerBordersType.insideV, function(){oThis.WriteBorder(Borders.InsideV);});
//InsideH
if(null != Borders.InsideH)
this.WriteItem(c_oSerBordersType.insideH, function(){oThis.WriteBorder(Borders.InsideH);});
//Between
if(null != Borders.Between)
this.WriteItem(c_oSerBordersType.between, function(){oThis.WriteBorder(Borders.Between);});
};
BinaryCommonWriter.prototype.WriteColor = function(type, color)
{
this.memory.WriteByte(type);
this.memory.WriteByte(c_oSerPropLenType.Three);
this.memory.WriteByte(color.r);
this.memory.WriteByte(color.g);
this.memory.WriteByte(color.b);
};
BinaryCommonWriter.prototype.WriteShd = function(Shd)
{
var _this = this;
//Value
if(null != Shd.Value)
{
this.memory.WriteByte(c_oSerShdType.Value);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(Shd.Value);
}
//Value
var color = null;
if (null != Shd.Color)
color = Shd.Color;
else if (null != Shd.Unifill) {
var doc = editor.WordControl.m_oLogicDocument;
Shd.Unifill.check(doc.Get_Theme(), doc.Get_ColorMap());
var RGBA = Shd.Unifill.getRGBAColor();
color = new AscCommonWord.CDocumentColor(RGBA.R, RGBA.G, RGBA.B);
}
if (null != color && !color.Auto)
this.WriteColor(c_oSerShdType.Color, color);
if(null != Shd.Unifill || (null != Shd.Color && Shd.Color.Auto))
{
this.memory.WriteByte(c_oSerShdType.ColorTheme);
this.memory.WriteByte(c_oSerPropLenType.Variable);
this.WriteItemWithLength(function(){_this.WriteColorTheme(Shd.Unifill, Shd.Color);});
}
};
BinaryCommonWriter.prototype.WritePaddings = function(Paddings)
{
//left
if(null != Paddings.L)
{
this.memory.WriteByte(c_oSerPaddingType.left);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(Paddings.L);
}
//top
if(null != Paddings.T)
{
this.memory.WriteByte(c_oSerPaddingType.top);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(Paddings.T);
}
//Right
if(null != Paddings.R)
{
this.memory.WriteByte(c_oSerPaddingType.right);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(Paddings.R);
}
//bottom
if(null != Paddings.B)
{
this.memory.WriteByte(c_oSerPaddingType.bottom);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble(Paddings.B);
}
};
BinaryCommonWriter.prototype.WriteColorSpreadsheet = function(color)
{
if(color instanceof AscCommonExcel.ThemeColor)
{
if(null != color.theme)
{
this.memory.WriteByte(c_oSer_ColorObjectType.Theme);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(color.theme);
}
if(null != color.tint)
{
this.memory.WriteByte(c_oSer_ColorObjectType.Tint);
this.memory.WriteByte(c_oSerPropLenType.Double);
this.memory.WriteDouble2(color.tint);
}
}
else
{
this.memory.WriteByte(c_oSer_ColorObjectType.Rgb);
this.memory.WriteByte(c_oSerPropLenType.Long);
this.memory.WriteLong(color.getRgb());
}
};
BinaryCommonWriter.prototype.WriteColorTheme = function(unifill, color)
{
if(null != color && color.Auto){
this.memory.WriteByte(c_oSer_ColorThemeType.Auto);
this.memory.WriteByte(c_oSerPropLenType.Null);
}
if (null != unifill && null != unifill.fill && null != unifill.fill.color && unifill.fill.color.color instanceof AscFormat.CSchemeColor) {
var uniColor = unifill.fill.color;
if(null != uniColor.color){
var EThemeColor = AscCommonWord.EThemeColor;
var nFormatId = EThemeColor.themecolorNone;
switch(uniColor.color.id){
case 0: nFormatId = EThemeColor.themecolorAccent1;break;
case 1: nFormatId = EThemeColor.themecolorAccent2;break;
case 2: nFormatId = EThemeColor.themecolorAccent3;break;
case 3: nFormatId = EThemeColor.themecolorAccent4;break;
case 4: nFormatId = EThemeColor.themecolorAccent5;break;
case 5: nFormatId = EThemeColor.themecolorAccent6;break;
case 6: nFormatId = EThemeColor.themecolorBackground1;break;
case 7: nFormatId = EThemeColor.themecolorBackground2;break;
case 8: nFormatId = EThemeColor.themecolorDark1;break;
case 9: nFormatId = EThemeColor.themecolorDark2;break;
case 10: nFormatId = EThemeColor.themecolorFollowedHyperlink;break;
case 11: nFormatId = EThemeColor.themecolorHyperlink;break;
case 12: nFormatId = EThemeColor.themecolorLight1;break;
case 13: nFormatId = EThemeColor.themecolorLight2;break;
case 14: nFormatId = EThemeColor.themecolorNone;break;
case 15: nFormatId = EThemeColor.themecolorText1;break;
case 16: nFormatId = EThemeColor.themecolorText2;break;
}
this.memory.WriteByte(c_oSer_ColorThemeType.Color);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(nFormatId);
}
if(null != uniColor.Mods){
for(var i = 0, length = uniColor.Mods.Mods.length; i < length; ++i){
var mod = uniColor.Mods.Mods[i];
if("wordTint" == mod.name){
this.memory.WriteByte(c_oSer_ColorThemeType.Tint);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(Math.round(mod.val));
}
else if("wordShade" == mod.name){
this.memory.WriteByte(c_oSer_ColorThemeType.Shade);
this.memory.WriteByte(c_oSerPropLenType.Byte);
this.memory.WriteByte(Math.round(mod.val));
}
}
}
}
};
BinaryCommonWriter.prototype.WriteBookmark = function(bookmark) {
var oThis = this;
if (null !== bookmark.BookmarkId) {
this.WriteItem(c_oSerBookmark.Id, function() {
oThis.memory.WriteLong(bookmark.BookmarkId);
});
}
if (bookmark.IsStart() && null !== bookmark.BookmarkName) {
this.memory.WriteByte(c_oSerBookmark.Name);
this.memory.WriteString2(bookmark.BookmarkName);
}
};
function Binary_CommonReader(stream)
{
this.stream = stream;
}
Binary_CommonReader.prototype.ReadTable = function(fReadContent)
{
var res = c_oSerConstants.ReadOk;
//stLen
res = this.stream.EnterFrame(4);
if(c_oSerConstants.ReadOk != res)
return res;
var stLen = this.stream.GetULongLE();
//Смотрим есть ли данные под всю таблицу в дальнейшем спокойно пользуемся get функциями
res = this.stream.EnterFrame(stLen);
if(c_oSerConstants.ReadOk != res)
return res;
return this.Read1(stLen, fReadContent);
};
Binary_CommonReader.prototype.Read1 = function(stLen, fRead)
{
var res = c_oSerConstants.ReadOk;
var stCurPos = 0;
while(stCurPos < stLen)
{
this.stream.bLast = false;
//stItem
var type = this.stream.GetUChar();
var length = this.stream.GetULongLE();
if (stCurPos + length + 5 >= stLen)
this.stream.bLast = true;
res = fRead(type, length);
if(res === c_oSerConstants.ReadUnknown)
{
res = this.stream.Skip2(length);
if(c_oSerConstants.ReadOk != res)
return res;
}
else if(res !== c_oSerConstants.ReadOk)
return res;
stCurPos += length + 5;
}
return res;
};
Binary_CommonReader.prototype.Read2 = function(stLen, fRead)
{
var res = c_oSerConstants.ReadOk;
var stCurPos = 0;
while(stCurPos < stLen)
{
//stItem
var type = this.stream.GetUChar();
var lenType = this.stream.GetUChar();
var nCurPosShift = 2;
var nRealLen;
switch(lenType)
{
case c_oSerPropLenType.Null: nRealLen = 0;break;
case c_oSerPropLenType.Byte: nRealLen = 1;break;
case c_oSerPropLenType.Short: nRealLen = 2;break;
case c_oSerPropLenType.Three: nRealLen = 3;break;
case c_oSerPropLenType.Long:
case c_oSerPropLenType.Double: nRealLen = 4;break;
case c_oSerPropLenType.Variable:
nRealLen = this.stream.GetULongLE();
nCurPosShift += 4;
break;
default:return c_oSerConstants.ErrorUnknown;
}
res = fRead(type, nRealLen);
if(res === c_oSerConstants.ReadUnknown)
{
res = this.stream.Skip2(nRealLen);
if(c_oSerConstants.ReadOk != res)
return res;
}
else if(res !== c_oSerConstants.ReadOk)
return res;
stCurPos += nRealLen + nCurPosShift;
}
return res;
};
Binary_CommonReader.prototype.Read2Spreadsheet = function(stLen, fRead)
{
var res = c_oSerConstants.ReadOk;
var stCurPos = 0;
while(stCurPos < stLen)
{
//stItem
var type = this.stream.GetUChar();
var lenType = this.stream.GetUChar();
var nCurPosShift = 2;
var nRealLen;
switch(lenType)
{
case c_oSerPropLenType.Null: nRealLen = 0;break;
case c_oSerPropLenType.Byte: nRealLen = 1;break;
case c_oSerPropLenType.Short: nRealLen = 2;break;
case c_oSerPropLenType.Three: nRealLen = 3;break;
case c_oSerPropLenType.Long: nRealLen = 4;break;
case c_oSerPropLenType.Double: nRealLen = 8;break;
case c_oSerPropLenType.Variable:
nRealLen = this.stream.GetULongLE();
nCurPosShift += 4;
break;
default:return c_oSerConstants.ErrorUnknown;
}
res = fRead(type, nRealLen);
if(res === c_oSerConstants.ReadUnknown)
{
res = this.stream.Skip2(nRealLen);
if(c_oSerConstants.ReadOk != res)
return res;
}
else if(res !== c_oSerConstants.ReadOk)
return res;
stCurPos += nRealLen + nCurPosShift;
}
return res;
};
Binary_CommonReader.prototype.ReadDouble = function()
{
var dRes = 0.0;
dRes |= this.stream.GetUChar();
dRes |= this.stream.GetUChar() << 8;
dRes |= this.stream.GetUChar() << 16;
dRes |= this.stream.GetUChar() << 24;
dRes /= 100000;
return dRes;
};
Binary_CommonReader.prototype.ReadColor = function()
{
var r = this.stream.GetUChar();
var g = this.stream.GetUChar();
var b = this.stream.GetUChar();
return new AscCommonWord.CDocumentColor(r, g, b);
};
Binary_CommonReader.prototype.ReadShd = function(type, length, Shd, themeColor)
{
var res = c_oSerConstants.ReadOk;
var oThis = this;
switch(type)
{
case c_oSerShdType.Value: Shd.Value = this.stream.GetUChar();break;
case c_oSerShdType.Color: Shd.Color = this.ReadColor();break;
case c_oSerShdType.ColorTheme:
res = this.Read2(length, function(t, l){
return oThis.ReadColorTheme(t, l, themeColor);
});
break;
default:
res = c_oSerConstants.ReadUnknown;
break;
}
return res;
};
Binary_CommonReader.prototype.ReadColorSpreadsheet = function(type, length, color)
{
var res = c_oSerConstants.ReadOk;
if ( c_oSer_ColorObjectType.Type == type )
color.auto = (c_oSer_ColorType.Auto == this.stream.GetUChar());
else if ( c_oSer_ColorObjectType.Rgb == type )
color.rgb = 0xffffff & this.stream.GetULongLE();
else if ( c_oSer_ColorObjectType.Theme == type )
color.theme = this.stream.GetUChar();
else if ( c_oSer_ColorObjectType.Tint == type )
color.tint = this.stream.GetDoubleLE();
else
res = c_oSerConstants.ReadUnknown;
return res;
};
Binary_CommonReader.prototype.ReadColorTheme = function(type, length, color)
{
var res = c_oSerConstants.ReadOk;
if ( c_oSer_ColorThemeType.Auto == type )
color.Auto = true;
else if ( c_oSer_ColorThemeType.Color == type )
color.Color = this.stream.GetByte();
else if ( c_oSer_ColorThemeType.Tint == type )
color.Tint = this.stream.GetByte();
else if ( c_oSer_ColorThemeType.Shade == type )
color.Shade = this.stream.GetByte();
else
res = c_oSerConstants.ReadUnknown;
return res;
};
Binary_CommonReader.prototype.ReadBookmark = function(type, length, bookmark) {
var res = c_oSerConstants.ReadOk;
if (c_oSerBookmark.Id === type) {
bookmark.BookmarkId = this.stream.GetULongLE();
} else if (c_oSerBookmark.Name === type) {
bookmark.BookmarkName = this.stream.GetString2LE(length);
} else {
res = c_oSerConstants.ReadUnknown;
}
return res;
};
/** @constructor */
function FT_Stream2(data, size) {
this.obj = null;
this.data = data;
this.size = size;
this.pos = 0;
this.cur = 0;
this.bLast = false;
}
FT_Stream2.prototype.Seek = function(_pos) {
if (_pos > this.size)
return c_oSerConstants.ErrorStream;
this.pos = _pos;
return c_oSerConstants.ReadOk;
};
FT_Stream2.prototype.Seek2 = function(_cur) {
if (_cur > this.size)
return c_oSerConstants.ErrorStream;
this.cur = _cur;
return c_oSerConstants.ReadOk;
};
FT_Stream2.prototype.Skip = function(_skip) {
if (_skip < 0)
return c_oSerConstants.ErrorStream;
return this.Seek(this.pos + _skip);
};
FT_Stream2.prototype.Skip2 = function(_skip) {
if (_skip < 0)
return c_oSerConstants.ErrorStream;
return this.Seek2(this.cur + _skip);
};
// 1 bytes
FT_Stream2.prototype.GetUChar = function() {
if (this.cur >= this.size)
return 0;
return this.data[this.cur++];
};
FT_Stream2.prototype.GetChar = function() {
if (this.cur >= this.size)
return 0;
var m = this.data[this.cur++];
if (m > 127)
m -= 256;
return m;
};
FT_Stream2.prototype.GetByte = function() {
return this.GetUChar();
};
FT_Stream2.prototype.GetBool = function() {
var Value = this.GetUChar();
return ( Value == 0 ? false : true );
};
// 2 byte
FT_Stream2.prototype.GetUShortLE = function() {
if (this.cur + 1 >= this.size)
return 0;
return (this.data[this.cur++] | this.data[this.cur++] << 8);
};
// 4 byte
FT_Stream2.prototype.GetULongLE = function() {
if (this.cur + 3 >= this.size)
return 0;
return (this.data[this.cur++] | this.data[this.cur++] << 8 | this.data[this.cur++] << 16 | this.data[this.cur++] << 24);
};
FT_Stream2.prototype.GetLongLE = function() {
return this.GetULongLE();
};
FT_Stream2.prototype.GetLong = function() {
return this.GetULongLE();
};
var tempHelp = new ArrayBuffer(8);
var tempHelpUnit = new Uint8Array(tempHelp);
var tempHelpFloat = new Float64Array(tempHelp);
FT_Stream2.prototype.GetDoubleLE = function() {
if (this.cur + 7 >= this.size)
return 0;
tempHelpUnit[0] = this.GetUChar();
tempHelpUnit[1] = this.GetUChar();
tempHelpUnit[2] = this.GetUChar();
tempHelpUnit[3] = this.GetUChar();
tempHelpUnit[4] = this.GetUChar();
tempHelpUnit[5] = this.GetUChar();
tempHelpUnit[6] = this.GetUChar();
tempHelpUnit[7] = this.GetUChar();
return tempHelpFloat[0];
var arr = [];
for(var i = 0; i < 8; ++i)
arr.push(this.GetUChar());
return this.doubleDecodeLE754(arr);
};
FT_Stream2.prototype.doubleDecodeLE754 = function(a) {
var s, e, m, i, d, nBits, mLen, eLen, eBias, eMax;
var el = {len:8, mLen:52, rt:0};
mLen = el.mLen, eLen = el.len*8-el.mLen-1, eMax = (1<<eLen)-1, eBias = eMax>>1;
i = (el.len-1); d = -1; s = a[i]; i+=d; nBits = -7;
for (e = s&((1<<(-nBits))-1), s>>=(-nBits), nBits += eLen; nBits > 0; e=e*256+a[i], i+=d, nBits-=8);
for (m = e&((1<<(-nBits))-1), e>>=(-nBits), nBits += mLen; nBits > 0; m=m*256+a[i], i+=d, nBits-=8);
switch (e)
{
case 0:
// Zero, or denormalized number
e = 1-eBias;
break;
case eMax:
// NaN, or +/-Infinity
return m?NaN:((s?-1:1)*Infinity);
default:
// Normalized number
m = m + Math.pow(2, mLen);
e = e - eBias;
break;
}
return (s?-1:1) * m * Math.pow(2, e-mLen);
};
// 3 byte
FT_Stream2.prototype.GetUOffsetLE = function() {
if (this.cur + 2 >= this.size)
return c_oSerConstants.ReadOk;
return (this.data[this.cur++] | this.data[this.cur++] << 8 | this.data[this.cur++] << 16);
};
FT_Stream2.prototype.GetString2 = function() {
var Len = this.GetLong();
return this.GetString2LE(Len);
};
//String
FT_Stream2.prototype.GetString2LE = function(len) {
if (this.cur + len > this.size)
return "";
var a = [];
for (var i = 0; i + 1 < len; i+=2)
a.push(String.fromCharCode(this.data[this.cur + i] | this.data[this.cur + i + 1] << 8));
this.cur += len;
return a.join("");
};
FT_Stream2.prototype.GetString = function() {
var Len = this.GetLong();
if (this.cur + 2 * Len > this.size)
return "";
var t = "";
for (var i = 0; i + 1 < 2 * Len; i+=2) {
var uni = this.data[this.cur + i];
uni |= this.data[this.cur + i + 1] << 8;
t += String.fromCharCode(uni);
}
this.cur += 2 * Len;
return t;
};
FT_Stream2.prototype.GetCurPos = function() {
return this.cur;
};
FT_Stream2.prototype.GetSize = function() {
return this.size;
};
FT_Stream2.prototype.EnterFrame = function(count) {
if (this.size - this.pos < count)
return c_oSerConstants.ErrorStream;
this.cur = this.pos;
this.pos += count;
return c_oSerConstants.ReadOk;
};
FT_Stream2.prototype.GetDouble = function() {
var dRes = 0.0;
dRes |= this.GetUChar();
dRes |= this.GetUChar() << 8;
dRes |= this.GetUChar() << 16;
dRes |= this.GetUChar() << 24;
dRes /= 100000;
return dRes;
};
FT_Stream2.prototype.GetBuffer = function(length) {
var res = new Array(length);
for(var i = 0 ; i < length ;++i){
res[i] = this.data[this.cur++]
}
return res;
};
var gc_nMaxRow = 1048576;
var gc_nMaxCol = 16384;
var gc_nMaxRow0 = gc_nMaxRow - 1;
var gc_nMaxCol0 = gc_nMaxCol - 1;
/**
* @constructor
*/
function CellAddressUtils(){
this._oCodeA = 'A'.charCodeAt(0);
this._aColnumToColstr = [];
this.oCellAddressCache = {};
this.colnumToColstrFromWsView = function (col) {
var sResult = this._aColnumToColstr[col];
if (null != sResult)
return sResult;
if(col == 0) return "";
var col0 = col - 1;
var text = String.fromCharCode(65 + (col0 % 26));
return (this._aColnumToColstr[col] = (col0 < 26 ? text : this.colnumToColstrFromWsView(Math.floor(col0 / 26)) + text));
};
this.colnumToColstr = function(num){
var sResult = this._aColnumToColstr[num];
if(!sResult){
// convert 1 to A, 2 to B, ..., 27 to AA etc.
sResult = "";
if(num > 0){
var columnNumber = num;
var currentLetterNumber;
while(columnNumber > 0){
currentLetterNumber = (columnNumber - 1) % 26;
sResult = String.fromCharCode(currentLetterNumber + 65) + sResult;
columnNumber = (columnNumber - (currentLetterNumber + 1)) / 26;
}
}
this._aColnumToColstr[num] = sResult;
}
return sResult;
};
this.colstrToColnum = function(col_str) {
//convert A to 1; AA to 27
var col_num = 0;
for (var i = 0; i < col_str.length; ++i)
col_num = 26 * col_num + (col_str.charCodeAt(i) - this._oCodeA + 1);
return col_num;
};
this.getCellId = function(row, col){
return g_oCellAddressUtils.colnumToColstr(col + 1) + (row + 1);
};
this.getCellAddress = function(sId)
{
var oRes = this.oCellAddressCache[sId];
if(null == oRes)
{
oRes = new CellAddress(sId);
this.oCellAddressCache[sId] = oRes;
}
return oRes;
};
}
var g_oCellAddressUtils = new CellAddressUtils();
function CellBase(r, c) {
this.row = r;
this.col = c;
}
CellBase.prototype.clean = function() {
this.row = 0;
this.col = 0;
};
CellBase.prototype.clone = function() {
return new CellBase(this.row, this.col);
};
CellBase.prototype.isEqual = function(cell) {
return this.row === cell.row && this.col === cell.col;
};
CellBase.prototype.isEmpty = function() {
return 0 === this.row && 0 === this.col;
};
CellBase.prototype.getName = function() {
return g_oCellAddressUtils.colnumToColstr(this.col + 1) + (this.row + 1);
};
/**
* @constructor
*/
function CellAddress(){
var argc = arguments.length;
this._valid = true;
this._invalidId = false;
this._invalidCoord = false;
this.id = null;
this.row = null;
this.col = null;
this.bRowAbs = false;
this.bColAbs = false;
this.bIsCol = false;
this.bIsRow = false;
this.colLetter = null;
if(1 == argc){
//Сразу пришло ID вида "A1"
this.id = arguments[0].toUpperCase();
this._invalidCoord = true;
this._checkId();
}
else if(2 == argc){
//адрес вида (1,1) = "A1". Внутренний формат начинается с 1
this.row = arguments[0];
this.col = arguments[1];
this._checkCoord();
this._invalidId = true;
}
else if(3 == argc){
//тоже самое что и 2 аргумента, только 0-based
this.row = arguments[0] + 1;
this.col = arguments[1] + 1;
this._checkCoord();
this._invalidId = true;
}
}
CellAddress.prototype = Object.create(CellBase.prototype);
CellAddress.prototype.constructor = CellAddress;
CellAddress.prototype._isDigit=function(symbol){
return '0' <= symbol && symbol <= '9';
};
CellAddress.prototype._isAlpha=function(symbol){
return 'A' <= symbol && symbol <= 'Z';
};
CellAddress.prototype._checkId=function(){
this._invalidCoord = true;
this._recalculate(true, false);
this._checkCoord();
};
CellAddress.prototype._checkCoord=function(){
if( !(this.row >= 1 && this.row <= gc_nMaxRow) )
this._valid = false;
else if( !(this.col >= 1 && this.col <= gc_nMaxCol) )
this._valid = false;
else
this._valid = true;
};
CellAddress.prototype._recalculate=function(bCoord, bId){
if(bCoord && this._invalidCoord){
this._invalidCoord = false;
var sId = this.id;
this.row = this.col = 0;//выставляем невалидные значения, чтобы не присваивать их при каждом else
var indexes = {}, i = -1, indexesCount = 0;
while ((i = sId.indexOf("$", i + 1)) != -1) {
indexes[i - indexesCount++] = 1;//отнимаем количество, чтобы индексы указывали на следующий после них символ после удаления $
}
if (indexesCount <= 2) {
if (indexesCount > 0)
sId = sId.replace(/\$/g, "");
var nIdLength = sId.length;
if (nIdLength > 0) {
var nIndex = 0;
while (this._isAlpha(sId.charAt(nIndex)) && nIndex < nIdLength)
nIndex++;
if (0 == nIndex) {
// (1,Infinity)
this.bIsRow = true;
this.col = 1;
this.colLetter = g_oCellAddressUtils.colnumToColstr(this.col);
this.row = sId.substring(nIndex) - 0;
//this.id = this.colLetter + this.row;
if (null != indexes[0]) {
this.bRowAbs = true;
indexesCount--;
}
}
else if (nIndex == nIdLength) {
// (Infinity,1)
this.bIsCol = true;
this.colLetter = sId;
this.col = g_oCellAddressUtils.colstrToColnum(this.colLetter);
this.row = 1;
//this.id = this.colLetter + this.row;
if (null != indexes[0]) {
this.bColAbs = true;
indexesCount--;
}
}
else {
this.colLetter = sId.substring(0, nIndex);
this.col = g_oCellAddressUtils.colstrToColnum(this.colLetter);
this.row = sId.substring(nIndex) - 0;
if (null != indexes[0]) {
this.bColAbs = true;
indexesCount--;
}
if (null != indexes[nIndex]) {
this.bRowAbs = true;
indexesCount--;
}
}
if (indexesCount > 0) {
this.row = this.col = 0;
}
}
}
}
else if(bId && this._invalidId){
this._invalidId = false;
this.colLetter = g_oCellAddressUtils.colnumToColstr(this.col);
if(this.bIsCol)
this.id = this.colLetter;
else if(this.bIsRow)
this.id = this.row;
else
this.id = this.colLetter + this.row;
}
};
CellAddress.prototype.isValid=function(){
return this._valid;
};
CellAddress.prototype.getID=function(){
this._recalculate(false, true);
return this.id;
};
CellAddress.prototype.getIDAbsolute=function(){
this._recalculate(true, false);
return "$" + this.getColLetter() + "$" + this.getRow();
};
CellAddress.prototype.getRow=function(){
this._recalculate(true, false);
return this.row;
};
CellAddress.prototype.getRow0=function(){
//0 - based
this._recalculate(true, false);
return this.row - 1;
};
CellAddress.prototype.getRowAbs=function(){
this._recalculate(true, false);
return this.bRowAbs;
};
CellAddress.prototype.getIsRow=function(){
this._recalculate(true, false);
return this.bIsRow;
};
CellAddress.prototype.getCol=function(){
this._recalculate(true, false);
return this.col;
};
CellAddress.prototype.getCol0=function(){
//0 - based
this._recalculate(true, false);
return this.col - 1;
};
CellAddress.prototype.getColAbs=function(){
this._recalculate(true, false);
return this.bColAbs;
};
CellAddress.prototype.getIsCol=function(){
this._recalculate(true, false);
return this.bIsCol;
};
CellAddress.prototype.getColLetter=function(){
this._recalculate(false, true);
return this.colLetter;
};
CellAddress.prototype.setRow=function(val){
if( !(this.row >= 0 && this.row <= gc_nMaxRow) )
this._valid = false;
this._invalidId = true;
this.row = val;
};
CellAddress.prototype.setCol=function(val){
if( !(val >= 0 && val <= gc_nMaxCol) )
return;
this._invalidId = true;
this.col = val;
};
CellAddress.prototype.setId=function(val){
this._invalidCoord = true;
this.id = val;
this._checkId();
};
CellAddress.prototype.moveRow=function(diff){
var val = this.row + diff;
if( !(val >= 0 && val <= gc_nMaxRow) )
return;
this._invalidId = true;
this.row = val;
};
CellAddress.prototype.moveCol=function(diff){
var val = this.col + diff;
if( !( val >= 0 && val <= gc_nMaxCol) )
return;
this._invalidId = true;
this.col = val;
};
function isRealObject(obj)
{
return obj !== null && typeof obj === "object";
}
function FileStream(data, size)
{
this.obj = null;
this.data = data;
this.size = size;
this.pos = 0;
this.cur = 0;
this.Seek = function(_pos)
{
if (_pos > this.size)
return 1;
this.pos = _pos;
return 0;
}
this.Seek2 = function(_cur)
{
if (_cur > this.size)
return 1;
this.cur = _cur;
return 0;
}
this.Skip = function(_skip)
{
if (_skip < 0)
return 1;
return this.Seek(this.pos + _skip);
}
this.Skip2 = function(_skip)
{
if (_skip < 0)
return 1;
return this.Seek2(this.cur + _skip);
}
// 1 bytes
this.GetUChar = function()
{
if (this.cur >= this.size)
return 0;
return this.data[this.cur++];
}
this.GetBool = function()
{
if (this.cur >= this.size)
return 0;
return (this.data[this.cur++] == 1) ? true : false;
}
// 2 byte
this.GetUShort = function()
{
if (this.cur + 1 >= this.size)
return 0;
return (this.data[this.cur++] | this.data[this.cur++] << 8);
}
// 4 byte
this.GetULong = function()
{
if (this.cur + 3 >= this.size)
return 0;
var r = (this.data[this.cur++] | this.data[this.cur++] << 8 | this.data[this.cur++] << 16 | this.data[this.cur++] << 24);
if (r < 0)
r += (0xFFFFFFFF + 1);
return r;
}
this.GetLong = function()
{
if (this.cur + 3 >= this.size)
return 0;
return (this.data[this.cur++] | this.data[this.cur++] << 8 | this.data[this.cur++] << 16 | this.data[this.cur++] << 24);
}
//String
this.GetString = function(len)
{
len *= 2;
if (this.cur + len > this.size)
return "";
var t = "";
for (var i = 0; i < len; i+=2)
{
var _c = this.data[this.cur + i + 1] << 8 | this.data[this.cur + i];
if (_c == 0)
break;
t += String.fromCharCode(_c);
}
this.cur += len;
return t;
}
this.GetString1 = function(len)
{
if (this.cur + len > this.size)
return "";
var t = "";
for (var i = 0; i < len; i++)
{
var _c = this.data[this.cur + i];
if (_c == 0)
break;
t += String.fromCharCode(_c);
}
this.cur += len;
return t;
}
this.GetString2 = function()
{
var len = this.GetULong();
return this.GetString(len);
}
this.GetString2A = function()
{
var len = this.GetULong();
return this.GetString1(len);
}
this.EnterFrame = function(count)
{
if (this.pos >= this.size || this.size - this.pos < count)
return 1;
this.cur = this.pos;
this.pos += count;
return 0;
}
this.SkipRecord = function()
{
var _len = this.GetULong();
this.Skip2(_len);
}
this.GetPercentage = function()
{
var s = this.GetString2();
var _len = s.length;
if (_len == 0)
return null;
var _ret = null;
if ((_len - 1) == s.indexOf("%"))
{
s.substring(0, _len - 1);
_ret = parseFloat(s);
if (isNaN(_ret))
_ret = null;
}
else
{
_ret = parseFloat(s);
if (isNaN(_ret))
_ret = null;
else
_ret /= 1000;
}
return _ret;
}
}
function GetUTF16_fromUnicodeChar(code) {
if (code < 0x10000) {
return String.fromCharCode(code);
} else {
code -= 0x10000;
return String.fromCharCode(0xD800 | ((code >> 10) & 0x03FF)) +
String.fromCharCode(0xDC00 | (code & 0x03FF));
}
};
function GetStringUtf8(reader, len) {
if (reader.cur + len > reader.size) {
return "";
}
var _res = "";
var end = reader.cur + len;
var val = 0;
while (reader.cur < end) {
var byteMain = reader.data[reader.cur];
if (0x00 == (byteMain & 0x80)) {
// 1 byte
_res += GetUTF16_fromUnicodeChar(byteMain);
++reader.cur;
}
else if (0x00 == (byteMain & 0x20)) {
// 2 byte
val = (((byteMain & 0x1F) << 6) |
(reader.data[reader.cur + 1] & 0x3F));
_res += GetUTF16_fromUnicodeChar(val);
reader.cur += 2;
}
else if (0x00 == (byteMain & 0x10)) {
// 3 byte
val = (((byteMain & 0x0F) << 12) |
((reader.data[reader.cur + 1] & 0x3F) << 6) |
(reader.data[reader.cur + 2] & 0x3F));
_res += GetUTF16_fromUnicodeChar(val);
reader.cur += 3;
}
else if (0x00 == (byteMain & 0x08)) {
// 4 byte
val = (((byteMain & 0x07) << 18) |
((reader.data[reader.cur + 1] & 0x3F) << 12) |
((reader.data[reader.cur + 2] & 0x3F) << 6) |
(reader.data[reader.cur + 3] & 0x3F));
_res += GetUTF16_fromUnicodeChar(val);
reader.cur += 4;
}
else if (0x00 == (byteMain & 0x04)) {
// 5 byte
val = (((byteMain & 0x03) << 24) |
((reader.data[reader.cur + 1] & 0x3F) << 18) |
((reader.data[reader.cur + 2] & 0x3F) << 12) |
((reader.data[reader.cur + 3] & 0x3F) << 6) |
(reader.data[reader.cur + 4] & 0x3F));
_res += GetUTF16_fromUnicodeChar(val);
reader.cur += 5;
}
else {
// 6 byte
val = (((byteMain & 0x01) << 30) |
((reader.data[reader.cur + 1] & 0x3F) << 24) |
((reader.data[reader.cur + 2] & 0x3F) << 18) |
((reader.data[reader.cur + 3] & 0x3F) << 12) |
((reader.data[reader.cur + 4] & 0x3F) << 6) |
(reader.data[reader.cur + 5] & 0x3F));
_res += GetUTF16_fromUnicodeChar(val);
reader.cur += 6;
}
}
return _res;
};
//----------------------------------------------------------export----------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].c_oSerConstants = c_oSerConstants;
window['AscCommon'].c_oSerPropLenType = c_oSerPropLenType;
window['AscCommon'].c_oSer_ColorType = c_oSer_ColorType;
window['AscCommon'].c_oSerBorderType = c_oSerBorderType;
window['AscCommon'].c_oSerBordersType = c_oSerBordersType;
window['AscCommon'].c_oSerPaddingType = c_oSerPaddingType;
window['AscCommon'].g_tabtype_left = 0;
window['AscCommon'].g_tabtype_right = 1;
window['AscCommon'].g_tabtype_center = 2;
window['AscCommon'].g_tabtype_clear = 3;
window['AscCommon'].BinaryCommonWriter = BinaryCommonWriter;
window['AscCommon'].Binary_CommonReader = Binary_CommonReader;
window['AscCommon'].FT_Stream2 = FT_Stream2;
window['AscCommon'].gc_nMaxRow = gc_nMaxRow;
window['AscCommon'].gc_nMaxCol = gc_nMaxCol;
window['AscCommon'].gc_nMaxRow0 = gc_nMaxRow0;
window['AscCommon'].gc_nMaxCol0 = gc_nMaxCol0;
window['AscCommon'].g_oCellAddressUtils = g_oCellAddressUtils;
window['AscCommon'].CellBase = CellBase;
window['AscCommon'].CellAddress = CellAddress;
window['AscCommon'].isRealObject = isRealObject;
window['AscCommon'].FileStream = FileStream;
window['AscCommon'].GetStringUtf8 = GetStringUtf8;
window['AscCommon'].g_nodeAttributeStart = 0xFA;
window['AscCommon'].g_nodeAttributeEnd = 0xFB;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined)
{
// Import
var AscBrowser = AscCommon.AscBrowser;
var locktype_None = AscCommon.locktype_None;
var locktype_Mine = AscCommon.locktype_Mine;
var locktype_Other = AscCommon.locktype_Other;
var locktype_Other2 = AscCommon.locktype_Other2;
var locktype_Other3 = AscCommon.locktype_Other3;
var contentchanges_Add = AscCommon.contentchanges_Add;
var CColor = AscCommon.CColor;
var g_oCellAddressUtils = AscCommon.g_oCellAddressUtils;
var c_oAscFileType = Asc.c_oAscFileType;
if (typeof String.prototype.startsWith !== 'function')
{
String.prototype.startsWith = function (str)
{
return this.indexOf(str) === 0;
};
String.prototype['startsWith'] = String.prototype.startsWith;
}
if (typeof String.prototype.endsWith !== 'function')
{
String.prototype.endsWith = function (suffix)
{
return this.indexOf(suffix, this.length - suffix.length) !== -1;
};
String.prototype['endsWith'] = String.prototype.endsWith;
}
if (typeof String.prototype.repeat !== 'function')
{
String.prototype.repeat = function (count)
{
'use strict';
if (this == null)
{
throw new TypeError('can\'t convert ' + this + ' to object');
}
var str = '' + this;
count = +count;
if (count != count)
{
count = 0;
}
if (count < 0)
{
throw new RangeError('repeat count must be non-negative');
}
if (count == Infinity)
{
throw new RangeError('repeat count must be less than infinity');
}
count = Math.floor(count);
if (str.length == 0 || count == 0)
{
return '';
}
// Обеспечение того, что count является 31-битным целым числом, позволяет нам значительно
// соптимизировать главную часть функции. Впрочем, большинство современных (на август
// 2014 года) браузеров не обрабатывают строки, длиннее 1 << 28 символов, так что:
if (str.length * count >= 1 << 28)
{
throw new RangeError('repeat count must not overflow maximum string size');
}
var rpt = '';
for (; ;)
{
if ((count & 1) == 1)
{
rpt += str;
}
count >>>= 1;
if (count == 0)
{
break;
}
str += str;
}
return rpt;
};
String.prototype['repeat'] = String.prototype.repeat;
}
// Extend javascript String type
String.prototype.strongMatch = function (regExp)
{
if (regExp && regExp instanceof RegExp)
{
var arr = this.toString().match(regExp);
return !!(arr && arr.length > 0 && arr[0].length == this.length);
}
return false;
};
if (typeof require === 'function' && !window['XRegExp'])
{
window['XRegExp'] = require('xregexp');
}
var oZipImages = null;
var sDownloadServiceLocalUrl = "../../../../downloadas";
var sUploadServiceLocalUrl = "../../../../upload";
var sUploadServiceLocalUrlOld = "../../../../uploadold";
var sSaveFileLocalUrl = "../../../../savefile";
var nMaxRequestLength = 5242880;//5mb <requestLimits maxAllowedContentLength="30000000" /> default 30mb
function getSockJs()
{
return window['SockJS'] || require('sockjs');
}
function getJSZipUtils()
{
return window['JSZipUtils'] || require('jsziputils');
}
function getJSZip()
{
return window['JSZip'] || require('jszip');
}
function JSZipWrapper() {
this.files = {};
}
JSZipWrapper.prototype.loadAsync = function(data, options) {
var t = this;
if (window["native"]) {
return new Promise(function(resolve, reject) {
var retFiles = null;
if (options && options["base64"] === true)
retFiles = window["native"]["ZipOpenBase64"](data);
else
retFiles = window["native"]["ZipOpen"](data);
if (null != retFiles)
{
for (var id in retFiles) {
t.files[id] = new JSZipObjectWrapper(retFiles[id]);
}
resolve(t);
}
else
{
reject(new Error("Failed archive"));
}
});
}
return AscCommon.getJSZip().loadAsync(data, options).then(function(zip){
for (var id in zip.files) {
t.files[id] = new JSZipObjectWrapper(zip.files[id]);
}
return t;
});
};
JSZipWrapper.prototype.close = function() {
if (window["native"])
window["native"]["ZipClose"]();
};
function JSZipObjectWrapper(data) {
this.data = data;
}
JSZipObjectWrapper.prototype.async = function(type) {
if (window["native"]) {
var t = this;
return new Promise(function(resolve, reject) {
var ret = window["native"]["ZipFileAsString"](t.data);
if (null != ret)
{
resolve(ret);
}
else
{
reject(new Error("Failed file in archive"));
}
});
}
return this.data.async(type);
};
function getBaseUrl()
{
var indexHtml = window["location"]["href"];
var questInd = indexHtml.indexOf("?");
if (questInd > 0)
{
indexHtml = indexHtml.substring(0, questInd);
}
return indexHtml.substring(0, indexHtml.lastIndexOf("/") + 1);
}
function getEncodingParams()
{
var res = [];
for (var i = 0; i < AscCommon.c_oAscEncodings.length; ++i)
{
var encoding = AscCommon.c_oAscEncodings[i];
var newElem = {'codepage': encoding[0], 'lcid': encoding[1], 'name': encoding[3]};
res.push(newElem);
}
return res;
}
function getEncodingByBOM(data) {
var res = {encoding: AscCommon.c_oAscCodePageNone, size: 0};
if (data.length >= 2) {
res.size = 2;
if (0xFF == data[0] && 0xFE == data[1]) {
res.encoding = AscCommon.c_oAscCodePageUtf16;
} else if (0xFE == data[0] && 0xFF == data[1]) {
res.encoding = AscCommon.c_oAscCodePageUtf16BE;
} else if (data.length >= 3) {
res.size = 3;
if (0xEF == data[0] && 0xBB == data[1] && 0xBF == data[2]) {
res.encoding = AscCommon.c_oAscCodePageUtf8;
} else if (data.length >= 4) {
res.size = 4;
if (0xFF == data[0] && 0xFE == data[1] && 0x00 == data[2] && 0x00 == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf32;
} else if (0x00 == data[0] && 0x00 == data[1] && 0xFE == data[2] && 0xFF == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf32BE;
} else if (0x2B == data[0] && 0x2F == data[1] && 0x76 == data[2] && 0x38 == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf7;
} else if (0x2B == data[0] && 0x2F == data[1] && 0x76 == data[2] && 0x39 == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf7;
} else if (0x2B == data[0] && 0x2F == data[1] && 0x76 == data[2] && 0x2B == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf7;
} else if (0x2B == data[0] && 0x2F == data[1] && 0x76 == data[2] && 0x2F == data[3]) {
res.encoding = AscCommon.c_oAscCodePageUtf7;
}
}
}
}
return res;
}
function DocumentUrls()
{
this.urls = {};
this.urlsReverse = {};
this.documentUrl = "";
this.imageCount = 0;
}
DocumentUrls.prototype = {
mediaPrefix: 'media/',
init: function (urls)
{
this.addUrls(urls);
},
getUrls: function ()
{
return this.urls;
},
addUrls: function (urls)
{
for (var i in urls)
{
var url = urls[i];
this.urls[i] = url;
this.urlsReverse[url] = i;
this.imageCount++;
}
if (window["IS_NATIVE_EDITOR"])
{
window["native"]["setUrlsCount"](this.imageCount);
}
},
addImageUrl: function (strPath, url)
{
var urls = {};
urls[this.mediaPrefix + strPath] = url;
this.addUrls(urls);
},
getImageUrl: function (strPath)
{
return this.getUrl(this.mediaPrefix + strPath);
},
getImageLocal: function (url)
{
if(url && 0 === url.indexOf('data:image'))
{
return null;
}
var imageLocal = this.getLocal(url);
if (imageLocal && this.mediaPrefix == imageLocal.substring(0, this.mediaPrefix.length))
imageLocal = imageLocal.substring(this.mediaPrefix.length);
return imageLocal;
},
imagePath2Local: function (imageLocal)
{
if (imageLocal && this.mediaPrefix == imageLocal.substring(0, this.mediaPrefix.length))
imageLocal = imageLocal.substring(this.mediaPrefix.length);
return imageLocal;
},
getUrl: function (strPath)
{
if (this.urls)
{
return this.urls[strPath];
}
return null;
},
getLocal: function (url)
{
if (this.urlsReverse)
{
var res = this.urlsReverse[url];
if (!res && typeof editor !== 'undefined' && editor.ThemeLoader && 0 == url.indexOf(editor.ThemeLoader.ThemesUrlAbs))
{
res = url.substring(editor.ThemeLoader.ThemesUrlAbs.length);
}
return res;
}
return null;
},
getMaxIndex: function (url)
{
return this.imageCount;
},
getImageUrlsWithOtherExtention: function(imageLocal) {
var res = [];
var filename = GetFileName(imageLocal);
for (var i in this.urls) {
if (0 == i.indexOf(this.mediaPrefix + filename + '.') && this.mediaPrefix + imageLocal !== i) {
res.push(this.urls[i]);
}
}
return res;
}
};
var g_oDocumentUrls = new DocumentUrls();
function CHTMLCursor()
{
this.map = {};
this.mapRetina = {};
this.value = function(param)
{
var _map = this.map;
if ((window["AscDesktopEditor"] && !AscCommon.AscBrowser.isMacOs) && AscCommon.AscBrowser.isRetina)
_map = this.mapRetina;
return _map[param] ? _map[param] : param;
};
this.register = function(type, url_ie, url_main, default_css_value)
{
if (AscBrowser.isIE)
{
var isTestRetinaNeed = (url_ie.lastIndexOf(".cur") == (url_ie.length - 4)) ? false : true;
if (isTestRetinaNeed)
this.map[type] = ("url(../../../../sdkjs/common/Images/" + url_ie + (AscBrowser.isRetina ? "_2x" : "") + ".cur), " + default_css_value);
else
this.map[type] = ("url(../../../../sdkjs/common/Images/" + url_ie + "), " + default_css_value);
}
else if (window.opera)
{
this.map[type] = default_css_value;
}
else
{
this.map[type] = ("url('../../../../sdkjs/common/Images/" + url_main[0] + ".png') " + url_main[1] + " " + url_main[2] + ", " + default_css_value);
this.mapRetina[type] = ("url('../../../../sdkjs/common/Images/" + url_main[0] + "_2x.png') " + (url_main[1] << 1) + " " + (url_main[2] << 1) + ", " + default_css_value);
}
};
}
function OpenFileResult()
{
this.bSerFormat = false;
this.data = null;
this.url = null;
this.changes = null;
}
function saveWithParts(fSendCommand, fCallback, fCallbackRequest, oAdditionalData, dataContainer)
{
var index = dataContainer.index;
if (null == dataContainer.part && (!dataContainer.data || dataContainer.data.length <= nMaxRequestLength))
{
oAdditionalData["savetype"] = AscCommon.c_oAscSaveTypes.CompleteAll;
}
else
{
if (0 == index)
{
oAdditionalData["savetype"] = AscCommon.c_oAscSaveTypes.PartStart;
dataContainer.count = Math.ceil(dataContainer.data.length / nMaxRequestLength);
}
else if (index != dataContainer.count - 1)
{
oAdditionalData["savetype"] = AscCommon.c_oAscSaveTypes.Part;
}
else
{
oAdditionalData["savetype"] = AscCommon.c_oAscSaveTypes.Complete;
}
if(typeof dataContainer.data === 'string') {
dataContainer.part = dataContainer.data.substring(index * nMaxRequestLength, (index + 1) * nMaxRequestLength);
} else {
dataContainer.part = dataContainer.data.subarray(index * nMaxRequestLength, (index + 1) * nMaxRequestLength);
}
}
dataContainer.index++;
oAdditionalData["saveindex"] = dataContainer.index;
fSendCommand(function (incomeObject)
{
if (null != incomeObject && "ok" == incomeObject["status"])
{
if (dataContainer.index < dataContainer.count)
{
oAdditionalData["savekey"] = incomeObject["data"];
saveWithParts(fSendCommand, fCallback, fCallbackRequest, oAdditionalData, dataContainer);
}
else if (fCallbackRequest)
{
fCallbackRequest(incomeObject);
}
}
else
{
fCallbackRequest ? fCallbackRequest(incomeObject) : fCallback(incomeObject);
}
}, oAdditionalData, dataContainer);
}
function loadFileContent(url, callback, opt_responseType)
{
asc_ajax({
url: url,
dataType: "text",
responseType: opt_responseType,
success: callback,
error: function ()
{
callback(null);
}
});
}
function getImageFromChanges(name)
{
var content;
var ext = GetFileExtension(name);
if (null !== ext && oZipImages && (content = oZipImages[name]))
{
return 'data:image/' + ext + ';base64,' + AscCommon.Base64Encode(content, content.length, 0);
}
return null;
}
function initStreamFromResponse(httpRequest) {
var stream;
if (typeof ArrayBuffer !== 'undefined') {
stream = new Uint8Array(httpRequest.response);
} else if (AscCommon.AscBrowser.isIE) {
var _response = new VBArray(httpRequest["responseBody"]).toArray();
var srcLen = _response.length;
var pointer = g_memory.Alloc(srcLen);
var tempStream = new AscCommon.FT_Stream2(pointer.data, srcLen);
tempStream.obj = pointer.obj;
stream = tempStream.data;
var index = 0;
while (index < srcLen)
{
stream[index] = _response[index];
index++;
}
}
return stream;
}
function checkStreamSignature(stream, Signature) {
if (stream.length > Signature.length) {
for(var i = 0 ; i < Signature.length; ++i){
if(stream[i] !== Signature.charCodeAt(i)){
return false;
}
}
return true;
}
return false;
}
function openFileCommand(binUrl, changesUrl, Signature, callback)
{
var bError = false, oResult = new OpenFileResult(), bEndLoadFile = false, bEndLoadChanges = false;
var onEndOpen = function ()
{
if (bEndLoadFile && bEndLoadChanges)
{
if (callback)
{
callback(bError, oResult);
}
}
};
var sFileUrl = binUrl;
sFileUrl = sFileUrl.replace(/\\/g, "/");
if (!window['IS_NATIVE_EDITOR'])
{
loadFileContent(sFileUrl, function (httpRequest) {
//получаем url к папке с файлом
var url;
var nIndex = sFileUrl.lastIndexOf("/");
url = (-1 !== nIndex) ? sFileUrl.substring(0, nIndex + 1) : sFileUrl;
if (httpRequest)
{
var stream = initStreamFromResponse(httpRequest);
if (stream) {
oResult.bSerFormat = checkStreamSignature(stream, Signature);
oResult.data = stream;
} else {
bError = true;
}
}
else
{
bError = true;
}
bEndLoadFile = true;
onEndOpen();
}, "arraybuffer");
}
if (changesUrl)
{
oZipImages = {};
getJSZipUtils().getBinaryContent(changesUrl, function (err, data)
{
if (err)
{
bEndLoadChanges = true;
bError = true;
onEndOpen();
return;
}
oResult.changes = [];
getJSZip().loadAsync(data).then(function (zipChanges)
{
var relativePaths = [];
var promises = [];
zipChanges.forEach(function (relativePath, file)
{
relativePaths.push(relativePath);
promises.push(file.async(relativePath.endsWith('.json') ? 'string' : 'uint8array'));
});
Promise.all(promises).then(function (values)
{
var relativePath;
for (var i = 0; i < values.length; ++i)
{
if ((relativePath = relativePaths[i]).endsWith('.json'))
{
oResult.changes[parseInt(relativePath.slice('changes'.length))] = JSON.parse(values[i]);
}
else
{
oZipImages[relativePath] = values[i];
}
}
bEndLoadChanges = true;
onEndOpen();
});
});
});
}
else
{
oZipImages = null;
bEndLoadChanges = true;
}
if (window['IS_NATIVE_EDITOR'])
{
var stream = window["native"]["openFileCommand"](sFileUrl, changesUrl, Signature);
//получаем url к папке с файлом
var url;
var nIndex = sFileUrl.lastIndexOf("/");
url = (-1 !== nIndex) ? sFileUrl.substring(0, nIndex + 1) : sFileUrl;
if (stream) {
oResult.bSerFormat = checkStreamSignature(stream, Signature);
oResult.data = stream;
} else {
bError = true;
}
bEndLoadFile = true;
onEndOpen();
}
}
function sendCommand(editor, fCallback, rdata, dataContainer)
{
//json не должен превышать размера 2097152, иначе при его чтении будет exception
var docConnectionId = editor.CoAuthoringApi.getDocId();
if (docConnectionId && docConnectionId !== rdata["id"])
{
//на случай если поменялся documentId в Version History
rdata['docconnectionid'] = docConnectionId;
}
if (null == rdata["savetype"])
{
editor.CoAuthoringApi.openDocument(rdata);
return;
}
rdata["userconnectionid"] = editor.CoAuthoringApi.getUserConnectionId();
asc_ajax({
type: 'POST',
url: sDownloadServiceLocalUrl + '/' + rdata["id"] + '?cmd=' + encodeURIComponent(JSON.stringify(rdata)),
data: dataContainer.part || dataContainer.data,
contentType: "application/octet-stream",
error: function ()
{
if (fCallback)
{
fCallback(null, true);
}
},
success: function (httpRequest)
{
if (fCallback)
{
fCallback(JSON.parse(httpRequest.responseText), true);
}
}
});
}
function sendSaveFile(docId, userId, title, jwt, data, fError, fsuccess)
{
var cmd = {'id': docId, "userid": userId, "jwt": jwt, 'outputpath': title};
asc_ajax({
type: 'POST',
url: sSaveFileLocalUrl + '/' + docId + '?cmd=' + encodeURIComponent(JSON.stringify(cmd)),
data: data,
contentType: "application/octet-stream",
error: fError,
success: fsuccess
});
}
function mapAscServerErrorToAscError(nServerError, nAction)
{
var nRes = Asc.c_oAscError.ID.Unknown;
switch (nServerError)
{
case c_oAscServerError.NoError :
nRes = Asc.c_oAscError.ID.No;
break;
case c_oAscServerError.TaskQueue :
case c_oAscServerError.TaskResult :
nRes = Asc.c_oAscError.ID.Database;
break;
case c_oAscServerError.ConvertDownload :
nRes = Asc.c_oAscError.ID.DownloadError;
break;
case c_oAscServerError.ConvertTimeout :
case c_oAscServerError.ConvertDeadLetter :
nRes = Asc.c_oAscError.ID.ConvertationTimeout;
break;
case c_oAscServerError.ConvertDRM :
case c_oAscServerError.ConvertPASSWORD :
nRes = Asc.c_oAscError.ID.ConvertationPassword;
break;
case c_oAscServerError.ConvertLIMITS :
case c_oAscServerError.ConvertCONVERT_CORRUPTED :
case c_oAscServerError.ConvertLIBREOFFICE :
case c_oAscServerError.ConvertPARAMS :
case c_oAscServerError.ConvertNEED_PARAMS :
case c_oAscServerError.ConvertUnknownFormat :
case c_oAscServerError.ConvertReadFile :
case c_oAscServerError.Convert :
nRes =
AscCommon.c_oAscAdvancedOptionsAction.Save === nAction ? Asc.c_oAscError.ID.ConvertationSaveError :
Asc.c_oAscError.ID.ConvertationOpenError;
break;
case c_oAscServerError.UploadContentLength :
nRes = Asc.c_oAscError.ID.UplImageSize;
break;
case c_oAscServerError.UploadExtension :
nRes = Asc.c_oAscError.ID.UplImageExt;
break;
case c_oAscServerError.UploadCountFiles :
nRes = Asc.c_oAscError.ID.UplImageFileCount;
break;
case c_oAscServerError.UploadURL :
nRes = Asc.c_oAscError.ID.UplImageUrl;
break;
case c_oAscServerError.VKey :
nRes = Asc.c_oAscError.ID.FileVKey;
break;
case c_oAscServerError.VKeyEncrypt :
nRes = Asc.c_oAscError.ID.VKeyEncrypt;
break;
case c_oAscServerError.VKeyKeyExpire :
nRes = Asc.c_oAscError.ID.KeyExpire;
break;
case c_oAscServerError.VKeyUserCountExceed :
nRes = Asc.c_oAscError.ID.UserCountExceed;
break;
case c_oAscServerError.Storage :
case c_oAscServerError.StorageFileNoFound :
case c_oAscServerError.StorageRead :
case c_oAscServerError.StorageWrite :
case c_oAscServerError.StorageRemoveDir :
case c_oAscServerError.StorageCreateDir :
case c_oAscServerError.StorageGetInfo :
case c_oAscServerError.Upload :
case c_oAscServerError.ReadRequestStream :
case c_oAscServerError.Unknown :
nRes = Asc.c_oAscError.ID.Unknown;
break;
}
return nRes;
}
function joinUrls(base, relative)
{
//http://stackoverflow.com/questions/14780350/convert-relative-path-to-absolute-using-javascript
var stack = base.split("/"),
parts = relative.split("/");
stack.pop(); // remove current file name (or empty string)
// (omit if "base" is the current folder without trailing slash)
for (var i = 0; i < parts.length; i++)
{
if (parts[i] == ".")
continue;
if (parts[i] == "..")
stack.pop();
else
stack.push(parts[i]);
}
return stack.join("/");
}
function getFullImageSrc2(src)
{
if (window["NATIVE_EDITOR_ENJINE"])
return src;
var start = src.slice(0, 6);
if (0 === start.indexOf('theme') && editor.ThemeLoader)
{
return editor.ThemeLoader.ThemesUrlAbs + src;
}
if (0 !== start.indexOf('http:') && 0 !== start.indexOf('data:') && 0 !== start.indexOf('https:') &&
0 !== start.indexOf('file:') && 0 !== start.indexOf('ftp:'))
{
var srcFull = g_oDocumentUrls.getImageUrl(src);
if (srcFull)
{
return srcFull;
}
}
return src;
}
function fSortAscending(a, b)
{
return a - b;
}
function fSortDescending(a, b)
{
return b - a;
}
function isLeadingSurrogateChar(nCharCode)
{
return (nCharCode >= 0xD800 && nCharCode <= 0xDFFF);
}
function decodeSurrogateChar(nLeadingChar, nTrailingChar)
{
if (nLeadingChar < 0xDC00 && nTrailingChar >= 0xDC00 && nTrailingChar <= 0xDFFF)
return 0x10000 + ((nLeadingChar & 0x3FF) << 10) | (nTrailingChar & 0x3FF);
else
return null;
}
function encodeSurrogateChar(nUnicode)
{
if (nUnicode < 0x10000)
{
return String.fromCharCode(nUnicode);
}
else
{
nUnicode = nUnicode - 0x10000;
var nLeadingChar = 0xD800 | (nUnicode >> 10);
var nTrailingChar = 0xDC00 | (nUnicode & 0x3FF);
return String.fromCharCode(nLeadingChar) + String.fromCharCode(nTrailingChar);
}
}
function convertUnicodeToUTF16(sUnicode)
{
var sUTF16 = "";
var nLength = sUnicode.length;
for (var nPos = 0; nPos < nLength; nPos++)
{
sUTF16 += encodeSurrogateChar(sUnicode[nPos]);
}
return sUTF16;
}
function convertUTF16toUnicode(sUTF16)
{
var sUnicode = [];
var nLength = sUTF16.length;
for (var nPos = 0; nPos < nLength; nPos++)
{
var nUnicode = null;
var nCharCode = sUTF16.charCodeAt(nPos);
if (isLeadingSurrogateChar(nCharCode))
{
if (nPos + 1 < nLength)
{
nPos++;
var nTrailingChar = sUTF16.charCodeAt(nPos);
nUnicode = decodeSurrogateChar(nCharCode, nTrailingChar);
}
}
else
nUnicode = nCharCode;
if (null !== nUnicode)
sUnicode.push(nUnicode);
}
return sUnicode;
}
function CUnicodeIterator(str)
{
this._position = 0;
this._index = 0;
this._str = str;
}
CUnicodeIterator.prototype =
{
isOutside : function()
{
return (this._index >= this._str.length);
},
isInside : function()
{
return (this._index < this._str.length);
},
value : function()
{
if (this._index >= this._str.length)
return 0;
var nCharCode = this._str.charCodeAt(this._index);
if (!AscCommon.isLeadingSurrogateChar(nCharCode))
return nCharCode;
if ((this._str.length - 1) == this._index)
return nCharCode; // error
var nTrailingChar = this._str.charCodeAt(this._index + 1);
return AscCommon.decodeSurrogateChar(nCharCode, nTrailingChar);
},
next : function()
{
if (this._index >= this._str.length)
return;
this._position++;
if (!AscCommon.isLeadingSurrogateChar(this._str.charCodeAt(this._index)))
{
++this._index;
return;
}
if (this._index == (this._str.length - 1))
{
++this._index;
return;
}
this._index += 2;
},
position : function()
{
return this._position;
}
};
CUnicodeIterator.prototype.check = CUnicodeIterator.prototype.isInside;
/**
* @returns {CUnicodeIterator}
*/
String.prototype.getUnicodeIterator = function()
{
return new CUnicodeIterator(this);
};
function test_ws_name2()
{
var str_namedRanges = "[A-Z\u005F\u0080-\u0081\u0083\u0085-\u0087\u0089-\u008A\u008C-\u0091\u0093-\u0094\u0096-\u0097\u0099-\u009A\u009C-\u009F\u00A1-\u00A5\u00A7-\u00A8\u00AA\u00AD\u00AF-\u00BA\u00BC-\u02B8\u02BB-\u02C1\u02C7\u02C9-\u02CB\u02CD\u02D0-\u02D1\u02D8-\u02DB\u02DD\u02E0-\u02E4\u02EE\u0370-\u0373\u0376-\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0523\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4-\u07F5\u07FA\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0972\u097B-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E3A\u0E40-\u0E4E\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19A9\u19C1-\u19C7\u1A00-\u1A16\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2010\u2013-\u2016\u2018\u201C-\u201D\u2020-\u2021\u2025-\u2027\u2030\u2032-\u2033\u2035\u203B\u2071\u2074\u207F\u2081-\u2084\u2090-\u2094\u2102-\u2103\u2105\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2121-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2153-\u2154\u215B-\u215E\u2160-\u2188\u2190-\u2199\u21D2\u21D4\u2200\u2202-\u2203\u2207-\u2208\u220B\u220F\u2211\u2215\u221A\u221D-\u2220\u2223\u2225\u2227-\u222C\u222E\u2234-\u2237\u223C-\u223D\u2248\u224C\u2252\u2260-\u2261\u2264-\u2267\u226A-\u226B\u226E-\u226F\u2282-\u2283\u2286-\u2287\u2295\u2299\u22A5\u22BF\u2312\u2460-\u24B5\u24D0-\u24E9\u2500-\u254B\u2550-\u2574\u2581-\u258F\u2592-\u2595\u25A0-\u25A1\u25A3-\u25A9\u25B2-\u25B3\u25B6-\u25B7\u25BC-\u25BD\u25C0-\u25C1\u25C6-\u25C8\u25CB\u25CE-\u25D1\u25E2-\u25E5\u25EF\u2605-\u2606\u2609\u260E-\u260F\u261C\u261E\u2640\u2642\u2660-\u2661\u2663-\u2665\u2667-\u266A\u266C-\u266D\u266F\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C6F\u2C71-\u2C7D\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3000-\u3003\u3005-\u3017\u301D-\u301F\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\
str_namedSheetsRange = "\u0001-\u0026\u0028-\u0029\u002B-\u002D\u003B-\u003E\u0040\u005E\u0060\u007B-\u007F\u0082\u0084\u008B\u0092\u0095\u0098\u009B\u00A0\u00A6\u00A9\u00AB-\u00AC\u00AE\u00BB\u0378-\u0379\u037E-\u0383\u0387\u038B\u038D\u03A2\u0524-\u0530\u0557-\u0558\u055A-\u0560\u0588-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EF\u05F3-\u05FF\u0604-\u0605\u0609-\u060A\u060C-\u060D\u061B-\u061E\u0620\u065F\u066A-\u066D\u06D4\u0700-\u070E\u074B-\u074C\u07B2-\u07BF\u07F7-\u07F9\u07FB-\u0900\u093A-\u093B\u094E-\u094F\u0955-\u0957\u0964-\u0965\u0970\u0973-\u097A\u0980\u0984\u098D-\u098E\u0991-\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BB\u09C5-\u09C6\u09C9-\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4-\u09E5\u09FB-\u0A00\u0A04\u0A0B-\u0A0E\u0A11-\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A3B\u0A3D\u0A43-\u0A46\u0A49-\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABB\u0AC6\u0ACA\u0ACE-\u0ACF\u0AD1-\u0ADF\u0AE4-\u0AE5\u0AF0\u0AF2-\u0B00\u0B04\u0B0D-\u0B0E\u0B11-\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3B\u0B45-\u0B46\u0B49-\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64-\u0B65\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE-\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64-\u0C65\u0C70-\u0C77\u0C80-\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4-\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D29\u0D3A-\u0D3C\u0D45\u0D49\u0D4E-\u0D56\u0D58-\u0D5F\u0D64-\u0D65\u0D76-\u0D78\u0D80-\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE-\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3E\u0E4F\u0E5A-\u0E80\u0E83\u0E85-\u0E86\u0E89\u0E8B-\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8-\u0EA9\u0EAC\u0EBA\u0EBE-\u0EBF\u0EC5\u0EC7\u0ECE-\u0ECF\u0EDA-\u0EDB\u0EDE-\u0EFF\u0F04-\u0F12\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F8C-\u0F8F\u0F98\u0FBD\u0FCD\u0FD0-\u0FFF\u104A-\u104F\u109A-\u109D\u10C6-\u10CF\u10FB\u10FD-\u10FF\u115A-\u115E\u11A3-\u11A7\u11FA-\u11FF\u1249\u124E-\u124F\u1257\u1259\u125E-\u125F\u1289\u128E-\u128F\u12B1\u12B6-\u12B7\u12BF\u12C1\u12C6-\u12C7\u12D7\u1311\u1316-\u1317\u135B-\u135E\u1361-\u1368\u137D-\u137F\u139A-\u139F\u13F5-\u1400\u166D-\u166E\u1677-\u167F\u169B-\u169F\u16EB-\u16ED\u16F1-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DA\u17DE-\u17DF\u17EA-\u17EF\u17FA-\u180A\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1945\u196E-\u196F\u1975-\u197F\u19AA-\u19AF\u19CA-\u19CF\u19DA-\u19DF\u1A1C-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BAB-\u1BAD\u1BBA-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E-\u1CFF\u1DE7-\u1DFD\u1F16-\u1F17\u1F1E-\u1F1F\u1F46-\u1F47\u1F4E-\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E-\u1F7F\u1FB5\u1FC5\u1FD4-\u1FD5\u1FDC\u1FF0-\u1FF1\u1FF5\u1FFF\u2011-\u2012\u2017\u2019-\u201B\u201E-\u201F\u2022-\u2024\u2031\u2034\u2036-\u203A\u203C-\u2043\u2045-\u2051\u2053-\u205E\u2065-\u2069\u2072-\u2073\u207D-\u207E\u208D-\u208F\u2095-\u209F\u20B6-\u20CF\u20F1-\u20FF\u2150-\u2152\u2189-\u218F\u2329-\u232A\u23E8-\u23FF\u2427-\u243F\u244B-\u245F\u269E-\u269F\u26BD-\u26BF\u26C4-\u2700\u2705\u270A-\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u275F-\u2760\u2768-\u2775\u2795-\u2797\u27B0\u27BF\u27C5-\u27C6\u27CB\u27CD-\u27CF\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC-\u29FD\u2B4D-\u2B4F\u2B55-\u2BFF\u2C2F\u2C5F\u2C70\u2C7E-\u2C7F\u2CEB-\u2CFC\u2CFE-\u2CFF\u2D26-\u2D2F\u2D66-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3018-\u301C\u3030\u303D\u3040\u3097-\u3098\u30A0\u3100-\u3104\u312E-\u3130\u318F\u31B8-\u31BF\u31E4-\u31EF\u321F\u3244-\u324F\u32FF\u4DB6-\u4DBF\u9FC4-\u9FFF\uA48D-\uA48F\uA4C7-\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA660-\uA661\uA673-\uA67B\uA67E\uA698-\uA6FF\uA78D-\uA7FA\uA82C-\uA83F\uA874-\uA87
str_operator = ",\\s-+/^&%<=>",
str_excludeCharts = "'*\\[\\]\\:/?";
this.regExp_namedRanges = new RegExp(str_namedRanges, "i");
this.regExp_namedSheetsRange = new RegExp("[" + str_namedSheetsRange + "]", "ig");
// /[-+*\/^&%<=>:]/,
this.regExp_strOperator = new RegExp("[" + str_operator + "]", "ig");
this.regExp_strExcludeCharts = new RegExp("[" + str_excludeCharts + "]", "ig");
this.test = function (str)
{
var ch1 = str.substr(0, 1);
this.regExp_strExcludeCharts.lastIndex = 0;
this.regExp_namedRanges.lastIndex = 0;
this.regExp_namedSheetsRange.lastIndex = 0;
this.regExp_strOperator.lastIndex = 0;
if (this.regExp_strExcludeCharts.test(str))
{//если содержутся недопустимые символы.
return undefined;
}
if (!this.regExp_namedRanges.test(ch1))
{//если первый символ находится не в str_namedRanges, то однозначно надо экранировать
return false;
}
else
{
if (this.regExp_namedSheetsRange.test(str) || this.regExp_strOperator.test(str))
{//первый символ допустимый. проверяем всю строку на наличие символов, с которыми необходимо экранировать
return false;
}
//проверка на то, что название листа не совпадает с допустимым адресом ячейки, как в A1 так и RC стилях.
var match = str.match(rx_ref);
if (match != null)
{
var m1 = match[1], m2 = match[2];
if (match.length >= 3 && g_oCellAddressUtils.colstrToColnum(m1.substr(0, (m1.length - m2.length))) <= AscCommon.gc_nMaxCol && parseInt(m2) <= AscCommon.gc_nMaxRow)
{
return false;
}
}
return true;
}
};
return this;
}
function test_defName()
{
var nameRangeRE = new RegExp("(^([" + str_namedRanges + "_])([" + str_namedRanges + "_0-9]*)$)", "i");
this.test = function (str)
{
var match, m1, m2;
if (!nameRangeRE.test(str))
{
return false;
}
match = str.match(rx_ref);
if (match != null)
{
m1 = match[1];
m2 = match[2];
if (match.length >= 3 && g_oCellAddressUtils.colstrToColnum(m1.substr(0, (m1.length - m2.length))) <= AscCommon.gc_nMaxCol && parseInt(m2) <= AscCommon.gc_nMaxRow)
{
return false;
}
}
return true;
};
return this;
}
var cStrucTableReservedWords = {
all: "#All", data: "#Data", headers: "#Headers", totals: "#Totals", thisrow: "#This Row", at: "@"
};
var FormulaTablePartInfo = {
all: 1,
data: 2,
headers: 3,
totals: 4,
thisRow: 5,
columns: 6
};
var cStrucTableLocalColumns = null;
var cBoolOrigin = {'t': 'TRUE', 'f': 'FALSE'};
var cBoolLocal = {};
var cErrorOrigin = {
"nil": "#NULL!",
"div": "#DIV\/0!",
"value": "#VALUE!",
"ref": "#REF!",
"name": "#NAME?",
"num": "#NUM!",
"na": "#N\/A",
"getdata": "#GETTING_DATA",
"uf": "#UNSUPPORTED_FUNCTION!"
};
var cErrorLocal = {};
function build_local_rx(data)
{
rx_table_local = build_rx_table(data ? data["StructureTables"] : null);
rx_bool_local = build_rx_bool((data && data["CONST_TRUE_FALSE"]) || cBoolOrigin);
rx_error_local = build_rx_error(data ? data["CONST_ERROR"] : null);
}
function build_rx_table(local)
{
cStrucTableLocalColumns = ( local ? local : {
"h": "Headers",
"d": "Data",
"a": "All",
"tr": "This Row",
"t": "Totals"
} );
return build_rx_table_cur();
}
function build_rx_table_cur()
{
var loc_all = cStrucTableLocalColumns['a'],
loc_headers = cStrucTableLocalColumns['h'],
loc_data = cStrucTableLocalColumns['d'],
loc_totals = cStrucTableLocalColumns['t'],
loc_this_row = cStrucTableLocalColumns['tr'],
structured_tables_headata = new XRegExp('(?:\\[\\#' + loc_headers + '\\]\\' + FormulaSeparators.functionArgumentSeparator + '\\[\\#' + loc_data + '\\])'),
structured_tables_datals = new XRegExp('(?:\\[\\#' + loc_data + '\\]\\' + FormulaSeparators.functionArgumentSeparator + '\\[\\#' + loc_totals + '\\])'),
structured_tables_userColumn = new XRegExp('(?:\'\\[|\'\\]|[^[\\]])+'),
structured_tables_reservedColumn = new XRegExp('\\#(?:' + loc_all + '|' + loc_headers + '|' + loc_totals + '|' + loc_data + '|' + loc_this_row + ')|@');
return XRegExp.build('^(?<tableName>{{tableName}})\\[(?<columnName>{{columnName}})?\\]', {
"tableName": new XRegExp("^(:?[" + str_namedRanges + "][" + str_namedRanges + "\\d.]*)"),
"columnName": XRegExp.build('(?<reservedColumn>{{reservedColumn}})|(?<oneColumn>{{userColumn}})|(?<columnRange>{{userColumnRange}})|(?<hdtcc>{{hdtcc}})', {
"userColumn": structured_tables_userColumn,
"reservedColumn": structured_tables_reservedColumn,
"userColumnRange": XRegExp.build('\\[(?<colStart>{{uc}})\\]\\:\\[(?<colEnd>{{uc}})\\]', {
"uc": structured_tables_userColumn
}),
"hdtcc": XRegExp.build('(?<hdt>\\[{{rc}}\\]|{{hd}}|{{dt}})(?:\\' + FormulaSeparators.functionArgumentSeparator + '(?:\\[(?<hdtcstart>{{uc}})\\])(?:\\:(?:\\[(?<hdtcend>{{uc}})\\]))?)?', {
"rc": structured_tables_reservedColumn,
"hd": structured_tables_headata,
"dt": structured_tables_datals,
"uc": structured_tables_userColumn
})
})
}, 'i');
}
function build_rx_bool(local)
{
var t = cBoolLocal.t = local['t'].toUpperCase();
var f = cBoolLocal.f = local['f'].toUpperCase();
return new RegExp("^(" + t + "|" + f + ")([-+*\\/^&%<=>: ;),}]|$)", "i");
}
function build_rx_error(local)
{
// ToDo переделать на более правильную реализацию. Не особо правильное копирование
local = local ? local : {
"nil": "#NULL!",
"div": "#DIV\/0!",
"value": "#VALUE!",
"ref": "#REF!",
"name": "#NAME\\?",
"num": "#NUM!",
"na": "#N\/A",
"getdata": "#GETTING_DATA",
"uf": "#UNSUPPORTED_FUNCTION!"
};
cErrorLocal['nil'] = local['nil'];
cErrorLocal['div'] = local['div'];
cErrorLocal['value'] = local['value'];
cErrorLocal['ref'] = local['ref'];
cErrorLocal['name'] = local['name'];
cErrorLocal['num'] = local['num'];
cErrorLocal['na'] = local['na'];
cErrorLocal['getdata'] = local['getdata'];
cErrorLocal['uf'] = local['uf'];
return new RegExp("^(" + cErrorLocal["nil"] + "|" +
cErrorLocal["div"] + "|" +
cErrorLocal["value"] + "|" +
cErrorLocal["ref"] + "|" +
cErrorLocal["name"] + "|" +
cErrorLocal["num"] + "|" +
cErrorLocal["na"] + "|" +
cErrorLocal["getdata"] + "|" +
cErrorLocal["uf"] + ")", "i");
}
var PostMessageType = {
UploadImage: 0,
ExtensionExist: 1
};
var c_oAscServerError = {
NoError: 0,
Unknown: -1,
ReadRequestStream: -3,
TaskQueue: -20,
TaskResult: -40,
Storage: -60,
StorageFileNoFound: -61,
StorageRead: -62,
StorageWrite: -63,
StorageRemoveDir: -64,
StorageCreateDir: -65,
StorageGetInfo: -66,
Convert: -80,
ConvertDownload: -81,
ConvertUnknownFormat: -82,
ConvertTimeout: -83,
ConvertReadFile: -84,
ConvertCONVERT_CORRUPTED: -86,
ConvertLIBREOFFICE: -87,
ConvertPARAMS: -88,
ConvertNEED_PARAMS: -89,
ConvertDRM: -90,
ConvertPASSWORD: -91,
ConvertICU: -92,
ConvertLIMITS: -93,
ConvertDeadLetter: -99,
Upload: -100,
UploadContentLength: -101,
UploadExtension: -102,
UploadCountFiles: -103,
UploadURL: -104,
VKey: -120,
VKeyEncrypt: -121,
VKeyKeyExpire: -122,
VKeyUserCountExceed: -123
};
var c_oAscImageUploadProp = {//Не все браузеры позволяют получить информацию о файле до загрузки(например ie9), меняя параметры здесь надо поменять аналогичные параметры в web.common
MaxFileSize: 25000000, //25 mb
SupportedFormats: ["jpg", "jpeg", "jpe", "png", "gif", "bmp"]
};
/**
*
* @param sName
* @returns {*}
* @constructor
*/
function GetFileExtension(sName)
{
var nIndex = sName ? sName.lastIndexOf(".") : -1;
if (-1 != nIndex)
return sName.substring(nIndex + 1).toLowerCase();
return null;
}
function GetFileName(sName)
{
var nIndex = sName ? sName.lastIndexOf(".") : -1;
if (-1 != nIndex)
return sName.substring(0, nIndex);
return null;
}
function changeFileExtention(sName, sNewExt, opt_lengthLimit)
{
var sOldExt = GetFileExtension(sName);
var nIndexEnd = sOldExt ? sName.length - sOldExt.length - 1 : sName.length;
if (opt_lengthLimit && nIndexEnd + sNewExt.length + 1 > opt_lengthLimit)
{
nIndexEnd = opt_lengthLimit - sNewExt.length - 1;
}
if (nIndexEnd < sName.length)
{
return sName.substring(0, nIndexEnd) + '.' + sNewExt;
}
else
{
return sName + '.' + sNewExt;
}
}
function getExtentionByFormat(format)
{
switch (format)
{
case c_oAscFileType.PDF:
case c_oAscFileType.PDFA:
return 'pdf';
break;
case c_oAscFileType.HTML:
return 'html';
break;
// Word
case c_oAscFileType.DOCX:
return 'docx';
break;
case c_oAscFileType.DOC:
return 'doc';
break;
case c_oAscFileType.ODT:
return 'odt';
break;
case c_oAscFileType.RTF:
return 'rtf';
break;
case c_oAscFileType.TXT:
return 'txt';
break;
case c_oAscFileType.MHT:
return 'mht';
break;
case c_oAscFileType.EPUB:
return 'epub';
break;
case c_oAscFileType.FB2:
return 'fb2';
break;
case c_oAscFileType.MOBI:
return 'mobi';
break;
case c_oAscFileType.DOCY:
return 'doct';
break;
case c_oAscFileType.CANVAS_WORD:
return 'bin';
break;
case c_oAscFileType.JSON:
return 'json';
break;
// Excel
case c_oAscFileType.XLSX:
return 'xlsx';
break;
case c_oAscFileType.XLS:
return 'xls';
break;
case c_oAscFileType.ODS:
return 'ods';
break;
case c_oAscFileType.CSV:
return 'csv';
break;
case c_oAscFileType.XLSY:
return 'xlst';
break;
// PowerPoint
case c_oAscFileType.PPTX:
return 'pptx';
break;
case c_oAscFileType.PPT:
return 'ppt';
break;
case c_oAscFileType.ODP:
return 'odp';
break;
}
return '';
}
function InitOnMessage(callback)
{
if (window.addEventListener)
{
window.addEventListener("message", function (event)
{
if (null != event && null != event.data)
{
try
{
var data = JSON.parse(event.data);
if (null != data && null != data["type"] && PostMessageType.UploadImage == data["type"])
{
if (c_oAscServerError.NoError == data["error"])
{
var urls = data["urls"];
if (urls)
{
g_oDocumentUrls.addUrls(urls);
var firstUrl;
for (var i in urls)
{
if (urls.hasOwnProperty(i))
{
firstUrl = urls[i];
break;
}
}
callback(Asc.c_oAscError.ID.No, firstUrl);
}
}
else
callback(mapAscServerErrorToAscError(data["error"]));
}
else if (data.type === "onExternalPluginMessage")
{
if (window.g_asc_plugins)
window.g_asc_plugins.sendToAllPlugins(event.data);
}
} catch (err)
{
}
}
}, false);
}
}
function ShowImageFileDialog(documentId, documentUserId, jwt, callback, callbackOld)
{
if (AscCommon.EncryptionWorker && AscCommon.EncryptionWorker.isCryptoImages())
{
AscCommon.EncryptionWorker.addCryproImagesFromDialog(callback);
return;
}
var fileName;
if ("undefined" != typeof(FileReader))
{
fileName = GetUploadInput(function (e)
{
if (e && e.target && e.target.files)
{
var nError = ValidateUploadImage(e.target.files);
callback(mapAscServerErrorToAscError(nError), e.target.files);
}
else
{
callback(Asc.c_oAscError.ID.Unknown);
}
});
}
else
{
var frameWindow = GetUploadIFrame();
var url = sUploadServiceLocalUrlOld + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
if (jwt)
{
url += '?token=' + encodeURIComponent(jwt);
}
var content = '<html><head></head><body><form action="' + url + '" method="POST" enctype="multipart/form-data"><input id="apiiuFile" name="apiiuFile" type="file" accept="image/*" size="1"><input id="apiiuSubmit" name="apiiuSubmit" type="submit" style="display:none;"></form></body></html>';
frameWindow.document.open();
frameWindow.document.write(content);
frameWindow.document.close();
fileName = frameWindow.document.getElementById("apiiuFile");
var fileSubmit = frameWindow.document.getElementById("apiiuSubmit");
fileName.onchange = function (e)
{
if (e && e.target && e.target.files)
{
var nError = ValidateUploadImage(e.target.files);
if (c_oAscServerError.NoError != nError)
{
callbackOld(mapAscServerErrorToAscError(nError));
return;
}
}
callbackOld(Asc.c_oAscError.ID.No);
fileSubmit.click();
};
}
//todo пересмотреть opera
if (AscBrowser.isOpera)
setTimeout(function ()
{
fileName.click();
}, 0);
else
fileName.click();
}
function InitDragAndDrop(oHtmlElement, callback)
{
if ("undefined" != typeof(FileReader) && null != oHtmlElement)
{
oHtmlElement["ondragover"] = function (e)
{
e.preventDefault();
e.dataTransfer.dropEffect = CanDropFiles(e) ? 'copy' : 'none';
if (e.dataTransfer.dropEffect == "copy")
{
var editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
editor.beginInlineDropTarget(e);
}
return false;
};
oHtmlElement["ondrop"] = function (e)
{
e.preventDefault();
var files = e.dataTransfer.files;
var nError = ValidateUploadImage(files);
var editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
editor.endInlineDropTarget(e);
if (nError == c_oAscServerError.UploadCountFiles)
{
try
{
// test html
var htmlValue = e.dataTransfer.getData("text/html");
if (htmlValue && !AscCommon.AscBrowser.isIE)
{
// text html!
var index = htmlValue.indexOf("StartHTML");
var indexHtml = htmlValue.indexOf("<html");
if (-1 == indexHtml)
indexHtml = htmlValue.indexOf("<HTML");
if (index > 0 && indexHtml > 0 && index < indexHtml)
htmlValue = htmlValue.substr(indexHtml);
editor["pluginMethod_PasteHtml"](htmlValue);
return;
}
}
catch(err)
{
}
try
{
var textValue = e.dataTransfer.getData("text/plain");
if (textValue)
{
editor["pluginMethod_PasteText"](textValue);
return;
}
}
catch(err)
{
}
try
{
var textValue = e.dataTransfer.getData("Text");
if (textValue)
{
editor["pluginMethod_PasteText"](textValue);
return;
}
}
catch(err)
{
}
}
callback(mapAscServerErrorToAscError(nError), files);
};
}
}
function UploadImageFiles(files, documentId, documentUserId, jwt, callback)
{
// CryptPad: we need to take control of the upload
window.parent.APP.UploadImageFiles(files, documentId, documentUserId, jwt, callback);
return;
if (files.length > 0)
{
var url = sUploadServiceLocalUrl + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
if (jwt)
{
url += '?token=' + encodeURIComponent(jwt);
}
var aFiles = [];
for(var i = files.length - 1; i > - 1; --i){
aFiles.push(files[i]);
}
var file = aFiles.pop();
var aResultUrls = [];
var fOnReadyChnageState = function(){
if (4 == this.readyState){
if ((this.status == 200 || this.status == 1223)){
var urls = JSON.parse(this.responseText);
g_oDocumentUrls.addUrls(urls);
for (var i in urls)
{
if (urls.hasOwnProperty(i))
{
aResultUrls.push(urls[i]);
break;
}
}
if(aFiles.length === 0){
callback(Asc.c_oAscError.ID.No, aResultUrls);
}
else{
file = aFiles.pop();
var xhr = new XMLHttpRequest();
url = sUploadServiceLocalUrl + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
if (jwt)
{
url += '?token=' + encodeURIComponent(jwt);
}
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', file.type || 'application/octet-stream');
xhr.onreadystatechange = fOnReadyChnageState;
xhr.send(file);
}
}
else
callback(Asc.c_oAscError.ID.UplImageFileCount);
}
};
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', file.type || 'application/octet-stream');
xhr.onreadystatechange = fOnReadyChnageState;
xhr.send(file);
}
else
{
callback(Asc.c_oAscError.ID.UplImageFileCount);
}
}
function UploadImageUrls(files, documentId, documentUserId, jwt, callback)
{
if (files.length > 0)
{
var url = sUploadServiceLocalUrl + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
if (jwt)
{
url += '?token=' + encodeURIComponent(jwt);
}
var aFiles = [];
for(var i = files.length - 1; i > - 1; --i){
aFiles.push(files[i]);
}
var file = aFiles.pop();
var aResultUrls = [];
var fOnReadyChnageState = function()
{
if (4 == this.readyState)
{
if ((this.status == 200 || this.status == 1223))
{
var urls = JSON.parse(this.responseText);
g_oDocumentUrls.addUrls(urls);
for (var i in urls)
{
if (urls.hasOwnProperty(i))
{
aResultUrls.push({ path: i, url: urls[i] });
break;
}
}
if (aFiles.length === 0)
{
callback(aResultUrls);
}
else
{
file = aFiles.pop();
var xhr = new XMLHttpRequest();
url = sUploadServiceLocalUrl + '/' + documentId + '/' + documentUserId + '/' + g_oDocumentUrls.getMaxIndex();
if (jwt)
{
url += '?token=' + encodeURIComponent(jwt);
}
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', file.type || 'application/octet-stream');
xhr.onreadystatechange = fOnReadyChnageState;
xhr.send(file);
}
}
else
callback([]);
}
};
var xhr = new XMLHttpRequest();
xhr.open('POST', url, true);
xhr.setRequestHeader('Content-Type', file.type || 'application/octet-stream');
xhr.onreadystatechange = fOnReadyChnageState;
xhr.send(file);
}
else
{
callback(Asc.c_oAscError.ID.UplImageFileCount);
}
}
function ValidateUploadImage(files)
{
var nRes = c_oAscServerError.NoError;
if (files.length > 0)
{
for (var i = 0, length = files.length; i < length; i++)
{
var file = files[i];
//проверяем расширение файла
var sName = file.fileName || file.name;
if (sName)
{
var bSupported = false;
var ext = GetFileExtension(sName);
if (null !== ext)
{
for (var j = 0, length2 = c_oAscImageUploadProp.SupportedFormats.length; j < length2; j++)
{
if (c_oAscImageUploadProp.SupportedFormats[j] == ext)
{
bSupported = true;
break;
}
}
}
if (false == bSupported)
nRes = c_oAscServerError.UploadExtension;
}
if (Asc.c_oAscError.ID.No == nRes)
{
var nSize = file.fileSize || file.size;
if (nSize && c_oAscImageUploadProp.MaxFileSize < nSize)
nRes = c_oAscServerError.UploadContentLength;
}
if (c_oAscServerError.NoError != nRes)
break;
}
}
else
nRes = c_oAscServerError.UploadCountFiles;
return nRes;
}
function CanDropFiles(event)
{
var editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
if (!editor.isEnabledDropTarget())
return false;
var bRes = false;
if (event.dataTransfer.types)
{
for (var i = 0, length = event.dataTransfer.types.length; i < length; ++i)
{
var type = event.dataTransfer.types[i].toLowerCase();
if (type == "files")
{
if (event.dataTransfer.items)
{
for (var j = 0, length2 = event.dataTransfer.items.length; j < length2; j++)
{
var item = event.dataTransfer.items[j];
if (item.type && item.kind && "file" == item.kind.toLowerCase())
{
bRes = false;
for (var k = 0,
length3 = c_oAscImageUploadProp.SupportedFormats.length; k < length3; k++)
{
if (-1 != item.type.indexOf(c_oAscImageUploadProp.SupportedFormats[k]))
{
bRes = true;
break;
}
}
if (false == bRes)
break;
}
}
}
else
bRes = true;
break;
}
else if (type == "text" || type == "text/plain" || type == "text/html")
{
bRes = true;
break;
}
}
}
return bRes;
}
function GetUploadIFrame()
{
var sIFrameName = "apiImageUpload";
var oImageUploader = document.getElementById(sIFrameName);
if (!oImageUploader)
{
var frame = document.createElement("iframe");
frame.name = sIFrameName;
frame.id = sIFrameName;
frame.setAttribute("style", "position:absolute;left:-2px;top:-2px;width:1px;height:1px;z-index:-1000;");
document.body.appendChild(frame);
}
return window.frames[sIFrameName];
}
function GetUploadInput(onchange)
{
var inputName = 'apiiuFile';
var input = document.getElementById(inputName);
//удаляем чтобы очистить input от предыдущего ввода
if (input)
{
document.body.removeChild(input);
}
input = document.createElement("input");
input.setAttribute('id', inputName);
input.setAttribute('name', inputName);
input.setAttribute('type', 'file');
input.setAttribute('accept', 'image/*');
input.setAttribute('style', 'position:absolute;left:-2px;top:-2px;width:1px;height:1px;z-index:-1000;cursor:pointer;');
input.onchange = onchange;
document.body.appendChild(input);
return input;
}
var FormulaSeparators = {
arrayRowSeparatorDef: ';',
arrayColSeparatorDef: ',',
digitSeparatorDef: '.',
functionArgumentSeparatorDef: ',',
arrayRowSeparator: ';',
arrayColSeparator: ',',
digitSeparator: '.',
functionArgumentSeparator: ','
};
var g_oCodeSpace = 32; // Code of space
var g_oCodeLineFeed = 10; // Code of line feed
var g_arrCodeOperators = [37, 38, 42, 43, 45, 47, 58, 94]; // Code of operators [%, &, *, +, -, /, :, ^]
var g_oStartCodeOperatorsCompare = 60; // Start code of operators <=>
var g_oEndCodeOperatorsCompare = 62; // End code of operators <=>
var g_oCodeLeftParentheses = 40; // Code of (
var g_oCodeRightParentheses = 41; // Code of )
var g_oCodeLeftBrace = 123; // Code of {
var g_oCodeRightBrace = 125; // Code of }
/*Functions that checks of an element in formula*/
var str_namedRanges = "A-Za-z\u005F\u0080-\u0081\u0083\u0085-\u0087\u0089-\u008A\u008C-\u0091\u0093-\u0094\u0096-\u0097\u0099-\u009A\u009C-\u009F\u00A1-\u00A5\u00A7-\u00A8\u00AA\u00AD\u00AF-\u00BA\u00BC-\u02B8\u02BB-\u02C1\u02C7\u02C9-\u02CB\u02CD\u02D0-\u02D1\u02D8-\u02DB\u02DD\u02E0-\u02E4\u02EE\u0370-\u0373\u0376-\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0523\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0621-\u064A\u066E-\u066F\u0671-\u06D3\u06D5\u06E5-\u06E6\u06EE-\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4-\u07F5\u07FA\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0972\u097B-\u097F\u0985-\u098C\u098F-\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC-\u09DD\u09DF-\u09E1\u09F0-\u09F1\u0A05-\u0A0A\u0A0F-\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32-\u0A33\u0A35-\u0A36\u0A38-\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2-\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0-\u0AE1\u0B05-\u0B0C\u0B0F-\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32-\u0B33\u0B35-\u0B39\u0B3D\u0B5C-\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99-\u0B9A\u0B9C\u0B9E-\u0B9F\u0BA3-\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58-\u0C59\u0C60-\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0-\u0CE1\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D28\u0D2A-\u0D39\u0D3D\u0D60-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E3A\u0E40-\u0E4E\u0E81-\u0E82\u0E84\u0E87-\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA-\u0EAB\u0EAD-\u0EB0\u0EB2-\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDD\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8B\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065-\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10D0-\u10FA\u10FC\u1100-\u1159\u115F-\u11A2\u11A8-\u11F9\u1200-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u1676\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19A9\u19C1-\u19C7\u1A00-\u1A16\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE-\u1BAF\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200e\u2010\u2013-\u2016\u2018\u201C-\u201D\u2020-\u2021\u2025-\u2027\u2030\u2032-\u2033\u2035\u203B\u2071\u2074\u207F\u2081-\u2084\u2090-\u2094\u2102-\u2103\u2105\u2107\u2109-\u2113\u2115-\u2116\u2119-\u211D\u2121-\u2122\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2153-\u2154\u215B-\u215E\u2160-\u2188\u2190-\u2199\u21D2\u21D4\u2200\u2202-\u2203\u2207-\u2208\u220B\u220F\u2211\u2215\u221A\u221D-\u2220\u2223\u2225\u2227-\u222C\u222E\u2234-\u2237\u223C-\u223D\u2248\u224C\u2252\u2260-\u2261\u2264-\u2267\u226A-\u226B\u226E-\u226F\u2282-\u2283\u2286-\u2287\u2295\u2299\u22A5\u22BF\u2312\u2460-\u24B5\u24D0-\u24E9\u2500-\u254B\u2550-\u2574\u2581-\u258F\u2592-\u2595\u25A0-\u25A1\u25A3-\u25A9\u25B2-\u25B3\u25B6-\u25B7\u25BC-\u25BD\u25C0-\u25C1\u25C6-\u25C8\u25CB\u25CE-\u25D1\u25E2-\u25E5\u25EF\u2605-\u2606\u2609\u260E-\u260F\u261C\u261E\u2640\u2642\u2660-\u2661\u2663-\u2665\u2667-\u266A\u266C-\u266D\u266F\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2C6F\u2C71-\u2C7D\u2C80-\u2CE4\u2D00-\u2D25\u2D30-\u2D65\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3000-\u3003\u3005-\u3017\u301D-\u301F\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096
str_namedSheetsRange = "\u0001-\u0026\u0028-\u0029\u002B-\u002D\u003B-\u003E\u0040\u005E\u0060\u007B-\u007F\u0082\u0084\u008B\u0092\u0095\u0098\u009B\u00A0\u00A6\u00A9\u00AB-\u00AC\u00AE\u00BB\u0378-\u0379\u037E-\u0383\u0387\u038B\u038D\u03A2\u0524-\u0530\u0557-\u0558\u055A-\u0560\u0588-\u0590\u05BE\u05C0\u05C3\u05C6\u05C8-\u05CF\u05EB-\u05EF\u05F3-\u05FF\u0604-\u0605\u0609-\u060A\u060C-\u060D\u061B-\u061E\u0620\u065F\u066A-\u066D\u06D4\u0700-\u070E\u074B-\u074C\u07B2-\u07BF\u07F7-\u07F9\u07FB-\u0900\u093A-\u093B\u094E-\u094F\u0955-\u0957\u0964-\u0965\u0970\u0973-\u097A\u0980\u0984\u098D-\u098E\u0991-\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BB\u09C5-\u09C6\u09C9-\u09CA\u09CF-\u09D6\u09D8-\u09DB\u09DE\u09E4-\u09E5\u09FB-\u0A00\u0A04\u0A0B-\u0A0E\u0A11-\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A3B\u0A3D\u0A43-\u0A46\u0A49-\u0A4A\u0A4E-\u0A50\u0A52-\u0A58\u0A5D\u0A5F-\u0A65\u0A76-\u0A80\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABB\u0AC6\u0ACA\u0ACE-\u0ACF\u0AD1-\u0ADF\u0AE4-\u0AE5\u0AF0\u0AF2-\u0B00\u0B04\u0B0D-\u0B0E\u0B11-\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3B\u0B45-\u0B46\u0B49-\u0B4A\u0B4E-\u0B55\u0B58-\u0B5B\u0B5E\u0B64-\u0B65\u0B72-\u0B81\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BBD\u0BC3-\u0BC5\u0BC9\u0BCE-\u0BCF\u0BD1-\u0BD6\u0BD8-\u0BE5\u0BFB-\u0C00\u0C04\u0C0D\u0C11\u0C29\u0C34\u0C3A-\u0C3C\u0C45\u0C49\u0C4E-\u0C54\u0C57\u0C5A-\u0C5F\u0C64-\u0C65\u0C70-\u0C77\u0C80-\u0C81\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBB\u0CC5\u0CC9\u0CCE-\u0CD4\u0CD7-\u0CDD\u0CDF\u0CE4-\u0CE5\u0CF0\u0CF3-\u0D01\u0D04\u0D0D\u0D11\u0D29\u0D3A-\u0D3C\u0D45\u0D49\u0D4E-\u0D56\u0D58-\u0D5F\u0D64-\u0D65\u0D76-\u0D78\u0D80-\u0D81\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE-\u0DBF\u0DC7-\u0DC9\u0DCB-\u0DCE\u0DD5\u0DD7\u0DE0-\u0DF1\u0DF4-\u0E00\u0E3B-\u0E3E\u0E4F\u0E5A-\u0E80\u0E83\u0E85-\u0E86\u0E89\u0E8B-\u0E8C\u0E8E-\u0E93\u0E98\u0EA0\u0EA4\u0EA6\u0EA8-\u0EA9\u0EAC\u0EBA\u0EBE-\u0EBF\u0EC5\u0EC7\u0ECE-\u0ECF\u0EDA-\u0EDB\u0EDE-\u0EFF\u0F04-\u0F12\u0F3A-\u0F3D\u0F48\u0F6D-\u0F70\u0F85\u0F8C-\u0F8F\u0F98\u0FBD\u0FCD\u0FD0-\u0FFF\u104A-\u104F\u109A-\u109D\u10C6-\u10CF\u10FB\u10FD-\u10FF\u115A-\u115E\u11A3-\u11A7\u11FA-\u11FF\u1249\u124E-\u124F\u1257\u1259\u125E-\u125F\u1289\u128E-\u128F\u12B1\u12B6-\u12B7\u12BF\u12C1\u12C6-\u12C7\u12D7\u1311\u1316-\u1317\u135B-\u135E\u1361-\u1368\u137D-\u137F\u139A-\u139F\u13F5-\u1400\u166D-\u166E\u1677-\u167F\u169B-\u169F\u16EB-\u16ED\u16F1-\u16FF\u170D\u1715-\u171F\u1735-\u173F\u1754-\u175F\u176D\u1771\u1774-\u177F\u17D4-\u17D6\u17D8-\u17DA\u17DE-\u17DF\u17EA-\u17EF\u17FA-\u180A\u180F\u181A-\u181F\u1878-\u187F\u18AB-\u18FF\u191D-\u191F\u192C-\u192F\u193C-\u193F\u1941-\u1945\u196E-\u196F\u1975-\u197F\u19AA-\u19AF\u19CA-\u19CF\u19DA-\u19DF\u1A1C-\u1AFF\u1B4C-\u1B4F\u1B5A-\u1B60\u1B7D-\u1B7F\u1BAB-\u1BAD\u1BBA-\u1BFF\u1C38-\u1C3F\u1C4A-\u1C4C\u1C7E-\u1CFF\u1DE7-\u1DFD\u1F16-\u1F17\u1F1E-\u1F1F\u1F46-\u1F47\u1F4E-\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E-\u1F7F\u1FB5\u1FC5\u1FD4-\u1FD5\u1FDC\u1FF0-\u1FF1\u1FF5\u1FFF\u200e\u2011-\u2012\u2017\u2019-\u201B\u201E-\u201F\u2022-\u2024\u2031\u2034\u2036-\u203A\u203C-\u2043\u2045-\u2051\u2053-\u205E\u2065-\u2069\u2072-\u2073\u207D-\u207E\u208D-\u208F\u2095-\u209F\u20B6-\u20CF\u20F1-\u20FF\u2150-\u2152\u2189-\u218F\u2329-\u232A\u23E8-\u23FF\u2427-\u243F\u244B-\u245F\u269E-\u269F\u26BD-\u26BF\u26C4-\u2700\u2705\u270A-\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u275F-\u2760\u2768-\u2775\u2795-\u2797\u27B0\u27BF\u27C5-\u27C6\u27CB\u27CD-\u27CF\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC-\u29FD\u2B4D-\u2B4F\u2B55-\u2BFF\u2C2F\u2C5F\u2C70\u2C7E-\u2C7F\u2CEB-\u2CFC\u2CFE-\u2CFF\u2D26-\u2D2F\u2D66-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF\u2E00-\u2E2E\u2E30-\u2E7F\u2E9A\u2EF4-\u2EFF\u2FD6-\u2FEF\u2FFC-\u2FFF\u3018-\u301C\u3030\u303D\u3040\u3097-\u3098\u30A0\u3100-\u3104\u312E-\u3130\u318F\u31B8-\u31BF\u31E4-\u31EF\u321F\u3244-\u324F\u32FF\u4DB6-\u4DBF\u9FC4-\u9FFF\uA48D-\uA48F\uA4C7-\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA660-\uA661\uA673-\uA67B\uA67E\uA698-\uA6FF\uA78D-\uA7FA\uA82C-\uA83F\uA874
rx_operators = /^ *[-+*\/^&%<=>:] */,
rg = new XRegExp("^((?:_xlfn.)?[\\p{L}\\d.]+ *)[-+*/^&%<=>:;\\(\\)]"),
rgRange = /^(\$?[A-Za-z]+\$?\d+:\$?[A-Za-z]+\$?\d+)(?:[-+*\/^&%<=>: ;),]|$)/,
rgRangeR1C1 = /^(([Rr]{1}(\[)?(-?\d*)(\])?)([Cc]{1}(\[)?(-?\d*)(\])?):([Rr]{1}(\[)?(-?\d*)(\])?)([Cc]{1}(\[)?(-?\d*)(\])?))([-+*\/^&%<=>: ;),]|$)/,
rgCols = /^(\$?[A-Za-z]+:\$?[A-Za-z]+)(?:[-+*\/^&%<=>: ;),]|$)/,
rgColsR1C1 = /^(([Cc]{1}(\[)?(-?\d*)(\])?(:)?)([Cc]?(\[)?(-?\d*)(\])?))([-+*\/^&%<=>: ;),]|$)/,
rgRows = /^(\$?\d+:\$?\d+)(?:[-+*\/^&%<=>: ;),]|$)/,
rgRowsR1C1 = /^(([Rr]{1}(\[)?(-?\d*)(\])?(:)?)([Rr]?(\[)?(-?\d*)(\])?))([-+*\/^&%<=>: ;),]|$)/,
rx_ref = /^ *(\$?[A-Za-z]{1,3}\$?(\d{1,7}))([-+*\/^&%<=>: ;),]|$)/,
rx_refAll = /^(\$?[A-Za-z]+\$?(\d+))([-+*\/^&%<=>: ;),]|$)/,
rx_refR1C1 = /^(([Rr]{1}(\[)?(-?\d*)(\])?)([Cc]{1}(\[)?(-?\d*)(\])?))([-+*\/^&%<=>: ;),]|$)/,
rx_ref3D_non_quoted = new XRegExp("^(?<name_from>[" + str_namedRanges + "][" + str_namedRanges + "\\d.]*)(:(?<name_to>[" + str_namedRanges + "][" + str_namedRanges + "\\d.]*))?!", "i"),
rx_ref3D_quoted = new XRegExp("^'(?<name_from>(?:''|[^\\[\\]'\\/*?:])*)(?::(?<name_to>(?:''|[^\\[\\]'\\/*?:])*))?'!"),
rx_ref3D = new XRegExp("^(?<name_from>[^:]+)(:(?<name_to>[^:]+))?!"),
rx_number = /^ *[+-]?\d*(\d|\.)\d*([eE][+-]?\d+)?/,
rx_RightParentheses = /^ *\)/,
rx_Comma = /^ *[,;] */,
rx_arraySeparators = /^ *[,;] */,
rx_error = build_rx_error(null),
rx_error_local = build_rx_error(null),
rx_bool = build_rx_bool(cBoolOrigin),
rx_bool_local = rx_bool,
rx_string = /^\"((\"\"|[^\"])*)\"/,
rx_test_ws_name = new test_ws_name2(),
rx_space_g = /\s/g,
rx_space = /\s/,
rx_intersect = /^ +/,
rg_str_allLang = /[A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u08A0\u08A2-\u08AC\u08E4-\u08E9\u08F0-\u08FE\u0900-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0977\u0979-\u097F\u0981-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C01-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C82\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D02\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D57\u0D60-\u0D63\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u1062\u1065-\u1068\u106E-\u1086\u108E\u109C\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F0\u1700-\u170C\u170E-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191C\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4B\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C35\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA6
rx_name = new XRegExp("^(?<name>" + "[" + str_namedRanges + "][" + str_namedRanges + "\\d.]*)([-+*\\/^&%<=>: ;/\n/),]|$)"),
rx_defName = new test_defName(),
rx_arraySeparatorsDef = /^ *[,;] */,
rx_numberDef = /^ *[+-]?\d*(\d|\.)\d*([eE][+-]?\d+)?/,
rx_CommaDef = /^ *[,;] */,
rx_ControlSymbols = /^ *[\u0000-\u001F\u007F-\u009F] */,
emailRe = /^(mailto:)?([a-z0-9'\._-]+@[a-z0-9\.-]+\.[a-z0-9]{2,4})([a-яё0-9\._%+-=\? :&]*)/i,
ipRe = /^(((https?)|(ftps?)):\/\/)?([\-\wа-яё]*:?[\-\wа-яё]*@)?(((1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9])\.){3}(1[0-9]{2}|2[0-4][0-9]|25[0-5]|[1-9][0-9]|[0-9]))(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?/i,
hostnameRe = /^(((https?)|(ftps?)):\/\/)?([\-\wа-яё]*:?[\-\wа-яё]*@)?(([\-\wа-яё]+\.)+[\wа-яё\-]{2,}(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`'~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?)/i,
localRe = /^(((https?)|(ftps?)):\/\/)([\-\wа-яё]*:?[\-\wа-яё]*@)?(([\-\wа-яё]+)(:\d+)?(\/[%\-\wа-яё]*(\.[\wа-яё]{2,})?(([\wа-яё\-\.\?\\\/+@&#;:`'~=%!,\(\)]*)(\.[\wа-яё]{2,})?)*)*\/?)/i,
rx_table = build_rx_table(null),
rx_table_local = build_rx_table(null);
function getUrlType(url)
{
var checkvalue = url.replace(new RegExp(' ', 'g'), '%20');
var isEmail;
var isvalid = checkvalue.strongMatch(hostnameRe);
!isvalid && (isvalid = checkvalue.strongMatch(ipRe));
!isvalid && (isvalid = checkvalue.strongMatch(localRe));
isEmail = checkvalue.strongMatch(emailRe);
!isvalid && (isvalid = isEmail);
return isvalid ? (isEmail ? AscCommon.c_oAscUrlType.Email : AscCommon.c_oAscUrlType.Http) : AscCommon.c_oAscUrlType.Invalid;
}
function prepareUrl(url, type)
{
if (!/(((^https?)|(^ftp)):\/\/)|(^mailto:)/i.test(url))
{
url = ( (AscCommon.c_oAscUrlType.Email == type) ? 'mailto:' : 'http://' ) + url;
}
return url.replace(new RegExp("%20", 'g'), " ");
}
/**
* вспомогательный объект для парсинга формул и проверки строки по регуляркам указанным выше.
* @constructor
*/
function parserHelper()
{
this.operand_str = null;
this.pCurrPos = null;
}
parserHelper.prototype._reset = function ()
{
this.operand_str = null;
this.pCurrPos = null;
};
parserHelper.prototype.isControlSymbols = function (formula, start_pos, digitDelim)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(rx_ControlSymbols);
if (match != null)
{
this.operand_str = match[0];
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isOperator = function (formula, start_pos)
{
// ToDo нужно ли это?
if (this instanceof parserHelper)
{
this._reset();
}
var code, find = false, length = formula.length;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (-1 !== g_arrCodeOperators.indexOf(code))
{
this.operand_str = formula[start_pos];
++start_pos;
find = true;
break;
}
else if (g_oStartCodeOperatorsCompare <= code && code <= g_oEndCodeOperatorsCompare)
{
this.operand_str = formula[start_pos];
++start_pos;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (g_oStartCodeOperatorsCompare > code || code > g_oEndCodeOperatorsCompare)
{
break;
}
this.operand_str += formula[start_pos];
++start_pos;
}
find = true;
break;
}
else if (code === g_oCodeSpace || code === g_oCodeLineFeed)
{
++start_pos;
}
else
{
break;
}
}
if (find)
{
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code !== g_oCodeSpace && code !== g_oCodeLineFeed)
{
break;
}
++start_pos;
}
this.pCurrPos = start_pos;
return true;
}
return false;
};
parserHelper.prototype.isFunc = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var frml = formula.substring(start_pos);
var match = (frml).match(rg);
if (match != null)
{
if (match.length == 2)
{
this.pCurrPos += match[1].length;
this.operand_str = match[1];
return true;
}
}
return false;
};
parserHelper.prototype.convertFromR1C1 = function (r, c, isAbsRow, isAbsCol)
{
var activeCell = AscCommonExcel.g_ActiveCell;
var colStr, rowStr, res = "";
if(r !== null && c !== null) {
if(isNaN(r)) {
r = 0;
isAbsRow = false;
}
if(isNaN(c)) {
c = 0;
isAbsCol = false;
}
colStr = g_oCellAddressUtils.colnumToColstrFromWsView(!isAbsCol && activeCell ? activeCell.c1 + 1 + c : c);
rowStr = !isAbsRow && activeCell ? activeCell.r1 + 1 + r : r;
if(isAbsCol) {
colStr = "$" + colStr;
}
if(isAbsRow) {
rowStr = "$" + rowStr;
}
res = colStr + rowStr;
} else if(c !== null) {
if(isNaN(c)) {
c = 0;
isAbsCol = false;
}
colStr = g_oCellAddressUtils.colnumToColstrFromWsView(!isAbsCol && activeCell ? activeCell.c1 + 1 + c : c);
if(isAbsCol) {
colStr = "$" + colStr;
}
res = colStr;
} else if(r !== null) {
if(isNaN(r)) {
r = 0;
isAbsRow = false;
}
rowStr = !isAbsRow && activeCell ? activeCell.r1 + 1 + r + "" : r + "";
if(isAbsRow) {
rowStr = "$" + rowStr;
}
res = rowStr;
}
return res;
};
parserHelper.prototype.isArea = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var checkAbs = function(val1, val2) {
var res = null;
if(val1 === val2 && val1 === undefined) {
res = true;
} else if(val1 === "[" && val2 === "]") {
res = false;
}
return res;
};
var checkMatchRowCol = function(tempMatch) {
var res = true;
if(tempMatch[9] !== "" && tempMatch[9] !== undefined && !(tempMatch[6] === ":" && tempMatch[7] !== "" && tempMatch[7] !== undefined)) {
res = false;
} else if(tempMatch[7] !== "" && tempMatch[7] !== undefined && tempMatch[6] !== ":") {
res = false;
} else if((tempMatch[7] === "" || tempMatch[7] === undefined) && tempMatch[6] === ":") {
res = false;
}
return res;
};
var R1C1Mode = AscCommonExcel.g_R1C1Mode;
var subSTR = formula.substring(start_pos);
var match;
if(!R1C1Mode) {
match = subSTR.match(rgRange) || subSTR.match(rgCols) || subSTR.match(rgRows);
if (match != null)
{
var m0 = match[1].split(":");
if (g_oCellAddressUtils.getCellAddress(m0[0]).isValid() && g_oCellAddressUtils.getCellAddress(m0[1]).isValid())
{
this.pCurrPos += match[1].length;
this.operand_str = match[1];
return true;
}
}
} else {
var abs1Val, abs2Val, abs3Val, abs4Val, ref1, ref2;
if((match = subSTR.match(rgRangeR1C1)) !== null) {
abs1Val = checkAbs(match[3], match[5]);
abs2Val = checkAbs(match[7], match[9]);
abs3Val = checkAbs(match[11], match[13]);
abs4Val = checkAbs(match[15], match[17]);
if(abs1Val !== null && abs2Val !== null && abs3Val !== null && abs4Val !== null) {
ref1 = AscCommon.parserHelp.convertFromR1C1(parseInt(match[4]), parseInt(match[8]), abs1Val, abs2Val);
ref2 = AscCommon.parserHelp.convertFromR1C1(parseInt(match[12]), parseInt(match[16]), abs3Val, abs4Val);
if (g_oCellAddressUtils.getCellAddress(ref1).isValid() && g_oCellAddressUtils.getCellAddress(ref2).isValid()) {
this.pCurrPos += match[1].length;
this.operand_str = match[1];
this.real_str = ref1 + ":" + ref2;
return true;
}
}
} else if(null != (match = subSTR.match(rgColsR1C1))) {
if(checkMatchRowCol(match)) {
abs1Val = checkAbs(match[3], match[5]);
abs2Val = checkAbs(match[8], match[10]);
if(abs1Val !== null && abs2Val !== null) {
ref1 = AscCommon.parserHelp.convertFromR1C1(null, parseInt(match[4]), null, abs1Val);
ref2 = "" !== match[7] ? AscCommon.parserHelp.convertFromR1C1(null, parseInt(match[9]), null, abs2Val) : ref1;
if (g_oCellAddressUtils.getCellAddress(ref1).isValid() && g_oCellAddressUtils.getCellAddress(ref2).isValid()) {
this.pCurrPos += match[1].length;
this.operand_str = match[1];
this.real_str = ref1 + ":" + ref2;
return true;
}
}
}
} else if(null != (match = subSTR.match(rgRowsR1C1))) {
if(checkMatchRowCol(match)) {
abs1Val = checkAbs(match[3], match[5]);
abs2Val = checkAbs(match[8], match[10]);
if(abs1Val !== null && abs2Val !== null) {
ref1 = AscCommon.parserHelp.convertFromR1C1(parseInt(match[4]), null, abs1Val);
ref2 = "" !== match[7] ? AscCommon.parserHelp.convertFromR1C1(parseInt(match[9]), null, abs2Val) : ref1;
if (g_oCellAddressUtils.getCellAddress(ref1).isValid() && g_oCellAddressUtils.getCellAddress(ref2).isValid()) {
this.pCurrPos += match[1].length;
this.operand_str = match[1];
this.real_str = ref1 + ":" + ref2;
return true;
}
}
}
}
}
return false;
};
parserHelper.prototype.isRef = function (formula, start_pos, allRef)
{
if (this instanceof parserHelper)
{
this._reset();
}
var R1C1Mode = AscCommonExcel.g_R1C1Mode;
var substr = formula.substring(start_pos), match;
var m0, m1;
if(!R1C1Mode) {
match = substr.match(rx_ref);
if (match != null)
{
m0 = match[0];
m1 = match[1];
if (g_oCellAddressUtils.getCellAddress(m1).isValid())
{
this.pCurrPos += m0.indexOf(" ") > -1 ? m0.length - 1 : m1.length;
this.operand_str = m1;
return true;
}
else if (allRef)
{
match = substr.match(rx_refAll);
if ((match != null || match != undefined) && match.length >= 3)
{
m1 = match[1];
this.pCurrPos += m1.length;
this.operand_str = m1;
return true;
}
}
}
} else {
match = substr.match(rx_refR1C1);
if (match != null && (match[3] === match[5] || (match[3] === "[" && match[5] === "]")) && (match[7] === match[9] || (match[7] === "[" && match[9] === "]"))) {
m0 = match[0];
m1 = match[1];
var ref = AscCommon.parserHelp.convertFromR1C1(parseInt(match[4]), parseInt(match[8]), !match[3], !match[7]);
if (g_oCellAddressUtils.getCellAddress(ref).isValid()) {
this.pCurrPos += m0.indexOf(" ") > -1 ? m0.length - 1 : m1.length;
this.operand_str = m1;
this.real_str = ref;
return true;
}
}
}
return false;
};
parserHelper.prototype.is3DRef = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var subSTR = formula.substring(start_pos),
match = XRegExp.exec(subSTR, rx_ref3D_quoted) || XRegExp.exec(subSTR, rx_ref3D_non_quoted);
if (match != null)
{
this.pCurrPos += match[0].length;
this.operand_str = match[1];
return [true, match["name_from"] ? match["name_from"].replace(/''/g, "'") : null, match["name_to"] ? match["name_to"].replace(/''/g, "'") : null];
}
return [false, null, null];
};
parserHelper.prototype.isNextPtg = function (formula, start_pos, digitDelim)
{
if (this instanceof parserHelper)
{
this._reset();
}
var subSTR = formula.substring(start_pos), match;
if (subSTR.match(rx_RightParentheses) == null && subSTR.match(digitDelim ? rx_Comma : rx_CommaDef) == null &&
subSTR.match(rx_operators) == null && (match = subSTR.match(rx_intersect)) != null)
{
this.pCurrPos += match[0].length;
this.operand_str = match[0][0];
return true;
}
return false;
};
parserHelper.prototype.isNumber = function (formula, start_pos, digitDelim)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(digitDelim ? rx_number : rx_numberDef);
if (match != null)
{
this.operand_str = match[0].replace(FormulaSeparators.digitSeparator, FormulaSeparators.digitSeparatorDef);
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isLeftParentheses = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var code, find = false, length = formula.length;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code === g_oCodeLeftParentheses)
{
this.operand_str = formula[start_pos];
++start_pos;
find = true;
break;
}
else if (code === g_oCodeSpace)
{
++start_pos;
}
else
{
break;
}
}
if (find)
{
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code !== g_oCodeSpace)
{
break;
}
++start_pos;
}
this.pCurrPos = start_pos;
return true;
}
return false;
};
parserHelper.prototype.isRightParentheses = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var code, find = false, length = formula.length;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code === g_oCodeRightParentheses)
{
this.operand_str = formula[start_pos];
++start_pos;
find = true;
break;
}
else if (code === g_oCodeSpace)
{
++start_pos;
}
else
{
break;
}
}
if (find)
{
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code !== g_oCodeSpace)
{
break;
}
++start_pos;
}
this.pCurrPos = start_pos;
return true;
}
};
parserHelper.prototype.isComma = function (formula, start_pos, digitDelim)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(digitDelim ? rx_Comma : rx_CommaDef);
if (match != null)
{
this.operand_str = match[0];
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isArraySeparator = function (formula, start_pos, digitDelim)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(digitDelim ? rx_arraySeparators : rx_arraySeparatorsDef);
if (match != null)
{
this.operand_str = match[0];
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isError = function (formula, start_pos, local)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(local ? rx_error_local : rx_error);
if (match != null)
{
this.operand_str = match[0];
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isBoolean = function (formula, start_pos, local)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(local ? rx_bool_local : rx_bool);
if (match != null)
{
this.operand_str = match[1];
this.pCurrPos += match[1].length;
return true;
}
return false;
};
parserHelper.prototype.isString = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var match = (formula.substring(start_pos)).match(rx_string);
if (match != null)
{
this.operand_str = match[1].replace("\"\"", "\"");
this.pCurrPos += match[0].length;
return true;
}
return false;
};
parserHelper.prototype.isName = function (formula, start_pos, wb, ws)
{
if (this instanceof parserHelper)
{
this._reset();
}
var subSTR = formula.substring(start_pos),
match = XRegExp.exec(subSTR, rx_name);
if (match != null)
{
var name = match["name"];
if (name && 0 !== name.length && name.toUpperCase() !== cBoolLocal.t && name.toUpperCase() !== cBoolLocal.f/*&& wb.DefinedNames && wb.isDefinedNamesExists( name, ws ? ws.getId() : null )*/)
{
this.pCurrPos += name.length;
this.operand_str = name;
return [true, name];
}
this.operand_str = name;
}
return [false];
};
parserHelper.prototype.isLeftBrace = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var code, find = false, length = formula.length;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code === g_oCodeLeftBrace)
{
this.operand_str = formula[start_pos];
++start_pos;
find = true;
break;
}
else if (code === g_oCodeSpace)
{
++start_pos;
}
else
{
break;
}
}
if (find)
{
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code !== g_oCodeSpace)
{
break;
}
++start_pos;
}
this.pCurrPos = start_pos;
return true;
}
};
parserHelper.prototype.isRightBrace = function (formula, start_pos)
{
if (this instanceof parserHelper)
{
this._reset();
}
var code, find = false, length = formula.length;
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code === g_oCodeRightBrace)
{
this.operand_str = formula[start_pos];
++start_pos;
find = true;
break;
}
else if (code === g_oCodeSpace)
{
++start_pos;
}
else
{
break;
}
}
if (find)
{
while (start_pos !== length)
{
code = formula.charCodeAt(start_pos);
if (code !== g_oCodeSpace)
{
break;
}
++start_pos;
}
this.pCurrPos = start_pos;
return true;
}
};
parserHelper.prototype.isTable = function (formula, start_pos, local)
{
if (this instanceof parserHelper)
{
this._reset();
}
var subSTR = formula.substring(start_pos),
match = XRegExp.exec(subSTR, local ? rx_table_local : rx_table);
if (match != null && match["tableName"])
{
this.operand_str = match[0];
this.pCurrPos += match[0].length;
return match;
}
return false;
};
// Парсим ссылку на диапазон в листе
parserHelper.prototype.parse3DRef = function (formula)
{
// Сначала получаем лист
var is3DRefResult = this.is3DRef(formula, 0);
if (is3DRefResult && true === is3DRefResult[0])
{
// Имя листа в ссылке
var sheetName = is3DRefResult[1];
// Ищем начало range
var indexStartRange = null !== this.pCurrPos ? this.pCurrPos : formula.indexOf("!") + 1;
if (this.isArea(formula, indexStartRange) || this.isRef(formula, indexStartRange))
{
if (this.operand_str.length == formula.substring(indexStartRange).length)
return {sheet: sheetName, sheet2: is3DRefResult[2], range: this.operand_str};
else
return null;
}
}
// Возвращаем ошибку
return null;
};
// Возвращает ссылку на диапазон с листом (название листа экранируется)
parserHelper.prototype.get3DRef = function (sheet, range)
{
sheet = sheet.split(":");
var wsFrom = sheet[0],
wsTo = sheet[1] === undefined ? wsFrom : sheet[1];
if (rx_test_ws_name.test(wsFrom) && rx_test_ws_name.test(wsTo))
{
return (wsFrom !== wsTo ? wsFrom + ":" + wsTo : wsFrom) + "!" + range;
}
else
{
wsFrom = wsFrom.replace(/'/g, "''");
wsTo = wsTo.replace(/'/g, "''");
return "'" + (wsFrom !== wsTo ? wsFrom + ":" + wsTo : wsFrom) + "'!" + range;
}
};
// Возвращает экранируемое название листа
parserHelper.prototype.getEscapeSheetName = function (sheet)
{
return rx_test_ws_name.test(sheet) ? sheet : "'" + sheet.replace(/'/g, "''") + "'";
};
/**
* Проверяем ссылку на валидность для диаграммы или автофильтра
* @param {AscCommonExcel.Workbook} model
* @param {AscCommonExcel.WorkbookView} wb
* @param {Asc.c_oAscSelectionDialogType} dialogType
* @param {string} dataRange
* @param {boolean} fullCheck
* @param {boolean} isRows
* @param {Asc.c_oAscChartTypeSettings} chartType
* @returns {*}
*/
parserHelper.prototype.checkDataRange = function (model, wb, dialogType, dataRange, fullCheck, isRows, chartType)
{
var result, range, sheetModel;
if (Asc.c_oAscSelectionDialogType.Chart === dialogType)
{
result = parserHelp.parse3DRef(dataRange);
if (result)
{
sheetModel = model.getWorksheetByName(result.sheet);
if (sheetModel)
{
range = AscCommonExcel.g_oRangeCache.getAscRange(result.range);
}
}
}
else
range = AscCommonExcel.g_oRangeCache.getAscRange(dataRange);
if (!range)
return Asc.c_oAscError.ID.DataRangeError;
if (fullCheck)
{
if (Asc.c_oAscSelectionDialogType.Chart === dialogType)
{
// Проверка максимального дипазона
var maxSeries = 255;
var minStockVal = 4;
var maxValues = 4096;
var intervalValues, intervalSeries;
if (isRows)
{
intervalSeries = range.r2 - range.r1 + 1;
intervalValues = range.c2 - range.c1 + 1;
}
else
{
intervalSeries = range.c2 - range.c1 + 1;
intervalValues = range.r2 - range.r1 + 1;
}
if (Asc.c_oAscChartTypeSettings.stock === chartType)
{
var chartSettings = new Asc.asc_ChartSettings();
chartSettings.putType(Asc.c_oAscChartTypeSettings.stock);
chartSettings.putRange(dataRange);
chartSettings.putInColumns(!isRows);
var chartSeries = AscFormat.getChartSeries(sheetModel, chartSettings).series;
if (minStockVal !== chartSeries.length || !chartSeries[0].Val || !chartSeries[0].Val.NumCache || chartSeries[0].Val.NumCache.length < minStockVal)
return Asc.c_oAscError.ID.StockChartError;
}
else if (intervalSeries > maxSeries)
return Asc.c_oAscError.ID.MaxDataSeriesError;
else if(intervalValues > maxValues){
return Asc.c_oAscError.ID.MaxDataPointsError;
}
}
else if (Asc.c_oAscSelectionDialogType.FormatTable === dialogType)
{
// ToDo убрать эту проверку, заменить на более грамотную после правки функции _searchFilters
if (true === wb.getWorksheet().model.autoFilters.isRangeIntersectionTableOrFilter(range))
return Asc.c_oAscError.ID.AutoFilterDataRangeError;
}
else if (Asc.c_oAscSelectionDialogType.FormatTableChangeRange === dialogType)
{
// ToDo убрать эту проверку, заменить на более грамотную после правки функции _searchFilters
var checkChangeRange = wb.getWorksheet().af_checkChangeRange(range);
if (null !== checkChangeRange)
return checkChangeRange;
}
}
return Asc.c_oAscError.ID.No;
};
parserHelper.prototype.setDigitSeparator = function (sep)
{
if (sep != FormulaSeparators.digitSeparatorDef)
{
FormulaSeparators.digitSeparator = sep;
FormulaSeparators.arrayRowSeparator = ";";
FormulaSeparators.arrayColSeparator = "\\";
FormulaSeparators.functionArgumentSeparator = ";";
rx_number = new RegExp("^ *[+-]?\\d*(\\d|\\" + FormulaSeparators.digitSeparator + ")\\d*([eE][+-]?\\d+)?");
rx_Comma = new RegExp("^ *[" + FormulaSeparators.functionArgumentSeparator + "] *");
rx_arraySeparators = new RegExp("^ *[" + FormulaSeparators.arrayRowSeparator + "\\" + FormulaSeparators.arrayColSeparator + "] *");
}
else
{
FormulaSeparators.arrayRowSeparator = FormulaSeparators.arrayRowSeparatorDef;
FormulaSeparators.arrayColSeparator = FormulaSeparators.arrayColSeparatorDef;
FormulaSeparators.digitSeparator = FormulaSeparators.digitSeparatorDef;
FormulaSeparators.functionArgumentSeparator = FormulaSeparators.functionArgumentSeparatorDef;
rx_number = new RegExp("^ *[+-]?\\d*(\\d|\\" + FormulaSeparators.digitSeparatorDef + ")\\d*([eE][+-]?\\d+)?");
rx_Comma = new RegExp("^ *[" + FormulaSeparators.functionArgumentSeparatorDef + "] *");
rx_arraySeparators = new RegExp("^ *[" + FormulaSeparators.arrayRowSeparatorDef + "\\" + FormulaSeparators.arrayColSeparatorDef + "] *");
}
rx_table_local = build_rx_table_cur();
};
parserHelper.prototype.getColumnTypeByName = function (value)
{
var res;
switch (value.toLowerCase())
{
case "#" + cStrucTableLocalColumns['a'].toLocaleLowerCase():
case cStrucTableReservedWords.all.toLocaleLowerCase():
res = FormulaTablePartInfo.all;
break;
case "#" + cStrucTableLocalColumns['d'].toLocaleLowerCase():
case cStrucTableReservedWords.data.toLocaleLowerCase():
res = FormulaTablePartInfo.data;
break;
case "#" + cStrucTableLocalColumns['h'].toLocaleLowerCase():
case cStrucTableReservedWords.headers.toLocaleLowerCase():
res = FormulaTablePartInfo.headers;
break;
case "#" + cStrucTableLocalColumns['t'].toLocaleLowerCase():
case cStrucTableReservedWords.totals.toLocaleLowerCase():
res = FormulaTablePartInfo.totals;
break;
case "#" + cStrucTableLocalColumns['tr'].toLocaleLowerCase():
case cStrucTableReservedWords.at.toLocaleLowerCase():
case cStrucTableReservedWords.thisrow.toLocaleLowerCase():
res = FormulaTablePartInfo.thisRow;
break;
default:
res = FormulaTablePartInfo.data;
break;
}
return res;
};
parserHelper.prototype.getColumnNameByType = function (value, local)
{
switch (value)
{
case FormulaTablePartInfo.all:
{
if (local)
{
return "#" + cStrucTableLocalColumns['a'];
}
return cStrucTableReservedWords.all;
}
case FormulaTablePartInfo.data:
{
if (local)
{
return "#" + cStrucTableLocalColumns['d'];
}
return cStrucTableReservedWords.data;
}
case FormulaTablePartInfo.headers:
{
if (local)
{
return "#" + cStrucTableLocalColumns['h'];
}
return cStrucTableReservedWords.headers;
}
case FormulaTablePartInfo.totals:
{
if (local)
{
return "#" + cStrucTableLocalColumns['t'];
}
return cStrucTableReservedWords.totals;
}
case FormulaTablePartInfo.thisRow:
{
if (local)
{
return "#" + cStrucTableLocalColumns['tr'];
}
return cStrucTableReservedWords.thisrow;
}
}
return null;
};
var parserHelp = new parserHelper();
var g_oHtmlCursor = new CHTMLCursor();
var kCurFormatPainterWord = 'de-formatpainter';
g_oHtmlCursor.register(kCurFormatPainterWord, "text_copy", ["text_copy", 2, 11], "pointer");
function asc_ajax(obj)
{
var url = "", type = "GET",
async = true, data = null, dataType,
error = null, success = null, httpRequest = null,
contentType = "application/x-www-form-urlencoded",
responseType = '',
init = function (obj)
{
if (typeof obj.url !== 'undefined')
{
url = obj.url;
}
if (typeof obj.type !== 'undefined')
{
type = obj.type;
}
if (typeof obj.async !== 'undefined')
{
async = obj.async;
}
if (typeof obj.data !== 'undefined')
{
data = obj.data;
}
if (typeof obj.dataType !== 'undefined')
{
dataType = obj.dataType;
}
if (typeof obj.error !== 'undefined')
{
error = obj.error;
}
if (typeof obj.success !== 'undefined')
{
success = obj.success;
}
if (typeof (obj.contentType) !== 'undefined')
{
contentType = obj.contentType;
}
if (typeof (obj.responseType) !== 'undefined')
{
responseType = obj.responseType;
}
if (window.XMLHttpRequest)
{ // Mozilla, Safari, ...
httpRequest = new XMLHttpRequest();
if (httpRequest.overrideMimeType && dataType)
{
httpRequest.overrideMimeType(dataType);
}
}
else if (window.ActiveXObject)
{ // IE
try
{
httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
httpRequest.onreadystatechange = function ()
{
respons(this);
};
send();
},
send = function ()
{
httpRequest.open(type, url, async);
if (type === "POST")
httpRequest.setRequestHeader("Content-Type", contentType);
if (responseType)
httpRequest.responseType = responseType;
httpRequest.send(data);
},
respons = function (httpRequest)
{
switch (httpRequest.readyState)
{
case 0:
// The object has been created, but not initialized (the open method has not been called).
break;
case 1:
// A request has been opened, but the send method has not been called.
break;
case 2:
// The send method has been called. No data is available yet.
break;
case 3:
// Some data has been received; however, neither responseText nor responseBody is available.
break;
case 4:
if (httpRequest.status === 200 || httpRequest.status === 1223)
{
if (typeof success === "function")
success(httpRequest);
}
else
{
if (typeof error === "function")
error(httpRequest, httpRequest.statusText, httpRequest.status);
}
break;
}
};
init(obj);
}
function CIdCounter()
{
this.m_sUserId = null;
this.m_bLoad = true;
this.m_bRead = false;
this.m_nIdCounterLoad = 0; // Счетчик Id для загрузки
this.m_nIdCounterEdit = 0; // Счетчик Id для работы
}
CIdCounter.prototype.Get_NewId = function ()
{
if (true === this.m_bLoad || null === this.m_sUserId)
{
this.m_nIdCounterLoad++;
return ("" + this.m_nIdCounterLoad);
}
else
{
this.m_nIdCounterEdit++;
return ("" + this.m_sUserId + "_" + this.m_nIdCounterEdit);
}
};
CIdCounter.prototype.Set_UserId = function (sUserId)
{
this.m_sUserId = sUserId;
};
CIdCounter.prototype.Set_Load = function (bValue)
{
this.m_bLoad = bValue;
};
CIdCounter.prototype.Clear = function ()
{
this.m_sUserId = null;
this.m_bLoad = true;
this.m_nIdCounterLoad = 0; // Счетчик Id для загрузки
this.m_nIdCounterEdit = 0; // Счетчик Id для работы
};
function CLock()
{
this.Type = locktype_None;
this.UserId = null;
}
CLock.prototype.Get_Type = function ()
{
return this.Type;
};
CLock.prototype.Set_Type = function (NewType, Redraw)
{
if (NewType === locktype_None)
this.UserId = null;
this.Type = NewType;
var oApi = editor;
var oLogicDocument = oApi.WordControl.m_oLogicDocument;
if (false != Redraw && oLogicDocument)
{
// TODO: переделать перерисовку тут
var oDrawingDocument = oLogicDocument.DrawingDocument;
oDrawingDocument.ClearCachePages();
oDrawingDocument.FirePaint();
if(oApi.editorId === AscCommon.c_oEditorId.Presentation)
{
var oCurSlide = oLogicDocument.Slides[oLogicDocument.CurPage];
if(oCurSlide && oCurSlide.notesShape && oCurSlide.notesShape.Lock === this)
{
oDrawingDocument.Notes_OnRecalculate(oLogicDocument.CurPage, oCurSlide.NotesWidth, oCurSlide.getNotesHeight());
}
}
// TODO: Обновлять интерфейс нужно, потому что мы можем стоять изначально в незалоченном объекте, а тут он
// может быть залочен.
var oRevisionsStack = oApi.asc_GetRevisionsChangesStack();
var arrParagraphs = [];
for (var nIndex = 0, nCount = oRevisionsStack.length; nIndex < nCount; ++nIndex)
{
arrParagraphs.push(oRevisionsStack[nIndex].get_Paragraph())
}
var bNeedUpdate = false;
for (var nIndex = 0, nCount = arrParagraphs.length; nIndex < nCount; ++nIndex)
{
if (arrParagraphs[nIndex].Get_Lock() === this)
{
bNeedUpdate = true;
break;
}
}
if (bNeedUpdate)
{
oLogicDocument.TrackRevisionsManager.Clear_VisibleChanges();
oLogicDocument.Document_UpdateInterfaceState(false);
}
}
};
CLock.prototype.Check = function (Id)
{
if (this.Type === locktype_Mine)
AscCommon.CollaborativeEditing.Add_CheckLock(false);
else if (this.Type === locktype_Other || this.Type === locktype_Other2 || this.Type === locktype_Other3)
AscCommon.CollaborativeEditing.Add_CheckLock(true);
else
AscCommon.CollaborativeEditing.Add_CheckLock(Id);
};
CLock.prototype.Lock = function (bMine)
{
if (locktype_None === this.Type)
{
if (true === bMine)
this.Type = locktype_Mine;
else
true.Type = locktype_Other;
}
};
CLock.prototype.Is_Locked = function ()
{
if (locktype_None != this.Type && locktype_Mine != this.Type)
return true;
return false;
};
CLock.prototype.Set_UserId = function (UserId)
{
this.UserId = UserId;
};
CLock.prototype.Get_UserId = function ()
{
return this.UserId;
};
CLock.prototype.Have_Changes = function ()
{
if (locktype_Other2 === this.Type || locktype_Other3 === this.Type)
return true;
return false;
};
function CContentChanges()
{
this.m_aChanges = [];
}
CContentChanges.prototype.Add = function (Changes)
{
this.m_aChanges.push(Changes);
};
CContentChanges.prototype.RemoveByHistoryItem = function (Item)
{
for (var nIndex = 0, nCount = this.m_aChanges.length; nIndex < nCount; ++nIndex)
{
if (this.m_aChanges[nIndex].m_pData === Item)
{
this.m_aChanges.splice(nIndex, 1);
return;
}
}
};
CContentChanges.prototype.Clear = function ()
{
this.m_aChanges.length = 0;
};
CContentChanges.prototype.Check = function (Type, Pos)
{
var CurPos = Pos;
var Count = this.m_aChanges.length;
for (var Index = 0; Index < Count; Index++)
{
var NewPos = this.m_aChanges[Index].Check_Changes(Type, CurPos);
if (false === NewPos)
return false;
CurPos = NewPos;
}
return CurPos;
};
CContentChanges.prototype.Refresh = function ()
{
var Count = this.m_aChanges.length;
for (var Index = 0; Index < Count; Index++)
{
this.m_aChanges[Index].Refresh_BinaryData();
}
};
function CContentChangesElement(Type, Pos, Count, Data)
{
this.m_nType = Type; // Тип изменений (удаление или добавление)
this.m_nCount = Count; // Количество добавленных/удаленных элементов
this.m_pData = Data; // Связанные с данным изменением данные из истории
// Разбиваем сложное действие на простейшие
this.m_aPositions = this.Make_ArrayOfSimpleActions(Type, Pos, Count);
}
CContentChangesElement.prototype.Refresh_BinaryData = function ()
{
var Binary_Writer = AscCommon.History.BinaryWriter;
var Binary_Pos = Binary_Writer.GetCurPosition();
this.m_pData.Data.UseArray = true;
this.m_pData.Data.PosArray = this.m_aPositions;
Binary_Writer.WriteString2(this.m_pData.Class.Get_Id());
Binary_Writer.WriteLong(this.m_pData.Data.Type);
this.m_pData.Data.WriteToBinary(Binary_Writer);
var Binary_Len = Binary_Writer.GetCurPosition() - Binary_Pos;
this.m_pData.Binary.Pos = Binary_Pos;
this.m_pData.Binary.Len = Binary_Len;
};
CContentChangesElement.prototype.Check_Changes = function (Type, Pos)
{
var CurPos = Pos;
if (contentchanges_Add === Type)
{
for (var Index = 0; Index < this.m_nCount; Index++)
{
if (false !== this.m_aPositions[Index])
{
if (CurPos <= this.m_aPositions[Index])
this.m_aPositions[Index]++;
else
{
if (contentchanges_Add === this.m_nType)
CurPos++;
else //if ( contentchanges_Remove === this.m_nType )
CurPos--;
}
}
}
}
else //if ( contentchanges_Remove === Type )
{
for (var Index = 0; Index < this.m_nCount; Index++)
{
if (false !== this.m_aPositions[Index])
{
if (CurPos < this.m_aPositions[Index])
this.m_aPositions[Index]--;
else if (CurPos > this.m_aPositions[Index])
{
if (contentchanges_Add === this.m_nType)
CurPos++;
else //if ( contentchanges_Remove === this.m_nType )
CurPos--;
}
else //if ( CurPos === this.m_aPositions[Index] )
{
if (AscCommon.contentchanges_Remove === this.m_nType)
{
// Отмечаем, что действия совпали
this.m_aPositions[Index] = false;
return false;
}
else
{
CurPos++;
}
}
}
}
}
return CurPos;
};
CContentChangesElement.prototype.Make_ArrayOfSimpleActions = function (Type, Pos, Count)
{
// Разбиваем действие на простейшие
var Positions = [];
if (contentchanges_Add === Type)
{
for (var Index = 0; Index < Count; Index++)
Positions[Index] = Pos + Index;
}
else //if ( contentchanges_Remove === Type )
{
for (var Index = 0; Index < Count; Index++)
Positions[Index] = Pos;
}
return Positions;
};
/**
* Корректируем заданное значение в миллиметрах к ближайшему целому значению в твипсах
* @param mm - заданное значение в миллиметрах
* @returns {number} - получаем новое значение в миллиметрах, являющееся целым значением в твипсах
*/
function CorrectMMToTwips(mm)
{
return (((mm * 20 * 72 / 25.4) + 0.5) | 0) * 25.4 / 20 / 72;
}
/**
* Получаем значение в миллиметрах заданного количества твипсов
* @param nTwips[=1] - значение в твипсах
* @returns {number}
*/
function TwipsToMM(nTwips)
{
return (null !== nTwips && undefined !== nTwips ? nTwips : 1) * 25.4 / 20 / 72;
}
/**
* Конвертируем миллиметры в ближайшее целое значение твипсов
* @param mm - значение в миллиметрах
* @returns {number}
*/
function MMToTwips(mm)
{
return (((mm * 20 * 72 / 25.4) + 0.5) | 0);
}
/**
* Конвертируем число из римской системы исчисления в обычное десятичное число
* @param sRoman {string}
* @returns {number}
*/
function RomanToInt(sRoman)
{
sRoman = sRoman.toUpperCase();
if (sRoman < 1)
{
return 0;
}
else if (!/^M*(?:D?C{0,3}|C[MD])(?:L?X{0,3}|X[CL])(?:V?I{0,3}|I[XV])$/i.test(sRoman))
{
return NaN;
}
var chars = {
"M" : 1000,
"CM" : 900,
"D" : 500,
"CD" : 400,
"C" : 100,
"XC" : 90,
"L" : 50,
"XL" : 40,
"X" : 10,
"IX" : 9,
"V" : 5,
"IV" : 4,
"I" : 1
};
var arabic = 0;
sRoman.replace(/[MDLV]|C[MD]?|X[CL]?|I[XV]?/g, function(i)
{
arabic += chars[i];
});
return arabic;
}
/**
* Конвертируем нумерацию {a b ... z aa bb ... zz aaa bbb ... zzz ...} в число
* @param sLetters
* @constructor
*/
function LatinNumberingToInt(sLetters)
{
sLetters = sLetters.toUpperCase();
if (sLetters.length <= 0)
return NaN;
var nLen = sLetters.length;
var nFirstCharCode = sLetters.charCodeAt(0);
if (65 > nFirstCharCode || nFirstCharCode > 90)
return NaN;
for (var nPos = 1; nPos < nLen; ++nPos)
{
if (sLetters.charCodeAt(nPos) !== nFirstCharCode)
return NaN;
}
return (nFirstCharCode - 64) + 26 * (nLen - 1);
}
var g_oUserColorById = {}, g_oUserNextColorIndex = 0;
function getUserColorById(userId, userName, isDark, isNumericValue)
{
if ((!userId || "" === userId) && (!userName || "" === userName))
return new CColor(0, 0, 0, 255);
var res;
if (g_oUserColorById.hasOwnProperty(userId))
{
res = g_oUserColorById[userId];
}
else if (g_oUserColorById.hasOwnProperty(userName))
{
res = g_oUserColorById[userName];
}
else
{
var nColor = Asc.c_oAscArrUserColors[g_oUserNextColorIndex % Asc.c_oAscArrUserColors.length];
++g_oUserNextColorIndex;
res = g_oUserColorById[userId || userName] = new CUserCacheColor(nColor);
}
if (!res)
return new CColor(0, 0, 0, 255);
var oColor = true === isDark ? res.Dark : res.Light;
return true === isNumericValue ? ((oColor.r << 16) & 0xFF0000) | ((oColor.g << 8) & 0xFF00) | (oColor.b & 0xFF) : oColor;
}
function isNullOrEmptyString(str)
{
return (str == undefined) || (str == null) || (str == "");
}
function unleakString(s) {
//todo remove in the future
//https://bugs.chromium.org/p/v8/issues/detail?id=2869
return (' ' + s).substr(1);
}
function CUserCacheColor(nColor)
{
this.Light = null;
this.Dark = null;
this.init(nColor);
}
CUserCacheColor.prototype.init = function (nColor)
{
var r = (nColor >> 16) & 0xFF;
var g = (nColor >> 8) & 0xFF;
var b = nColor & 0xFF;
var Y = Math.max(0, Math.min(255, 0.299 * r + 0.587 * g + 0.114 * b));
var Cb = Math.max(0, Math.min(255, 128 - 0.168736 * r - 0.331264 * g + 0.5 * b));
var Cr = Math.max(0, Math.min(255, 128 + 0.5 * r - 0.418688 * g - 0.081312 * b));
if (Y > 63)
Y = 63;
var R = Math.max(0, Math.min(255, Y + 1.402 * (Cr - 128))) | 0;
var G = Math.max(0, Math.min(255, Y - 0.34414 * (Cb - 128) - 0.71414 * (Cr - 128))) | 0;
var B = Math.max(0, Math.min(255, Y + 1.772 * (Cb - 128))) | 0;
this.Light = new CColor(r, g, b, 255);
this.Dark = new CColor(R, G, B, 255);
};
function loadScript(url, onSuccess, onError)
{
if (window["NATIVE_EDITOR_ENJINE"] === true || window["Native"] !== undefined)
{
onSuccess();
return;
}
if (window["AscDesktopEditor"] && window["local_load_add"])
{
var _context = {
"completeLoad": function ()
{
return onSuccess();
}
};
window["local_load_add"](_context, "sdk-all-from-min", url);
var _ret_param = window["AscDesktopEditor"]["LoadJS"](url);
if (2 != _ret_param)
window["local_load_remove"](url);
if (_ret_param == 1)
{
setTimeout(onSuccess, 1);
return;
}
else if (_ret_param == 2)
return;
}
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
script.onload = onSuccess;
script.onerror = onError;
// Fire the loading
document.head.appendChild(script);
}
function loadSdk(sdkName, onSuccess, onError)
{
if (window['AscNotLoadAllScript'])
{
onSuccess();
}
else
{
loadScript('./../../../../sdkjs/' + sdkName + '/sdk-all.js', onSuccess, onError);
}
}
function getAltGr(e)
{
var ctrlKey = e.metaKey || e.ctrlKey;
var altKey = e.altKey;
return (altKey && (AscBrowser.isMacOs ? !ctrlKey : ctrlKey));
}
function getColorThemeByIndex(index)
{
var _c, scheme = null;
var oColorScheme = AscCommon.g_oUserColorScheme;
if (index >= oColorScheme.length)
{
return scheme;
}
scheme = new AscFormat.ClrScheme();
var tmp = oColorScheme[index];
scheme.name = tmp.name;
_c = tmp.get_dk1();
scheme.colors[8] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_lt1();
scheme.colors[12] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_dk2();
scheme.colors[9] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_lt2();
scheme.colors[13] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent1();
scheme.colors[0] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent2();
scheme.colors[1] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent3();
scheme.colors[2] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent4();
scheme.colors[3] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent5();
scheme.colors[4] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_accent6();
scheme.colors[5] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_hlink();
scheme.colors[11] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
_c = tmp.get_folHlink();
scheme.colors[10] = AscFormat.CreateUniColorRGB(_c.r, _c.g, _c.b);
return scheme;
}
function isEastAsianScript(value)
{
// Bopomofo (3100312F)
// Bopomofo Extended (31A031BF)
// CJK Unified Ideographs (4E009FEA)
// CJK Unified Ideographs Extension A (34004DB5)
// CJK Unified Ideographs Extension B (200002A6D6)
// CJK Unified Ideographs Extension C (2A7002B734)
// CJK Unified Ideographs Extension D (2B7402B81D)
// CJK Unified Ideographs Extension E (2B8202CEA1)
// CJK Unified Ideographs Extension F (2CEB02EBE0)
// CJK Compatibility Ideographs (F900FAFF)
// CJK Compatibility Ideographs Supplement (2F8002FA1F)
// Kangxi Radicals (2F002FDF)
// CJK Radicals Supplement (2E802EFF)
// CJK Strokes (31C031EF)
// Ideographic Description Characters (2FF02FFF)
// Hangul Jamo (110011FF)
// Hangul Jamo Extended-A (A960A97F)
// Hangul Jamo Extended-B (D7B0D7FF)
// Hangul Compatibility Jamo (3130318F)
// Halfwidth and Fullwidth Forms (FF00FFEF)
// Hangul Syllables (AC00D7AF)
// Hiragana (3040309F)
// Kana Extended-A (1B1001B12F)
// Kana Supplement (1B0001B0FF)
// Kanbun (3190319F)
// Katakana (30A030FF)
// Katakana Phonetic Extensions (31F031FF)
// Lisu (A4D0A4FF)
// Miao (16F0016F9F)
// Nushu (1B1701B2FF)
// Tangut (17000187EC)
// Tangut Components (1880018AFF)
// Yi Syllables (A000A48F)
// Yi Radicals (A490A4CF)
return ((0x3100 <= value && value <= 0x312F)
|| (0x31A0 <= value && value <= 0x31BF)
|| (0x4E00 <= value && value <= 0x9FEA)
|| (0x3400 <= value && value <= 0x4DB5)
|| (0x20000 <= value && value <= 0x2A6D6)
|| (0x2A700 <= value && value <= 0x2B734)
|| (0x2B740 <= value && value <= 0x2B81D)
|| (0x2B820 <= value && value <= 0x2CEA1)
|| (0x2CEB0 <= value && value <= 0x2EBE0)
|| (0xF900 <= value && value <= 0xFAFF)
|| (0x2F800 <= value && value <= 0x2FA1F)
|| (0x2F00 <= value && value <= 0x2FDF)
|| (0x2E80 <= value && value <= 0x2EFF)
|| (0x31C0 <= value && value <= 0x31EF)
|| (0x2FF0 <= value && value <= 0x2FFF)
|| (0x1100 <= value && value <= 0x11FF)
|| (0xA960 <= value && value <= 0xA97F)
|| (0xD7B0 <= value && value <= 0xD7FF)
|| (0x3130 <= value && value <= 0x318F)
|| (0xFF00 <= value && value <= 0xFFEF)
|| (0xAC00 <= value && value <= 0xD7AF)
|| (0x3040 <= value && value <= 0x309F)
|| (0x1B100 <= value && value <= 0x1B12F)
|| (0x1B000 <= value && value <= 0x1B0FF)
|| (0x3190 <= value && value <= 0x319F)
|| (0x30A0 <= value && value <= 0x30FF)
|| (0x31F0 <= value && value <= 0x31FF)
|| (0xA4D0 <= value && value <= 0xA4FF)
|| (0x16F00 <= value && value <= 0x16F9F)
|| (0x1B170 <= value && value <= 0x1B2FF)
|| (0x17000 <= value && value <= 0x187EC)
|| (0x18800 <= value && value <= 0x18AFF)
|| (0xA000 <= value && value <= 0xA48F)
|| (0xA490 <= value && value <= 0xA4CF));
}
var g_oIdCounter = new CIdCounter();
window["SetDoctRendererParams"] = function (_params)
{
if (_params["retina"] === true)
AscBrowser.isRetina = true;
};
window.Asc.g_signature_drawer = null;
function CSignatureDrawer(id, api, w, h)
{
window.Asc.g_signature_drawer = this;
this.Api = api;
this.CanvasParent = document.getElementById(id);
this.Canvas = document.createElement('canvas');
this.Canvas.style.position = "absolute";
this.Canvas.style.left = "0px";
this.Canvas.style.top = "0px";
var _width = parseInt(this.CanvasParent.offsetWidth);
var _height = parseInt(this.CanvasParent.offsetHeight);
if (0 == _width)
_width = 300;
if (0 == _height)
_height = 80;
this.Canvas.width = _width;
this.Canvas.height = _height;
this.CanvasParent.appendChild(this.Canvas);
this.Image = "";
this.ImageHtml = null;
this.Text = "";
this.Font = "Arial";
this.Size = 10;
this.Italic = true;
this.Bold = false;
this.Width = w;
this.Height = h;
this.CanvasReturn = null;
this.IsAsync = false;
}
CSignatureDrawer.prototype.getCanvas = function()
{
return (this.CanvasReturn == null) ? this.Canvas : this.CanvasReturn;
};
CSignatureDrawer.prototype.getImages = function()
{
if (!this.isValid())
return ["", ""];
this.CanvasReturn = document.createElement("canvas");
this.CanvasReturn.width = (this.Width * AscCommon.g_dKoef_mm_to_pix);
this.CanvasReturn.height = (this.Height * AscCommon.g_dKoef_mm_to_pix);
if (this.Text != "")
this.drawText();
else
this.drawImage();
var _ret = [];
_ret.push(this.CanvasReturn.toDataURL("image/png"));
var _ctx = this.CanvasReturn.getContext("2d");
_ctx.strokeStyle = "#FF0000";
_ctx.lineWidth = 2;
_ctx.moveTo(0, 0);
_ctx.lineTo(this.CanvasReturn.width, this.CanvasReturn.height);
_ctx.moveTo(0, this.CanvasReturn.height);
_ctx.lineTo(this.CanvasReturn.width, 0);
_ctx.stroke();
_ret.push(this.CanvasReturn.toDataURL("image/png"));
this.CanvasReturn = null;
return _ret;
};
CSignatureDrawer.prototype.setText = function(text, font, size, isItalic, isBold)
{
if (this.IsAsync)
{
this.Text = text;
return;
}
this.Image = "";
this.ImageHtml = null;
this.Text = text;
this.Font = font;
this.Size = size;
this.Italic = isItalic;
this.Bold = isBold;
this.IsAsync = true;
AscFonts.FontPickerByCharacter.checkText(this.Text, this, function() {
this.IsAsync = false;
var loader = AscCommon.g_font_loader;
var fontinfo = AscFonts.g_fontApplication.GetFontInfo(font);
var isasync = loader.LoadFont(fontinfo, function() {
window.Asc.g_signature_drawer.Api.sync_EndAction(Asc.c_oAscAsyncActionType.Information, Asc.c_oAscAsyncAction.LoadFont);
window.Asc.g_signature_drawer.drawText();
});
if (false === isasync)
{
this.drawText();
}
});
};
CSignatureDrawer.prototype.drawText = function()
{
var _oldTurn = this.Api.isViewMode;
var _oldMarks = this.Api.ShowParaMarks;
this.Api.isViewMode = true;
this.Api.ShowParaMarks = false;
AscFormat.ExecuteNoHistory(AscCommon.DrawTextByCenter, this, []);
this.Api.isViewMode = _oldTurn;
this.Api.ShowParaMarks = _oldMarks;
};
CSignatureDrawer.prototype.drawImage = function()
{
var _canvas = this.getCanvas();
var w = _canvas.width;
var h = _canvas.height;
var _ctx = _canvas.getContext("2d");
_ctx.clearRect(0, 0, w, h);
var im_w = this.ImageHtml.width;
var im_h = this.ImageHtml.height;
var _x = 0;
var _y = 0;
var _w = 0;
var _h = 0;
var koef1 = w / h;
var koef2 = im_w / im_h;
if (koef1 > koef2)
{
_h = h;
_w = (koef2 * _h) >> 0;
_y = 0;
_x = (w - _w) >> 1;
}
else
{
_w = w;
_h = (_w / koef2) >> 0;
_x = 0;
_y = (h - _h) >> 1;
}
_ctx.drawImage(this.ImageHtml, _x, _y, _w, _h);
};
CSignatureDrawer.prototype.selectImage = CSignatureDrawer.prototype["selectImage"] = function()
{
this.Text = "";
window["AscDesktopEditor"]["OpenFilenameDialog"]("images", false, function(_file) {
var file = _file;
if (Array.isArray(file))
file = file[0];
if (file == "")
return;
var _drawer = window.Asc.g_signature_drawer;
_drawer.Image = window["AscDesktopEditor"]["GetImageBase64"](file);
_drawer.ImageHtml = new Image();
_drawer.ImageHtml.onload = function()
{
window.Asc.g_signature_drawer.drawImage();
};
_drawer.ImageHtml.src = _drawer.Image;
_drawer = null;
});
};
CSignatureDrawer.prototype.isValid = function()
{
return (this.Image != "" || this.Text != "");
};
CSignatureDrawer.prototype.destroy = function()
{
window.Asc.g_signature_drawer.CanvasParent.removeChild(this.Canvas);
delete window.Asc.g_signature_drawer;
};
function CSignatureImage()
{
this.ImageValidBase64 = "";
this.ImageInvalidBase64 = "";
this.ImageValid = null;
this.ImageInvalid = null;
this.Valid = false;
this.Loading = 0;
this.Remove = function()
{
this.ImageValidBase64 = "";
this.ImageInvalidBase64 = "";
this.ImageValid = null;
this.ImageInvalid = null;
this.Valid = false;
this.Loading = 0;
};
this.Register = function(_api, _guid)
{
if (_api.ImageLoader.map_image_index[_guid])
return;
var _obj = { Image : (this.Valid ? this.ImageValid : this.ImageInvalid), Status : ImageLoadStatus.Complete, src : _guid };
_api.ImageLoader.map_image_index[_guid] = _obj;
};
this.Unregister = function(api, _guid)
{
if (_api.ImageLoader.map_image_index[_guid])
delete _api.ImageLoader.map_image_index[_guid];
};
}
/////////////////////////////////////////////////////////
/////////////// CRYPT ////////////////////////
/////////////////////////////////////////////////////////
AscCommon.EncryptionMessageType = {
Encrypt : 0,
Decrypt : 1
};
function CEncryptionData()
{
this._init = false;
this.arrData = [];
this.arrImages = [];
this.handleChangesCallback = null;
this.isChangesHandled = false;
this.cryptoMode = 0; // start crypto mode
this.isChartEditor = false;
this.isExistDecryptedChanges = false; // был ли хоть один запрос на расшифровку данных (были ли чужие изменения)
this.cryptoPrefix = (window["AscDesktopEditor"] && window["AscDesktopEditor"]["GetEncryptedHeader"]) ? window["AscDesktopEditor"]["GetEncryptedHeader"]() : "ENCRYPTED;";
this.cryptoPrefixLen = this.cryptoPrefix.length;
this.editorId = null;
this.nextChangesTimeoutId = -1;
this.isPasswordCryptoPresent = false;
this.init = function()
{
this._init = true;
};
this.isInit = function()
{
return this._init;
};
this.isNeedCrypt = function()
{
if (!window.g_asc_plugins)
return false;
if (!window.g_asc_plugins.isRunnedEncryption())
return false;
if (!window["AscDesktopEditor"])
return false;
if (this.isChartEditor)
return false;
if (2 == this.cryptoMode)
return true;
if (0 === window["AscDesktopEditor"]["CryptoMode"])
return false;
return true;
};
this.isCryptoImages = function()
{
return (this.isNeedCrypt() && this.isPasswordCryptoPresent);
};
this.addCryproImagesFromDialog = function(callback)
{
var _this = this;
window["AscDesktopEditor"]["OpenFilenameDialog"]("images", true, function(files) {
var _files = [];
var _options = { isImageCrypt: true, callback: callback, ext : [] };
for (var i = 0; i < files.length; i++)
{
_files.push(window["AscDesktopEditor"]["GetImageBase64"](files[i], true));
_options.ext.push(AscCommon.GetFileExtension(files[i]));
}
_this.sendChanges(this, _files, AscCommon.EncryptionMessageType.Encrypt, _options);
});
};
this.addCryproImagesFromUrls = function(urls, callback)
{
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
_editor.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadImage);
var _this = this;
window["AscDesktopEditor"]["DownloadFiles"](urls, [], function(files) {
_editor.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadImage);
_editor.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage);
var _files = [];
var _options = { isImageCrypt: true, isUrls: true, callback: callback, ext : [], api: _editor };
for (var elem in files)
{
_files.push(window["AscDesktopEditor"]["GetImageBase64"](files[elem], true));
_options.ext.push(window["AscDesktopEditor"]["GetImageFormat"](files[elem]));
window["AscDesktopEditor"]["RemoveFile"](files[elem]);
}
_this.sendChanges(this, _files, AscCommon.EncryptionMessageType.Encrypt, _options);
});
};
this.onDecodeError = function()
{
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
_editor.sendEvent("asc_onError", Asc.c_oAscError.ID.DataEncrypted, Asc.c_oAscError.Level.Critical);
};
this.checkEditorId = function()
{
if (null == this.editorId)
{
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
this.editorId = _editor.editorId;
}
};
this.decryptImage = function(src, img, data)
{
this.sendChanges(this, [data], AscCommon.EncryptionMessageType.Decrypt, { isImageDecrypt: true, src: src, img : img });
};
this.nextChanges = function()
{
this.nextChangesTimeoutId = setTimeout(function() {
AscCommon.EncryptionWorker.sendChanges(undefined, undefined);
this.nextChangesTimeoutId = -1;
}, 10);
};
this.sendChanges = function(sender, data, type, options)
{
if (!this.isNeedCrypt())
{
if (AscCommon.EncryptionMessageType.Encrypt == type)
{
sender._send(data, true);
}
else if (AscCommon.EncryptionMessageType.Decrypt == type)
{
if (this.isExistEncryptedChanges(data["changes"]))
{
this.onDecodeError();
return;
}
sender._onSaveChanges(data, true);
}
return;
}
if (undefined !== type)
this.arrData.push({ sender: sender, type: type, data: data, options: options });
if (this.arrData.length == 0)
return;
if (undefined !== type && ((1 != this.arrData.length) || !this.isChangesHandled))
return; // вызовется на коллбэке
if (undefined !== type && -1 != this.nextChangesTimeoutId)
{
// вызвали send, когда данные на receiveChanges были удалены - и запустился nextChanges
// но так как он сделан на таймере - то просто он не успел отработать.
// тут запускаем единственное изменение - это и есть как бы next.
// убиваем таймер
clearTimeout(this.nextChangesTimeoutId);
this.nextChangesTimeoutId = -1;
}
if (AscCommon.EncryptionMessageType.Encrypt == this.arrData[0].type)
{
//console.log("encrypt: " + data["changes"]);
if (this.arrData[0].options && this.arrData[0].options.isImageCrypt)
window.g_asc_plugins.sendToEncryption({ "type" : "encryptData", "data" : this.arrData[0].data });
else
window.g_asc_plugins.sendToEncryption({ "type" : "encryptData", "data" : JSON.parse(this.arrData[0].data["changes"]) });
}
else if (AscCommon.EncryptionMessageType.Decrypt == this.arrData[0].type)
{
//console.log("decrypt: " + data["changes"]);
if (this.arrData[0].options && this.arrData[0].options.isImageDecrypt)
window.g_asc_plugins.sendToEncryption({ "type" : "decryptData", "data" : this.arrData[0].data });
else
window.g_asc_plugins.sendToEncryption({ "type" : "decryptData", "data" : this.arrData[0].data["changes"] });
}
};
this.receiveChanges = function(obj)
{
var data = obj["data"];
var check = obj["check"];
if (!check)
{
this.onDecodeError();
return;
}
if (this.handleChangesCallback)
{
this.isExistDecryptedChanges = true;
this.checkEditorId();
if (this.editorId == AscCommon.c_oEditorId.Spreadsheet)
{
for (var i = data.length - 1; i >= 0; i--)
{
this.handleChangesCallback.changesBase[i] = data[i];
}
}
else
{
for (var i = data.length - 1; i >= 0; i--)
{
this.handleChangesCallback.changesBase[i].m_pData = data[i];
}
}
this.isChangesHandled = true;
this.handleChangesCallback.callback.call(this.handleChangesCallback.sender);
this.handleChangesCallback = null;
this.nextChanges();
return;
}
var obj = this.arrData[0];
this.arrData.splice(0, 1);
if (AscCommon.EncryptionMessageType.Encrypt == obj.type)
{
if (obj.options && obj.options.isImageCrypt)
{
for (var i = 0; i < data.length; i++)
{
if (this.cryptoPrefix == data[i].substr(0, this.cryptoPrefixLen))
{
// дописываем extension
data[i] = this.cryptoPrefix + obj.options.ext[i] + ";" + data[i].substr(this.cryptoPrefixLen);
}
}
if (!obj.options.isUrls)
obj.options.callback(Asc.c_oAscError.ID.No, data);
else
{
AscCommon.UploadImageUrls(data, obj.options.api.documentId, obj.options.api.documentUserId, obj.options.api.CoAuthoringApi.get_jwt(), function(urls)
{
obj.options.api.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.UploadImage);
obj.options.callback(urls);
});
}
}
else
{
obj.data["changes"] = JSON.stringify(data);
obj.sender._send(obj.data, true);
}
}
else if (AscCommon.EncryptionMessageType.Decrypt == obj.type)
{
if (obj.options && obj.options.isImageDecrypt)
{
window["AscDesktopEditor"]["ResaveFile"](obj.options.src, data[0]);
obj.options.img["onload_crypto"](obj.options.src);
}
else
{
this.isExistDecryptedChanges = true;
obj.data["changes"] = data;
obj.sender._onSaveChanges(obj.data, true);
}
}
this.nextChanges();
};
this.isExistEncryptedChanges = function(_array)
{
if (0 == _array.length)
return false;
this.checkEditorId();
var isChangesMode = (_array[0]["change"]) ? true : false;
var _prefix = "";
var _checkPrefixLen = this.cryptoPrefixLen + 1; // "ENCRYPTED; && ""ENCRYPTED;
if (isChangesMode)
{
for (var i = _array.length - 1; i >= 0; i--)
{
if (_array[i]["change"].length > _checkPrefixLen)
{
_prefix = _array[i]["change"].substr(0, _checkPrefixLen);
if (-1 != _prefix.indexOf(this.cryptoPrefix))
{
isCrypted = true;
break;
}
}
}
return isCrypted;
}
var isCrypted = false;
if (this.editorId == AscCommon.c_oEditorId.Spreadsheet)
{
for (var i = _array.length - 1; i >= 0; i--)
{
if (_array[i].length > _checkPrefixLen)
{
_prefix = _array[i].substr(0, _checkPrefixLen);
if (-1 != _prefix.indexOf(this.cryptoPrefix))
{
isCrypted = true;
break;
}
}
}
}
else
{
for (var i = _array.length - 1; i >= 0; i--)
{
if (_array[i].m_pData.length > _checkPrefixLen)
{
_prefix = _array[i].m_pData.substr(0, _checkPrefixLen);
if (-1 != _prefix.indexOf(this.cryptoPrefix))
{
isCrypted = true;
break;
}
}
}
}
return isCrypted;
};
this.handleChanges = function(_array, _sender, _callback)
{
if (0 == _array.length || !this.isNeedCrypt())
{
if (this.isExistEncryptedChanges(_array))
{
this.onDecodeError();
return;
}
this.isChangesHandled = true;
_callback.call(_sender);
return;
}
this.handleChangesCallback = { changesBase : _array, changes : [], sender : _sender, callback : _callback };
this.checkEditorId();
if (this.editorId == AscCommon.c_oEditorId.Spreadsheet)
{
for (var i = _array.length - 1; i >= 0; i--)
{
this.handleChangesCallback.changes[i] = _array[i];
}
}
else
{
for (var i = _array.length - 1; i >= 0; i--)
{
this.handleChangesCallback.changes[i] = _array[i].m_pData;
}
}
window.g_asc_plugins.sendToEncryption({ "type" : "decryptData", "data" : this.handleChangesCallback.changes });
};
this.asc_setAdvancedOptions = function(api, idOption, option)
{
if (window.isNativeOpenPassword)
{
window["AscDesktopEditor"]["NativeViewerOpen"](option.asc_getPassword());
return;
}
if (window.isCloudCryptoDownloadAs)
return false;
if (!this.isNeedCrypt())
return false;
window.checkPasswordFromPlugin = true;
if (window["Asc"].c_oAscAdvancedOptionsID.TXT === idOption)
{
var _param = ("<m_nCsvTxtEncoding>" + option.asc_getCodePage() + "</m_nCsvTxtEncoding>");
window["AscDesktopEditor"]["SetAdvancedOptions"](_param);
}
else if (window["Asc"].c_oAscAdvancedOptionsID.CSV === idOption)
{
var delimiter = option.asc_getDelimiter();
var delimiterChar = option.asc_getDelimiterChar();
var _param = "";
_param += ("<m_nCsvTxtEncoding>" + option.asc_getCodePage() + "</m_nCsvTxtEncoding>");
if (null != delimiter) {
_param += ("<m_nCsvDelimiter>" + delimiter + "</m_nCsvDelimiter>");
}
if (null != delimiterChar) {
_param += ("<m_nCsvDelimiterChar>" + delimiterChar + "</m_nCsvDelimiterChar>");
}
window["AscDesktopEditor"]["SetAdvancedOptions"](_param);
}
else if (window["Asc"].c_oAscAdvancedOptionsID.DRM === idOption)
{
var _param = ("<m_sPassword>" + AscCommon.CopyPasteCorrectString(option.asc_getPassword()) + "</m_sPassword>");
api.currentPassword = option.asc_getPassword();
window["AscDesktopEditor"]["SetAdvancedOptions"](_param);
}
return true;
};
}
AscCommon.EncryptionWorker = new CEncryptionData();
/** @constructor */
function CTranslateManager()
{
this.mapTranslate = {};
}
CTranslateManager.prototype.init = function(map)
{
this.mapTranslate = map || {};
};
CTranslateManager.prototype.getValue = function(key)
{
return this.mapTranslate.hasOwnProperty(key) ? this.mapTranslate[key] : key;
};
//------------------------------------------------------------fill polyfill--------------------------------------------
if (!Array.prototype.fill) {
Object.defineProperty(Array.prototype, 'fill', {
value: function(value) {
// Steps 1-2.
if (this == null) {
throw new TypeError('this is null or not defined');
}
var O = Object(this);
// Steps 3-5.
var len = O.length >>> 0;
// Steps 6-7.
var start = arguments[1];
var relativeStart = start >> 0;
// Step 8.
var k = relativeStart < 0 ?
Math.max(len + relativeStart, 0) :
Math.min(relativeStart, len);
// Steps 9-10.
var end = arguments[2];
var relativeEnd = end === undefined ?
len : end >> 0;
// Step 11.
var final = relativeEnd < 0 ?
Math.max(len + relativeEnd, 0) :
Math.min(relativeEnd, len);
// Step 12.
while (k < final) {
O[k] = value;
k++;
}
// Step 13.
return O;
}
});
}
if (typeof Int8Array !== 'undefined' && !Int8Array.prototype.fill) {
Int8Array.prototype.fill = Array.prototype.fill;
}
if (typeof Uint8Array !== 'undefined' && !Uint8Array.prototype.fill) {
Uint8Array.prototype.fill = Array.prototype.fill;
}
if (typeof Uint8ClampedArray !== 'undefined' && !Uint8ClampedArray.prototype.fill) {
Uint8ClampedArray.prototype.fill = Array.prototype.fill;
}
if (typeof Int16Array !== 'undefined' && !Int16Array.prototype.fill) {
Int16Array.prototype.fill = Array.prototype.fill;
}
if (typeof Uint16Array !== 'undefined' && !Uint16Array.prototype.fill) {
Uint16Array.prototype.fill = Array.prototype.fill;
}
if (typeof Int32Array !== 'undefined' && !Int32Array.prototype.fill) {
Int32Array.prototype.fill = Array.prototype.fill;
}
if (typeof Uint32Array !== 'undefined' && !Uint32Array.prototype.fill) {
Uint32Array.prototype.fill = Array.prototype.fill;
}
if (typeof Float32Array !== 'undefined' && !Float32Array.prototype.fill) {
Float32Array.prototype.fill = Array.prototype.fill;
}
if (typeof Float64Array !== 'undefined' && !Float64Array.prototype.fill) {
Float64Array.prototype.fill = Array.prototype.fill;
}
//------------------------------------------------------------export---------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].getSockJs = getSockJs;
window["AscCommon"].getJSZipUtils = getJSZipUtils;
window["AscCommon"].getJSZip = getJSZip;
window["AscCommon"].getBaseUrl = getBaseUrl;
window["AscCommon"].getEncodingParams = getEncodingParams;
window["AscCommon"].getEncodingByBOM = getEncodingByBOM;
window["AscCommon"].saveWithParts = saveWithParts;
window["AscCommon"].loadFileContent = loadFileContent;
window["AscCommon"].getImageFromChanges = getImageFromChanges;
window["AscCommon"].openFileCommand = openFileCommand;
window["AscCommon"].sendCommand = sendCommand;
window["AscCommon"].sendSaveFile = sendSaveFile;
window["AscCommon"].mapAscServerErrorToAscError = mapAscServerErrorToAscError;
window["AscCommon"].joinUrls = joinUrls;
window["AscCommon"].getFullImageSrc2 = getFullImageSrc2;
window["AscCommon"].fSortAscending = fSortAscending;
window["AscCommon"].fSortDescending = fSortDescending;
window["AscCommon"].isLeadingSurrogateChar = isLeadingSurrogateChar;
window["AscCommon"].decodeSurrogateChar = decodeSurrogateChar;
window["AscCommon"].encodeSurrogateChar = encodeSurrogateChar;
window["AscCommon"].convertUnicodeToUTF16 = convertUnicodeToUTF16;
window["AscCommon"].convertUTF16toUnicode = convertUTF16toUnicode;
window["AscCommon"].build_local_rx = build_local_rx;
window["AscCommon"].GetFileName = GetFileName;
window["AscCommon"].GetFileExtension = GetFileExtension;
window["AscCommon"].changeFileExtention = changeFileExtention;
window["AscCommon"].getExtentionByFormat = getExtentionByFormat;
window["AscCommon"].InitOnMessage = InitOnMessage;
window["AscCommon"].ShowImageFileDialog = ShowImageFileDialog;
window["AscCommon"].InitDragAndDrop = InitDragAndDrop;
window["AscCommon"].UploadImageFiles = UploadImageFiles;
window["AscCommon"].UploadImageUrls = UploadImageUrls;
window["AscCommon"].CanDropFiles = CanDropFiles;
window["AscCommon"].getUrlType = getUrlType;
window["AscCommon"].prepareUrl = prepareUrl;
window["AscCommon"].getUserColorById = getUserColorById;
window["AscCommon"].isNullOrEmptyString = isNullOrEmptyString;
window["AscCommon"].unleakString = unleakString;
window["AscCommon"].initStreamFromResponse = initStreamFromResponse;
window["AscCommon"].DocumentUrls = DocumentUrls;
window["AscCommon"].CLock = CLock;
window["AscCommon"].CContentChanges = CContentChanges;
window["AscCommon"].CContentChangesElement = CContentChangesElement;
window["AscCommon"].CorrectMMToTwips = CorrectMMToTwips;
window["AscCommon"].TwipsToMM = TwipsToMM;
window["AscCommon"].MMToTwips = MMToTwips;
window["AscCommon"].RomanToInt = RomanToInt;
window["AscCommon"].LatinNumberingToInt = LatinNumberingToInt;
window["AscCommon"].loadSdk = loadSdk;
window["AscCommon"].getAltGr = getAltGr;
window["AscCommon"].getColorThemeByIndex = getColorThemeByIndex;
window["AscCommon"].isEastAsianScript = isEastAsianScript;
window["AscCommon"].JSZipWrapper = JSZipWrapper;
window["AscCommon"].g_oDocumentUrls = g_oDocumentUrls;
window["AscCommon"].FormulaTablePartInfo = FormulaTablePartInfo;
window["AscCommon"].cBoolLocal = cBoolLocal;
window["AscCommon"].cErrorOrigin = cErrorOrigin;
window["AscCommon"].cErrorLocal = cErrorLocal;
window["AscCommon"].FormulaSeparators = FormulaSeparators;
window["AscCommon"].rx_space_g = rx_space_g;
window["AscCommon"].rx_space = rx_space;
window["AscCommon"].rx_defName = rx_defName;
window["AscCommon"].kCurFormatPainterWord = kCurFormatPainterWord;
window["AscCommon"].parserHelp = parserHelp;
window["AscCommon"].g_oIdCounter = g_oIdCounter;
window["AscCommon"].g_oHtmlCursor = g_oHtmlCursor;
window["AscCommon"].CSignatureDrawer = window["AscCommon"]["CSignatureDrawer"] = CSignatureDrawer;
var prot = CSignatureDrawer.prototype;
prot["getImages"] = prot.getImages;
prot["setText"] = prot.setText;
prot["selectImage"] = prot.selectImage;
prot["isValid"] = prot.isValid;
prot["destroy"] = prot.destroy;
window["AscCommon"].translateManager = new CTranslateManager();
})(window);
window["asc_initAdvancedOptions"] = function(_code, _file_hash, _docInfo)
{
if (window.isNativeOpenPassword)
{
return window["NativeFileOpen_error"](window.isNativeOpenPassword, _file_hash, _docInfo);
}
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
if (_code == 90 || _code == 91)
{
if (window["AscDesktopEditor"] && (0 !== window["AscDesktopEditor"]["CryptoMode"]) && !_editor.isLoadFullApi)
{
// ждем инициализации
_editor.asc_initAdvancedOptions_params = [];
_editor.asc_initAdvancedOptions_params.push(_code);
_editor.asc_initAdvancedOptions_params.push(_file_hash);
_editor.asc_initAdvancedOptions_params.push(_docInfo);
return;
}
if (AscCommon.EncryptionWorker.isNeedCrypt() && !window.checkPasswordFromPlugin)
{
window.checkPasswordFromPlugin = true;
window.g_asc_plugins.sendToEncryption({ "type": "getPasswordByFile", "hash": _file_hash, "docinfo": _docInfo });
return;
}
}
window.checkPasswordFromPlugin = false;
_editor._onNeedParams(undefined, (_code == 90 || _code == 91) ? true : undefined);
};
window.openFileCryptCallback = function(_binary)
{
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
if (!_editor.isLoadFullApi)
{
_editor.openFileCryptBinary = _binary;
return;
}
if (_binary == null)
{
_editor.sendEvent("asc_onError", c_oAscError.ID.ConvertationOpenError, c_oAscError.Level.Critical);
return;
}
if ("DOCY" == AscCommon.c_oSerFormat.Signature)
{
var isEditor = true;
if (_binary.length > 4)
{
var _signature = (String.fromCharCode(_binary[0]) + String.fromCharCode(_binary[1]) + String.fromCharCode(_binary[2]) + String.fromCharCode(_binary[3]));
if (_signature != AscCommon.c_oSerFormat.Signature)
isEditor = false;
}
if (!isEditor)
_editor.OpenDocument("", _binary);
else
_editor.OpenDocument2("", _binary);
}
else if ("PPTY" == AscCommon.c_oSerFormat.Signature)
{
_editor.OpenDocument2("", _binary);
}
else
{
_editor.openDocument(_binary);
}
_editor.sendEvent("asc_onDocumentPassword", ("" != _editor.currentPassword) ? true : false);
};
window["asc_IsNeedBuildCryptedFile"] = function()
{
if (!window["AscDesktopEditor"])
return false;
var _api = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
var _returnValue = false;
var _users = null;
if (_api.CoAuthoringApi && _api.CoAuthoringApi._CoAuthoringApi && _api.CoAuthoringApi._CoAuthoringApi._participants)
_users = _api.CoAuthoringApi._CoAuthoringApi._participants;
var _usersCount = 0;
for (var _user in _users)
_usersCount++;
var isOne = (1 >= _usersCount) ? true : false;
if (!isOne)
{
//console.log("asc_IsNeedBuildCryptedFile: no one");
_returnValue = false;
}
else if (null != AscCommon.History.SavedIndex && -1 != AscCommon.History.SavedIndex)
{
//console.log("asc_IsNeedBuildCryptedFile: one1");
_returnValue = true;
}
else
{
//console.log("asc_IsNeedBuildCryptedFile: one2");
if (_api.editorId == AscCommon.c_oEditorId.Spreadsheet)
{
if (AscCommon.EncryptionWorker.isExistDecryptedChanges)
_returnValue = true;
}
else
{
if (0 != AscCommon.CollaborativeEditing.m_aAllChanges.length)
_returnValue = true;
}
}
window["AscDesktopEditor"]["execCommand"]("encrypt:isneedbuild", "" + _returnValue);
return _returnValue;
};
window["UpdateSystemPlugins"] = function()
{
var _plugins = JSON.parse(window["AscDesktopEditor"]["GetInstallPlugins"]());
_plugins[0]["url"] = _plugins[0]["url"].replace(" ", "%20");
_plugins[1]["url"] = _plugins[1]["url"].replace(" ", "%20");
for (var k = 0; k < 2; k++)
{
var _pluginsCur = _plugins[k];
var _len = _pluginsCur["pluginsData"].length;
for (var i = 0; i < _len; i++)
{
_pluginsCur["pluginsData"][i]["baseUrl"] = _pluginsCur["url"] + _pluginsCur["pluginsData"][i]["guid"].substring(4) + "/";
if (!window["AscDesktopEditor"]["IsLocalFile"]())
{
_pluginsCur["pluginsData"][i]["baseUrl"] = "ascdesktop://plugin_content/" + _pluginsCur["pluginsData"][i]["baseUrl"];
}
}
}
var _array = [];
for (var k = 0; k < 2; k++)
{
var _pluginsCur = _plugins[k];
var _len = _pluginsCur["pluginsData"].length;
for (var i = 0; i < _len; i++)
{
var _plugin = _pluginsCur["pluginsData"][i];
for (var j = 0; j < _plugin["variations"].length; j++)
{
var _variation = _plugin["variations"][j];
if (_variation["initDataType"] == "desktop")
{
if (_variation["initData"] == "encryption")
{
var _mode = _variation["cryptoMode"];
if (!_mode)
_mode = "1";
AscCommon.EncryptionWorker.cryptoMode = parseInt(_mode);
_array.push(_plugin);
break;
}
_array.push(_plugin);
break;
}
}
}
}
var _arraySystem = [];
for (var i = 0; i < _array.length; i++)
{
var plugin = new Asc.CPlugin();
plugin["deserialize"](_array[i]);
_arraySystem.push(plugin);
}
window.g_asc_plugins.registerSystem("", _arraySystem);
window.g_asc_plugins.runAllSystem();
};
window["buildCryptoFile_Start"] = function()
{
var _editor = window.Asc.editor ? window.Asc.editor : window.editor;
_editor.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.Save);
window.g_asc_plugins.sendToEncryption({ "type" : "generatePassword" });
};
window["buildCryptoFile_End"] = function(url, error, hash, password)
{
var _editor = window.Asc.editor ? window.Asc.editor : window.editor;
_editor.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.Save);
if (0 != error)
{
_editor.sendEvent("asc_onError", Asc.c_oAscError.ID.ConvertationSaveError, Asc.c_oAscError.Level.NoCritical);
return;
}
// send password
_editor._callbackPluginEndAction = function()
{
this._callbackPluginEndAction = null;
_editor.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.Save);
// file upload
var xhr = new XMLHttpRequest();
xhr.open('GET', "ascdesktop://fonts/" + url, true);
xhr.responseType = 'arraybuffer';
if (xhr.overrideMimeType)
xhr.overrideMimeType('text/plain; charset=x-user-defined');
else
xhr.setRequestHeader('Accept-Charset', 'x-user-defined');
xhr.onload = function()
{
if (this.status != 200)
{
// error
return;
}
var fileData = new Uint8Array(this.response);
var ext = ".docx";
switch (_editor.editorId)
{
case AscCommon.c_oEditorId.Presentation:
ext = ".pptx";
break;
case AscCommon.c_oEditorId.Spreadsheet:
ext = ".xlsx";
break;
default:
break;
}
AscCommon.sendSaveFile(_editor.documentId, _editor.documentUserId, "output" + ext, _editor.asc_getSessionToken(), fileData, function(err) {
_editor.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.Save);
_editor.sendEvent("asc_onError", Asc.c_oAscError.ID.ConvertationOpenError, Asc.c_oAscError.Level.Critical);
window["AscDesktopEditor"]["buildCryptedEnd"](false);
}, function(httpRequest) {
//console.log(httpRequest.responseText);
try
{
var data = {
"accounts": httpRequest.responseText ? JSON.parse(httpRequest.responseText) : undefined,
"hash": hash,
"password" : password,
"type": "share"
};
window["AscDesktopEditor"]["sendSystemMessage"](data);
window["AscDesktopEditor"]["CallInAllWindows"]("function(){ if (window.DesktopUpdateFile) { window.DesktopUpdateFile(undefined); } }");
_editor.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.Save);
setTimeout(function() {
window["AscDesktopEditor"]["buildCryptedEnd"](true);
}, 1000);
}
catch (err)
{
}
});
};
xhr.send(null);
};
window.g_asc_plugins.sendToEncryption({"type": "setPasswordByFile", "hash": hash, "password": password});
};
window["NativeFileOpen_error"] = function(error, _file_hash, _docInfo)
{
var _api = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
if ("password" == error)
{
window.isNativeOpenPassword = error;
if (window["AscDesktopEditor"] && (0 !== window["AscDesktopEditor"]["CryptoMode"]) && !_api.isLoadFullApi)
{
// ждем инициализации
_api.asc_initAdvancedOptions_params = [];
_api.asc_initAdvancedOptions_params.push(90);
_api.asc_initAdvancedOptions_params.push(_file_hash);
_api.asc_initAdvancedOptions_params.push(_docInfo);
return;
}
if (AscCommon.EncryptionWorker.isNeedCrypt() && !window.checkPasswordFromPlugin)
{
window.checkPasswordFromPlugin = true;
window.g_asc_plugins.sendToEncryption({ "type": "getPasswordByFile", "hash": _file_hash, "docinfo": _docInfo });
return;
}
window.checkPasswordFromPlugin = false;
_api._onNeedParams(undefined, true);
}
else if ("error" == error)
{
_api.sendEvent("asc_onError", c_oAscError.ID.ConvertationOpenError, c_oAscError.Level.Critical);
return;
}
};
window["CryptoDownloadAsEnd"] = function()
{
var _editor = window.Asc.editor ? window.Asc.editor : window.editor;
_editor.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.DownloadAs);
window.isCloudCryptoDownloadAs = undefined;
};
window["AscDesktopEditor_Save"] = function()
{
var _editor = window.Asc.editor ? window.Asc.editor : window.editor;
if (!_editor.asc_Save(false))
{
// сейва не будет. сами посылаем callback
window["AscDesktopEditor"]["OnSave"]();
}
};
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
/**
* User: Ilja.Kirillov
* Date: 27.10.2016
* Time: 12:11
*/
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined)
{
function GetHistoryPointStringDescription(nDescription)
{
var sString = "Unknown";
switch (nDescription)
{
case AscDFH.historydescription_Cut :
sString = "Cut";
break;
case AscDFH.historydescription_PasteButtonIE :
sString = "PasteButtonIE";
break;
case AscDFH.historydescription_PasteButtonNotIE :
sString = "PasteButtonNotIE";
break;
case AscDFH.historydescription_ChartDrawingObjects :
sString = "ChartDrawingObjects";
break;
case AscDFH.historydescription_CommonControllerCheckChartText :
sString = "CommonControllerCheckChartText";
break;
case AscDFH.historydescription_CommonControllerUnGroup :
sString = "CommonControllerUnGroup";
break;
case AscDFH.historydescription_CommonControllerCheckSelected :
sString = "CommonControllerCheckSelected";
break;
case AscDFH.historydescription_CommonControllerSetGraphicObject :
sString = "CommonControllerSetGraphicObject";
break;
case AscDFH.historydescription_CommonStatesAddNewShape :
sString = "CommonStatesAddNewShape";
break;
case AscDFH.historydescription_CommonStatesRotate :
sString = "CommonStatesRotate";
break;
case AscDFH.historydescription_PasteNative :
sString = "PasteNative";
break;
case AscDFH.historydescription_Document_GroupUnGroup :
sString = "Document_GroupUnGroup";
break;
case AscDFH.historydescription_Document_SetDefaultLanguage :
sString = "Document_SetDefaultLanguage";
break;
case AscDFH.historydescription_Document_ChangeColorScheme :
sString = "Document_ChangeColorScheme";
break;
case AscDFH.historydescription_Document_AddChart :
sString = "Document_AddChart";
break;
case AscDFH.historydescription_Document_EditChart :
sString = "Document_EditChart";
break;
case AscDFH.historydescription_Document_DragText :
sString = "Document_DragText";
break;
case AscDFH.historydescription_Document_DocumentContentExtendToPos :
sString = "Document_DocumentContentExtendToPos";
break;
case AscDFH.historydescription_Document_AddHeader :
sString = "Document_AddHeader";
break;
case AscDFH.historydescription_Document_AddFooter :
sString = "Document_AddFooter";
break;
case AscDFH.historydescription_Document_ParagraphExtendToPos :
sString = "Document_ParagraphExtendToPos";
break;
case AscDFH.historydescription_Document_ParagraphChangeFrame :
sString = "Document_ParagraphChangeFrame";
break;
case AscDFH.historydescription_Document_ReplaceAll :
sString = "Document_ReplaceAll";
break;
case AscDFH.historydescription_Document_ReplaceSingle :
sString = "Document_ReplaceSingle";
break;
case AscDFH.historydescription_Document_TableAddNewRowByTab :
sString = "Document_TableAddNewRowByTab";
break;
case AscDFH.historydescription_Document_AddNewShape :
sString = "Document_AddNewShape";
break;
case AscDFH.historydescription_Document_EditWrapPolygon :
sString = "Document_EditWrapPolygon";
break;
case AscDFH.historydescription_Document_MoveInlineObject :
sString = "Document_MoveInlineObject";
break;
case AscDFH.historydescription_Document_CopyAndMoveInlineObject :
sString = "Document_CopyAndMoveInlineObject";
break;
case AscDFH.historydescription_Document_RotateInlineDrawing :
sString = "Document_RotateInlineDrawing";
break;
case AscDFH.historydescription_Document_RotateFlowDrawingCtrl :
sString = "Document_RotateFlowDrawingCtrl";
break;
case AscDFH.historydescription_Document_RotateFlowDrawingNoCtrl :
sString = "Document_RotateFlowDrawingNoCtrl";
break;
case AscDFH.historydescription_Document_MoveInGroup :
sString = "Document_MoveInGroup";
break;
case AscDFH.historydescription_Document_ChangeWrapContour :
sString = "Document_ChangeWrapContour";
break;
case AscDFH.historydescription_Document_ChangeWrapContourAddPoint :
sString = "Document_ChangeWrapContourAddPoint";
break;
case AscDFH.historydescription_Document_GrObjectsBringToFront :
sString = "Document_GrObjectsBringToFront";
break;
case AscDFH.historydescription_Document_GrObjectsBringForwardGroup :
sString = "Document_GrObjectsBringForwardGroup";
break;
case AscDFH.historydescription_Document_GrObjectsBringForward :
sString = "Document_GrObjectsBringForward";
break;
case AscDFH.historydescription_Document_GrObjectsSendToBackGroup :
sString = "Document_GrObjectsSendToBackGroup";
break;
case AscDFH.historydescription_Document_GrObjectsSendToBack :
sString = "Document_GrObjectsSendToBack";
break;
case AscDFH.historydescription_Document_GrObjectsBringBackwardGroup :
sString = "Document_GrObjectsBringBackwardGroup";
break;
case AscDFH.historydescription_Document_GrObjectsBringBackward :
sString = "Document_GrObjectsBringBackward";
break;
case AscDFH.historydescription_Document_GrObjectsChangeWrapPolygon :
sString = "Document_GrObjectsChangeWrapPolygon";
break;
case AscDFH.historydescription_Document_MathAutoCorrect :
sString = "Document_MathAutoCorrect";
break;
case AscDFH.historydescription_Document_SetFramePrWithFontFamily :
sString = "Document_SetFramePrWithFontFamily";
break;
case AscDFH.historydescription_Document_SetFramePr :
sString = "Document_SetFramePr";
break;
case AscDFH.historydescription_Document_SetFramePrWithFontFamilyLong :
sString = "Document_SetFramePrWithFontFamilyLong";
break;
case AscDFH.historydescription_Document_SetTextFontName :
sString = "Document_SetTextFontName";
break;
case AscDFH.historydescription_Document_SetTextFontSize :
sString = "Document_SetTextFontSize";
break;
case AscDFH.historydescription_Document_SetTextBold :
sString = "Document_SetTextBold";
break;
case AscDFH.historydescription_Document_SetTextItalic :
sString = "Document_SetTextItalic";
break;
case AscDFH.historydescription_Document_SetTextUnderline :
sString = "Document_SetTextUnderline";
break;
case AscDFH.historydescription_Document_SetTextStrikeout :
sString = "Document_SetTextStrikeout";
break;
case AscDFH.historydescription_Document_SetTextDStrikeout :
sString = "Document_SetTextDStrikeout";
break;
case AscDFH.historydescription_Document_SetTextSpacing :
sString = "Document_SetTextSpacing";
break;
case AscDFH.historydescription_Document_SetTextCaps :
sString = "Document_SetTextCaps";
break;
case AscDFH.historydescription_Document_SetTextSmallCaps :
sString = "Document_SetTextSmallCaps";
break;
case AscDFH.historydescription_Document_SetTextPosition :
sString = "Document_SetTextPosition";
break;
case AscDFH.historydescription_Document_SetTextLang :
sString = "Document_SetTextLang";
break;
case AscDFH.historydescription_Document_SetParagraphLineSpacing :
sString = "Document_SetParagraphLineSpacing";
break;
case AscDFH.historydescription_Document_SetParagraphLineSpacingBeforeAfter :
sString = "Document_SetParagraphLineSpacingBeforeAfter";
break;
case AscDFH.historydescription_Document_IncFontSize :
sString = "Document_IncFontSize";
break;
case AscDFH.historydescription_Document_DecFontSize :
sString = "Document_DecFontSize";
break;
case AscDFH.historydescription_Document_SetParagraphBorders :
sString = "Document_SetParagraphBorders";
break;
case AscDFH.historydescription_Document_SetParagraphPr :
sString = "Document_SetParagraphPr";
break;
case AscDFH.historydescription_Document_SetParagraphAlign :
sString = "Document_SetParagraphAlign";
break;
case AscDFH.historydescription_Document_SetTextVertAlign :
sString = "Document_SetTextVertAlign";
break;
case AscDFH.historydescription_Document_SetParagraphNumbering :
sString = "Document_SetParagraphNumbering";
break;
case AscDFH.historydescription_Document_SetParagraphStyle :
sString = "Document_SetParagraphStyle";
break;
case AscDFH.historydescription_Document_SetParagraphPageBreakBefore :
sString = "Document_SetParagraphPageBreakBefore";
break;
case AscDFH.historydescription_Document_SetParagraphWidowControl :
sString = "Document_SetParagraphWidowControl";
break;
case AscDFH.historydescription_Document_SetParagraphKeepLines :
sString = "Document_SetParagraphKeepLines";
break;
case AscDFH.historydescription_Document_SetParagraphKeepNext :
sString = "Document_SetParagraphKeepNext";
break;
case AscDFH.historydescription_Document_SetParagraphContextualSpacing :
sString = "Document_SetParagraphContextualSpacing";
break;
case AscDFH.historydescription_Document_SetTextHighlightNone :
sString = "Document_SetTextHighlightNone";
break;
case AscDFH.historydescription_Document_SetTextHighlightColor :
sString = "Document_SetTextHighlightColor";
break;
case AscDFH.historydescription_Document_SetTextColor :
sString = "Document_SetTextColor";
break;
case AscDFH.historydescription_Document_SetParagraphShd :
sString = "Document_SetParagraphShd";
break;
case AscDFH.historydescription_Document_SetParagraphIndent :
sString = "Document_SetParagraphIndent";
break;
case AscDFH.historydescription_Document_IncParagraphIndent :
sString = "Document_IncParagraphIndent";
break;
case AscDFH.historydescription_Document_DecParagraphIndent :
sString = "Document_DecParagraphIndent";
break;
case AscDFH.historydescription_Document_SetParagraphIndentRight :
sString = "Document_SetParagraphIndentRight";
break;
case AscDFH.historydescription_Document_SetParagraphIndentFirstLine :
sString = "Document_SetParagraphIndentFirstLine";
break;
case AscDFH.historydescription_Document_SetPageOrientation :
sString = "Document_SetPageOrientation";
break;
case AscDFH.historydescription_Document_SetPageSize :
sString = "Document_SetPageSize";
break;
case AscDFH.historydescription_Document_AddPageBreak :
sString = "Document_AddPageBreak";
break;
case AscDFH.historydescription_Document_AddPageNumToHdrFtr :
sString = "Document_AddPageNumToHdrFtr";
break;
case AscDFH.historydescription_Document_AddPageNumToCurrentPos :
sString = "Document_AddPageNumToCurrentPos";
break;
case AscDFH.historydescription_Document_SetHdrFtrDistance :
sString = "Document_SetHdrFtrDistance";
break;
case AscDFH.historydescription_Document_SetHdrFtrFirstPage :
sString = "Document_SetHdrFtrFirstPage";
break;
case AscDFH.historydescription_Document_SetHdrFtrEvenAndOdd :
sString = "Document_SetHdrFtrEvenAndOdd";
break;
case AscDFH.historydescription_Document_SetHdrFtrLink :
sString = "Document_SetHdrFtrLink";
break;
case AscDFH.historydescription_Document_AddTable :
sString = "Document_AddTable";
break;
case AscDFH.historydescription_Document_TableAddRowAbove :
sString = "Document_TableAddRowAbove";
break;
case AscDFH.historydescription_Document_TableAddRowBelow :
sString = "Document_TableAddRowBelow";
break;
case AscDFH.historydescription_Document_TableAddColumnLeft :
sString = "Document_TableAddColumnLeft";
break;
case AscDFH.historydescription_Document_TableAddColumnRight :
sString = "Document_TableAddColumnRight";
break;
case AscDFH.historydescription_Document_TableRemoveRow :
sString = "Document_TableRemoveRow";
break;
case AscDFH.historydescription_Document_TableRemoveColumn :
sString = "Document_TableRemoveColumn";
break;
case AscDFH.historydescription_Document_RemoveTable :
sString = "Document_RemoveTable";
break;
case AscDFH.historydescription_Document_MergeTableCells :
sString = "Document_MergeTableCells";
break;
case AscDFH.historydescription_Document_SplitTableCells :
sString = "Document_SplitTableCells";
break;
case AscDFH.historydescription_Document_ApplyTablePr :
sString = "Document_ApplyTablePr";
break;
case AscDFH.historydescription_Document_AddImageUrl :
sString = "Document_AddImageUrl";
break;
case AscDFH.historydescription_Document_AddImageUrlLong :
sString = "Document_AddImageUrlLong";
break;
case AscDFH.historydescription_Document_AddImageToPage :
sString = "Document_AddImageToPage";
break;
case AscDFH.historydescription_Document_ApplyImagePrWithUrl :
sString = "Document_ApplyImagePrWithUrl";
break;
case AscDFH.historydescription_Document_ApplyImagePrWithUrlLong :
sString = "Document_ApplyImagePrWithUrlLong";
break;
case AscDFH.historydescription_Document_ApplyImagePrWithFillUrl :
sString = "Document_ApplyImagePrWithFillUrl";
break;
case AscDFH.historydescription_Document_ApplyImagePrWithFillUrlLong :
sString = "Document_ApplyImagePrWithFillUrlLong";
break;
case AscDFH.historydescription_Document_ApplyImagePr :
sString = "Document_ApplyImagePr";
break;
case AscDFH.historydescription_Document_AddHyperlink :
sString = "Document_AddHyperlink";
break;
case AscDFH.historydescription_Document_ChangeHyperlink :
sString = "Document_ChangeHyperlink";
break;
case AscDFH.historydescription_Document_RemoveHyperlink :
sString = "Document_RemoveHyperlink";
break;
case AscDFH.historydescription_Document_ReplaceMisspelledWord :
sString = "Document_ReplaceMisspelledWord";
break;
case AscDFH.historydescription_Document_AddComment :
sString = "Document_AddComment";
break;
case AscDFH.historydescription_Document_RemoveComment :
sString = "Document_RemoveComment";
break;
case AscDFH.historydescription_Document_ChangeComment :
sString = "Document_ChangeComment";
break;
case AscDFH.historydescription_Document_SetTextFontNameLong :
sString = "Document_SetTextFontNameLong";
break;
case AscDFH.historydescription_Document_AddImage :
sString = "Document_AddImage";
break;
case AscDFH.historydescription_Document_ClearFormatting :
sString = "Document_ClearFormatting";
break;
case AscDFH.historydescription_Document_AddSectionBreak :
sString = "Document_AddSectionBreak";
break;
case AscDFH.historydescription_Document_AddMath :
sString = "Document_AddMath";
break;
case AscDFH.historydescription_Document_SetParagraphTabs :
sString = "Document_SetParagraphTabs";
break;
case AscDFH.historydescription_Document_SetParagraphIndentFromRulers :
sString = "Document_SetParagraphIndentFromRulers";
break;
case AscDFH.historydescription_Document_SetDocumentMargin_Hor :
sString = "Document_SetDocumentMargin_Hor";
break;
case AscDFH.historydescription_Document_SetTableMarkup_Hor :
sString = "Document_SetTableMarkup_Hor";
break;
case AscDFH.historydescription_Document_SetDocumentMargin_Ver :
sString = "Document_SetDocumentMargin_Ver";
break;
case AscDFH.historydescription_Document_SetHdrFtrBounds :
sString = "Document_SetHdrFtrBounds";
break;
case AscDFH.historydescription_Document_SetTableMarkup_Ver :
sString = "Document_SetTableMarkup_Ver";
break;
case AscDFH.historydescription_Document_DocumentExtendToPos :
sString = "Document_DocumentExtendToPos";
break;
case AscDFH.historydescription_Document_AddDropCap :
sString = "Document_AddDropCap";
break;
case AscDFH.historydescription_Document_RemoveDropCap :
sString = "Document_RemoveDropCap";
break;
case AscDFH.historydescription_Document_SetTextHighlight :
sString = "Document_SetTextHighlight";
break;
case AscDFH.historydescription_Document_BackSpaceButton :
sString = "Document_BackSpaceButton";
break;
case AscDFH.historydescription_Document_MoveParagraphByTab :
sString = "Document_MoveParagraphByTab";
break;
case AscDFH.historydescription_Document_AddTab :
sString = "Document_AddTab";
break;
case AscDFH.historydescription_Document_EnterButton :
sString = "Document_EnterButton";
break;
case AscDFH.historydescription_Document_SpaceButton :
sString = "Document_SpaceButton";
break;
case AscDFH.historydescription_Document_ShiftInsert :
sString = "Document_ShiftInsert";
break;
case AscDFH.historydescription_Document_ShiftInsertSafari :
sString = "Document_ShiftInsertSafari";
break;
case AscDFH.historydescription_Document_DeleteButton :
sString = "Document_DeleteButton";
break;
case AscDFH.historydescription_Document_ShiftDeleteButton :
sString = "Document_ShiftDeleteButton";
break;
case AscDFH.historydescription_Document_SetStyleHeading1 :
sString = "Document_SetStyleHeading1";
break;
case AscDFH.historydescription_Document_SetStyleHeading2 :
sString = "Document_SetStyleHeading2";
break;
case AscDFH.historydescription_Document_SetStyleHeading3 :
sString = "Document_SetStyleHeading3";
break;
case AscDFH.historydescription_Document_SetTextStrikeoutHotKey :
sString = "Document_SetTextStrikeoutHotKey";
break;
case AscDFH.historydescription_Document_SetTextBoldHotKey :
sString = "Document_SetTextBoldHotKey";
break;
case AscDFH.historydescription_Document_SetParagraphAlignHotKey :
sString = "Document_SetParagraphAlignHotKey";
break;
case AscDFH.historydescription_Document_AddEuroLetter :
sString = "Document_AddEuroLetter";
break;
case AscDFH.historydescription_Document_SetTextItalicHotKey :
sString = "Document_SetTextItalicHotKey";
break;
case AscDFH.historydescription_Document_SetParagraphAlignHotKey2 :
sString = "Document_SetParagraphAlignHotKey2";
break;
case AscDFH.historydescription_Document_SetParagraphNumberingHotKey :
sString = "Document_SetParagraphNumberingHotKey";
break;
case AscDFH.historydescription_Document_SetParagraphAlignHotKey3 :
sString = "Document_SetParagraphAlignHotKey3";
break;
case AscDFH.historydescription_Document_AddPageNumHotKey :
sString = "Document_AddPageNumHotKey";
break;
case AscDFH.historydescription_Document_SetParagraphAlignHotKey4 :
sString = "Document_SetParagraphAlignHotKey4";
break;
case AscDFH.historydescription_Document_SetTextUnderlineHotKey :
sString = "Document_SetTextUnderlineHotKey";
break;
case AscDFH.historydescription_Document_FormatPasteHotKey :
sString = "Document_FormatPasteHotKey";
break;
case AscDFH.historydescription_Document_PasteHotKey :
sString = "Document_PasteHotKey";
break;
case AscDFH.historydescription_Document_PasteSafariHotKey :
sString = "Document_PasteSafariHotKey";
break;
case AscDFH.historydescription_Document_CutHotKey :
sString = "Document_CutHotKey";
break;
case AscDFH.historydescription_Document_SetTextVertAlignHotKey :
sString = "Document_SetTextVertAlignHotKey";
break;
case AscDFH.historydescription_Document_AddMathHotKey :
sString = "Document_AddMathHotKey";
break;
case AscDFH.historydescription_Document_SetTextVertAlignHotKey2 :
sString = "Document_SetTextVertAlignHotKey2";
break;
case AscDFH.historydescription_Document_MinusButton :
sString = "Document_MinusButton";
break;
case AscDFH.historydescription_Document_SetTextVertAlignHotKey3 :
sString = "Document_SetTextVertAlignHotKey3";
break;
case AscDFH.historydescription_Document_AddLetter :
sString = "Document_AddLetter";
break;
case AscDFH.historydescription_Document_MoveTableBorder :
sString = "Document_MoveTableBorder";
break;
case AscDFH.historydescription_Document_FormatPasteHotKey2 :
sString = "Document_FormatPasteHotKey2";
break;
case AscDFH.historydescription_Document_SetTextHighlight2 :
sString = "Document_SetTextHighlight2";
break;
case AscDFH.historydescription_Document_AddTextFromTextBox :
sString = "Document_AddTextFromTextBox";
break;
case AscDFH.historydescription_Document_AddMailMergeField :
sString = "Document_AddMailMergeField";
break;
case AscDFH.historydescription_Document_MoveInlineTable :
sString = "Document_MoveInlineTable";
break;
case AscDFH.historydescription_Document_MoveFlowTable :
sString = "Document_MoveFlowTable";
break;
case AscDFH.historydescription_Document_RestoreFieldTemplateText :
sString = "Document_RestoreFieldTemplateText";
break;
case AscDFH.historydescription_Spreadsheet_SetCellFontName :
sString = "Spreadsheet_SetCellFontName";
break;
case AscDFH.historydescription_Spreadsheet_SetCellFontSize :
sString = "Spreadsheet_SetCellFontSize";
break;
case AscDFH.historydescription_Spreadsheet_SetCellBold :
sString = "Spreadsheet_SetCellBold";
break;
case AscDFH.historydescription_Spreadsheet_SetCellItalic :
sString = "Spreadsheet_SetCellItalic";
break;
case AscDFH.historydescription_Spreadsheet_SetCellUnderline :
sString = "Spreadsheet_SetCellUnderline";
break;
case AscDFH.historydescription_Spreadsheet_SetCellStrikeout :
sString = "Spreadsheet_SetCellStrikeout";
break;
case AscDFH.historydescription_Spreadsheet_SetCellSubscript :
sString = "Spreadsheet_SetCellSubscript";
break;
case AscDFH.historydescription_Spreadsheet_SetCellSuperscript :
sString = "Spreadsheet_SetCellSuperscript";
break;
case AscDFH.historydescription_Spreadsheet_SetCellAlign :
sString = "Spreadsheet_SetCellAlign";
break;
case AscDFH.historydescription_Spreadsheet_SetCellVertAlign :
sString = "Spreadsheet_SetCellVertAlign";
break;
case AscDFH.historydescription_Spreadsheet_SetCellTextColor :
sString = "Spreadsheet_SetCellTextColor";
break;
case AscDFH.historydescription_Spreadsheet_SetCellBackgroundColor :
sString = "Spreadsheet_SetCellBackgroundColor";
break;
case AscDFH.historydescription_Spreadsheet_SetCellIncreaseFontSize :
sString = "Spreadsheet_SetCellIncreaseFontSize";
break;
case AscDFH.historydescription_Spreadsheet_SetCellDecreaseFontSize :
sString = "Spreadsheet_SetCellDecreaseFontSize";
break;
case AscDFH.historydescription_Spreadsheet_SetCellHyperlinkAdd :
sString = "Spreadsheet_SetCellHyperlinkAdd";
break;
case AscDFH.historydescription_Spreadsheet_SetCellHyperlinkModify :
sString = "Spreadsheet_SetCellHyperlinkModify";
break;
case AscDFH.historydescription_Spreadsheet_SetCellHyperlinkRemove :
sString = "Spreadsheet_SetCellHyperlinkRemove";
break;
case AscDFH.historydescription_Spreadsheet_EditChart :
sString = "Spreadsheet_EditChart";
break;
case AscDFH.historydescription_Spreadsheet_Remove :
sString = "Spreadsheet_Remove";
break;
case AscDFH.historydescription_Spreadsheet_AddTab :
sString = "Spreadsheet_AddTab";
break;
case AscDFH.historydescription_Spreadsheet_AddNewParagraph :
sString = "Spreadsheet_AddNewParagraph";
break;
case AscDFH.historydescription_Spreadsheet_AddSpace :
sString = "Spreadsheet_AddSpace";
break;
case AscDFH.historydescription_Spreadsheet_AddItem :
sString = "Spreadsheet_AddItem";
break;
case AscDFH.historydescription_Spreadsheet_PutPrLineSpacing :
sString = "Spreadsheet_PutPrLineSpacing";
break;
case AscDFH.historydescription_Spreadsheet_SetParagraphSpacing :
sString = "Spreadsheet_SetParagraphSpacing";
break;
case AscDFH.historydescription_Spreadsheet_SetGraphicObjectsProps :
sString = "Spreadsheet_SetGraphicObjectsProps";
break;
case AscDFH.historydescription_Spreadsheet_ParaApply :
sString = "Spreadsheet_ParaApply";
break;
case AscDFH.historydescription_Spreadsheet_GraphicObjectLayer :
sString = "Spreadsheet_GraphicObjectLayer";
break;
case AscDFH.historydescription_Spreadsheet_ParagraphAdd :
sString = "Spreadsheet_ParagraphAdd";
break;
case AscDFH.historydescription_Spreadsheet_CreateGroup :
sString = "Spreadsheet_CreateGroup";
break;
case AscDFH.historydescription_CommonDrawings_ChangeAdj :
sString = "CommonDrawings_ChangeAdj";
break;
case AscDFH.historydescription_CommonDrawings_EndTrack :
sString = "CommonDrawings_EndTrack";
break;
case AscDFH.historydescription_CommonDrawings_CopyCtrl :
sString = "CommonDrawings_CopyCtrl";
break;
case AscDFH.historydescription_Presentation_ParaApply :
sString = "Presentation_ParaApply";
break;
case AscDFH.historydescription_Presentation_ParaFormatPaste :
sString = "Presentation_ParaFormatPaste";
break;
case AscDFH.historydescription_Presentation_AddNewParagraph :
sString = "Presentation_AddNewParagraph";
break;
case AscDFH.historydescription_Presentation_CreateGroup :
sString = "Presentation_CreateGroup";
break;
case AscDFH.historydescription_Presentation_UnGroup :
sString = "Presentation_UnGroup";
break;
case AscDFH.historydescription_Presentation_AddChart :
sString = "Presentation_AddChart";
break;
case AscDFH.historydescription_Presentation_EditChart :
sString = "Presentation_EditChart";
break;
case AscDFH.historydescription_Presentation_ParagraphAdd :
sString = "Presentation_ParagraphAdd";
break;
case AscDFH.historydescription_Presentation_ParagraphClearFormatting :
sString = "Presentation_ParagraphClearFormatting";
break;
case AscDFH.historydescription_Presentation_SetParagraphAlign :
sString = "Presentation_SetParagraphAlign";
break;
case AscDFH.historydescription_Presentation_SetParagraphSpacing :
sString = "Presentation_SetParagraphSpacing";
break;
case AscDFH.historydescription_Presentation_SetParagraphTabs :
sString = "Presentation_SetParagraphTabs";
break;
case AscDFH.historydescription_Presentation_SetParagraphIndent :
sString = "Presentation_SetParagraphIndent";
break;
case AscDFH.historydescription_Presentation_SetParagraphNumbering :
sString = "Presentation_SetParagraphNumbering";
break;
case AscDFH.historydescription_Presentation_ParagraphIncDecFontSize :
sString = "Presentation_ParagraphIncDecFontSize";
break;
case AscDFH.historydescription_Presentation_ParagraphIncDecIndent :
sString = "Presentation_ParagraphIncDecIndent";
break;
case AscDFH.historydescription_Presentation_SetImageProps :
sString = "Presentation_SetImageProps";
break;
case AscDFH.historydescription_Presentation_SetShapeProps :
sString = "Presentation_SetShapeProps";
break;
case AscDFH.historydescription_Presentation_ChartApply :
sString = "Presentation_ChartApply";
break;
case AscDFH.historydescription_Presentation_ChangeShapeType :
sString = "Presentation_ChangeShapeType";
break;
case AscDFH.historydescription_Presentation_SetVerticalAlign :
sString = "Presentation_SetVerticalAlign";
break;
case AscDFH.historydescription_Presentation_HyperlinkAdd :
sString = "Presentation_HyperlinkAdd";
break;
case AscDFH.historydescription_Presentation_HyperlinkModify :
sString = "Presentation_HyperlinkModify";
break;
case AscDFH.historydescription_Presentation_HyperlinkRemove :
sString = "Presentation_HyperlinkRemove";
break;
case AscDFH.historydescription_Presentation_DistHor :
sString = "Presentation_DistHor";
break;
case AscDFH.historydescription_Presentation_DistVer :
sString = "Presentation_DistVer";
break;
case AscDFH.historydescription_Presentation_BringToFront :
sString = "Presentation_BringToFront";
break;
case AscDFH.historydescription_Presentation_BringForward :
sString = "Presentation_BringForward";
break;
case AscDFH.historydescription_Presentation_SendToBack :
sString = "Presentation_SendToBack";
break;
case AscDFH.historydescription_Presentation_BringBackward :
sString = "Presentation_BringBackward";
break;
case AscDFH.historydescription_Presentation_ApplyTiming :
sString = "Presentation_ApplyTiming";
break;
case AscDFH.historydescription_Presentation_MoveSlidesToEnd :
sString = "Presentation_MoveSlidesToEnd";
break;
case AscDFH.historydescription_Presentation_MoveSlidesNextPos :
sString = "Presentation_MoveSlidesNextPos";
break;
case AscDFH.historydescription_Presentation_MoveSlidesPrevPos :
sString = "Presentation_MoveSlidesPrevPos";
break;
case AscDFH.historydescription_Presentation_MoveSlidesToStart :
sString = "Presentation_MoveSlidesToStart";
break;
case AscDFH.historydescription_Presentation_MoveComments :
sString = "Presentation_MoveComments";
break;
case AscDFH.historydescription_Presentation_TableBorder :
sString = "Presentation_TableBorder";
break;
case AscDFH.historydescription_Presentation_AddFlowImage :
sString = "Presentation_AddFlowImage";
break;
case AscDFH.historydescription_Presentation_AddFlowTable :
sString = "Presentation_AddFlowTable";
break;
case AscDFH.historydescription_Presentation_ChangeBackground :
sString = "Presentation_ChangeBackground";
break;
case AscDFH.historydescription_Presentation_AddNextSlide :
sString = "Presentation_AddNextSlide";
break;
case AscDFH.historydescription_Presentation_ShiftSlides :
sString = "Presentation_ShiftSlides";
break;
case AscDFH.historydescription_Presentation_DeleteSlides :
sString = "Presentation_DeleteSlides";
break;
case AscDFH.historydescription_Presentation_ChangeLayout :
sString = "Presentation_ChangeLayout";
break;
case AscDFH.historydescription_Presentation_ChangeSlideSize :
sString = "Presentation_ChangeSlideSize";
break;
case AscDFH.historydescription_Presentation_ChangeColorScheme :
sString = "Presentation_ChangeColorScheme";
break;
case AscDFH.historydescription_Presentation_AddComment :
sString = "Presentation_AddComment";
break;
case AscDFH.historydescription_Presentation_ChangeComment :
sString = "Presentation_ChangeComment";
break;
case AscDFH.historydescription_Presentation_PutTextPrFontName :
sString = "Presentation_PutTextPrFontName";
break;
case AscDFH.historydescription_Presentation_PutTextPrFontSize :
sString = "Presentation_PutTextPrFontSize";
break;
case AscDFH.historydescription_Presentation_PutTextPrBold :
sString = "Presentation_PutTextPrBold";
break;
case AscDFH.historydescription_Presentation_PutTextPrItalic :
sString = "Presentation_PutTextPrItalic";
break;
case AscDFH.historydescription_Presentation_PutTextPrUnderline :
sString = "Presentation_PutTextPrUnderline";
break;
case AscDFH.historydescription_Presentation_PutTextPrStrikeout :
sString = "Presentation_PutTextPrStrikeout";
break;
case AscDFH.historydescription_Presentation_PutTextPrLineSpacing :
sString = "Presentation_PutTextPrLineSpacing";
break;
case AscDFH.historydescription_Presentation_PutTextPrSpacingBeforeAfter :
sString = "Presentation_PutTextPrSpacingBeforeAfter";
break;
case AscDFH.historydescription_Presentation_PutTextPrIncreaseFontSize :
sString = "Presentation_PutTextPrIncreaseFontSize";
break;
case AscDFH.historydescription_Presentation_PutTextPrDecreaseFontSize :
sString = "Presentation_PutTextPrDecreaseFontSize";
break;
case AscDFH.historydescription_Presentation_PutTextPrAlign :
sString = "Presentation_PutTextPrAlign";
break;
case AscDFH.historydescription_Presentation_PutTextPrBaseline :
sString = "Presentation_PutTextPrBaseline";
break;
case AscDFH.historydescription_Presentation_PutTextPrListType :
sString = "Presentation_PutTextPrListType";
break;
case AscDFH.historydescription_Presentation_PutTextColor :
sString = "Presentation_PutTextColor";
break;
case AscDFH.historydescription_Presentation_PutTextColor2 :
sString = "Presentation_PutTextColor2";
break;
case AscDFH.historydescription_Presentation_PutPrIndent :
sString = "Presentation_PutPrIndent";
break;
case AscDFH.historydescription_Presentation_PutPrIndentRight :
sString = "Presentation_PutPrIndentRight";
break;
case AscDFH.historydescription_Presentation_PutPrFirstLineIndent :
sString = "Presentation_PutPrFirstLineIndent";
break;
case AscDFH.historydescription_Presentation_AddPageBreak :
sString = "Presentation_AddPageBreak";
break;
case AscDFH.historydescription_Presentation_AddRowAbove :
sString = "Presentation_AddRowAbove";
break;
case AscDFH.historydescription_Presentation_AddRowBelow :
sString = "Presentation_AddRowBelow";
break;
case AscDFH.historydescription_Presentation_AddColLeft :
sString = "Presentation_AddColLeft";
break;
case AscDFH.historydescription_Presentation_AddColRight :
sString = "Presentation_AddColRight";
break;
case AscDFH.historydescription_Presentation_RemoveRow :
sString = "Presentation_RemoveRow";
break;
case AscDFH.historydescription_Presentation_RemoveCol :
sString = "Presentation_RemoveCol";
break;
case AscDFH.historydescription_Presentation_RemoveTable :
sString = "Presentation_RemoveTable";
break;
case AscDFH.historydescription_Presentation_MergeCells :
sString = "Presentation_MergeCells";
break;
case AscDFH.historydescription_Presentation_SplitCells :
sString = "Presentation_SplitCells";
break;
case AscDFH.historydescription_Presentation_TblApply :
sString = "Presentation_TblApply";
break;
case AscDFH.historydescription_Presentation_RemoveComment :
sString = "Presentation_RemoveComment";
break;
case AscDFH.historydescription_Presentation_EndFontLoad :
sString = "Presentation_EndFontLoad";
break;
case AscDFH.historydescription_Presentation_ChangeTheme :
sString = "Presentation_ChangeTheme";
break;
case AscDFH.historydescription_Presentation_TableMoveFromRulers :
sString = "Presentation_TableMoveFromRulers";
break;
case AscDFH.historydescription_Presentation_TableMoveFromRulersInline :
sString = "Presentation_TableMoveFromRulersInline";
break;
case AscDFH.historydescription_Presentation_PasteOnThumbnails :
sString = "Presentation_PasteOnThumbnails";
break;
case AscDFH.historydescription_Presentation_PasteOnThumbnailsSafari :
sString = "Presentation_PasteOnThumbnailsSafari";
break;
case AscDFH.historydescription_Document_ConvertOldEquation :
sString = "Document_ConvertOldEquation";
break;
case AscDFH.historydescription_Document_AddNewStyle :
sString = "Document_AddNewStyle";
break;
case AscDFH.historydescription_Document_RemoveStyle :
sString = "Document_RemoveStyle";
break;
case AscDFH.historydescription_Document_AddTextArt :
sString = "Document_AddTextArt";
break;
case AscDFH.historydescription_Document_RemoveAllCustomStyles :
sString = "Document_RemoveAllCustomStyles";
break;
case AscDFH.historydescription_Document_AcceptAllRevisionChanges :
sString = "Document_AcceptAllRevisionChanges";
break;
case AscDFH.historydescription_Document_RejectAllRevisionChanges :
sString = "Document_RejectAllRevisionChanges";
break;
case AscDFH.historydescription_Document_AcceptRevisionChange :
sString = "Document_AcceptRevisionChange";
break;
case AscDFH.historydescription_Document_RejectRevisionChange :
sString = "Document_RejectRevisionChange";
break;
case AscDFH.historydescription_Document_AcceptRevisionChangesBySelection :
sString = "Document_AcceptRevisionChangesBySelection";
break;
case AscDFH.historydescription_Document_RejectRevisionChangesBySelection :
sString = "Document_RejectRevisionChangesBySelection";
break;
case AscDFH.historydescription_Document_AddLetterUnion :
sString = "Document_AddLetterUnion";
break;
case AscDFH.historydescription_Document_SetColumnsFromRuler :
sString = "Document_SetColumnsFromRuler";
break;
case AscDFH.historydescription_Document_SetColumnsProps :
sString = "Document_SetColumnsProps";
break;
case AscDFH.historydescription_Document_AddColumnBreak :
sString = "Document_AddColumnBreak";
break;
case AscDFH.historydescription_Document_AddTabToMath :
sString = "Document_AddTabToMath";
break;
case AscDFH.historydescription_Document_ApplyPrToMath:
sString = "Document_ApplyPrToMath";
break;
case AscDFH.historydescription_Document_SetMathProps:
sString = "Document_SetMathProps";
break;
case AscDFH.historydescription_Document_SetSectionProps:
sString = "Document_SetColumnsProps";
break;
case AscDFH.historydescription_Document_ApiBuilder:
sString = "Document_ApiBuilder";
break;
case AscDFH.historydescription_Document_AddOleObject:
sString = "Document_AddOleObject";
break;
case AscDFH.historydescription_Document_EditOleObject:
sString = "Document_EditOleObject";
break;
case AscDFH.historydescription_Document_CompositeInput:
sString = "Document_CompositeInput";
break;
case AscDFH.historydescription_Document_CompositeInputReplace:
sString = "Document_CompositeInputReplace";
break;
case AscDFH.historydescription_Document_AddPageCount:
sString = "Document_AddPageCount";
break;
case AscDFH.historydescription_Document_AddFootnote:
sString = "Document_AddFootnote";
break;
case AscDFH.historydescription_Document_SetFootnotePr:
sString = "Document_SetFootnotePr";
break;
case AscDFH.historydescription_Document_RemoveAllFootnotes:
sString = "Document_RemoveAllFootnotes";
break;
case AscDFH.historydescription_Document_InsertDocumentsByUrls:
sString = "Document_InsertDocumentsByUrls";
break;
case AscDFH.historydescription_Document_AddBlockLevelContentControl:
sString = "Document_AddBlockLevelContentControl";
break;
case AscDFH.historydescription_Document_AddInlineLevelContentControl:
sString = "Document_AddInlineLevelContentControl";
break;
case AscDFH.historydescription_Document_RemoveContentControl:
sString = "Document_RemoveContentControl";
break;
case AscDFH.historydescription_Document_RemoveContentControlWrapper:
sString = "Document_RemoveContentControlWrapper";
break;
case AscDFH.historydescription_Document_ChangeContentControlProperties:
sString = "Document_ChangeContentControlProperties";
break;
case AscDFH.historydescription_DocumentMacros_Data:
sString = "DocumentMacros_Data";
break;
case AscDFH.historydescription_Document_AddBookmark:
sString = "Document_AddBookmark";
break;
case AscDFH.historydescription_Document_AddTableOfContents:
sString = "Document_AddTableOfContents";
break;
case AscDFH.historydescription_Document_ChangeOutlineLevel:
sString = "Document_ChangeOutlineLevel";
break;
case AscDFH.historydescription_Document_AddElementToOutline:
sString = "Document_AddElementToOutline";
break;
case AscDFH.historydescription_Document_ResizeTable:
sString = "Document_ResizeTable";
break;
case AscDFH.historydescription_Document_RemoveComplexField:
sString = "Document_RemoveComplexField";
break;
case AscDFH.historydescription_Document_SetComplexFieldPr:
sString = "Document_SetComplexFieldPr";
break;
case AscDFH.historydescription_Document_UpdateTableOfContents:
sString = "Document_UpdateTableOfContents";
break;
case AscDFH.historydescription_Document_SectionStartPage:
sString = "Document_SectionStartPage";
break;
case AscDFH.historydescription_Document_DistributeTableCells:
sString = "Document_DistributeTableCells";
break;
case AscDFH.historydescription_Document_RemoveBookmark:
sString = "Document_RemoveBookmark";
break;
case AscDFH.historydescription_Document_ContinueNumbering:
sString = "Document_ContinueNumbering";
break;
case AscDFH.historydescription_Document_RestartNumbering:
sString = "Document_RestartNumbering";
break;
case AscDFH.historydescription_Document_AutomaticListAsType:
sString = "Document_AutomaticListAsType";
break;
case AscDFH.historydescription_Document_CreateNum:
sString = "Document_CreateNum";
break;
case AscDFH.historydescription_Document_ChangeNumLvl:
sString = "Document_ChangeNumLvl";
break;
case AscDFH.historydescription_Document_AutoCorrectSmartQuotes:
sString = "Document_AutoCorrectSmartQuotes";
break;
case AscDFH.historydescription_Document_AutoCorrectHyphensWithDash:
sString = "Document_AutoCorrectHyphensWithDash";
break;
case AscDFH.historydescription_Document_SetGlobalSdtHighlightColor:
sString = "Document_SetGlobalSdtHighlightColor";
break;
case AscDFH.historydescription_Document_SetGlobalSdtShowHighlight:
sString = "Document_SetGlobalSdtShowHighlight";
break;
}
return sString;
}
function GetHistoryClassTypeByChangeType(nChangeType)
{
return (nChangeType >> 16) & 0x0000FFFF;
}
//------------------------------------------------------------export--------------------------------------------------
window['AscDFH'] = window['AscDFH'] || {};
window['AscDFH'].GetHistoryPointStringDescription = GetHistoryPointStringDescription;
window['AscDFH'].GetHistoryClassTypeByChangeType = GetHistoryClassTypeByChangeType;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Типы произошедших изменений
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].historyitem_recalctype_Inline = 0; // Изменения произошли в обычном тексте (с верхним классом CDocument)
window['AscDFH'].historyitem_recalctype_Flow = 1; // Изменения произошли в "плавающем" объекте
window['AscDFH'].historyitem_recalctype_HdrFtr = 2; // Изменения произошли в колонтитуле
window['AscDFH'].historyitem_recalctype_Drawing = 3; // Изменения произошли в drawing'е
window['AscDFH'].historyitem_recalctype_NotesEnd = 4; // Изменение произошли в сносках, которые идут в конце документа
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Типы классов, в которых происходили изменения (типы нужны для совместного редактирования)
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].historyitem_type_Unknown = 0 << 16;
window['AscDFH'].historyitem_type_TableId = 1 << 16;
window['AscDFH'].historyitem_type_Document = 2 << 16;
window['AscDFH'].historyitem_type_Paragraph = 3 << 16;
window['AscDFH'].historyitem_type_TextPr = 4 << 16;
window['AscDFH'].historyitem_type_Drawing = 5 << 16;
window['AscDFH'].historyitem_type_DrawingObjects = 6 << 16; // obsolete
window['AscDFH'].historyitem_type_FlowObjects = 7 << 16; // obsolete
window['AscDFH'].historyitem_type_FlowImage = 8 << 16; // obsolete
window['AscDFH'].historyitem_type_Table = 9 << 16;
window['AscDFH'].historyitem_type_TableRow = 10 << 16;
window['AscDFH'].historyitem_type_TableCell = 11 << 16;
window['AscDFH'].historyitem_type_DocumentContent = 12 << 16;
window['AscDFH'].historyitem_type_FlowTable = 13 << 16; // obsolete
window['AscDFH'].historyitem_type_HdrFtrController = 14 << 16; // obsolete
window['AscDFH'].historyitem_type_HdrFtr = 15 << 16;
window['AscDFH'].historyitem_type_AbstractNum = 16 << 16;
window['AscDFH'].historyitem_type_Comment = 17 << 16;
window['AscDFH'].historyitem_type_Comments = 18 << 16;
window['AscDFH'].historyitem_type_Image = 19 << 16;
window['AscDFH'].historyitem_type_GrObjects = 20 << 16;
window['AscDFH'].historyitem_type_Hyperlink = 21 << 16;
window['AscDFH'].historyitem_type_Style = 23 << 16;
window['AscDFH'].historyitem_type_Styles = 24 << 16;
window['AscDFH'].historyitem_type_ChartTitle = 25 << 16;
window['AscDFH'].historyitem_type_Math = 26 << 16;
window['AscDFH'].historyitem_type_CommentMark = 27 << 16;
window['AscDFH'].historyitem_type_ParaRun = 28 << 16;
window['AscDFH'].historyitem_type_MathContent = 29 << 16;
window['AscDFH'].historyitem_type_Section = 30 << 16;
window['AscDFH'].historyitem_type_acc = 31 << 16;
window['AscDFH'].historyitem_type_bar = 32 << 16;
window['AscDFH'].historyitem_type_borderBox = 33 << 16;
window['AscDFH'].historyitem_type_box = 34 << 16;
window['AscDFH'].historyitem_type_delimiter = 35 << 16;
window['AscDFH'].historyitem_type_eqArr = 36 << 16;
window['AscDFH'].historyitem_type_frac = 37 << 16;
window['AscDFH'].historyitem_type_mathFunc = 38 << 16;
window['AscDFH'].historyitem_type_groupChr = 39 << 16;
window['AscDFH'].historyitem_type_lim = 40 << 16;
window['AscDFH'].historyitem_type_matrix = 41 << 16;
window['AscDFH'].historyitem_type_nary = 42 << 16;
window['AscDFH'].historyitem_type_integral = 43 << 16;
window['AscDFH'].historyitem_type_double_integral = 44 << 16;
window['AscDFH'].historyitem_type_triple_integral = 45 << 16;
window['AscDFH'].historyitem_type_contour_integral = 46 << 16;
window['AscDFH'].historyitem_type_surface_integral = 47 << 16;
window['AscDFH'].historyitem_type_volume_integral = 48 << 16;
window['AscDFH'].historyitem_type_phant = 49 << 16;
window['AscDFH'].historyitem_type_rad = 50 << 16;
window['AscDFH'].historyitem_type_deg_subsup = 51 << 16;
window['AscDFH'].historyitem_type_iterators = 52 << 16;
window['AscDFH'].historyitem_type_deg = 53 << 16;
window['AscDFH'].historyitem_type_ParaComment = 54 << 16;
window['AscDFH'].historyitem_type_Field = 55 << 16;
window['AscDFH'].historyitem_type_Footnotes = 56 << 16;
window['AscDFH'].historyitem_type_FootEndNote = 57 << 16;
window['AscDFH'].historyitem_type_Presentation = 58 << 16;
window['AscDFH'].historyitem_type_BlockLevelSdt = 59 << 16;
window['AscDFH'].historyitem_type_SdtPr = 60 << 16;
window['AscDFH'].historyitem_type_InlineLevelSdt = 61 << 16;
window['AscDFH'].historyitem_type_ParaBookmark = 62 << 16;
window['AscDFH'].historyitem_type_Num = 63 << 16;
window['AscDFH'].historyitem_type_CommonShape = 1000 << 16; // Этот класс добавлен для элементов, у которых нет конкретного класса
window['AscDFH'].historyitem_type_ColorMod = 1001 << 16;
window['AscDFH'].historyitem_type_ColorModifiers = 1002 << 16;
window['AscDFH'].historyitem_type_SysColor = 1003 << 16;
window['AscDFH'].historyitem_type_PrstColor = 1004 << 16;
window['AscDFH'].historyitem_type_RGBColor = 1005 << 16;
window['AscDFH'].historyitem_type_SchemeColor = 1006 << 16;
window['AscDFH'].historyitem_type_UniColor = 1007 << 16;
window['AscDFH'].historyitem_type_SrcRect = 1008 << 16;
window['AscDFH'].historyitem_type_BlipFill = 1009 << 16;
window['AscDFH'].historyitem_type_SolidFill = 1010 << 16;
window['AscDFH'].historyitem_type_Gs = 1011 << 16;
window['AscDFH'].historyitem_type_GradLin = 1012 << 16;
window['AscDFH'].historyitem_type_GradPath = 1013 << 16;
window['AscDFH'].historyitem_type_GradFill = 1014 << 16;
window['AscDFH'].historyitem_type_PathFill = 1015 << 16;
window['AscDFH'].historyitem_type_NoFill = 1016 << 16;
window['AscDFH'].historyitem_type_UniFill = 1017 << 16;
window['AscDFH'].historyitem_type_EndArrow = 1018 << 16;
window['AscDFH'].historyitem_type_LineJoin = 1019 << 16;
window['AscDFH'].historyitem_type_Ln = 1020 << 16;
window['AscDFH'].historyitem_type_DefaultShapeDefinition = 1021 << 16;
window['AscDFH'].historyitem_type_CNvPr = 1022 << 16;
window['AscDFH'].historyitem_type_NvPr = 1023 << 16;
window['AscDFH'].historyitem_type_Ph = 1024 << 16;
window['AscDFH'].historyitem_type_UniNvPr = 1025 << 16;
window['AscDFH'].historyitem_type_StyleRef = 1026 << 16;
window['AscDFH'].historyitem_type_FontRef = 1027 << 16;
window['AscDFH'].historyitem_type_Chart = 1028 << 16;
window['AscDFH'].historyitem_type_ChartSpace = 1029 << 16;
window['AscDFH'].historyitem_type_Legend = 1030 << 16;
window['AscDFH'].historyitem_type_Layout = 1031 << 16;
window['AscDFH'].historyitem_type_LegendEntry = 1032 << 16;
window['AscDFH'].historyitem_type_PivotFmt = 1033 << 16;
window['AscDFH'].historyitem_type_DLbl = 1034 << 16;
window['AscDFH'].historyitem_type_Marker = 1035 << 16;
window['AscDFH'].historyitem_type_PlotArea = 1036 << 16;
window['AscDFH'].historyitem_type_Axis = 1037 << 16;
window['AscDFH'].historyitem_type_NumFmt = 1038 << 16;
window['AscDFH'].historyitem_type_Scaling = 1039 << 16;
window['AscDFH'].historyitem_type_DTable = 1040 << 16;
window['AscDFH'].historyitem_type_LineChart = 1041 << 16;
window['AscDFH'].historyitem_type_DLbls = 1042 << 16;
window['AscDFH'].historyitem_type_UpDownBars = 1043 << 16;
window['AscDFH'].historyitem_type_BarChart = 1044 << 16;
window['AscDFH'].historyitem_type_BubbleChart = 1045 << 16;
window['AscDFH'].historyitem_type_DoughnutChart = 1046 << 16;
window['AscDFH'].historyitem_type_OfPieChart = 1047 << 16;
window['AscDFH'].historyitem_type_PieChart = 1048 << 16;
window['AscDFH'].historyitem_type_RadarChart = 1049 << 16;
window['AscDFH'].historyitem_type_ScatterChart = 1050 << 16;
window['AscDFH'].historyitem_type_StockChart = 1051 << 16;
window['AscDFH'].historyitem_type_SurfaceChart = 1052 << 16;
window['AscDFH'].historyitem_type_BandFmt = 1053 << 16;
window['AscDFH'].historyitem_type_AreaChart = 1054 << 16;
window['AscDFH'].historyitem_type_ScatterSer = 1055 << 16;
window['AscDFH'].historyitem_type_DPt = 1056 << 16;
window['AscDFH'].historyitem_type_ErrBars = 1057 << 16;
window['AscDFH'].historyitem_type_MinusPlus = 1058 << 16;
window['AscDFH'].historyitem_type_NumLit = 1059 << 16;
window['AscDFH'].historyitem_type_NumericPoint = 1060 << 16;
window['AscDFH'].historyitem_type_NumRef = 1061 << 16;
window['AscDFH'].historyitem_type_TrendLine = 1062 << 16;
window['AscDFH'].historyitem_type_Tx = 1063 << 16;
window['AscDFH'].historyitem_type_StrRef = 1064 << 16;
window['AscDFH'].historyitem_type_StrCache = 1065 << 16;
window['AscDFH'].historyitem_type_StrPoint = 1066 << 16;
window['AscDFH'].historyitem_type_XVal = 1067 << 16;
window['AscDFH'].historyitem_type_MultiLvlStrRef = 1068 << 16;
window['AscDFH'].historyitem_type_MultiLvlStrCache = 1069 << 16;
window['AscDFH'].historyitem_type_StringLiteral = 1070 << 16;
window['AscDFH'].historyitem_type_YVal = 1071 << 16;
window['AscDFH'].historyitem_type_AreaSeries = 1072 << 16;
window['AscDFH'].historyitem_type_Cat = 1073 << 16;
window['AscDFH'].historyitem_type_PictureOptions = 1074 << 16;
window['AscDFH'].historyitem_type_RadarSeries = 1075 << 16;
window['AscDFH'].historyitem_type_BarSeries = 1076 << 16;
window['AscDFH'].historyitem_type_LineSeries = 1077 << 16;
window['AscDFH'].historyitem_type_PieSeries = 1078 << 16;
window['AscDFH'].historyitem_type_SurfaceSeries = 1079 << 16;
window['AscDFH'].historyitem_type_BubbleSeries = 1080 << 16;
window['AscDFH'].historyitem_type_ExternalData = 1081 << 16;
window['AscDFH'].historyitem_type_PivotSource = 1082 << 16;
window['AscDFH'].historyitem_type_Protection = 1083 << 16;
window['AscDFH'].historyitem_type_ChartWall = 1084 << 16;
window['AscDFH'].historyitem_type_View3d = 1085 << 16;
window['AscDFH'].historyitem_type_ChartText = 1086 << 16;
window['AscDFH'].historyitem_type_ShapeStyle = 1087 << 16;
window['AscDFH'].historyitem_type_Xfrm = 1088 << 16;
window['AscDFH'].historyitem_type_SpPr = 1089 << 16;
window['AscDFH'].historyitem_type_ClrScheme = 1090 << 16;
window['AscDFH'].historyitem_type_ClrMap = 1091 << 16;
window['AscDFH'].historyitem_type_ExtraClrScheme = 1092 << 16;
window['AscDFH'].historyitem_type_FontCollection = 1093 << 16;
window['AscDFH'].historyitem_type_FontScheme = 1094 << 16;
window['AscDFH'].historyitem_type_FormatScheme = 1095 << 16;
window['AscDFH'].historyitem_type_ThemeElements = 1096 << 16;
window['AscDFH'].historyitem_type_HF = 1097 << 16;
window['AscDFH'].historyitem_type_BgPr = 1098 << 16;
window['AscDFH'].historyitem_type_Bg = 1099 << 16;
window['AscDFH'].historyitem_type_PrintSettings = 1100 << 16;
window['AscDFH'].historyitem_type_HeaderFooterChart = 1101 << 16;
window['AscDFH'].historyitem_type_PageMarginsChart = 1102 << 16;
window['AscDFH'].historyitem_type_PageSetup = 1103 << 16;
window['AscDFH'].historyitem_type_Shape = 1104 << 16;
window['AscDFH'].historyitem_type_DispUnits = 1105 << 16;
window['AscDFH'].historyitem_type_GroupShape = 1106 << 16;
window['AscDFH'].historyitem_type_ImageShape = 1107 << 16;
window['AscDFH'].historyitem_type_Geometry = 1108 << 16;
window['AscDFH'].historyitem_type_Path = 1109 << 16;
window['AscDFH'].historyitem_type_TextBody = 1110 << 16;
window['AscDFH'].historyitem_type_CatAx = 1111 << 16;
window['AscDFH'].historyitem_type_ValAx = 1112 << 16;
window['AscDFH'].historyitem_type_WrapPolygon = 1113 << 16;
window['AscDFH'].historyitem_type_DateAx = 1114 << 16;
window['AscDFH'].historyitem_type_SerAx = 1115 << 16;
window['AscDFH'].historyitem_type_Title = 1116 << 16;
window['AscDFH'].historyitem_type_Slide = 1117 << 16;
window['AscDFH'].historyitem_type_SlideLayout = 1118 << 16;
window['AscDFH'].historyitem_type_SlideMaster = 1119 << 16;
window['AscDFH'].historyitem_type_SlideComments = 1120 << 16;
window['AscDFH'].historyitem_type_PropLocker = 1121 << 16;
window['AscDFH'].historyitem_type_Theme = 1122 << 16;
window['AscDFH'].historyitem_type_GraphicFrame = 1123 << 16;
window['AscDFH'].historyitem_type_GrpFill = 1124 << 16;
window['AscDFH'].historyitem_type_OleObject = 1125 << 16;
window['AscDFH'].historyitem_type_DrawingContent = 1126 << 16;
window['AscDFH'].historyitem_type_Sparkline = 1127 << 16;
window['AscDFH'].historyitem_type_NotesMaster = 1128 << 16;
window['AscDFH'].historyitem_type_Notes = 1129 << 16;
window['AscDFH'].historyitem_type_Cnx = 1130 << 16;
window['AscDFH'].historyitem_type_PresentationSection = 1131 << 16;
window['AscDFH'].historyitem_type_PivotTableDefinition = 1132 << 16;
window['AscDFH'].historyitem_type_DocumentMacros = 2000 << 16;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Типы изменений, разбитые по классам
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].historyitem_Unknown_Unknown = window['AscDFH'].historyitem_type_Unknown | 0;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CTableId
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_TableId_Add = window['AscDFH'].historyitem_type_TableId | 1;
window['AscDFH'].historyitem_TableId_Description = window['AscDFH'].historyitem_type_TableId | 0xFFFF;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CDocument
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Document_AddItem = window['AscDFH'].historyitem_type_Document | 1;
window['AscDFH'].historyitem_Document_RemoveItem = window['AscDFH'].historyitem_type_Document | 2;
window['AscDFH'].historyitem_Document_DefaultTab = window['AscDFH'].historyitem_type_Document | 3;
window['AscDFH'].historyitem_Document_EvenAndOddHeaders = window['AscDFH'].historyitem_type_Document | 4;
window['AscDFH'].historyitem_Document_DefaultLanguage = window['AscDFH'].historyitem_type_Document | 5;
window['AscDFH'].historyitem_Document_MathSettings = window['AscDFH'].historyitem_type_Document | 6;
window['AscDFH'].historyitem_Document_SdtGlobalSettings = window['AscDFH'].historyitem_type_Document | 7;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе Paragraph
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Paragraph_AddItem = window['AscDFH'].historyitem_type_Paragraph | 1;
window['AscDFH'].historyitem_Paragraph_RemoveItem = window['AscDFH'].historyitem_type_Paragraph | 2;
window['AscDFH'].historyitem_Paragraph_Numbering = window['AscDFH'].historyitem_type_Paragraph | 3;
window['AscDFH'].historyitem_Paragraph_Align = window['AscDFH'].historyitem_type_Paragraph | 4;
window['AscDFH'].historyitem_Paragraph_Ind_First = window['AscDFH'].historyitem_type_Paragraph | 5;
window['AscDFH'].historyitem_Paragraph_Ind_Right = window['AscDFH'].historyitem_type_Paragraph | 6;
window['AscDFH'].historyitem_Paragraph_Ind_Left = window['AscDFH'].historyitem_type_Paragraph | 7;
window['AscDFH'].historyitem_Paragraph_ContextualSpacing = window['AscDFH'].historyitem_type_Paragraph | 8;
window['AscDFH'].historyitem_Paragraph_KeepLines = window['AscDFH'].historyitem_type_Paragraph | 9;
window['AscDFH'].historyitem_Paragraph_KeepNext = window['AscDFH'].historyitem_type_Paragraph | 10;
window['AscDFH'].historyitem_Paragraph_PageBreakBefore = window['AscDFH'].historyitem_type_Paragraph | 11;
window['AscDFH'].historyitem_Paragraph_Spacing_Line = window['AscDFH'].historyitem_type_Paragraph | 12;
window['AscDFH'].historyitem_Paragraph_Spacing_LineRule = window['AscDFH'].historyitem_type_Paragraph | 13;
window['AscDFH'].historyitem_Paragraph_Spacing_Before = window['AscDFH'].historyitem_type_Paragraph | 14;
window['AscDFH'].historyitem_Paragraph_Spacing_After = window['AscDFH'].historyitem_type_Paragraph | 15;
window['AscDFH'].historyitem_Paragraph_Spacing_AfterAutoSpacing = window['AscDFH'].historyitem_type_Paragraph | 16;
window['AscDFH'].historyitem_Paragraph_Spacing_BeforeAutoSpacing = window['AscDFH'].historyitem_type_Paragraph | 17;
window['AscDFH'].historyitem_Paragraph_Shd_Value = window['AscDFH'].historyitem_type_Paragraph | 18;
window['AscDFH'].historyitem_Paragraph_Shd_Color = window['AscDFH'].historyitem_type_Paragraph | 19;
window['AscDFH'].historyitem_Paragraph_Shd_Unifill = window['AscDFH'].historyitem_type_Paragraph | 20;
window['AscDFH'].historyitem_Paragraph_Shd = window['AscDFH'].historyitem_type_Paragraph | 21;
window['AscDFH'].historyitem_Paragraph_WidowControl = window['AscDFH'].historyitem_type_Paragraph | 22;
window['AscDFH'].historyitem_Paragraph_Tabs = window['AscDFH'].historyitem_type_Paragraph | 23;
window['AscDFH'].historyitem_Paragraph_PStyle = window['AscDFH'].historyitem_type_Paragraph | 24;
window['AscDFH'].historyitem_Paragraph_Borders_Between = window['AscDFH'].historyitem_type_Paragraph | 25;
window['AscDFH'].historyitem_Paragraph_Borders_Bottom = window['AscDFH'].historyitem_type_Paragraph | 26;
window['AscDFH'].historyitem_Paragraph_Borders_Left = window['AscDFH'].historyitem_type_Paragraph | 27;
window['AscDFH'].historyitem_Paragraph_Borders_Right = window['AscDFH'].historyitem_type_Paragraph | 28;
window['AscDFH'].historyitem_Paragraph_Borders_Top = window['AscDFH'].historyitem_type_Paragraph | 29;
window['AscDFH'].historyitem_Paragraph_Pr = window['AscDFH'].historyitem_type_Paragraph | 30;
window['AscDFH'].historyitem_Paragraph_PresentationPr_Bullet = window['AscDFH'].historyitem_type_Paragraph | 31;
window['AscDFH'].historyitem_Paragraph_PresentationPr_Level = window['AscDFH'].historyitem_type_Paragraph | 32;
window['AscDFH'].historyitem_Paragraph_FramePr = window['AscDFH'].historyitem_type_Paragraph | 33;
window['AscDFH'].historyitem_Paragraph_SectionPr = window['AscDFH'].historyitem_type_Paragraph | 34;
window['AscDFH'].historyitem_Paragraph_PrChange = window['AscDFH'].historyitem_type_Paragraph | 35;
window['AscDFH'].historyitem_Paragraph_PrReviewInfo = window['AscDFH'].historyitem_type_Paragraph | 36;
window['AscDFH'].historyitem_Paragraph_OutlineLvl = window['AscDFH'].historyitem_type_Paragraph | 37;
window['AscDFH'].historyitem_Paragraph_DefaultTabSize = window['AscDFH'].historyitem_type_Paragraph | 38;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaTextPr
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_TextPr_Bold = window['AscDFH'].historyitem_type_TextPr | 1;
window['AscDFH'].historyitem_TextPr_Italic = window['AscDFH'].historyitem_type_TextPr | 2;
window['AscDFH'].historyitem_TextPr_Strikeout = window['AscDFH'].historyitem_type_TextPr | 3;
window['AscDFH'].historyitem_TextPr_Underline = window['AscDFH'].historyitem_type_TextPr | 4;
window['AscDFH'].historyitem_TextPr_FontSize = window['AscDFH'].historyitem_type_TextPr | 5;
window['AscDFH'].historyitem_TextPr_Color = window['AscDFH'].historyitem_type_TextPr | 6;
window['AscDFH'].historyitem_TextPr_VertAlign = window['AscDFH'].historyitem_type_TextPr | 7;
window['AscDFH'].historyitem_TextPr_HighLight = window['AscDFH'].historyitem_type_TextPr | 8;
window['AscDFH'].historyitem_TextPr_RStyle = window['AscDFH'].historyitem_type_TextPr | 9;
window['AscDFH'].historyitem_TextPr_Spacing = window['AscDFH'].historyitem_type_TextPr | 10;
window['AscDFH'].historyitem_TextPr_DStrikeout = window['AscDFH'].historyitem_type_TextPr | 11;
window['AscDFH'].historyitem_TextPr_Caps = window['AscDFH'].historyitem_type_TextPr | 12;
window['AscDFH'].historyitem_TextPr_SmallCaps = window['AscDFH'].historyitem_type_TextPr | 13;
window['AscDFH'].historyitem_TextPr_Position = window['AscDFH'].historyitem_type_TextPr | 14;
window['AscDFH'].historyitem_TextPr_Value = window['AscDFH'].historyitem_type_TextPr | 15;
window['AscDFH'].historyitem_TextPr_RFonts = window['AscDFH'].historyitem_type_TextPr | 16;
window['AscDFH'].historyitem_TextPr_RFonts_Ascii = window['AscDFH'].historyitem_type_TextPr | 17;
window['AscDFH'].historyitem_TextPr_RFonts_HAnsi = window['AscDFH'].historyitem_type_TextPr | 18;
window['AscDFH'].historyitem_TextPr_RFonts_CS = window['AscDFH'].historyitem_type_TextPr | 19;
window['AscDFH'].historyitem_TextPr_RFonts_EastAsia = window['AscDFH'].historyitem_type_TextPr | 20;
window['AscDFH'].historyitem_TextPr_RFonts_Hint = window['AscDFH'].historyitem_type_TextPr | 21;
window['AscDFH'].historyitem_TextPr_Lang = window['AscDFH'].historyitem_type_TextPr | 22;
window['AscDFH'].historyitem_TextPr_Lang_Bidi = window['AscDFH'].historyitem_type_TextPr | 23;
window['AscDFH'].historyitem_TextPr_Lang_EastAsia = window['AscDFH'].historyitem_type_TextPr | 24;
window['AscDFH'].historyitem_TextPr_Lang_Val = window['AscDFH'].historyitem_type_TextPr | 25;
window['AscDFH'].historyitem_TextPr_Unifill = window['AscDFH'].historyitem_type_TextPr | 26;
window['AscDFH'].historyitem_TextPr_FontSizeCS = window['AscDFH'].historyitem_type_TextPr | 27;
window['AscDFH'].historyitem_TextPr_Outline = window['AscDFH'].historyitem_type_TextPr | 28;
window['AscDFH'].historyitem_TextPr_Fill = window['AscDFH'].historyitem_type_TextPr | 29;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaDrawing
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Drawing_DrawingType = window['AscDFH'].historyitem_type_Drawing | 1;
window['AscDFH'].historyitem_Drawing_WrappingType = window['AscDFH'].historyitem_type_Drawing | 2;
window['AscDFH'].historyitem_Drawing_Distance = window['AscDFH'].historyitem_type_Drawing | 3;
window['AscDFH'].historyitem_Drawing_AllowOverlap = window['AscDFH'].historyitem_type_Drawing | 4;
window['AscDFH'].historyitem_Drawing_PositionH = window['AscDFH'].historyitem_type_Drawing | 5;
window['AscDFH'].historyitem_Drawing_PositionV = window['AscDFH'].historyitem_type_Drawing | 6;
window['AscDFH'].historyitem_Drawing_BehindDoc = window['AscDFH'].historyitem_type_Drawing | 7;
window['AscDFH'].historyitem_Drawing_SetGraphicObject = window['AscDFH'].historyitem_type_Drawing | 8;
window['AscDFH'].historyitem_Drawing_SetSimplePos = window['AscDFH'].historyitem_type_Drawing | 9;
window['AscDFH'].historyitem_Drawing_SetExtent = window['AscDFH'].historyitem_type_Drawing | 10;
window['AscDFH'].historyitem_Drawing_SetWrapPolygon = window['AscDFH'].historyitem_type_Drawing | 11;
window['AscDFH'].historyitem_Drawing_SetLocked = window['AscDFH'].historyitem_type_Drawing | 12;
window['AscDFH'].historyitem_Drawing_SetRelativeHeight = window['AscDFH'].historyitem_type_Drawing | 13;
window['AscDFH'].historyitem_Drawing_SetEffectExtent = window['AscDFH'].historyitem_type_Drawing | 14;
window['AscDFH'].historyitem_Drawing_SetParent = window['AscDFH'].historyitem_type_Drawing | 15;
window['AscDFH'].historyitem_Drawing_SetParaMath = window['AscDFH'].historyitem_type_Drawing | 16;
window['AscDFH'].historyitem_Drawing_LayoutInCell = window['AscDFH'].historyitem_type_Drawing | 17;
window['AscDFH'].historyitem_Drawing_SetSizeRelH = window['AscDFH'].historyitem_type_Drawing | 18;
window['AscDFH'].historyitem_Drawing_SetSizeRelV = window['AscDFH'].historyitem_type_Drawing | 19;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CTable
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Table_TableW = window['AscDFH'].historyitem_type_Table | 1;
window['AscDFH'].historyitem_Table_TableCellMar = window['AscDFH'].historyitem_type_Table | 2;
window['AscDFH'].historyitem_Table_TableAlign = window['AscDFH'].historyitem_type_Table | 3;
window['AscDFH'].historyitem_Table_TableInd = window['AscDFH'].historyitem_type_Table | 4;
window['AscDFH'].historyitem_Table_TableBorder_Left = window['AscDFH'].historyitem_type_Table | 5;
window['AscDFH'].historyitem_Table_TableBorder_Top = window['AscDFH'].historyitem_type_Table | 6;
window['AscDFH'].historyitem_Table_TableBorder_Right = window['AscDFH'].historyitem_type_Table | 7;
window['AscDFH'].historyitem_Table_TableBorder_Bottom = window['AscDFH'].historyitem_type_Table | 8;
window['AscDFH'].historyitem_Table_TableBorder_InsideH = window['AscDFH'].historyitem_type_Table | 9;
window['AscDFH'].historyitem_Table_TableBorder_InsideV = window['AscDFH'].historyitem_type_Table | 10;
window['AscDFH'].historyitem_Table_TableShd = window['AscDFH'].historyitem_type_Table | 11;
window['AscDFH'].historyitem_Table_Inline = window['AscDFH'].historyitem_type_Table | 12;
window['AscDFH'].historyitem_Table_AddRow = window['AscDFH'].historyitem_type_Table | 13;
window['AscDFH'].historyitem_Table_RemoveRow = window['AscDFH'].historyitem_type_Table | 14;
window['AscDFH'].historyitem_Table_TableGrid = window['AscDFH'].historyitem_type_Table | 15;
window['AscDFH'].historyitem_Table_TableLook = window['AscDFH'].historyitem_type_Table | 16;
window['AscDFH'].historyitem_Table_TableStyleRowBandSize = window['AscDFH'].historyitem_type_Table | 17;
window['AscDFH'].historyitem_Table_TableStyleColBandSize = window['AscDFH'].historyitem_type_Table | 18;
window['AscDFH'].historyitem_Table_TableStyle = window['AscDFH'].historyitem_type_Table | 19;
window['AscDFH'].historyitem_Table_AllowOverlap = window['AscDFH'].historyitem_type_Table | 20;
window['AscDFH'].historyitem_Table_PositionH = window['AscDFH'].historyitem_type_Table | 21;
window['AscDFH'].historyitem_Table_PositionV = window['AscDFH'].historyitem_type_Table | 22;
window['AscDFH'].historyitem_Table_Distance = window['AscDFH'].historyitem_type_Table | 23;
window['AscDFH'].historyitem_Table_Pr = window['AscDFH'].historyitem_type_Table | 24;
window['AscDFH'].historyitem_Table_TableLayout = window['AscDFH'].historyitem_type_Table | 25;
window['AscDFH'].historyitem_Table_TableDescription = window['AscDFH'].historyitem_type_Table | 26;
window['AscDFH'].historyitem_Table_TableCaption = window['AscDFH'].historyitem_type_Table | 27;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CTableRow
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_TableRow_Before = window['AscDFH'].historyitem_type_TableRow | 1;
window['AscDFH'].historyitem_TableRow_After = window['AscDFH'].historyitem_type_TableRow | 2;
window['AscDFH'].historyitem_TableRow_CellSpacing = window['AscDFH'].historyitem_type_TableRow | 3;
window['AscDFH'].historyitem_TableRow_Height = window['AscDFH'].historyitem_type_TableRow | 4;
window['AscDFH'].historyitem_TableRow_AddCell = window['AscDFH'].historyitem_type_TableRow | 5;
window['AscDFH'].historyitem_TableRow_RemoveCell = window['AscDFH'].historyitem_type_TableRow | 6;
window['AscDFH'].historyitem_TableRow_TableHeader = window['AscDFH'].historyitem_type_TableRow | 7;
window['AscDFH'].historyitem_TableRow_Pr = window['AscDFH'].historyitem_type_TableRow | 8;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CTableCell
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_TableCell_GridSpan = window['AscDFH'].historyitem_type_TableCell | 1;
window['AscDFH'].historyitem_TableCell_Margins = window['AscDFH'].historyitem_type_TableCell | 2;
window['AscDFH'].historyitem_TableCell_Shd = window['AscDFH'].historyitem_type_TableCell | 3;
window['AscDFH'].historyitem_TableCell_VMerge = window['AscDFH'].historyitem_type_TableCell | 4;
window['AscDFH'].historyitem_TableCell_Border_Left = window['AscDFH'].historyitem_type_TableCell | 5;
window['AscDFH'].historyitem_TableCell_Border_Right = window['AscDFH'].historyitem_type_TableCell | 6;
window['AscDFH'].historyitem_TableCell_Border_Top = window['AscDFH'].historyitem_type_TableCell | 7;
window['AscDFH'].historyitem_TableCell_Border_Bottom = window['AscDFH'].historyitem_type_TableCell | 8;
window['AscDFH'].historyitem_TableCell_VAlign = window['AscDFH'].historyitem_type_TableCell | 9;
window['AscDFH'].historyitem_TableCell_W = window['AscDFH'].historyitem_type_TableCell | 10;
window['AscDFH'].historyitem_TableCell_Pr = window['AscDFH'].historyitem_type_TableCell | 11;
window['AscDFH'].historyitem_TableCell_TextDirection = window['AscDFH'].historyitem_type_TableCell | 12;
window['AscDFH'].historyitem_TableCell_NoWrap = window['AscDFH'].historyitem_type_TableCell | 13;
window['AscDFH'].historyitem_TableCell_HMerge = window['AscDFH'].historyitem_type_TableCell | 14;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CDocumentContent
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_DocumentContent_AddItem = window['AscDFH'].historyitem_type_DocumentContent | 1;
window['AscDFH'].historyitem_DocumentContent_RemoveItem = window['AscDFH'].historyitem_type_DocumentContent | 2;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CAbstractNum
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_AbstractNum_LvlChange = window['AscDFH'].historyitem_type_AbstractNum | 1;
window['AscDFH'].historyitem_AbstractNum_TextPrChange = window['AscDFH'].historyitem_type_AbstractNum | 2;
window['AscDFH'].historyitem_AbstractNum_ParaPrChange = window['AscDFH'].historyitem_type_AbstractNum | 3;
window['AscDFH'].historyitem_AbstractNum_StyleLink = window['AscDFH'].historyitem_type_AbstractNum | 4;
window['AscDFH'].historyitem_AbstractNum_NumStyleLink = window['AscDFH'].historyitem_type_AbstractNum | 5;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CNum
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Num_LvlOverrideChange = window['AscDFH'].historyitem_type_Num | 1;
window['AscDFH'].historyitem_Num_AbstractNum = window['AscDFH'].historyitem_type_Num | 2;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе СComment
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Comment_Change = window['AscDFH'].historyitem_type_Comment | 1;
window['AscDFH'].historyitem_Comment_TypeInfo = window['AscDFH'].historyitem_type_Comment | 2;
window['AscDFH'].historyitem_Comment_Position = window['AscDFH'].historyitem_type_Comment | 3;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CComments
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Comments_Add = window['AscDFH'].historyitem_type_Comments | 1;
window['AscDFH'].historyitem_Comments_Remove = window['AscDFH'].historyitem_type_Comments | 2;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaHyperlink
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Hyperlink_Value = window['AscDFH'].historyitem_type_Hyperlink | 1;
window['AscDFH'].historyitem_Hyperlink_ToolTip = window['AscDFH'].historyitem_type_Hyperlink | 2;
window['AscDFH'].historyitem_Hyperlink_AddItem = window['AscDFH'].historyitem_type_Hyperlink | 3;
window['AscDFH'].historyitem_Hyperlink_RemoveItem = window['AscDFH'].historyitem_type_Hyperlink | 4;
window['AscDFH'].historyitem_Hyperlink_Anchor = window['AscDFH'].historyitem_type_Hyperlink | 5;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CStyle
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Style_TextPr = window['AscDFH'].historyitem_type_Style | 1;
window['AscDFH'].historyitem_Style_ParaPr = window['AscDFH'].historyitem_type_Style | 2;
window['AscDFH'].historyitem_Style_TablePr = window['AscDFH'].historyitem_type_Style | 3;
window['AscDFH'].historyitem_Style_TableRowPr = window['AscDFH'].historyitem_type_Style | 4;
window['AscDFH'].historyitem_Style_TableCellPr = window['AscDFH'].historyitem_type_Style | 5;
window['AscDFH'].historyitem_Style_TableBand1Horz = window['AscDFH'].historyitem_type_Style | 6;
window['AscDFH'].historyitem_Style_TableBand1Vert = window['AscDFH'].historyitem_type_Style | 7;
window['AscDFH'].historyitem_Style_TableBand2Horz = window['AscDFH'].historyitem_type_Style | 8;
window['AscDFH'].historyitem_Style_TableBand2Vert = window['AscDFH'].historyitem_type_Style | 9;
window['AscDFH'].historyitem_Style_TableFirstCol = window['AscDFH'].historyitem_type_Style | 10;
window['AscDFH'].historyitem_Style_TableFirstRow = window['AscDFH'].historyitem_type_Style | 11;
window['AscDFH'].historyitem_Style_TableLastCol = window['AscDFH'].historyitem_type_Style | 12;
window['AscDFH'].historyitem_Style_TableLastRow = window['AscDFH'].historyitem_type_Style | 13;
window['AscDFH'].historyitem_Style_TableTLCell = window['AscDFH'].historyitem_type_Style | 14;
window['AscDFH'].historyitem_Style_TableTRCell = window['AscDFH'].historyitem_type_Style | 15;
window['AscDFH'].historyitem_Style_TableBLCell = window['AscDFH'].historyitem_type_Style | 16;
window['AscDFH'].historyitem_Style_TableBRCell = window['AscDFH'].historyitem_type_Style | 17;
window['AscDFH'].historyitem_Style_TableWholeTable = window['AscDFH'].historyitem_type_Style | 18;
window['AscDFH'].historyitem_Style_Name = window['AscDFH'].historyitem_type_Style | 101;
window['AscDFH'].historyitem_Style_BasedOn = window['AscDFH'].historyitem_type_Style | 102;
window['AscDFH'].historyitem_Style_Next = window['AscDFH'].historyitem_type_Style | 103;
window['AscDFH'].historyitem_Style_Type = window['AscDFH'].historyitem_type_Style | 104;
window['AscDFH'].historyitem_Style_QFormat = window['AscDFH'].historyitem_type_Style | 105;
window['AscDFH'].historyitem_Style_UiPriority = window['AscDFH'].historyitem_type_Style | 106;
window['AscDFH'].historyitem_Style_Hidden = window['AscDFH'].historyitem_type_Style | 107;
window['AscDFH'].historyitem_Style_SemiHidden = window['AscDFH'].historyitem_type_Style | 108;
window['AscDFH'].historyitem_Style_UnhideWhenUsed = window['AscDFH'].historyitem_type_Style | 109;
window['AscDFH'].historyitem_Style_Link = window['AscDFH'].historyitem_type_Style | 110;
window['AscDFH'].historyitem_Style_Custom = window['AscDFH'].historyitem_type_Style | 111;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CStyles
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Styles_Add = window['AscDFH'].historyitem_type_Styles | 1;
window['AscDFH'].historyitem_Styles_Remove = window['AscDFH'].historyitem_type_Styles | 2;
window['AscDFH'].historyitem_Styles_ChangeDefaultTextPr = window['AscDFH'].historyitem_type_Styles | 3;
window['AscDFH'].historyitem_Styles_ChangeDefaultParaPr = window['AscDFH'].historyitem_type_Styles | 4;
window['AscDFH'].historyitem_Styles_ChangeDefaultParagraphId = window['AscDFH'].historyitem_type_Styles | 5;
window['AscDFH'].historyitem_Styles_ChangeDefaultCharacterId = window['AscDFH'].historyitem_type_Styles | 6;
window['AscDFH'].historyitem_Styles_ChangeDefaultNumberingId = window['AscDFH'].historyitem_type_Styles | 7;
window['AscDFH'].historyitem_Styles_ChangeDefaultTableId = window['AscDFH'].historyitem_type_Styles | 8;
window['AscDFH'].historyitem_Styles_ChangeDefaultTableGridId = window['AscDFH'].historyitem_type_Styles | 9;
window['AscDFH'].historyitem_Styles_ChangeDefaultHeadingsId = window['AscDFH'].historyitem_type_Styles | 10;
window['AscDFH'].historyitem_Styles_ChangeDefaultParaListId = window['AscDFH'].historyitem_type_Styles | 11;
window['AscDFH'].historyitem_Styles_ChangeDefaultHeaderId = window['AscDFH'].historyitem_type_Styles | 12;
window['AscDFH'].historyitem_Styles_ChangeDefaultFooterId = window['AscDFH'].historyitem_type_Styles | 13;
window['AscDFH'].historyitem_Styles_ChangeDefaultHyperlinkId = window['AscDFH'].historyitem_type_Styles | 14;
window['AscDFH'].historyitem_Styles_ChangeDefaultFootnoteTextId = window['AscDFH'].historyitem_type_Styles | 15;
window['AscDFH'].historyitem_Styles_ChangeDefaultFootnoteTextCharId = window['AscDFH'].historyitem_type_Styles | 16;
window['AscDFH'].historyitem_Styles_ChangeDefaultFootnoteReferenceId = window['AscDFH'].historyitem_type_Styles | 17;
window['AscDFH'].historyitem_Styles_ChangeDefaultNoSpacingId = window['AscDFH'].historyitem_type_Styles | 18;
window['AscDFH'].historyitem_Styles_ChangeDefaultTitleId = window['AscDFH'].historyitem_type_Styles | 19;
window['AscDFH'].historyitem_Styles_ChangeDefaultSubtitleId = window['AscDFH'].historyitem_type_Styles | 20;
window['AscDFH'].historyitem_Styles_ChangeDefaultQuoteId = window['AscDFH'].historyitem_type_Styles | 21;
window['AscDFH'].historyitem_Styles_ChangeDefaultIntenseQuoteId = window['AscDFH'].historyitem_type_Styles | 22;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaMath
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_MathContent_AddItem = window['AscDFH'].historyitem_type_Math | 101;
window['AscDFH'].historyitem_MathContent_RemoveItem = window['AscDFH'].historyitem_type_Math | 102;
window['AscDFH'].historyitem_MathContent_ArgSize = window['AscDFH'].historyitem_type_Math | 103;
window['AscDFH'].historyitem_MathPara_Jc = window['AscDFH'].historyitem_type_Math | 201;
window['AscDFH'].historyitem_MathBase_AddItems = window['AscDFH'].historyitem_type_Math | 301;
window['AscDFH'].historyitem_MathBase_RemoveItems = window['AscDFH'].historyitem_type_Math | 302;
window['AscDFH'].historyitem_MathBase_FontSize = window['AscDFH'].historyitem_type_Math | 303;
window['AscDFH'].historyitem_MathBase_Shd = window['AscDFH'].historyitem_type_Math | 304;
window['AscDFH'].historyitem_MathBase_Color = window['AscDFH'].historyitem_type_Math | 305;
window['AscDFH'].historyitem_MathBase_Unifill = window['AscDFH'].historyitem_type_Math | 306;
window['AscDFH'].historyitem_MathBase_Underline = window['AscDFH'].historyitem_type_Math | 307;
window['AscDFH'].historyitem_MathBase_Strikeout = window['AscDFH'].historyitem_type_Math | 308;
window['AscDFH'].historyitem_MathBase_DoubleStrikeout = window['AscDFH'].historyitem_type_Math | 309;
window['AscDFH'].historyitem_MathBase_Italic = window['AscDFH'].historyitem_type_Math | 310;
window['AscDFH'].historyitem_MathBase_Bold = window['AscDFH'].historyitem_type_Math | 311;
window['AscDFH'].historyitem_MathBase_RFontsAscii = window['AscDFH'].historyitem_type_Math | 312;
window['AscDFH'].historyitem_MathBase_RFontsHAnsi = window['AscDFH'].historyitem_type_Math | 313;
window['AscDFH'].historyitem_MathBase_RFontsCS = window['AscDFH'].historyitem_type_Math | 314;
window['AscDFH'].historyitem_MathBase_RFontsEastAsia = window['AscDFH'].historyitem_type_Math | 315;
window['AscDFH'].historyitem_MathBase_RFontsHint = window['AscDFH'].historyitem_type_Math | 316;
window['AscDFH'].historyitem_MathBase_HighLight = window['AscDFH'].historyitem_type_Math | 317;
window['AscDFH'].historyitem_MathBase_ReviewType = window['AscDFH'].historyitem_type_Math | 318;
window['AscDFH'].historyitem_MathBase_TextFill = window['AscDFH'].historyitem_type_Math | 319;
window['AscDFH'].historyitem_MathBase_TextOutline = window['AscDFH'].historyitem_type_Math | 320;
window['AscDFH'].historyitem_MathBox_AlnAt = window['AscDFH'].historyitem_type_Math | 401;
window['AscDFH'].historyitem_MathBox_ForcedBreak = window['AscDFH'].historyitem_type_Math | 402;
window['AscDFH'].historyitem_MathFraction_Type = window['AscDFH'].historyitem_type_Math | 501;
window['AscDFH'].historyitem_MathRadical_HideDegree = window['AscDFH'].historyitem_type_Math | 601;
window['AscDFH'].historyitem_MathNary_LimLoc = window['AscDFH'].historyitem_type_Math | 701;
window['AscDFH'].historyitem_MathNary_UpperLimit = window['AscDFH'].historyitem_type_Math | 702;
window['AscDFH'].historyitem_MathNary_LowerLimit = window['AscDFH'].historyitem_type_Math | 703;
window['AscDFH'].historyitem_MathDelimiter_BegOper = window['AscDFH'].historyitem_type_Math | 801;
window['AscDFH'].historyitem_MathDelimiter_EndOper = window['AscDFH'].historyitem_type_Math | 802;
window['AscDFH'].historyitem_MathDelimiter_Grow = window['AscDFH'].historyitem_type_Math | 803;
window['AscDFH'].historyitem_MathDelimiter_Shape = window['AscDFH'].historyitem_type_Math | 804;
window['AscDFH'].historyitem_MathDelimiter_SetColumn = window['AscDFH'].historyitem_type_Math | 805;
window['AscDFH'].historyitem_MathGroupChar_Pr = window['AscDFH'].historyitem_type_Math | 901;
window['AscDFH'].historyitem_MathLimit_Type = window['AscDFH'].historyitem_type_Math | 1001;
window['AscDFH'].historyitem_MathBorderBox_Top = window['AscDFH'].historyitem_type_Math | 1101;
window['AscDFH'].historyitem_MathBorderBox_Bot = window['AscDFH'].historyitem_type_Math | 1102;
window['AscDFH'].historyitem_MathBorderBox_Left = window['AscDFH'].historyitem_type_Math | 1103;
window['AscDFH'].historyitem_MathBorderBox_Right = window['AscDFH'].historyitem_type_Math | 1104;
window['AscDFH'].historyitem_MathBorderBox_Hor = window['AscDFH'].historyitem_type_Math | 1105;
window['AscDFH'].historyitem_MathBorderBox_Ver = window['AscDFH'].historyitem_type_Math | 1106;
window['AscDFH'].historyitem_MathBorderBox_TopLTR = window['AscDFH'].historyitem_type_Math | 1107;
window['AscDFH'].historyitem_MathBorderBox_TopRTL = window['AscDFH'].historyitem_type_Math | 1108;
window['AscDFH'].historyitem_MathBar_LinePos = window['AscDFH'].historyitem_type_Math | 1201;
window['AscDFH'].historyitem_MathMatrix_AddRow = window['AscDFH'].historyitem_type_Math | 1301;
window['AscDFH'].historyitem_MathMatrix_RemoveRow = window['AscDFH'].historyitem_type_Math | 1302;
window['AscDFH'].historyitem_MathMatrix_AddColumn = window['AscDFH'].historyitem_type_Math | 1303;
window['AscDFH'].historyitem_MathMatrix_RemoveColumn = window['AscDFH'].historyitem_type_Math | 1304;
window['AscDFH'].historyitem_MathMatrix_BaseJc = window['AscDFH'].historyitem_type_Math | 1305;
window['AscDFH'].historyitem_MathMatrix_ColumnJc = window['AscDFH'].historyitem_type_Math | 1306;
window['AscDFH'].historyitem_MathMatrix_Interval = window['AscDFH'].historyitem_type_Math | 1307;
window['AscDFH'].historyitem_MathMatrix_Plh = window['AscDFH'].historyitem_type_Math | 1308;
window['AscDFH'].historyitem_MathDegree_SubSupType = window['AscDFH'].historyitem_type_Math | 1401;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaRun
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_ParaRun_AddItem = window['AscDFH'].historyitem_type_ParaRun | 1;
window['AscDFH'].historyitem_ParaRun_RemoveItem = window['AscDFH'].historyitem_type_ParaRun | 2;
window['AscDFH'].historyitem_ParaRun_Bold = window['AscDFH'].historyitem_type_ParaRun | 3;
window['AscDFH'].historyitem_ParaRun_Italic = window['AscDFH'].historyitem_type_ParaRun | 4;
window['AscDFH'].historyitem_ParaRun_Strikeout = window['AscDFH'].historyitem_type_ParaRun | 5;
window['AscDFH'].historyitem_ParaRun_Underline = window['AscDFH'].historyitem_type_ParaRun | 6;
window['AscDFH'].historyitem_ParaRun_FontFamily = window['AscDFH'].historyitem_type_ParaRun | 7; // obsolete
window['AscDFH'].historyitem_ParaRun_FontSize = window['AscDFH'].historyitem_type_ParaRun | 8;
window['AscDFH'].historyitem_ParaRun_Color = window['AscDFH'].historyitem_type_ParaRun | 9;
window['AscDFH'].historyitem_ParaRun_VertAlign = window['AscDFH'].historyitem_type_ParaRun | 10;
window['AscDFH'].historyitem_ParaRun_HighLight = window['AscDFH'].historyitem_type_ParaRun | 11;
window['AscDFH'].historyitem_ParaRun_RStyle = window['AscDFH'].historyitem_type_ParaRun | 12;
window['AscDFH'].historyitem_ParaRun_Spacing = window['AscDFH'].historyitem_type_ParaRun | 13;
window['AscDFH'].historyitem_ParaRun_DStrikeout = window['AscDFH'].historyitem_type_ParaRun | 14;
window['AscDFH'].historyitem_ParaRun_Caps = window['AscDFH'].historyitem_type_ParaRun | 15;
window['AscDFH'].historyitem_ParaRun_SmallCaps = window['AscDFH'].historyitem_type_ParaRun | 16;
window['AscDFH'].historyitem_ParaRun_Position = window['AscDFH'].historyitem_type_ParaRun | 17;
window['AscDFH'].historyitem_ParaRun_Value = window['AscDFH'].historyitem_type_ParaRun | 18; // obsolete
window['AscDFH'].historyitem_ParaRun_RFonts = window['AscDFH'].historyitem_type_ParaRun | 19;
window['AscDFH'].historyitem_ParaRun_Lang = window['AscDFH'].historyitem_type_ParaRun | 20;
window['AscDFH'].historyitem_ParaRun_RFonts_Ascii = window['AscDFH'].historyitem_type_ParaRun | 21;
window['AscDFH'].historyitem_ParaRun_RFonts_HAnsi = window['AscDFH'].historyitem_type_ParaRun | 22;
window['AscDFH'].historyitem_ParaRun_RFonts_CS = window['AscDFH'].historyitem_type_ParaRun | 23;
window['AscDFH'].historyitem_ParaRun_RFonts_EastAsia = window['AscDFH'].historyitem_type_ParaRun | 24;
window['AscDFH'].historyitem_ParaRun_RFonts_Hint = window['AscDFH'].historyitem_type_ParaRun | 25;
window['AscDFH'].historyitem_ParaRun_Lang_Bidi = window['AscDFH'].historyitem_type_ParaRun | 26;
window['AscDFH'].historyitem_ParaRun_Lang_EastAsia = window['AscDFH'].historyitem_type_ParaRun | 27;
window['AscDFH'].historyitem_ParaRun_Lang_Val = window['AscDFH'].historyitem_type_ParaRun | 28;
window['AscDFH'].historyitem_ParaRun_TextPr = window['AscDFH'].historyitem_type_ParaRun | 29;
window['AscDFH'].historyitem_ParaRun_Unifill = window['AscDFH'].historyitem_type_ParaRun | 30;
window['AscDFH'].historyitem_ParaRun_Shd = window['AscDFH'].historyitem_type_ParaRun | 31;
window['AscDFH'].historyitem_ParaRun_MathStyle = window['AscDFH'].historyitem_type_ParaRun | 32;
window['AscDFH'].historyitem_ParaRun_MathPrp = window['AscDFH'].historyitem_type_ParaRun | 33;
window['AscDFH'].historyitem_ParaRun_ReviewType = window['AscDFH'].historyitem_type_ParaRun | 34;
window['AscDFH'].historyitem_ParaRun_PrChange = window['AscDFH'].historyitem_type_ParaRun | 35;
window['AscDFH'].historyitem_ParaRun_TextFill = window['AscDFH'].historyitem_type_ParaRun | 36;
window['AscDFH'].historyitem_ParaRun_TextOutline = window['AscDFH'].historyitem_type_ParaRun | 37;
window['AscDFH'].historyitem_ParaRun_PrReviewInfo = window['AscDFH'].historyitem_type_ParaRun | 38;
window['AscDFH'].historyitem_ParaRun_ContentReviewInfo = window['AscDFH'].historyitem_type_ParaRun | 39;
window['AscDFH'].historyitem_ParaRun_OnStartSplit = window['AscDFH'].historyitem_type_ParaRun | 40;
window['AscDFH'].historyitem_ParaRun_OnEndSplit = window['AscDFH'].historyitem_type_ParaRun | 41;
window['AscDFH'].historyitem_ParaRun_MathAlnAt = window['AscDFH'].historyitem_type_ParaRun | 42;
window['AscDFH'].historyitem_ParaRun_MathForcedBreak = window['AscDFH'].historyitem_type_ParaRun | 43;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CSectionPr
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Section_PageSize_Orient = window['AscDFH'].historyitem_type_Section | 1;
window['AscDFH'].historyitem_Section_PageSize_Size = window['AscDFH'].historyitem_type_Section | 2;
window['AscDFH'].historyitem_Section_PageMargins = window['AscDFH'].historyitem_type_Section | 3;
window['AscDFH'].historyitem_Section_Type = window['AscDFH'].historyitem_type_Section | 4;
window['AscDFH'].historyitem_Section_Borders_Left = window['AscDFH'].historyitem_type_Section | 5;
window['AscDFH'].historyitem_Section_Borders_Top = window['AscDFH'].historyitem_type_Section | 6;
window['AscDFH'].historyitem_Section_Borders_Right = window['AscDFH'].historyitem_type_Section | 7;
window['AscDFH'].historyitem_Section_Borders_Bottom = window['AscDFH'].historyitem_type_Section | 8;
window['AscDFH'].historyitem_Section_Borders_Display = window['AscDFH'].historyitem_type_Section | 9;
window['AscDFH'].historyitem_Section_Borders_OffsetFrom = window['AscDFH'].historyitem_type_Section | 10;
window['AscDFH'].historyitem_Section_Borders_ZOrder = window['AscDFH'].historyitem_type_Section | 11;
window['AscDFH'].historyitem_Section_Header_First = window['AscDFH'].historyitem_type_Section | 12;
window['AscDFH'].historyitem_Section_Header_Even = window['AscDFH'].historyitem_type_Section | 13;
window['AscDFH'].historyitem_Section_Header_Default = window['AscDFH'].historyitem_type_Section | 14;
window['AscDFH'].historyitem_Section_Footer_First = window['AscDFH'].historyitem_type_Section | 15;
window['AscDFH'].historyitem_Section_Footer_Even = window['AscDFH'].historyitem_type_Section | 16;
window['AscDFH'].historyitem_Section_Footer_Default = window['AscDFH'].historyitem_type_Section | 17;
window['AscDFH'].historyitem_Section_TitlePage = window['AscDFH'].historyitem_type_Section | 18;
window['AscDFH'].historyitem_Section_PageMargins_Header = window['AscDFH'].historyitem_type_Section | 19;
window['AscDFH'].historyitem_Section_PageMargins_Footer = window['AscDFH'].historyitem_type_Section | 20;
window['AscDFH'].historyitem_Section_PageNumType_Start = window['AscDFH'].historyitem_type_Section | 21;
window['AscDFH'].historyitem_Section_Columns_EqualWidth = window['AscDFH'].historyitem_type_Section | 22;
window['AscDFH'].historyitem_Section_Columns_Space = window['AscDFH'].historyitem_type_Section | 23;
window['AscDFH'].historyitem_Section_Columns_Num = window['AscDFH'].historyitem_type_Section | 24;
window['AscDFH'].historyitem_Section_Columns_Sep = window['AscDFH'].historyitem_type_Section | 25;
window['AscDFH'].historyitem_Section_Columns_Col = window['AscDFH'].historyitem_type_Section | 26;
window['AscDFH'].historyitem_Section_Columns_SetCols = window['AscDFH'].historyitem_type_Section | 27;
window['AscDFH'].historyitem_Section_Footnote_Pos = window['AscDFH'].historyitem_type_Section | 28;
window['AscDFH'].historyitem_Section_Footnote_NumStart = window['AscDFH'].historyitem_type_Section | 29;
window['AscDFH'].historyitem_Section_Footnote_NumRestart = window['AscDFH'].historyitem_type_Section | 30;
window['AscDFH'].historyitem_Section_Footnote_NumFormat = window['AscDFH'].historyitem_type_Section | 31;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaComment
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_ParaComment_CommentId = window['AscDFH'].historyitem_type_ParaComment | 1;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе ParaField
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Field_AddItem = window['AscDFH'].historyitem_type_Field | 1;
window['AscDFH'].historyitem_Field_RemoveItem = window['AscDFH'].historyitem_type_Field | 2;
window['AscDFH'].historyitem_Field_FormFieldName = window['AscDFH'].historyitem_type_Field | 3;
window['AscDFH'].historyitem_Field_FormFieldDefaultText = window['AscDFH'].historyitem_type_Field | 4;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе Footnotes
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Footnotes_AddFootnote = window['AscDFH'].historyitem_type_Footnotes | 1;
window['AscDFH'].historyitem_Footnotes_SetSeparator = window['AscDFH'].historyitem_type_Footnotes | 2;
window['AscDFH'].historyitem_Footnotes_SetContinuationSeparator = window['AscDFH'].historyitem_type_Footnotes | 3;
window['AscDFH'].historyitem_Footnotes_SetContinuationNotice = window['AscDFH'].historyitem_type_Footnotes | 4;
window['AscDFH'].historyitem_Footnotes_SetFootnotePrPos = window['AscDFH'].historyitem_type_Footnotes | 5;
window['AscDFH'].historyitem_Footnotes_SetFootnotePrNumStart = window['AscDFH'].historyitem_type_Footnotes | 6;
window['AscDFH'].historyitem_Footnotes_SetFootnotePrNumRestart = window['AscDFH'].historyitem_type_Footnotes | 7;
window['AscDFH'].historyitem_Footnotes_SetFootnotePrNumFormat = window['AscDFH'].historyitem_type_Footnotes | 8;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений в классе CSdtPr
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_SdtPr_Alias = window['AscDFH'].historyitem_type_SdtPr | 1;
window['AscDFH'].historyitem_SdtPr_Id = window['AscDFH'].historyitem_type_SdtPr | 2;
window['AscDFH'].historyitem_SdtPr_Tag = window['AscDFH'].historyitem_type_SdtPr | 3;
window['AscDFH'].historyitem_SdtPr_Label = window['AscDFH'].historyitem_type_SdtPr | 4;
window['AscDFH'].historyitem_SdtPr_Lock = window['AscDFH'].historyitem_type_SdtPr | 5;
window['AscDFH'].historyitem_SdtPr_DocPartObj = window['AscDFH'].historyitem_type_SdtPr | 6;
window['AscDFH'].historyitem_SdtPr_Appearance = window['AscDFH'].historyitem_type_SdtPr | 7;
window['AscDFH'].historyitem_SdtPr_Color = window['AscDFH'].historyitem_type_SdtPr | 8;
//------------------------------------------------------------------------------------------------------------------
// Графические классы общего назначение (без привязки к конкретному классу)
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_AutoShapes_SetDrawingBaseCoors = window['AscDFH'].historyitem_type_CommonShape | 101;
window['AscDFH'].historyitem_AutoShapes_SetWorksheet = window['AscDFH'].historyitem_type_CommonShape | 102;
window['AscDFH'].historyitem_AutoShapes_AddToDrawingObjects = window['AscDFH'].historyitem_type_CommonShape | 103;
window['AscDFH'].historyitem_AutoShapes_RemoveFromDrawingObjects = window['AscDFH'].historyitem_type_CommonShape | 104;
window['AscDFH'].historyitem_AutoShapes_SetBFromSerialize = window['AscDFH'].historyitem_type_CommonShape | 105;
window['AscDFH'].historyitem_AutoShapes_SetLocks = window['AscDFH'].historyitem_type_CommonShape | 106;
window['AscDFH'].historyitem_AutoShapes_SetDrawingBaseType = window['AscDFH'].historyitem_type_CommonShape | 107;
window['AscDFH'].historyitem_AutoShapes_SetDrawingBaseExt = window['AscDFH'].historyitem_type_CommonShape | 108;
window['AscDFH'].historyitem_AutoShapes_SetDrawingBasePos = window['AscDFH'].historyitem_type_CommonShape | 109;
window['AscDFH'].historyitem_ChartFormatSetChart = window['AscDFH'].historyitem_type_CommonShape | 201;
window['AscDFH'].historyitem_CommonChart_RemoveSeries = window['AscDFH'].historyitem_type_CommonShape | 301;
window['AscDFH'].historyitem_CommonSeries_RemoveDPt = window['AscDFH'].historyitem_type_CommonShape | 302;
window['AscDFH'].historyitem_CommonLit_RemoveDPt = window['AscDFH'].historyitem_type_CommonShape | 303;
window['AscDFH'].historyitem_CommonChartFormat_SetParent = window['AscDFH'].historyitem_type_CommonShape | 304;
window['AscDFH'].historyitem_Common_AddWatermark = window['AscDFH'].historyitem_type_CommonShape | 401;
//------------------------------------------------------------------------------------------------------------------
// Графические классы
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_Presentation_AddSlide = window['AscDFH'].historyitem_type_Presentation | 1;
window['AscDFH'].historyitem_Presentation_RemoveSlide = window['AscDFH'].historyitem_type_Presentation | 2;
window['AscDFH'].historyitem_Presentation_SlideSize = window['AscDFH'].historyitem_type_Presentation | 3;
window['AscDFH'].historyitem_Presentation_AddSlideMaster = window['AscDFH'].historyitem_type_Presentation | 4;
window['AscDFH'].historyitem_Presentation_ChangeTheme = window['AscDFH'].historyitem_type_Presentation | 5;
window['AscDFH'].historyitem_Presentation_ChangeColorScheme = window['AscDFH'].historyitem_type_Presentation | 6;
window['AscDFH'].historyitem_Presentation_SetShowPr = window['AscDFH'].historyitem_type_Presentation | 7;
window['AscDFH'].historyitem_Presentation_SetDefaultTextStyle = window['AscDFH'].historyitem_type_Presentation | 8;
window['AscDFH'].historyitem_Presentation_AddSection = window['AscDFH'].historyitem_type_Presentation | 9;
window['AscDFH'].historyitem_Presentation_RemoveSection = window['AscDFH'].historyitem_type_Presentation | 10;
window['AscDFH'].historyitem_ColorMod_SetName = window['AscDFH'].historyitem_type_ColorMod | 1;
window['AscDFH'].historyitem_ColorMod_SetVal = window['AscDFH'].historyitem_type_ColorMod | 2;
window['AscDFH'].historyitem_ColorModifiers_AddColorMod = window['AscDFH'].historyitem_type_ColorModifiers | 1;
window['AscDFH'].historyitem_ColorModifiers_RemoveColorMod = window['AscDFH'].historyitem_type_ColorModifiers | 2;
window['AscDFH'].historyitem_SysColor_SetId = window['AscDFH'].historyitem_type_SysColor | 1;
window['AscDFH'].historyitem_SysColor_SetR = window['AscDFH'].historyitem_type_SysColor | 2;
window['AscDFH'].historyitem_SysColor_SetG = window['AscDFH'].historyitem_type_SysColor | 3;
window['AscDFH'].historyitem_SysColor_SetB = window['AscDFH'].historyitem_type_SysColor | 4;
window['AscDFH'].historyitem_PrstColor_SetId = window['AscDFH'].historyitem_type_PrstColor | 1;
window['AscDFH'].historyitem_RGBColor_SetColor = window['AscDFH'].historyitem_type_RGBColor | 1;
window['AscDFH'].historyitem_SchemeColor_SetId = window['AscDFH'].historyitem_type_SchemeColor | 1;
window['AscDFH'].historyitem_UniColor_SetColor = window['AscDFH'].historyitem_type_UniColor | 1;
window['AscDFH'].historyitem_UniColor_SetMods = window['AscDFH'].historyitem_type_UniColor | 2;
window['AscDFH'].historyitem_SrcRect_SetLTRB = window['AscDFH'].historyitem_type_SrcRect | 1;
window['AscDFH'].historyitem_BlipFill_SetRasterImageId = window['AscDFH'].historyitem_type_BlipFill | 1;
window['AscDFH'].historyitem_BlipFill_SetVectorImageBin = window['AscDFH'].historyitem_type_BlipFill | 2;
window['AscDFH'].historyitem_BlipFill_SetSrcRect = window['AscDFH'].historyitem_type_BlipFill | 3;
window['AscDFH'].historyitem_BlipFill_SetStretch = window['AscDFH'].historyitem_type_BlipFill | 4;
window['AscDFH'].historyitem_BlipFill_SetTile = window['AscDFH'].historyitem_type_BlipFill | 5;
window['AscDFH'].historyitem_BlipFill_SetRotWithShape = window['AscDFH'].historyitem_type_BlipFill | 6;
window['AscDFH'].historyitem_SolidFill_SetColor = window['AscDFH'].historyitem_type_SolidFill | 1;
window['AscDFH'].historyitem_Gs_SetColor = window['AscDFH'].historyitem_type_Gs | 1;
window['AscDFH'].historyitem_Gs_SetPos = window['AscDFH'].historyitem_type_Gs | 2;
window['AscDFH'].historyitem_GradLin_SetAngle = window['AscDFH'].historyitem_type_GradLin | 1;
window['AscDFH'].historyitem_GradLin_SetScale = window['AscDFH'].historyitem_type_GradLin | 2;
window['AscDFH'].historyitem_GradPath_SetPath = window['AscDFH'].historyitem_type_GradPath | 1;
window['AscDFH'].historyitem_GradPath_SetRect = window['AscDFH'].historyitem_type_GradPath | 2;
window['AscDFH'].historyitem_GradFill_AddColor = window['AscDFH'].historyitem_type_GradFill | 1;
window['AscDFH'].historyitem_GradFill_SetLin = window['AscDFH'].historyitem_type_GradFill | 2;
window['AscDFH'].historyitem_GradFill_SetPath = window['AscDFH'].historyitem_type_GradFill | 3;
window['AscDFH'].historyitem_PathFill_SetFType = window['AscDFH'].historyitem_type_PathFill | 1;
window['AscDFH'].historyitem_PathFill_SetFgClr = window['AscDFH'].historyitem_type_PathFill | 2;
window['AscDFH'].historyitem_PathFill_SetBgClr = window['AscDFH'].historyitem_type_PathFill | 3;
window['AscDFH'].historyitem_UniFill_SetFill = window['AscDFH'].historyitem_type_UniFill | 1;
window['AscDFH'].historyitem_UniFill_SetTransparent = window['AscDFH'].historyitem_type_UniFill | 2;
window['AscDFH'].historyitem_EndArrow_SetType = window['AscDFH'].historyitem_type_EndArrow | 1;
window['AscDFH'].historyitem_EndArrow_SetLen = window['AscDFH'].historyitem_type_EndArrow | 2;
window['AscDFH'].historyitem_EndArrow_SetW = window['AscDFH'].historyitem_type_EndArrow | 3;
window['AscDFH'].historyitem_LineJoin_SetType = window['AscDFH'].historyitem_type_LineJoin | 1;
window['AscDFH'].historyitem_LineJoin_SetLimit = window['AscDFH'].historyitem_type_LineJoin | 2;
window['AscDFH'].historyitem_Ln_SetFill = window['AscDFH'].historyitem_type_Ln | 1;
window['AscDFH'].historyitem_Ln_SetPrstDash = window['AscDFH'].historyitem_type_Ln | 2;
window['AscDFH'].historyitem_Ln_SetJoin = window['AscDFH'].historyitem_type_Ln | 3;
window['AscDFH'].historyitem_Ln_SetHeadEnd = window['AscDFH'].historyitem_type_Ln | 4;
window['AscDFH'].historyitem_Ln_SetTailEnd = window['AscDFH'].historyitem_type_Ln | 5;
window['AscDFH'].historyitem_Ln_SetAlgn = window['AscDFH'].historyitem_type_Ln | 6;
window['AscDFH'].historyitem_Ln_SetCap = window['AscDFH'].historyitem_type_Ln | 7;
window['AscDFH'].historyitem_Ln_SetCmpd = window['AscDFH'].historyitem_type_Ln | 8;
window['AscDFH'].historyitem_Ln_SetW = window['AscDFH'].historyitem_type_Ln | 9;
window['AscDFH'].historyitem_DefaultShapeDefinition_SetSpPr = window['AscDFH'].historyitem_type_DefaultShapeDefinition | 1;
window['AscDFH'].historyitem_DefaultShapeDefinition_SetBodyPr = window['AscDFH'].historyitem_type_DefaultShapeDefinition | 2;
window['AscDFH'].historyitem_DefaultShapeDefinition_SetLstStyle = window['AscDFH'].historyitem_type_DefaultShapeDefinition | 3;
window['AscDFH'].historyitem_DefaultShapeDefinition_SetStyle = window['AscDFH'].historyitem_type_DefaultShapeDefinition | 4;
window['AscDFH'].historyitem_CNvPr_SetId = window['AscDFH'].historyitem_type_CNvPr | 1;
window['AscDFH'].historyitem_CNvPr_SetName = window['AscDFH'].historyitem_type_CNvPr | 2;
window['AscDFH'].historyitem_CNvPr_SetIsHidden = window['AscDFH'].historyitem_type_CNvPr | 3;
window['AscDFH'].historyitem_CNvPr_SetDescr = window['AscDFH'].historyitem_type_CNvPr | 4;
window['AscDFH'].historyitem_CNvPr_SetTitle = window['AscDFH'].historyitem_type_CNvPr | 5;
window['AscDFH'].historyitem_CNvPr_SetHlinkClick = window['AscDFH'].historyitem_type_CNvPr | 6;
window['AscDFH'].historyitem_CNvPr_SetHlinkHover = window['AscDFH'].historyitem_type_CNvPr | 7;
window['AscDFH'].historyitem_NvPr_SetIsPhoto = window['AscDFH'].historyitem_type_NvPr | 1;
window['AscDFH'].historyitem_NvPr_SetUserDrawn = window['AscDFH'].historyitem_type_NvPr | 2;
window['AscDFH'].historyitem_NvPr_SetPh = window['AscDFH'].historyitem_type_NvPr | 3;
window['AscDFH'].historyitem_NvPr_SetUniMedia = window['AscDFH'].historyitem_type_NvPr | 4;
window['AscDFH'].historyitem_Ph_SetHasCustomPrompt = window['AscDFH'].historyitem_type_Ph | 1;
window['AscDFH'].historyitem_Ph_SetIdx = window['AscDFH'].historyitem_type_Ph | 2;
window['AscDFH'].historyitem_Ph_SetOrient = window['AscDFH'].historyitem_type_Ph | 3;
window['AscDFH'].historyitem_Ph_SetSz = window['AscDFH'].historyitem_type_Ph | 4;
window['AscDFH'].historyitem_Ph_SetType = window['AscDFH'].historyitem_type_Ph | 5;
window['AscDFH'].historyitem_UniNvPr_SetCNvPr = window['AscDFH'].historyitem_type_UniNvPr | 1;
window['AscDFH'].historyitem_UniNvPr_SetUniPr = window['AscDFH'].historyitem_type_UniNvPr | 2;
window['AscDFH'].historyitem_UniNvPr_SetNvPr = window['AscDFH'].historyitem_type_UniNvPr | 3;
window['AscDFH'].historyitem_UniNvPr_SetUniSpPr = window['AscDFH'].historyitem_type_UniNvPr | 4;
window['AscDFH'].historyitem_StyleRef_SetIdx = window['AscDFH'].historyitem_type_StyleRef | 1;
window['AscDFH'].historyitem_StyleRef_SetColor = window['AscDFH'].historyitem_type_StyleRef | 2;
window['AscDFH'].historyitem_FontRef_SetIdx = window['AscDFH'].historyitem_type_FontRef | 1;
window['AscDFH'].historyitem_FontRef_SetColor = window['AscDFH'].historyitem_type_FontRef | 2;
window['AscDFH'].historyitem_Chart_SetAutoTitleDeleted = window['AscDFH'].historyitem_type_Chart | 1;
window['AscDFH'].historyitem_Chart_SetBackWall = window['AscDFH'].historyitem_type_Chart | 2;
window['AscDFH'].historyitem_Chart_SetDispBlanksAs = window['AscDFH'].historyitem_type_Chart | 3;
window['AscDFH'].historyitem_Chart_SetFloor = window['AscDFH'].historyitem_type_Chart | 4;
window['AscDFH'].historyitem_Chart_SetLegend = window['AscDFH'].historyitem_type_Chart | 5;
window['AscDFH'].historyitem_Chart_AddPivotFmt = window['AscDFH'].historyitem_type_Chart | 6;
window['AscDFH'].historyitem_Chart_SetPlotArea = window['AscDFH'].historyitem_type_Chart | 7;
window['AscDFH'].historyitem_Chart_SetPlotVisOnly = window['AscDFH'].historyitem_type_Chart | 8;
window['AscDFH'].historyitem_Chart_SetShowDLblsOverMax = window['AscDFH'].historyitem_type_Chart | 9;
window['AscDFH'].historyitem_Chart_SetSideWall = window['AscDFH'].historyitem_type_Chart | 10;
window['AscDFH'].historyitem_Chart_SetTitle = window['AscDFH'].historyitem_type_Chart | 11;
window['AscDFH'].historyitem_Chart_SetView3D = window['AscDFH'].historyitem_type_Chart | 12;
window['AscDFH'].historyitem_ChartSpace_SetChart = window['AscDFH'].historyitem_type_ChartSpace | 1;
window['AscDFH'].historyitem_ChartSpace_SetClrMapOvr = window['AscDFH'].historyitem_type_ChartSpace | 2;
window['AscDFH'].historyitem_ChartSpace_SetDate1904 = window['AscDFH'].historyitem_type_ChartSpace | 3;
window['AscDFH'].historyitem_ChartSpace_SetExternalData = window['AscDFH'].historyitem_type_ChartSpace | 4;
window['AscDFH'].historyitem_ChartSpace_SetLang = window['AscDFH'].historyitem_type_ChartSpace | 5;
window['AscDFH'].historyitem_ChartSpace_SetPivotSource = window['AscDFH'].historyitem_type_ChartSpace | 6;
window['AscDFH'].historyitem_ChartSpace_SetPrintSettings = window['AscDFH'].historyitem_type_ChartSpace | 7;
window['AscDFH'].historyitem_ChartSpace_SetProtection = window['AscDFH'].historyitem_type_ChartSpace | 8;
window['AscDFH'].historyitem_ChartSpace_SetRoundedCorners = window['AscDFH'].historyitem_type_ChartSpace | 9;
window['AscDFH'].historyitem_ChartSpace_SetSpPr = window['AscDFH'].historyitem_type_ChartSpace | 10;
window['AscDFH'].historyitem_ChartSpace_SetStyle = window['AscDFH'].historyitem_type_ChartSpace | 11;
window['AscDFH'].historyitem_ChartSpace_SetTxPr = window['AscDFH'].historyitem_type_ChartSpace | 12;
window['AscDFH'].historyitem_ChartSpace_SetUserShapes = window['AscDFH'].historyitem_type_ChartSpace | 13;
window['AscDFH'].historyitem_ChartSpace_SetThemeOverride = window['AscDFH'].historyitem_type_ChartSpace | 14;
window['AscDFH'].historyitem_ChartSpace_SetGroup = window['AscDFH'].historyitem_type_ChartSpace | 15;
window['AscDFH'].historyitem_ChartSpace_SetParent = window['AscDFH'].historyitem_type_ChartSpace | 16;
window['AscDFH'].historyitem_ChartSpace_SetNvGrFrProps = window['AscDFH'].historyitem_type_ChartSpace | 17;
window['AscDFH'].historyitem_Legend_SetLayout = window['AscDFH'].historyitem_type_Legend | 1;
window['AscDFH'].historyitem_Legend_AddLegendEntry = window['AscDFH'].historyitem_type_Legend | 2;
window['AscDFH'].historyitem_Legend_SetLegendPos = window['AscDFH'].historyitem_type_Legend | 3;
window['AscDFH'].historyitem_Legend_SetOverlay = window['AscDFH'].historyitem_type_Legend | 4;
window['AscDFH'].historyitem_Legend_SetSpPr = window['AscDFH'].historyitem_type_Legend | 5;
window['AscDFH'].historyitem_Legend_SetTxPr = window['AscDFH'].historyitem_type_Legend | 6;
window['AscDFH'].historyitem_Layout_SetH = window['AscDFH'].historyitem_type_Layout | 1;
window['AscDFH'].historyitem_Layout_SetHMode = window['AscDFH'].historyitem_type_Layout | 2;
window['AscDFH'].historyitem_Layout_SetLayoutTarget = window['AscDFH'].historyitem_type_Layout | 3;
window['AscDFH'].historyitem_Layout_SetW = window['AscDFH'].historyitem_type_Layout | 4;
window['AscDFH'].historyitem_Layout_SetWMode = window['AscDFH'].historyitem_type_Layout | 5;
window['AscDFH'].historyitem_Layout_SetX = window['AscDFH'].historyitem_type_Layout | 6;
window['AscDFH'].historyitem_Layout_SetXMode = window['AscDFH'].historyitem_type_Layout | 7;
window['AscDFH'].historyitem_Layout_SetY = window['AscDFH'].historyitem_type_Layout | 8;
window['AscDFH'].historyitem_Layout_SetYMode = window['AscDFH'].historyitem_type_Layout | 9;
window['AscDFH'].historyitem_LegendEntry_SetDelete = window['AscDFH'].historyitem_type_LegendEntry | 1;
window['AscDFH'].historyitem_LegendEntry_SetIdx = window['AscDFH'].historyitem_type_LegendEntry | 2;
window['AscDFH'].historyitem_LegendEntry_SetTxPr = window['AscDFH'].historyitem_type_LegendEntry | 3;
window['AscDFH'].historyitem_PivotFmt_SetDLbl = window['AscDFH'].historyitem_type_PivotFmt | 1;
window['AscDFH'].historyitem_PivotFmt_SetIdx = window['AscDFH'].historyitem_type_PivotFmt | 2;
window['AscDFH'].historyitem_PivotFmt_SetMarker = window['AscDFH'].historyitem_type_PivotFmt | 3;
window['AscDFH'].historyitem_PivotFmt_SetSpPr = window['AscDFH'].historyitem_type_PivotFmt | 4;
window['AscDFH'].historyitem_PivotFmt_SetTxPr = window['AscDFH'].historyitem_type_PivotFmt | 5;
window['AscDFH'].historyitem_DLbl_SetDelete = window['AscDFH'].historyitem_type_DLbl | 1;
window['AscDFH'].historyitem_DLbl_SetDLblPos = window['AscDFH'].historyitem_type_DLbl | 2;
window['AscDFH'].historyitem_DLbl_SetIdx = window['AscDFH'].historyitem_type_DLbl | 3;
window['AscDFH'].historyitem_DLbl_SetLayout = window['AscDFH'].historyitem_type_DLbl | 4;
window['AscDFH'].historyitem_DLbl_SetNumFmt = window['AscDFH'].historyitem_type_DLbl | 5;
window['AscDFH'].historyitem_DLbl_SetSeparator = window['AscDFH'].historyitem_type_DLbl | 6;
window['AscDFH'].historyitem_DLbl_SetShowBubbleSize = window['AscDFH'].historyitem_type_DLbl | 7;
window['AscDFH'].historyitem_DLbl_SetShowCatName = window['AscDFH'].historyitem_type_DLbl | 8;
window['AscDFH'].historyitem_DLbl_SetShowLegendKey = window['AscDFH'].historyitem_type_DLbl | 9;
window['AscDFH'].historyitem_DLbl_SetShowPercent = window['AscDFH'].historyitem_type_DLbl | 10;
window['AscDFH'].historyitem_DLbl_SetShowSerName = window['AscDFH'].historyitem_type_DLbl | 11;
window['AscDFH'].historyitem_DLbl_SetShowVal = window['AscDFH'].historyitem_type_DLbl | 12;
window['AscDFH'].historyitem_DLbl_SetSpPr = window['AscDFH'].historyitem_type_DLbl | 13;
window['AscDFH'].historyitem_DLbl_SetTx = window['AscDFH'].historyitem_type_DLbl | 14;
window['AscDFH'].historyitem_DLbl_SetTxPr = window['AscDFH'].historyitem_type_DLbl | 15;
window['AscDFH'].historyitem_Marker_SetSize = window['AscDFH'].historyitem_type_Marker | 1;
window['AscDFH'].historyitem_Marker_SetSpPr = window['AscDFH'].historyitem_type_Marker | 2;
window['AscDFH'].historyitem_Marker_SetSymbol = window['AscDFH'].historyitem_type_Marker | 3;
window['AscDFH'].historyitem_PlotArea_AddChart = window['AscDFH'].historyitem_type_PlotArea | 1;
window['AscDFH'].historyitem_PlotArea_SetCatAx = window['AscDFH'].historyitem_type_PlotArea | 2;
window['AscDFH'].historyitem_PlotArea_SetDateAx = window['AscDFH'].historyitem_type_PlotArea | 3;
window['AscDFH'].historyitem_PlotArea_SetDTable = window['AscDFH'].historyitem_type_PlotArea | 4;
window['AscDFH'].historyitem_PlotArea_SetLayout = window['AscDFH'].historyitem_type_PlotArea | 5;
window['AscDFH'].historyitem_PlotArea_SetSerAx = window['AscDFH'].historyitem_type_PlotArea | 6;
window['AscDFH'].historyitem_PlotArea_SetSpPr = window['AscDFH'].historyitem_type_PlotArea | 7;
window['AscDFH'].historyitem_PlotArea_SetValAx = window['AscDFH'].historyitem_type_PlotArea | 8;
window['AscDFH'].historyitem_PlotArea_AddAxis = window['AscDFH'].historyitem_type_PlotArea | 9;
window['AscDFH'].historyitem_PlotArea_RemoveChart = window['AscDFH'].historyitem_type_PlotArea | 10;
window['AscDFH'].historyitem_PlotArea_RemoveAxis = window['AscDFH'].historyitem_type_PlotArea | 11;
window['AscDFH'].historyitem_NumFmt_SetFormatCode = window['AscDFH'].historyitem_type_NumFmt | 1;
window['AscDFH'].historyitem_NumFmt_SetSourceLinked = window['AscDFH'].historyitem_type_NumFmt | 2;
window['AscDFH'].historyitem_Scaling_SetLogBase = window['AscDFH'].historyitem_type_Scaling | 1;
window['AscDFH'].historyitem_Scaling_SetMax = window['AscDFH'].historyitem_type_Scaling | 2;
window['AscDFH'].historyitem_Scaling_SetMin = window['AscDFH'].historyitem_type_Scaling | 3;
window['AscDFH'].historyitem_Scaling_SetOrientation = window['AscDFH'].historyitem_type_Scaling | 4;
window['AscDFH'].historyitem_Scaling_SetParent = window['AscDFH'].historyitem_type_Scaling | 5;
window['AscDFH'].historyitem_DTable_SetShowHorzBorder = window['AscDFH'].historyitem_type_DTable | 1;
window['AscDFH'].historyitem_DTable_SetShowKeys = window['AscDFH'].historyitem_type_DTable | 2;
window['AscDFH'].historyitem_DTable_SetShowOutline = window['AscDFH'].historyitem_type_DTable | 3;
window['AscDFH'].historyitem_DTable_SetShowVertBorder = window['AscDFH'].historyitem_type_DTable | 4;
window['AscDFH'].historyitem_DTable_SetSpPr = window['AscDFH'].historyitem_type_DTable | 5;
window['AscDFH'].historyitem_DTable_SetTxPr = window['AscDFH'].historyitem_type_DTable | 6;
window['AscDFH'].historyitem_LineChart_AddAxId = window['AscDFH'].historyitem_type_LineChart | 1;
window['AscDFH'].historyitem_LineChart_SetDLbls = window['AscDFH'].historyitem_type_LineChart | 2;
window['AscDFH'].historyitem_LineChart_SetDropLines = window['AscDFH'].historyitem_type_LineChart | 3;
window['AscDFH'].historyitem_LineChart_SetGrouping = window['AscDFH'].historyitem_type_LineChart | 4;
window['AscDFH'].historyitem_LineChart_SetHiLowLines = window['AscDFH'].historyitem_type_LineChart | 5;
window['AscDFH'].historyitem_LineChart_SetMarker = window['AscDFH'].historyitem_type_LineChart | 6;
window['AscDFH'].historyitem_LineChart_AddSer = window['AscDFH'].historyitem_type_LineChart | 7;
window['AscDFH'].historyitem_LineChart_SetSmooth = window['AscDFH'].historyitem_type_LineChart | 8;
window['AscDFH'].historyitem_LineChart_SetUpDownBars = window['AscDFH'].historyitem_type_LineChart | 9;
window['AscDFH'].historyitem_LineChart_SetVaryColors = window['AscDFH'].historyitem_type_LineChart | 10;
window['AscDFH'].historyitem_DLbls_SetDelete = window['AscDFH'].historyitem_type_DLbls | 1;
window['AscDFH'].historyitem_DLbls_SetDLbl = window['AscDFH'].historyitem_type_DLbls | 2;
window['AscDFH'].historyitem_DLbls_SetDLblPos = window['AscDFH'].historyitem_type_DLbls | 3;
window['AscDFH'].historyitem_DLbls_SetLeaderLines = window['AscDFH'].historyitem_type_DLbls | 4;
window['AscDFH'].historyitem_DLbls_SetNumFmt = window['AscDFH'].historyitem_type_DLbls | 5;
window['AscDFH'].historyitem_DLbls_SetSeparator = window['AscDFH'].historyitem_type_DLbls | 6;
window['AscDFH'].historyitem_DLbls_SetShowBubbleSize = window['AscDFH'].historyitem_type_DLbls | 7;
window['AscDFH'].historyitem_DLbls_SetShowCatName = window['AscDFH'].historyitem_type_DLbls | 8;
window['AscDFH'].historyitem_DLbls_SetShowLeaderLines = window['AscDFH'].historyitem_type_DLbls | 9;
window['AscDFH'].historyitem_DLbls_SetShowLegendKey = window['AscDFH'].historyitem_type_DLbls | 10;
window['AscDFH'].historyitem_DLbls_SetShowPercent = window['AscDFH'].historyitem_type_DLbls | 11;
window['AscDFH'].historyitem_DLbls_SetShowSerName = window['AscDFH'].historyitem_type_DLbls | 12;
window['AscDFH'].historyitem_DLbls_SetShowVal = window['AscDFH'].historyitem_type_DLbls | 13;
window['AscDFH'].historyitem_DLbls_SetSpPr = window['AscDFH'].historyitem_type_DLbls | 14;
window['AscDFH'].historyitem_DLbls_SetTxPr = window['AscDFH'].historyitem_type_DLbls | 15;
window['AscDFH'].historyitem_UpDownBars_SetDownBars = window['AscDFH'].historyitem_type_UpDownBars | 1;
window['AscDFH'].historyitem_UpDownBars_SetGapWidth = window['AscDFH'].historyitem_type_UpDownBars | 2;
window['AscDFH'].historyitem_UpDownBars_SetUpBars = window['AscDFH'].historyitem_type_UpDownBars | 3;
window['AscDFH'].historyitem_BarChart_AddAxId = window['AscDFH'].historyitem_type_BarChart | 1;
window['AscDFH'].historyitem_BarChart_SetBarDir = window['AscDFH'].historyitem_type_BarChart | 2;
window['AscDFH'].historyitem_BarChart_SetDLbls = window['AscDFH'].historyitem_type_BarChart | 3;
window['AscDFH'].historyitem_BarChart_SetGapWidth = window['AscDFH'].historyitem_type_BarChart | 4;
window['AscDFH'].historyitem_BarChart_SetGrouping = window['AscDFH'].historyitem_type_BarChart | 5;
window['AscDFH'].historyitem_BarChart_SetOverlap = window['AscDFH'].historyitem_type_BarChart | 6;
window['AscDFH'].historyitem_BarChart_AddSer = window['AscDFH'].historyitem_type_BarChart | 7;
window['AscDFH'].historyitem_BarChart_SetSerLines = window['AscDFH'].historyitem_type_BarChart | 8;
window['AscDFH'].historyitem_BarChart_SetVaryColors = window['AscDFH'].historyitem_type_BarChart | 9;
window['AscDFH'].historyitem_BarChart_Set3D = window['AscDFH'].historyitem_type_BarChart | 10;
window['AscDFH'].historyitem_BarChart_SetGapDepth = window['AscDFH'].historyitem_type_BarChart | 11;
window['AscDFH'].historyitem_BarChart_SetShape = window['AscDFH'].historyitem_type_BarChart | 12;
window['AscDFH'].historyitem_BubbleChart_AddAxId = window['AscDFH'].historyitem_type_BubbleChart | 1;
window['AscDFH'].historyitem_BubbleChart_SetBubble3D = window['AscDFH'].historyitem_type_BubbleChart | 2;
window['AscDFH'].historyitem_BubbleChart_SetBubbleScale = window['AscDFH'].historyitem_type_BubbleChart | 3;
window['AscDFH'].historyitem_BubbleChart_SetDLbls = window['AscDFH'].historyitem_type_BubbleChart | 4;
window['AscDFH'].historyitem_BubbleChart_AddSerie = window['AscDFH'].historyitem_type_BubbleChart | 5;
window['AscDFH'].historyitem_BubbleChart_SetShowNegBubbles = window['AscDFH'].historyitem_type_BubbleChart | 6;
window['AscDFH'].historyitem_BubbleChart_SetSizeRepresents = window['AscDFH'].historyitem_type_BubbleChart | 7;
window['AscDFH'].historyitem_BubbleChart_SetVaryColors = window['AscDFH'].historyitem_type_BubbleChart | 8;
window['AscDFH'].historyitem_DoughnutChart_SetDLbls = window['AscDFH'].historyitem_type_DoughnutChart | 1;
window['AscDFH'].historyitem_DoughnutChart_SetFirstSliceAng = window['AscDFH'].historyitem_type_DoughnutChart | 2;
window['AscDFH'].historyitem_DoughnutChart_SetHoleSize = window['AscDFH'].historyitem_type_DoughnutChart | 3;
window['AscDFH'].historyitem_DoughnutChart_AddSer = window['AscDFH'].historyitem_type_DoughnutChart | 4;
window['AscDFH'].historyitem_DoughnutChart_SetVaryColor = window['AscDFH'].historyitem_type_DoughnutChart | 5;
window['AscDFH'].historyitem_OfPieChart_AddCustSplit = window['AscDFH'].historyitem_type_OfPieChart | 1;
window['AscDFH'].historyitem_OfPieChart_SetDLbls = window['AscDFH'].historyitem_type_OfPieChart | 2;
window['AscDFH'].historyitem_OfPieChart_SetGapWidth = window['AscDFH'].historyitem_type_OfPieChart | 3;
window['AscDFH'].historyitem_OfPieChart_SetOfPieType = window['AscDFH'].historyitem_type_OfPieChart | 4;
window['AscDFH'].historyitem_OfPieChart_SetSecondPieSize = window['AscDFH'].historyitem_type_OfPieChart | 5;
window['AscDFH'].historyitem_OfPieChart_AddSer = window['AscDFH'].historyitem_type_OfPieChart | 6;
window['AscDFH'].historyitem_OfPieChart_SetSerLines = window['AscDFH'].historyitem_type_OfPieChart | 7;
window['AscDFH'].historyitem_OfPieChart_SetSplitPos = window['AscDFH'].historyitem_type_OfPieChart | 8;
window['AscDFH'].historyitem_OfPieChart_SetSplitType = window['AscDFH'].historyitem_type_OfPieChart | 9;
window['AscDFH'].historyitem_OfPieChart_SetVaryColors = window['AscDFH'].historyitem_type_OfPieChart | 10;
window['AscDFH'].historyitem_PieChart_SetDLbls = window['AscDFH'].historyitem_type_PieChart | 1;
window['AscDFH'].historyitem_PieChart_SetFirstSliceAng = window['AscDFH'].historyitem_type_PieChart | 2;
window['AscDFH'].historyitem_PieChart_AddSer = window['AscDFH'].historyitem_type_PieChart | 3;
window['AscDFH'].historyitem_PieChart_SetVaryColors = window['AscDFH'].historyitem_type_PieChart | 4;
window['AscDFH'].historyitem_RadarChart_AddAxId = window['AscDFH'].historyitem_type_RadarChart | 1;
window['AscDFH'].historyitem_RadarChart_SetDLbls = window['AscDFH'].historyitem_type_RadarChart | 2;
window['AscDFH'].historyitem_RadarChart_SetRadarStyle = window['AscDFH'].historyitem_type_RadarChart | 3;
window['AscDFH'].historyitem_RadarChart_AddSer = window['AscDFH'].historyitem_type_RadarChart | 4;
window['AscDFH'].historyitem_RadarChart_SetVaryColors = window['AscDFH'].historyitem_type_RadarChart | 5;
window['AscDFH'].historyitem_ScatterChart_AddAxId = window['AscDFH'].historyitem_type_ScatterChart | 1;
window['AscDFH'].historyitem_ScatterChart_SetDLbls = window['AscDFH'].historyitem_type_ScatterChart | 2;
window['AscDFH'].historyitem_ScatterChart_SetScatterStyle = window['AscDFH'].historyitem_type_ScatterChart | 3;
window['AscDFH'].historyitem_ScatterChart_AddSer = window['AscDFH'].historyitem_type_ScatterChart | 4;
window['AscDFH'].historyitem_ScatterChart_SetVaryColors = window['AscDFH'].historyitem_type_ScatterChart | 5;
window['AscDFH'].historyitem_StockChart_AddAxId = window['AscDFH'].historyitem_type_StockChart | 1;
window['AscDFH'].historyitem_StockChart_SetDLbls = window['AscDFH'].historyitem_type_StockChart | 2;
window['AscDFH'].historyitem_StockChart_SetDropLines = window['AscDFH'].historyitem_type_StockChart | 3;
window['AscDFH'].historyitem_StockChart_SetHiLowLines = window['AscDFH'].historyitem_type_StockChart | 4;
window['AscDFH'].historyitem_StockChart_AddSer = window['AscDFH'].historyitem_type_StockChart | 5;
window['AscDFH'].historyitem_StockChart_SetUpDownBars = window['AscDFH'].historyitem_type_StockChart | 6;
window['AscDFH'].historyitem_SurfaceChart_AddAxId = window['AscDFH'].historyitem_type_SurfaceChart | 1;
window['AscDFH'].historyitem_SurfaceChart_AddBandFmt = window['AscDFH'].historyitem_type_SurfaceChart | 2;
window['AscDFH'].historyitem_SurfaceChart_AddSer = window['AscDFH'].historyitem_type_SurfaceChart | 3;
window['AscDFH'].historyitem_SurfaceChart_SetWireframe = window['AscDFH'].historyitem_type_SurfaceChart | 4;
window['AscDFH'].historyitem_BandFmt_SetIdx = window['AscDFH'].historyitem_type_BandFmt | 1;
window['AscDFH'].historyitem_BandFmt_SetSpPr = window['AscDFH'].historyitem_type_BandFmt | 2;
window['AscDFH'].historyitem_AreaChart_AddAxId = window['AscDFH'].historyitem_type_AreaChart | 1;
window['AscDFH'].historyitem_AreaChart_SetDLbls = window['AscDFH'].historyitem_type_AreaChart | 2;
window['AscDFH'].historyitem_AreaChart_SetDropLines = window['AscDFH'].historyitem_type_AreaChart | 3;
window['AscDFH'].historyitem_AreaChart_SetGrouping = window['AscDFH'].historyitem_type_AreaChart | 4;
window['AscDFH'].historyitem_AreaChart_AddSer = window['AscDFH'].historyitem_type_AreaChart | 5;
window['AscDFH'].historyitem_AreaChart_SetVaryColors = window['AscDFH'].historyitem_type_AreaChart | 6;
window['AscDFH'].historyitem_ScatterSer_SetDLbls = window['AscDFH'].historyitem_type_ScatterSer | 1;
window['AscDFH'].historyitem_ScatterSer_SetDPt = window['AscDFH'].historyitem_type_ScatterSer | 2;
window['AscDFH'].historyitem_ScatterSer_SetErrBars = window['AscDFH'].historyitem_type_ScatterSer | 3;
window['AscDFH'].historyitem_ScatterSer_SetIdx = window['AscDFH'].historyitem_type_ScatterSer | 4;
window['AscDFH'].historyitem_ScatterSer_SetMarker = window['AscDFH'].historyitem_type_ScatterSer | 5;
window['AscDFH'].historyitem_ScatterSer_SetOrder = window['AscDFH'].historyitem_type_ScatterSer | 6;
window['AscDFH'].historyitem_ScatterSer_SetSmooth = window['AscDFH'].historyitem_type_ScatterSer | 7;
window['AscDFH'].historyitem_ScatterSer_SetSpPr = window['AscDFH'].historyitem_type_ScatterSer | 8;
window['AscDFH'].historyitem_ScatterSer_SetTrendline = window['AscDFH'].historyitem_type_ScatterSer | 9;
window['AscDFH'].historyitem_ScatterSer_SetTx = window['AscDFH'].historyitem_type_ScatterSer | 10;
window['AscDFH'].historyitem_ScatterSer_SetXVal = window['AscDFH'].historyitem_type_ScatterSer | 11;
window['AscDFH'].historyitem_ScatterSer_SetYVal = window['AscDFH'].historyitem_type_ScatterSer | 12;
window['AscDFH'].historyitem_DPt_SetBubble3D = window['AscDFH'].historyitem_type_DPt | 1;
window['AscDFH'].historyitem_DPt_SetExplosion = window['AscDFH'].historyitem_type_DPt | 2;
window['AscDFH'].historyitem_DPt_SetIdx = window['AscDFH'].historyitem_type_DPt | 3;
window['AscDFH'].historyitem_DPt_SetInvertIfNegative = window['AscDFH'].historyitem_type_DPt | 4;
window['AscDFH'].historyitem_DPt_SetMarker = window['AscDFH'].historyitem_type_DPt | 5;
window['AscDFH'].historyitem_DPt_SetPictureOptions = window['AscDFH'].historyitem_type_DPt | 6;
window['AscDFH'].historyitem_DPt_SetSpPr = window['AscDFH'].historyitem_type_DPt | 7;
window['AscDFH'].historyitem_ErrBars_SetErrBarType = window['AscDFH'].historyitem_type_ErrBars | 1;
window['AscDFH'].historyitem_ErrBars_SetErrDir = window['AscDFH'].historyitem_type_ErrBars | 2;
window['AscDFH'].historyitem_ErrBars_SetErrValType = window['AscDFH'].historyitem_type_ErrBars | 3;
window['AscDFH'].historyitem_ErrBars_SetMinus = window['AscDFH'].historyitem_type_ErrBars | 4;
window['AscDFH'].historyitem_ErrBars_SetNoEndCap = window['AscDFH'].historyitem_type_ErrBars | 5;
window['AscDFH'].historyitem_ErrBars_SetPlus = window['AscDFH'].historyitem_type_ErrBars | 6;
window['AscDFH'].historyitem_ErrBars_SetSpPr = window['AscDFH'].historyitem_type_ErrBars | 7;
window['AscDFH'].historyitem_ErrBars_SetVal = window['AscDFH'].historyitem_type_ErrBars | 8;
window['AscDFH'].historyitem_MinusPlus_SetnNumLit = window['AscDFH'].historyitem_type_MinusPlus | 1;
window['AscDFH'].historyitem_MinusPlus_SetnNumRef = window['AscDFH'].historyitem_type_MinusPlus | 2;
window['AscDFH'].historyitem_NumLit_SetFormatCode = window['AscDFH'].historyitem_type_NumLit | 1;
window['AscDFH'].historyitem_NumLit_AddPt = window['AscDFH'].historyitem_type_NumLit | 2;
window['AscDFH'].historyitem_NumLit_SetPtCount = window['AscDFH'].historyitem_type_NumLit | 3;
window['AscDFH'].historyitem_NumericPoint_SetFormatCode = window['AscDFH'].historyitem_type_NumericPoint | 1;
window['AscDFH'].historyitem_NumericPoint_SetIdx = window['AscDFH'].historyitem_type_NumericPoint | 2;
window['AscDFH'].historyitem_NumericPoint_SetVal = window['AscDFH'].historyitem_type_NumericPoint | 3;
window['AscDFH'].historyitem_NumRef_SetF = window['AscDFH'].historyitem_type_NumRef | 1;
window['AscDFH'].historyitem_NumRef_SetNumCache = window['AscDFH'].historyitem_type_NumRef | 2;
window['AscDFH'].historyitem_Trendline_SetBackward = window['AscDFH'].historyitem_type_TrendLine | 1;
window['AscDFH'].historyitem_Trendline_SetDispEq = window['AscDFH'].historyitem_type_TrendLine | 2;
window['AscDFH'].historyitem_Trendline_SetDispRSqr = window['AscDFH'].historyitem_type_TrendLine | 3;
window['AscDFH'].historyitem_Trendline_SetForward = window['AscDFH'].historyitem_type_TrendLine | 4;
window['AscDFH'].historyitem_Trendline_SetIntercept = window['AscDFH'].historyitem_type_TrendLine | 5;
window['AscDFH'].historyitem_Trendline_SetName = window['AscDFH'].historyitem_type_TrendLine | 6;
window['AscDFH'].historyitem_Trendline_SetOrder = window['AscDFH'].historyitem_type_TrendLine | 7;
window['AscDFH'].historyitem_Trendline_SetPeriod = window['AscDFH'].historyitem_type_TrendLine | 8;
window['AscDFH'].historyitem_Trendline_SetSpPr = window['AscDFH'].historyitem_type_TrendLine | 9;
window['AscDFH'].historyitem_Trendline_SetTrendlineLbl = window['AscDFH'].historyitem_type_TrendLine | 10;
window['AscDFH'].historyitem_Trendline_SetTrendlineType = window['AscDFH'].historyitem_type_TrendLine | 11;
window['AscDFH'].historyitem_Tx_SetStrRef = window['AscDFH'].historyitem_type_Tx | 1;
window['AscDFH'].historyitem_Tx_SetVal = window['AscDFH'].historyitem_type_Tx | 2;
window['AscDFH'].historyitem_StrRef_SetF = window['AscDFH'].historyitem_type_StrRef | 1;
window['AscDFH'].historyitem_StrRef_SetStrCache = window['AscDFH'].historyitem_type_StrRef | 2;
window['AscDFH'].historyitem_StrCache_AddPt = window['AscDFH'].historyitem_type_StrCache | 1;
window['AscDFH'].historyitem_StrCache_SetPtCount = window['AscDFH'].historyitem_type_StrCache | 2;
window['AscDFH'].historyitem_StrPoint_SetIdx = window['AscDFH'].historyitem_type_StrPoint | 1;
window['AscDFH'].historyitem_StrPoint_SetVal = window['AscDFH'].historyitem_type_StrPoint | 2;
window['AscDFH'].historyitem_XVal_SetMultiLvlStrRef = window['AscDFH'].historyitem_type_XVal | 1;
window['AscDFH'].historyitem_XVal_SetNumLit = window['AscDFH'].historyitem_type_XVal | 2;
window['AscDFH'].historyitem_XVal_SetNumRef = window['AscDFH'].historyitem_type_XVal | 3;
window['AscDFH'].historyitem_XVal_SetStrLit = window['AscDFH'].historyitem_type_XVal | 4;
window['AscDFH'].historyitem_XVal_SetStrRef = window['AscDFH'].historyitem_type_XVal | 5;
window['AscDFH'].historyitem_MultiLvlStrRef_SetF = window['AscDFH'].historyitem_type_MultiLvlStrRef | 1;
window['AscDFH'].historyitem_MultiLvlStrRef_SetMultiLvlStrCache = window['AscDFH'].historyitem_type_MultiLvlStrRef | 2;
window['AscDFH'].historyitem_MultiLvlStrCache_SetLvl = window['AscDFH'].historyitem_type_MultiLvlStrCache | 1;
window['AscDFH'].historyitem_MultiLvlStrCache_SetPtCount = window['AscDFH'].historyitem_type_MultiLvlStrCache | 2;
window['AscDFH'].historyitem_StringLiteral_SetPt = window['AscDFH'].historyitem_type_StringLiteral | 1;
window['AscDFH'].historyitem_StringLiteral_SetPtCount = window['AscDFH'].historyitem_type_StringLiteral | 2;
window['AscDFH'].historyitem_YVal_SetNumLit = window['AscDFH'].historyitem_type_YVal | 1;
window['AscDFH'].historyitem_YVal_SetNumRef = window['AscDFH'].historyitem_type_YVal | 2;
window['AscDFH'].historyitem_AreaSeries_SetCat = window['AscDFH'].historyitem_type_AreaSeries | 1;
window['AscDFH'].historyitem_AreaSeries_SetDLbls = window['AscDFH'].historyitem_type_AreaSeries | 2;
window['AscDFH'].historyitem_AreaSeries_SetDPt = window['AscDFH'].historyitem_type_AreaSeries | 3;
window['AscDFH'].historyitem_AreaSeries_SetErrBars = window['AscDFH'].historyitem_type_AreaSeries | 4;
window['AscDFH'].historyitem_AreaSeries_SetIdx = window['AscDFH'].historyitem_type_AreaSeries | 5;
window['AscDFH'].historyitem_AreaSeries_SetOrder = window['AscDFH'].historyitem_type_AreaSeries | 6;
window['AscDFH'].historyitem_AreaSeries_SetPictureOptions = window['AscDFH'].historyitem_type_AreaSeries | 7;
window['AscDFH'].historyitem_AreaSeries_SetSpPr = window['AscDFH'].historyitem_type_AreaSeries | 8;
window['AscDFH'].historyitem_AreaSeries_SetTrendline = window['AscDFH'].historyitem_type_AreaSeries | 9;
window['AscDFH'].historyitem_AreaSeries_SetTx = window['AscDFH'].historyitem_type_AreaSeries | 10;
window['AscDFH'].historyitem_AreaSeries_SetVal = window['AscDFH'].historyitem_type_AreaSeries | 11;
window['AscDFH'].historyitem_Cat_SetMultiLvlStrRef = window['AscDFH'].historyitem_type_Cat | 1;
window['AscDFH'].historyitem_Cat_SetNumLit = window['AscDFH'].historyitem_type_Cat | 2;
window['AscDFH'].historyitem_Cat_SetNumRef = window['AscDFH'].historyitem_type_Cat | 3;
window['AscDFH'].historyitem_Cat_SetStrLit = window['AscDFH'].historyitem_type_Cat | 4;
window['AscDFH'].historyitem_Cat_SetStrRef = window['AscDFH'].historyitem_type_Cat | 5;
window['AscDFH'].historyitem_PictureOptions_SetApplyToEnd = window['AscDFH'].historyitem_type_PictureOptions | 1;
window['AscDFH'].historyitem_PictureOptions_SetApplyToFront = window['AscDFH'].historyitem_type_PictureOptions | 2;
window['AscDFH'].historyitem_PictureOptions_SetApplyToSides = window['AscDFH'].historyitem_type_PictureOptions | 3;
window['AscDFH'].historyitem_PictureOptions_SetPictureFormat = window['AscDFH'].historyitem_type_PictureOptions | 4;
window['AscDFH'].historyitem_PictureOptions_SetPictureStackUnit = window['AscDFH'].historyitem_type_PictureOptions | 5;
window['AscDFH'].historyitem_RadarSeries_SetCat = window['AscDFH'].historyitem_type_RadarSeries | 1;
window['AscDFH'].historyitem_RadarSeries_SetDLbls = window['AscDFH'].historyitem_type_RadarSeries | 2;
window['AscDFH'].historyitem_RadarSeries_SetDPt = window['AscDFH'].historyitem_type_RadarSeries | 3;
window['AscDFH'].historyitem_RadarSeries_SetIdx = window['AscDFH'].historyitem_type_RadarSeries | 4;
window['AscDFH'].historyitem_RadarSeries_SetMarker = window['AscDFH'].historyitem_type_RadarSeries | 5;
window['AscDFH'].historyitem_RadarSeries_SetOrder = window['AscDFH'].historyitem_type_RadarSeries | 6;
window['AscDFH'].historyitem_RadarSeries_SetSpPr = window['AscDFH'].historyitem_type_RadarSeries | 7;
window['AscDFH'].historyitem_RadarSeries_SetTx = window['AscDFH'].historyitem_type_RadarSeries | 8;
window['AscDFH'].historyitem_RadarSeries_SetVal = window['AscDFH'].historyitem_type_RadarSeries | 9;
window['AscDFH'].historyitem_BarSeries_SetCat = window['AscDFH'].historyitem_type_BarSeries | 1;
window['AscDFH'].historyitem_BarSeries_SetDLbls = window['AscDFH'].historyitem_type_BarSeries | 2;
window['AscDFH'].historyitem_BarSeries_SetDPt = window['AscDFH'].historyitem_type_BarSeries | 3;
window['AscDFH'].historyitem_BarSeries_SetErrBars = window['AscDFH'].historyitem_type_BarSeries | 4;
window['AscDFH'].historyitem_BarSeries_SetIdx = window['AscDFH'].historyitem_type_BarSeries | 5;
window['AscDFH'].historyitem_BarSeries_SetInvertIfNegative = window['AscDFH'].historyitem_type_BarSeries | 6;
window['AscDFH'].historyitem_BarSeries_SetOrder = window['AscDFH'].historyitem_type_BarSeries | 7;
window['AscDFH'].historyitem_BarSeries_SetPictureOptions = window['AscDFH'].historyitem_type_BarSeries | 8;
window['AscDFH'].historyitem_BarSeries_SetShape = window['AscDFH'].historyitem_type_BarSeries | 9;
window['AscDFH'].historyitem_BarSeries_SetSpPr = window['AscDFH'].historyitem_type_BarSeries | 10;
window['AscDFH'].historyitem_BarSeries_SetTrendline = window['AscDFH'].historyitem_type_BarSeries | 11;
window['AscDFH'].historyitem_BarSeries_SetTx = window['AscDFH'].historyitem_type_BarSeries | 12;
window['AscDFH'].historyitem_BarSeries_SetVal = window['AscDFH'].historyitem_type_BarSeries | 13;
window['AscDFH'].historyitem_LineSeries_SetCat = window['AscDFH'].historyitem_type_LineSeries | 1;
window['AscDFH'].historyitem_LineSeries_SetDLbls = window['AscDFH'].historyitem_type_LineSeries | 2;
window['AscDFH'].historyitem_LineSeries_SetDPt = window['AscDFH'].historyitem_type_LineSeries | 3;
window['AscDFH'].historyitem_LineSeries_SetErrBars = window['AscDFH'].historyitem_type_LineSeries | 4;
window['AscDFH'].historyitem_LineSeries_SetIdx = window['AscDFH'].historyitem_type_LineSeries | 5;
window['AscDFH'].historyitem_LineSeries_SetMarker = window['AscDFH'].historyitem_type_LineSeries | 6;
window['AscDFH'].historyitem_LineSeries_SetOrder = window['AscDFH'].historyitem_type_LineSeries | 7;
window['AscDFH'].historyitem_LineSeries_SetSmooth = window['AscDFH'].historyitem_type_LineSeries | 8;
window['AscDFH'].historyitem_LineSeries_SetSpPr = window['AscDFH'].historyitem_type_LineSeries | 9;
window['AscDFH'].historyitem_LineSeries_SetTrendline = window['AscDFH'].historyitem_type_LineSeries | 10;
window['AscDFH'].historyitem_LineSeries_SetTx = window['AscDFH'].historyitem_type_LineSeries | 11;
window['AscDFH'].historyitem_LineSeries_SetVal = window['AscDFH'].historyitem_type_LineSeries | 12;
window['AscDFH'].historyitem_PieSeries_SetCat = window['AscDFH'].historyitem_type_PieSeries | 1;
window['AscDFH'].historyitem_PieSeries_SetDLbls = window['AscDFH'].historyitem_type_PieSeries | 2;
window['AscDFH'].historyitem_PieSeries_SetDPt = window['AscDFH'].historyitem_type_PieSeries | 3;
window['AscDFH'].historyitem_PieSeries_SetExplosion = window['AscDFH'].historyitem_type_PieSeries | 4;
window['AscDFH'].historyitem_PieSeries_SetIdx = window['AscDFH'].historyitem_type_PieSeries | 5;
window['AscDFH'].historyitem_PieSeries_SetOrder = window['AscDFH'].historyitem_type_PieSeries | 6;
window['AscDFH'].historyitem_PieSeries_SetSpPr = window['AscDFH'].historyitem_type_PieSeries | 7;
window['AscDFH'].historyitem_PieSeries_SetTx = window['AscDFH'].historyitem_type_PieSeries | 8;
window['AscDFH'].historyitem_PieSeries_SetVal = window['AscDFH'].historyitem_type_PieSeries | 9;
window['AscDFH'].historyitem_SurfaceSeries_SetCat = window['AscDFH'].historyitem_type_SurfaceSeries | 1;
window['AscDFH'].historyitem_SurfaceSeries_SetIdx = window['AscDFH'].historyitem_type_SurfaceSeries | 2;
window['AscDFH'].historyitem_SurfaceSeries_SetOrder = window['AscDFH'].historyitem_type_SurfaceSeries | 3;
window['AscDFH'].historyitem_SurfaceSeries_SetSpPr = window['AscDFH'].historyitem_type_SurfaceSeries | 4;
window['AscDFH'].historyitem_SurfaceSeries_SetTx = window['AscDFH'].historyitem_type_SurfaceSeries | 5;
window['AscDFH'].historyitem_SurfaceSeries_SetVal = window['AscDFH'].historyitem_type_SurfaceSeries | 6;
window['AscDFH'].historyitem_BubbleSeries_SetBubble3D = window['AscDFH'].historyitem_type_BubbleSeries | 1;
window['AscDFH'].historyitem_BubbleSeries_SetBubbleSize = window['AscDFH'].historyitem_type_BubbleSeries | 2;
window['AscDFH'].historyitem_BubbleSeries_SetDLbls = window['AscDFH'].historyitem_type_BubbleSeries | 3;
window['AscDFH'].historyitem_BubbleSeries_SetDPt = window['AscDFH'].historyitem_type_BubbleSeries | 4;
window['AscDFH'].historyitem_BubbleSeries_SetErrBars = window['AscDFH'].historyitem_type_BubbleSeries | 5;
window['AscDFH'].historyitem_BubbleSeries_SetIdx = window['AscDFH'].historyitem_type_BubbleSeries | 6;
window['AscDFH'].historyitem_BubbleSeries_SetInvertIfNegative = window['AscDFH'].historyitem_type_BubbleSeries | 7;
window['AscDFH'].historyitem_BubbleSeries_SetOrder = window['AscDFH'].historyitem_type_BubbleSeries | 8;
window['AscDFH'].historyitem_BubbleSeries_SetSpPr = window['AscDFH'].historyitem_type_BubbleSeries | 9;
window['AscDFH'].historyitem_BubbleSeries_SetTrendline = window['AscDFH'].historyitem_type_BubbleSeries | 10;
window['AscDFH'].historyitem_BubbleSeries_SetTx = window['AscDFH'].historyitem_type_BubbleSeries | 11;
window['AscDFH'].historyitem_BubbleSeries_SetXVal = window['AscDFH'].historyitem_type_BubbleSeries | 12;
window['AscDFH'].historyitem_BubbleSeries_SetYVal = window['AscDFH'].historyitem_type_BubbleSeries | 13;
window['AscDFH'].historyitem_ExternalData_SetAutoUpdate = window['AscDFH'].historyitem_type_ExternalData | 1;
window['AscDFH'].historyitem_ExternalData_SetId = window['AscDFH'].historyitem_type_ExternalData | 2;
window['AscDFH'].historyitem_PivotSource_SetFmtId = window['AscDFH'].historyitem_type_PivotSource | 1;
window['AscDFH'].historyitem_PivotSource_SetName = window['AscDFH'].historyitem_type_PivotSource | 2;
window['AscDFH'].historyitem_Protection_SetChartObject = window['AscDFH'].historyitem_type_Protection | 1;
window['AscDFH'].historyitem_Protection_SetData = window['AscDFH'].historyitem_type_Protection | 2;
window['AscDFH'].historyitem_Protection_SetFormatting = window['AscDFH'].historyitem_type_Protection | 3;
window['AscDFH'].historyitem_Protection_SetSelection = window['AscDFH'].historyitem_type_Protection | 4;
window['AscDFH'].historyitem_Protection_SetUserInterface = window['AscDFH'].historyitem_type_Protection | 5;
window['AscDFH'].historyitem_ChartWall_SetPictureOptions = window['AscDFH'].historyitem_type_ChartWall | 1;
window['AscDFH'].historyitem_ChartWall_SetSpPr = window['AscDFH'].historyitem_type_ChartWall | 2;
window['AscDFH'].historyitem_ChartWall_SetThickness = window['AscDFH'].historyitem_type_ChartWall | 3;
window['AscDFH'].historyitem_View3d_SetDepthPercent = window['AscDFH'].historyitem_type_View3d | 1;
window['AscDFH'].historyitem_View3d_SetHPercent = window['AscDFH'].historyitem_type_View3d | 2;
window['AscDFH'].historyitem_View3d_SetPerspective = window['AscDFH'].historyitem_type_View3d | 3;
window['AscDFH'].historyitem_View3d_SetRAngAx = window['AscDFH'].historyitem_type_View3d | 4;
window['AscDFH'].historyitem_View3d_SetRotX = window['AscDFH'].historyitem_type_View3d | 5;
window['AscDFH'].historyitem_View3d_SetRotY = window['AscDFH'].historyitem_type_View3d | 6;
window['AscDFH'].historyitem_ChartText_SetRich = window['AscDFH'].historyitem_type_ChartText | 1;
window['AscDFH'].historyitem_ChartText_SetStrRef = window['AscDFH'].historyitem_type_ChartText | 2;
window['AscDFH'].historyitem_ShapeStyle_SetLnRef = window['AscDFH'].historyitem_type_ShapeStyle | 1;
window['AscDFH'].historyitem_ShapeStyle_SetFillRef = window['AscDFH'].historyitem_type_ShapeStyle | 2;
window['AscDFH'].historyitem_ShapeStyle_SetFontRef = window['AscDFH'].historyitem_type_ShapeStyle | 3;
window['AscDFH'].historyitem_ShapeStyle_SetEffectRef = window['AscDFH'].historyitem_type_ShapeStyle | 4;
window['AscDFH'].historyitem_Xfrm_SetOffX = window['AscDFH'].historyitem_type_Xfrm | 1;
window['AscDFH'].historyitem_Xfrm_SetOffY = window['AscDFH'].historyitem_type_Xfrm | 2;
window['AscDFH'].historyitem_Xfrm_SetExtX = window['AscDFH'].historyitem_type_Xfrm | 3;
window['AscDFH'].historyitem_Xfrm_SetExtY = window['AscDFH'].historyitem_type_Xfrm | 4;
window['AscDFH'].historyitem_Xfrm_SetChOffX = window['AscDFH'].historyitem_type_Xfrm | 5;
window['AscDFH'].historyitem_Xfrm_SetChOffY = window['AscDFH'].historyitem_type_Xfrm | 6;
window['AscDFH'].historyitem_Xfrm_SetChExtX = window['AscDFH'].historyitem_type_Xfrm | 7;
window['AscDFH'].historyitem_Xfrm_SetChExtY = window['AscDFH'].historyitem_type_Xfrm | 8;
window['AscDFH'].historyitem_Xfrm_SetFlipH = window['AscDFH'].historyitem_type_Xfrm | 9;
window['AscDFH'].historyitem_Xfrm_SetFlipV = window['AscDFH'].historyitem_type_Xfrm | 10;
window['AscDFH'].historyitem_Xfrm_SetRot = window['AscDFH'].historyitem_type_Xfrm | 11;
window['AscDFH'].historyitem_Xfrm_SetParent = window['AscDFH'].historyitem_type_Xfrm | 12;
window['AscDFH'].historyitem_SpPr_SetBwMode = window['AscDFH'].historyitem_type_SpPr | 1;
window['AscDFH'].historyitem_SpPr_SetXfrm = window['AscDFH'].historyitem_type_SpPr | 2;
window['AscDFH'].historyitem_SpPr_SetGeometry = window['AscDFH'].historyitem_type_SpPr | 3;
window['AscDFH'].historyitem_SpPr_SetFill = window['AscDFH'].historyitem_type_SpPr | 4;
window['AscDFH'].historyitem_SpPr_SetLn = window['AscDFH'].historyitem_type_SpPr | 5;
window['AscDFH'].historyitem_SpPr_SetParent = window['AscDFH'].historyitem_type_SpPr | 6;
window['AscDFH'].historyitem_ClrScheme_AddClr = window['AscDFH'].historyitem_type_ClrScheme | 1;
window['AscDFH'].historyitem_ClrScheme_SetName = window['AscDFH'].historyitem_type_ClrScheme | 2;
window['AscDFH'].historyitem_ClrMap_SetClr = window['AscDFH'].historyitem_type_ClrMap | 1;
window['AscDFH'].historyitem_ExtraClrScheme_SetClrScheme = window['AscDFH'].historyitem_type_ExtraClrScheme | 1;
window['AscDFH'].historyitem_ExtraClrScheme_SetClrMap = window['AscDFH'].historyitem_type_ExtraClrScheme | 2;
window['AscDFH'].historyitem_FontCollection_SetFontScheme = window['AscDFH'].historyitem_type_FontCollection | 1;
window['AscDFH'].historyitem_FontCollection_SetLatin = window['AscDFH'].historyitem_type_FontCollection | 2;
window['AscDFH'].historyitem_FontCollection_SetEA = window['AscDFH'].historyitem_type_FontCollection | 3;
window['AscDFH'].historyitem_FontCollection_SetCS = window['AscDFH'].historyitem_type_FontCollection | 4;
window['AscDFH'].historyitem_FontScheme_SetName = window['AscDFH'].historyitem_type_FontScheme | 1;
window['AscDFH'].historyitem_FontScheme_SetMajorFont = window['AscDFH'].historyitem_type_FontScheme | 2;
window['AscDFH'].historyitem_FontScheme_SetMinorFont = window['AscDFH'].historyitem_type_FontScheme | 3;
window['AscDFH'].historyitem_FormatScheme_SetName = window['AscDFH'].historyitem_type_FormatScheme | 1;
window['AscDFH'].historyitem_FormatScheme_AddFillToStyleLst = window['AscDFH'].historyitem_type_FormatScheme | 2;
window['AscDFH'].historyitem_FormatScheme_AddLnToStyleLst = window['AscDFH'].historyitem_type_FormatScheme | 3;
window['AscDFH'].historyitem_FormatScheme_AddEffectToStyleLst = window['AscDFH'].historyitem_type_FormatScheme | 4;
window['AscDFH'].historyitem_FormatScheme_AddBgFillToStyleLst = window['AscDFH'].historyitem_type_FormatScheme | 5;
window['AscDFH'].historyitem_ThemeElements_SetClrScheme = window['AscDFH'].historyitem_type_ThemeElements | 1;
window['AscDFH'].historyitem_ThemeElements_SetFontScheme = window['AscDFH'].historyitem_type_ThemeElements | 2;
window['AscDFH'].historyitem_ThemeElements_SetFmtScheme = window['AscDFH'].historyitem_type_ThemeElements | 3;
window['AscDFH'].historyitem_HF_SetDt = window['AscDFH'].historyitem_type_HF | 1;
window['AscDFH'].historyitem_HF_SetFtr = window['AscDFH'].historyitem_type_HF | 2;
window['AscDFH'].historyitem_HF_SetHdr = window['AscDFH'].historyitem_type_HF | 3;
window['AscDFH'].historyitem_HF_SetSldNum = window['AscDFH'].historyitem_type_HF | 4;
window['AscDFH'].historyitem_BgPr_SetFill = window['AscDFH'].historyitem_type_BgPr | 1;
window['AscDFH'].historyitem_BgPr_SetShadeToTitle = window['AscDFH'].historyitem_type_BgPr | 2;
window['AscDFH'].historyitem_BgSetBwMode = window['AscDFH'].historyitem_type_Bg | 1;
window['AscDFH'].historyitem_BgSetBgPr = window['AscDFH'].historyitem_type_Bg | 2;
window['AscDFH'].historyitem_BgSetBgRef = window['AscDFH'].historyitem_type_Bg | 3;
window['AscDFH'].historyitem_PrintSettingsSetHeaderFooter = window['AscDFH'].historyitem_type_PrintSettings | 1;
window['AscDFH'].historyitem_PrintSettingsSetPageMargins = window['AscDFH'].historyitem_type_PrintSettings | 2;
window['AscDFH'].historyitem_PrintSettingsSetPageSetup = window['AscDFH'].historyitem_type_PrintSettings | 3;
window['AscDFH'].historyitem_HeaderFooterChartSetAlignWithMargins = window['AscDFH'].historyitem_type_HeaderFooterChart | 1;
window['AscDFH'].historyitem_HeaderFooterChartSetDifferentFirst = window['AscDFH'].historyitem_type_HeaderFooterChart | 2;
window['AscDFH'].historyitem_HeaderFooterChartSetDifferentOddEven = window['AscDFH'].historyitem_type_HeaderFooterChart | 3;
window['AscDFH'].historyitem_HeaderFooterChartSetEvenFooter = window['AscDFH'].historyitem_type_HeaderFooterChart | 4;
window['AscDFH'].historyitem_HeaderFooterChartSetEvenHeader = window['AscDFH'].historyitem_type_HeaderFooterChart | 5;
window['AscDFH'].historyitem_HeaderFooterChartSetFirstFooter = window['AscDFH'].historyitem_type_HeaderFooterChart | 6;
window['AscDFH'].historyitem_HeaderFooterChartSetFirstHeader = window['AscDFH'].historyitem_type_HeaderFooterChart | 7;
window['AscDFH'].historyitem_HeaderFooterChartSetOddFooter = window['AscDFH'].historyitem_type_HeaderFooterChart | 8;
window['AscDFH'].historyitem_HeaderFooterChartSetOddHeader = window['AscDFH'].historyitem_type_HeaderFooterChart | 9;
window['AscDFH'].historyitem_PageMarginsSetB = window['AscDFH'].historyitem_type_PageMarginsChart | 1;
window['AscDFH'].historyitem_PageMarginsSetFooter = window['AscDFH'].historyitem_type_PageMarginsChart | 2;
window['AscDFH'].historyitem_PageMarginsSetHeader = window['AscDFH'].historyitem_type_PageMarginsChart | 3;
window['AscDFH'].historyitem_PageMarginsSetL = window['AscDFH'].historyitem_type_PageMarginsChart | 4;
window['AscDFH'].historyitem_PageMarginsSetR = window['AscDFH'].historyitem_type_PageMarginsChart | 5;
window['AscDFH'].historyitem_PageMarginsSetT = window['AscDFH'].historyitem_type_PageMarginsChart | 6;
window['AscDFH'].historyitem_PageSetupSetBlackAndWhite = window['AscDFH'].historyitem_type_PageSetup | 1;
window['AscDFH'].historyitem_PageSetupSetCopies = window['AscDFH'].historyitem_type_PageSetup | 2;
window['AscDFH'].historyitem_PageSetupSetDraft = window['AscDFH'].historyitem_type_PageSetup | 3;
window['AscDFH'].historyitem_PageSetupSetFirstPageNumber = window['AscDFH'].historyitem_type_PageSetup | 4;
window['AscDFH'].historyitem_PageSetupSetHorizontalDpi = window['AscDFH'].historyitem_type_PageSetup | 5;
window['AscDFH'].historyitem_PageSetupSetOrientation = window['AscDFH'].historyitem_type_PageSetup | 6;
window['AscDFH'].historyitem_PageSetupSetPaperHeight = window['AscDFH'].historyitem_type_PageSetup | 7;
window['AscDFH'].historyitem_PageSetupSetPaperSize = window['AscDFH'].historyitem_type_PageSetup | 8;
window['AscDFH'].historyitem_PageSetupSetPaperWidth = window['AscDFH'].historyitem_type_PageSetup | 9;
window['AscDFH'].historyitem_PageSetupSetUseFirstPageNumb = window['AscDFH'].historyitem_type_PageSetup | 10;
window['AscDFH'].historyitem_PageSetupSetVerticalDpi = window['AscDFH'].historyitem_type_PageSetup | 11;
window['AscDFH'].historyitem_ShapeSetBDeleted = window['AscDFH'].historyitem_type_Shape | 1;
window['AscDFH'].historyitem_ShapeSetNvSpPr = window['AscDFH'].historyitem_type_Shape | 2;
window['AscDFH'].historyitem_ShapeSetSpPr = window['AscDFH'].historyitem_type_Shape | 3;
window['AscDFH'].historyitem_ShapeSetStyle = window['AscDFH'].historyitem_type_Shape | 4;
window['AscDFH'].historyitem_ShapeSetTxBody = window['AscDFH'].historyitem_type_Shape | 5;
window['AscDFH'].historyitem_ShapeSetTextBoxContent = window['AscDFH'].historyitem_type_Shape | 6;
window['AscDFH'].historyitem_ShapeSetParent = window['AscDFH'].historyitem_type_Shape | 7;
window['AscDFH'].historyitem_ShapeSetGroup = window['AscDFH'].historyitem_type_Shape | 8;
window['AscDFH'].historyitem_ShapeSetBodyPr = window['AscDFH'].historyitem_type_Shape | 9;
window['AscDFH'].historyitem_ShapeSetWordShape = window['AscDFH'].historyitem_type_Shape | 10;
window['AscDFH'].historyitem_ShapeSetSignature = window['AscDFH'].historyitem_type_Shape | 11;
window['AscDFH'].historyitem_DispUnitsSetBuiltInUnit = window['AscDFH'].historyitem_type_DispUnits | 1;
window['AscDFH'].historyitem_DispUnitsSetCustUnit = window['AscDFH'].historyitem_type_DispUnits | 2;
window['AscDFH'].historyitem_DispUnitsSetDispUnitsLbl = window['AscDFH'].historyitem_type_DispUnits | 3;
window['AscDFH'].historyitem_DispUnitsSetParent = window['AscDFH'].historyitem_type_DispUnits | 4;
window['AscDFH'].historyitem_GroupShapeSetNvGrpSpPr = window['AscDFH'].historyitem_type_GroupShape | 1;
window['AscDFH'].historyitem_GroupShapeSetSpPr = window['AscDFH'].historyitem_type_GroupShape | 2;
window['AscDFH'].historyitem_GroupShapeAddToSpTree = window['AscDFH'].historyitem_type_GroupShape | 3;
window['AscDFH'].historyitem_GroupShapeSetParent = window['AscDFH'].historyitem_type_GroupShape | 4;
window['AscDFH'].historyitem_GroupShapeSetGroup = window['AscDFH'].historyitem_type_GroupShape | 5;
window['AscDFH'].historyitem_GroupShapeRemoveFromSpTree = window['AscDFH'].historyitem_type_GroupShape | 6;
window['AscDFH'].historyitem_ImageShapeSetNvPicPr = window['AscDFH'].historyitem_type_ImageShape | 1;
window['AscDFH'].historyitem_ImageShapeSetSpPr = window['AscDFH'].historyitem_type_ImageShape | 2;
window['AscDFH'].historyitem_ImageShapeSetBlipFill = window['AscDFH'].historyitem_type_ImageShape | 3;
window['AscDFH'].historyitem_ImageShapeSetParent = window['AscDFH'].historyitem_type_ImageShape | 4;
window['AscDFH'].historyitem_ImageShapeSetGroup = window['AscDFH'].historyitem_type_ImageShape | 5;
window['AscDFH'].historyitem_ImageShapeSetStyle = window['AscDFH'].historyitem_type_ImageShape | 6;
window['AscDFH'].historyitem_ImageShapeSetData = window['AscDFH'].historyitem_type_ImageShape | 7;
window['AscDFH'].historyitem_ImageShapeSetApplicationId = window['AscDFH'].historyitem_type_ImageShape | 8;
window['AscDFH'].historyitem_ImageShapeSetPixSizes = window['AscDFH'].historyitem_type_ImageShape | 9;
window['AscDFH'].historyitem_ImageShapeSetObjectFile = window['AscDFH'].historyitem_type_ImageShape | 10;
window['AscDFH'].historyitem_GeometrySetParent = window['AscDFH'].historyitem_type_Geometry | 1;
window['AscDFH'].historyitem_GeometryAddAdj = window['AscDFH'].historyitem_type_Geometry | 2;
window['AscDFH'].historyitem_GeometryAddGuide = window['AscDFH'].historyitem_type_Geometry | 3;
window['AscDFH'].historyitem_GeometryAddCnx = window['AscDFH'].historyitem_type_Geometry | 4;
window['AscDFH'].historyitem_GeometryAddHandleXY = window['AscDFH'].historyitem_type_Geometry | 5;
window['AscDFH'].historyitem_GeometryAddHandlePolar = window['AscDFH'].historyitem_type_Geometry | 6;
window['AscDFH'].historyitem_GeometryAddPath = window['AscDFH'].historyitem_type_Geometry | 7;
window['AscDFH'].historyitem_GeometryAddRect = window['AscDFH'].historyitem_type_Geometry | 8;
window['AscDFH'].historyitem_GeometrySetPreset = window['AscDFH'].historyitem_type_Geometry | 9;
window['AscDFH'].historyitem_PathSetStroke = window['AscDFH'].historyitem_type_Path | 1;
window['AscDFH'].historyitem_PathSetExtrusionOk = window['AscDFH'].historyitem_type_Path | 2;
window['AscDFH'].historyitem_PathSetFill = window['AscDFH'].historyitem_type_Path | 3;
window['AscDFH'].historyitem_PathSetPathH = window['AscDFH'].historyitem_type_Path | 4;
window['AscDFH'].historyitem_PathSetPathW = window['AscDFH'].historyitem_type_Path | 5;
window['AscDFH'].historyitem_PathAddPathCommand = window['AscDFH'].historyitem_type_Path | 6;
window['AscDFH'].historyitem_TextBodySetBodyPr = window['AscDFH'].historyitem_type_TextBody | 1;
window['AscDFH'].historyitem_TextBodySetLstStyle = window['AscDFH'].historyitem_type_TextBody | 2;
window['AscDFH'].historyitem_TextBodySetContent = window['AscDFH'].historyitem_type_TextBody | 3;
window['AscDFH'].historyitem_TextBodySetParent = window['AscDFH'].historyitem_type_TextBody | 4;
window['AscDFH'].historyitem_CatAxSetAuto = window['AscDFH'].historyitem_type_CatAx | 1;
window['AscDFH'].historyitem_CatAxSetAxId = window['AscDFH'].historyitem_type_CatAx | 2;
window['AscDFH'].historyitem_CatAxSetAxPos = window['AscDFH'].historyitem_type_CatAx | 3;
window['AscDFH'].historyitem_CatAxSetCrossAx = window['AscDFH'].historyitem_type_CatAx | 4;
window['AscDFH'].historyitem_CatAxSetCrosses = window['AscDFH'].historyitem_type_CatAx | 5;
window['AscDFH'].historyitem_CatAxSetCrossesAt = window['AscDFH'].historyitem_type_CatAx | 6;
window['AscDFH'].historyitem_CatAxSetDelete = window['AscDFH'].historyitem_type_CatAx | 7;
window['AscDFH'].historyitem_CatAxSetLblAlgn = window['AscDFH'].historyitem_type_CatAx | 8;
window['AscDFH'].historyitem_CatAxSetLblOffset = window['AscDFH'].historyitem_type_CatAx | 9;
window['AscDFH'].historyitem_CatAxSetMajorGridlines = window['AscDFH'].historyitem_type_CatAx | 10;
window['AscDFH'].historyitem_CatAxSetMajorTickMark = window['AscDFH'].historyitem_type_CatAx | 11;
window['AscDFH'].historyitem_CatAxSetMinorGridlines = window['AscDFH'].historyitem_type_CatAx | 12;
window['AscDFH'].historyitem_CatAxSetMinorTickMark = window['AscDFH'].historyitem_type_CatAx | 13;
window['AscDFH'].historyitem_CatAxSetNoMultiLvlLbl = window['AscDFH'].historyitem_type_CatAx | 14;
window['AscDFH'].historyitem_CatAxSetNumFmt = window['AscDFH'].historyitem_type_CatAx | 15;
window['AscDFH'].historyitem_CatAxSetScaling = window['AscDFH'].historyitem_type_CatAx | 16;
window['AscDFH'].historyitem_CatAxSetSpPr = window['AscDFH'].historyitem_type_CatAx | 17;
window['AscDFH'].historyitem_CatAxSetTickLblPos = window['AscDFH'].historyitem_type_CatAx | 18;
window['AscDFH'].historyitem_CatAxSetTickLblSkip = window['AscDFH'].historyitem_type_CatAx | 19;
window['AscDFH'].historyitem_CatAxSetTickMarkSkip = window['AscDFH'].historyitem_type_CatAx | 20;
window['AscDFH'].historyitem_CatAxSetTitle = window['AscDFH'].historyitem_type_CatAx | 21;
window['AscDFH'].historyitem_CatAxSetTxPr = window['AscDFH'].historyitem_type_CatAx | 22;
window['AscDFH'].historyitem_ValAxSetAxId = window['AscDFH'].historyitem_type_ValAx | 1;
window['AscDFH'].historyitem_ValAxSetAxPos = window['AscDFH'].historyitem_type_ValAx | 2;
window['AscDFH'].historyitem_ValAxSetCrossAx = window['AscDFH'].historyitem_type_ValAx | 3;
window['AscDFH'].historyitem_ValAxSetCrossBetween = window['AscDFH'].historyitem_type_ValAx | 4;
window['AscDFH'].historyitem_ValAxSetCrosses = window['AscDFH'].historyitem_type_ValAx | 5;
window['AscDFH'].historyitem_ValAxSetCrossesAt = window['AscDFH'].historyitem_type_ValAx | 6;
window['AscDFH'].historyitem_ValAxSetDelete = window['AscDFH'].historyitem_type_ValAx | 7;
window['AscDFH'].historyitem_ValAxSetDispUnits = window['AscDFH'].historyitem_type_ValAx | 8;
window['AscDFH'].historyitem_ValAxSetMajorGridlines = window['AscDFH'].historyitem_type_ValAx | 9;
window['AscDFH'].historyitem_ValAxSetMajorTickMark = window['AscDFH'].historyitem_type_ValAx | 10;
window['AscDFH'].historyitem_ValAxSetMajorUnit = window['AscDFH'].historyitem_type_ValAx | 11;
window['AscDFH'].historyitem_ValAxSetMinorGridlines = window['AscDFH'].historyitem_type_ValAx | 12;
window['AscDFH'].historyitem_ValAxSetMinorTickMark = window['AscDFH'].historyitem_type_ValAx | 13;
window['AscDFH'].historyitem_ValAxSetMinorUnit = window['AscDFH'].historyitem_type_ValAx | 14;
window['AscDFH'].historyitem_ValAxSetNumFmt = window['AscDFH'].historyitem_type_ValAx | 15;
window['AscDFH'].historyitem_ValAxSetScaling = window['AscDFH'].historyitem_type_ValAx | 16;
window['AscDFH'].historyitem_ValAxSetSpPr = window['AscDFH'].historyitem_type_ValAx | 17;
window['AscDFH'].historyitem_ValAxSetTickLblPos = window['AscDFH'].historyitem_type_ValAx | 18;
window['AscDFH'].historyitem_ValAxSetTitle = window['AscDFH'].historyitem_type_ValAx | 19;
window['AscDFH'].historyitem_ValAxSetTxPr = window['AscDFH'].historyitem_type_ValAx | 20;
window['AscDFH'].historyitem_WrapPolygonSetEdited = window['AscDFH'].historyitem_type_WrapPolygon | 1;
window['AscDFH'].historyitem_WrapPolygonSetRelPoints = window['AscDFH'].historyitem_type_WrapPolygon | 2;
window['AscDFH'].historyitem_WrapPolygonSetWrapSide = window['AscDFH'].historyitem_type_WrapPolygon | 3;
window['AscDFH'].historyitem_DateAxAuto = window['AscDFH'].historyitem_type_DateAx | 1;
window['AscDFH'].historyitem_DateAxAxId = window['AscDFH'].historyitem_type_DateAx | 2;
window['AscDFH'].historyitem_DateAxAxPos = window['AscDFH'].historyitem_type_DateAx | 3;
window['AscDFH'].historyitem_DateAxBaseTimeUnit = window['AscDFH'].historyitem_type_DateAx | 4;
window['AscDFH'].historyitem_DateAxCrossAx = window['AscDFH'].historyitem_type_DateAx | 5;
window['AscDFH'].historyitem_DateAxCrosses = window['AscDFH'].historyitem_type_DateAx | 6;
window['AscDFH'].historyitem_DateAxCrossesAt = window['AscDFH'].historyitem_type_DateAx | 7;
window['AscDFH'].historyitem_DateAxDelete = window['AscDFH'].historyitem_type_DateAx | 8;
window['AscDFH'].historyitem_DateAxLblOffset = window['AscDFH'].historyitem_type_DateAx | 9;
window['AscDFH'].historyitem_DateAxMajorGridlines = window['AscDFH'].historyitem_type_DateAx | 10;
window['AscDFH'].historyitem_DateAxMajorTickMark = window['AscDFH'].historyitem_type_DateAx | 11;
window['AscDFH'].historyitem_DateAxMajorTimeUnit = window['AscDFH'].historyitem_type_DateAx | 12;
window['AscDFH'].historyitem_DateAxMajorUnit = window['AscDFH'].historyitem_type_DateAx | 13;
window['AscDFH'].historyitem_DateAxMinorGridlines = window['AscDFH'].historyitem_type_DateAx | 14;
window['AscDFH'].historyitem_DateAxMinorTickMark = window['AscDFH'].historyitem_type_DateAx | 15;
window['AscDFH'].historyitem_DateAxMinorTimeUnit = window['AscDFH'].historyitem_type_DateAx | 16;
window['AscDFH'].historyitem_DateAxMinorUnit = window['AscDFH'].historyitem_type_DateAx | 17;
window['AscDFH'].historyitem_DateAxNumFmt = window['AscDFH'].historyitem_type_DateAx | 18;
window['AscDFH'].historyitem_DateAxScaling = window['AscDFH'].historyitem_type_DateAx | 19;
window['AscDFH'].historyitem_DateAxSpPr = window['AscDFH'].historyitem_type_DateAx | 20;
window['AscDFH'].historyitem_DateAxTickLblPos = window['AscDFH'].historyitem_type_DateAx | 21;
window['AscDFH'].historyitem_DateAxTitle = window['AscDFH'].historyitem_type_DateAx | 22;
window['AscDFH'].historyitem_DateAxTxPr = window['AscDFH'].historyitem_type_DateAx | 23;
window['AscDFH'].historyitem_SerAxSetAxId = window['AscDFH'].historyitem_type_SerAx | 1;
window['AscDFH'].historyitem_SerAxSetAxPos = window['AscDFH'].historyitem_type_SerAx | 2;
window['AscDFH'].historyitem_SerAxSetCrossAx = window['AscDFH'].historyitem_type_SerAx | 3;
window['AscDFH'].historyitem_SerAxSetCrosses = window['AscDFH'].historyitem_type_SerAx | 4;
window['AscDFH'].historyitem_SerAxSetCrossesAt = window['AscDFH'].historyitem_type_SerAx | 5;
window['AscDFH'].historyitem_SerAxSetDelete = window['AscDFH'].historyitem_type_SerAx | 6;
window['AscDFH'].historyitem_SerAxSetMajorGridlines = window['AscDFH'].historyitem_type_SerAx | 7;
window['AscDFH'].historyitem_SerAxSetMajorTickMark = window['AscDFH'].historyitem_type_SerAx | 8;
window['AscDFH'].historyitem_SerAxSetMinorGridlines = window['AscDFH'].historyitem_type_SerAx | 9;
window['AscDFH'].historyitem_SerAxSetMinorTickMark = window['AscDFH'].historyitem_type_SerAx | 10;
window['AscDFH'].historyitem_SerAxSetNumFmt = window['AscDFH'].historyitem_type_SerAx | 11;
window['AscDFH'].historyitem_SerAxSetScaling = window['AscDFH'].historyitem_type_SerAx | 12;
window['AscDFH'].historyitem_SerAxSetSpPr = window['AscDFH'].historyitem_type_SerAx | 13;
window['AscDFH'].historyitem_SerAxSetTickLblPos = window['AscDFH'].historyitem_type_SerAx | 14;
window['AscDFH'].historyitem_SerAxSetTickLblSkip = window['AscDFH'].historyitem_type_SerAx | 15;
window['AscDFH'].historyitem_SerAxSetTickMarkSkip = window['AscDFH'].historyitem_type_SerAx | 16;
window['AscDFH'].historyitem_SerAxSetTitle = window['AscDFH'].historyitem_type_SerAx | 17;
window['AscDFH'].historyitem_SerAxSetTxPr = window['AscDFH'].historyitem_type_SerAx | 18;
window['AscDFH'].historyitem_Title_SetLayout = window['AscDFH'].historyitem_type_Title | 1;
window['AscDFH'].historyitem_Title_SetOverlay = window['AscDFH'].historyitem_type_Title | 2;
window['AscDFH'].historyitem_Title_SetSpPr = window['AscDFH'].historyitem_type_Title | 3;
window['AscDFH'].historyitem_Title_SetTx = window['AscDFH'].historyitem_type_Title | 4;
window['AscDFH'].historyitem_Title_SetTxPr = window['AscDFH'].historyitem_type_Title | 5;
window['AscDFH'].historyitem_SlideSetComments = window['AscDFH'].historyitem_type_Slide | 1;
window['AscDFH'].historyitem_SlideSetShow = window['AscDFH'].historyitem_type_Slide | 2;
window['AscDFH'].historyitem_SlideSetShowPhAnim = window['AscDFH'].historyitem_type_Slide | 3;
window['AscDFH'].historyitem_SlideSetShowMasterSp = window['AscDFH'].historyitem_type_Slide | 4;
window['AscDFH'].historyitem_SlideSetLayout = window['AscDFH'].historyitem_type_Slide | 5;
window['AscDFH'].historyitem_SlideSetNum = window['AscDFH'].historyitem_type_Slide | 6;
window['AscDFH'].historyitem_SlideSetTiming = window['AscDFH'].historyitem_type_Slide | 7;
window['AscDFH'].historyitem_SlideSetSize = window['AscDFH'].historyitem_type_Slide | 8;
window['AscDFH'].historyitem_SlideSetBg = window['AscDFH'].historyitem_type_Slide | 9;
window['AscDFH'].historyitem_SlideSetLocks = window['AscDFH'].historyitem_type_Slide | 10;
window['AscDFH'].historyitem_SlideRemoveFromSpTree = window['AscDFH'].historyitem_type_Slide | 11;
window['AscDFH'].historyitem_SlideAddToSpTree = window['AscDFH'].historyitem_type_Slide | 12;
window['AscDFH'].historyitem_SlideSetCSldName = window['AscDFH'].historyitem_type_Slide | 13;
window['AscDFH'].historyitem_SlideSetClrMapOverride = window['AscDFH'].historyitem_type_Slide | 14;
window['AscDFH'].historyitem_SlideSetNotes = window['AscDFH'].historyitem_type_Slide | 15;
window['AscDFH'].historyitem_SlideLayoutSetMaster = window['AscDFH'].historyitem_type_SlideLayout | 1;
window['AscDFH'].historyitem_SlideLayoutSetMatchingName = window['AscDFH'].historyitem_type_SlideLayout | 2;
window['AscDFH'].historyitem_SlideLayoutSetType = window['AscDFH'].historyitem_type_SlideLayout | 3;
window['AscDFH'].historyitem_SlideLayoutSetBg = window['AscDFH'].historyitem_type_SlideLayout | 4;
window['AscDFH'].historyitem_SlideLayoutSetCSldName = window['AscDFH'].historyitem_type_SlideLayout | 5;
window['AscDFH'].historyitem_SlideLayoutSetShow = window['AscDFH'].historyitem_type_SlideLayout | 6;
window['AscDFH'].historyitem_SlideLayoutSetShowPhAnim = window['AscDFH'].historyitem_type_SlideLayout | 7;
window['AscDFH'].historyitem_SlideLayoutSetShowMasterSp = window['AscDFH'].historyitem_type_SlideLayout | 8;
window['AscDFH'].historyitem_SlideLayoutSetClrMapOverride = window['AscDFH'].historyitem_type_SlideLayout | 9;
window['AscDFH'].historyitem_SlideLayoutAddToSpTree = window['AscDFH'].historyitem_type_SlideLayout | 10;
window['AscDFH'].historyitem_SlideLayoutSetSize = window['AscDFH'].historyitem_type_SlideLayout | 11;
window['AscDFH'].historyitem_SlideMasterAddToSpTree = window['AscDFH'].historyitem_type_SlideMaster | 1;
window['AscDFH'].historyitem_SlideMasterSetTheme = window['AscDFH'].historyitem_type_SlideMaster | 2;
window['AscDFH'].historyitem_SlideMasterSetBg = window['AscDFH'].historyitem_type_SlideMaster | 3;
window['AscDFH'].historyitem_SlideMasterSetTxStyles = window['AscDFH'].historyitem_type_SlideMaster | 4;
window['AscDFH'].historyitem_SlideMasterSetCSldName = window['AscDFH'].historyitem_type_SlideMaster | 5;
window['AscDFH'].historyitem_SlideMasterSetClrMapOverride = window['AscDFH'].historyitem_type_SlideMaster | 6;
window['AscDFH'].historyitem_SlideMasterAddLayout = window['AscDFH'].historyitem_type_SlideMaster | 7;
window['AscDFH'].historyitem_SlideMasterSetThemeIndex = window['AscDFH'].historyitem_type_SlideMaster | 8;
window['AscDFH'].historyitem_SlideMasterSetSize = window['AscDFH'].historyitem_type_SlideMaster | 9;
window['AscDFH'].historyitem_SlideCommentsAddComment = window['AscDFH'].historyitem_type_SlideComments | 1;
window['AscDFH'].historyitem_SlideCommentsRemoveComment = window['AscDFH'].historyitem_type_SlideComments | 2;
window['AscDFH'].historyitem_PropLockerSetId = window['AscDFH'].historyitem_type_PropLocker | 1;
window['AscDFH'].historyitem_ThemeSetColorScheme = window['AscDFH'].historyitem_type_Theme | 1;
window['AscDFH'].historyitem_ThemeSetFontScheme = window['AscDFH'].historyitem_type_Theme | 2;
window['AscDFH'].historyitem_ThemeSetFmtScheme = window['AscDFH'].historyitem_type_Theme | 3;
window['AscDFH'].historyitem_ThemeSetName = window['AscDFH'].historyitem_type_Theme | 4;
window['AscDFH'].historyitem_ThemeSetIsThemeOverride = window['AscDFH'].historyitem_type_Theme | 5;
window['AscDFH'].historyitem_ThemeSetSpDef = window['AscDFH'].historyitem_type_Theme | 6;
window['AscDFH'].historyitem_ThemeSetLnDef = window['AscDFH'].historyitem_type_Theme | 7;
window['AscDFH'].historyitem_ThemeSetTxDef = window['AscDFH'].historyitem_type_Theme | 8;
window['AscDFH'].historyitem_ThemeAddExtraClrScheme = window['AscDFH'].historyitem_type_Theme | 9;
window['AscDFH'].historyitem_GraphicFrameSetSpPr = window['AscDFH'].historyitem_type_GraphicFrame | 1;
window['AscDFH'].historyitem_GraphicFrameSetGraphicObject = window['AscDFH'].historyitem_type_GraphicFrame | 2;
window['AscDFH'].historyitem_GraphicFrameSetSetNvSpPr = window['AscDFH'].historyitem_type_GraphicFrame | 3;
window['AscDFH'].historyitem_GraphicFrameSetSetParent = window['AscDFH'].historyitem_type_GraphicFrame | 4;
window['AscDFH'].historyitem_GraphicFrameSetSetGroup = window['AscDFH'].historyitem_type_GraphicFrame | 5;
window['AscDFH'].historyitem_Sparkline_Type = window['AscDFH'].historyitem_type_Sparkline | 1;
window['AscDFH'].historyitem_Sparkline_LineWeight = window['AscDFH'].historyitem_type_Sparkline | 2;
window['AscDFH'].historyitem_Sparkline_DisplayEmptyCellsAs = window['AscDFH'].historyitem_type_Sparkline | 3;
window['AscDFH'].historyitem_Sparkline_Markers = window['AscDFH'].historyitem_type_Sparkline | 4;
window['AscDFH'].historyitem_Sparkline_High = window['AscDFH'].historyitem_type_Sparkline | 5;
window['AscDFH'].historyitem_Sparkline_Low = window['AscDFH'].historyitem_type_Sparkline | 6;
window['AscDFH'].historyitem_Sparkline_First = window['AscDFH'].historyitem_type_Sparkline | 7;
window['AscDFH'].historyitem_Sparkline_Last = window['AscDFH'].historyitem_type_Sparkline | 8;
window['AscDFH'].historyitem_Sparkline_Negative = window['AscDFH'].historyitem_type_Sparkline | 9;
window['AscDFH'].historyitem_Sparkline_DisplayXAxis = window['AscDFH'].historyitem_type_Sparkline | 10;
window['AscDFH'].historyitem_Sparkline_DisplayHidden = window['AscDFH'].historyitem_type_Sparkline | 11;
window['AscDFH'].historyitem_Sparkline_MinAxisType = window['AscDFH'].historyitem_type_Sparkline | 12;
window['AscDFH'].historyitem_Sparkline_MaxAxisType = window['AscDFH'].historyitem_type_Sparkline | 13;
window['AscDFH'].historyitem_Sparkline_RightToLeft = window['AscDFH'].historyitem_type_Sparkline | 14;
window['AscDFH'].historyitem_Sparkline_ManualMax = window['AscDFH'].historyitem_type_Sparkline | 15;
window['AscDFH'].historyitem_Sparkline_ManualMin = window['AscDFH'].historyitem_type_Sparkline | 16;
window['AscDFH'].historyitem_Sparkline_DateAxis = window['AscDFH'].historyitem_type_Sparkline | 17;
window['AscDFH'].historyitem_Sparkline_ColorSeries = window['AscDFH'].historyitem_type_Sparkline | 18;
window['AscDFH'].historyitem_Sparkline_ColorNegative = window['AscDFH'].historyitem_type_Sparkline | 19;
window['AscDFH'].historyitem_Sparkline_ColorAxis = window['AscDFH'].historyitem_type_Sparkline | 20;
window['AscDFH'].historyitem_Sparkline_ColorMarkers = window['AscDFH'].historyitem_type_Sparkline | 21;
window['AscDFH'].historyitem_Sparkline_ColorFirst = window['AscDFH'].historyitem_type_Sparkline | 22;
window['AscDFH'].historyitem_Sparkline_colorLast = window['AscDFH'].historyitem_type_Sparkline | 23;
window['AscDFH'].historyitem_Sparkline_ColorHigh = window['AscDFH'].historyitem_type_Sparkline | 24;
window['AscDFH'].historyitem_Sparkline_ColorLow = window['AscDFH'].historyitem_type_Sparkline | 25;
window['AscDFH'].historyitem_Sparkline_F = window['AscDFH'].historyitem_type_Sparkline | 26;
window['AscDFH'].historyitem_Sparkline_ChangeData = window['AscDFH'].historyitem_type_Sparkline | 27;
window['AscDFH'].historyitem_Sparkline_RemoveData = window['AscDFH'].historyitem_type_Sparkline | 28;
window['AscDFH'].historyitem_Sparkline_RemoveSparkline = window['AscDFH'].historyitem_type_Sparkline | 29;
window['AscDFH'].historyitem_PivotTableDefinitionDelete = window['AscDFH'].historyitem_type_PivotTableDefinition | 1;
window['AscDFH'].historyitem_NotesMasterSetHF = window['AscDFH'].historyitem_type_NotesMaster | 1;
window['AscDFH'].historyitem_NotesMasterSetNotesStyle = window['AscDFH'].historyitem_type_NotesMaster | 2;
window['AscDFH'].historyitem_NotesMasterSetNotesTheme = window['AscDFH'].historyitem_type_NotesMaster | 3;
window['AscDFH'].historyitem_NotesMasterAddToSpTree = window['AscDFH'].historyitem_type_NotesMaster | 4;
window['AscDFH'].historyitem_NotesMasterRemoveFromTree = window['AscDFH'].historyitem_type_NotesMaster | 5;
window['AscDFH'].historyitem_NotesMasterSetBg = window['AscDFH'].historyitem_type_NotesMaster | 6;
window['AscDFH'].historyitem_NotesMasterAddToNotesLst = window['AscDFH'].historyitem_type_NotesMaster | 7;
window['AscDFH'].historyitem_NotesMasterSetName = window['AscDFH'].historyitem_type_NotesMaster | 8;
window['AscDFH'].historyitem_NotesSetClrMap = window['AscDFH'].historyitem_type_Notes | 1;
window['AscDFH'].historyitem_NotesSetShowMasterPhAnim = window['AscDFH'].historyitem_type_Notes | 2;
window['AscDFH'].historyitem_NotesSetShowMasterSp = window['AscDFH'].historyitem_type_Notes | 3;
window['AscDFH'].historyitem_NotesAddToSpTree = window['AscDFH'].historyitem_type_Notes | 4;
window['AscDFH'].historyitem_NotesRemoveFromTree = window['AscDFH'].historyitem_type_Notes | 5;
window['AscDFH'].historyitem_NotesSetBg = window['AscDFH'].historyitem_type_Notes | 6;
window['AscDFH'].historyitem_NotesSetName = window['AscDFH'].historyitem_type_Notes | 7;
window['AscDFH'].historyitem_NotesSetSlide = window['AscDFH'].historyitem_type_Notes | 8;
window['AscDFH'].historyitem_NotesSetNotesMaster = window['AscDFH'].historyitem_type_Notes | 9;
window['AscDFH'].historyitem_PresentationSectionSetName = window['AscDFH'].historyitem_type_PresentationSection | 1;
window['AscDFH'].historyitem_PresentationSectionSetGuid = window['AscDFH'].historyitem_type_PresentationSection | 2;
window['AscDFH'].historyitem_PresentationSectionSetStartIndex = window['AscDFH'].historyitem_type_PresentationSection | 3;
//------------------------------------------------------------------------------------------------------------------
// Типы изменений класса CDocumentMacros
//------------------------------------------------------------------------------------------------------------------
window['AscDFH'].historyitem_DocumentMacros_Data = window['Asc'].historyitem_type_DocumentMacros | 1;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Типы действий, который может совершить пользователь
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].historydescription_Cut = 0x0001;
window['AscDFH'].historydescription_PasteButtonIE = 0x0002;
window['AscDFH'].historydescription_PasteButtonNotIE = 0x0003;
window['AscDFH'].historydescription_ChartDrawingObjects = 0x0004;
window['AscDFH'].historydescription_CommonControllerCheckChartText = 0x0005;
window['AscDFH'].historydescription_CommonControllerUnGroup = 0x0006;
window['AscDFH'].historydescription_CommonControllerCheckSelected = 0x0007;
window['AscDFH'].historydescription_CommonControllerSetGraphicObject = 0x0008;
window['AscDFH'].historydescription_CommonStatesAddNewShape = 0x0009;
window['AscDFH'].historydescription_CommonStatesRotate = 0x000a;
window['AscDFH'].historydescription_PasteNative = 0x000b;
window['AscDFH'].historydescription_Document_GroupUnGroup = 0x000c;
window['AscDFH'].historydescription_Document_SetDefaultLanguage = 0x000d;
window['AscDFH'].historydescription_Document_ChangeColorScheme = 0x000e;
window['AscDFH'].historydescription_Document_AddChart = 0x000f;
window['AscDFH'].historydescription_Document_EditChart = 0x0010;
window['AscDFH'].historydescription_Document_DragText = 0x0011;
window['AscDFH'].historydescription_Document_DocumentContentExtendToPos = 0x0012;
window['AscDFH'].historydescription_Document_AddHeader = 0x0013;
window['AscDFH'].historydescription_Document_AddFooter = 0x0014;
window['AscDFH'].historydescription_Document_ParagraphExtendToPos = 0x0015;
window['AscDFH'].historydescription_Document_ParagraphChangeFrame = 0x0016;
window['AscDFH'].historydescription_Document_ReplaceAll = 0x0017;
window['AscDFH'].historydescription_Document_ReplaceSingle = 0x0018;
window['AscDFH'].historydescription_Document_TableAddNewRowByTab = 0x0019;
window['AscDFH'].historydescription_Document_AddNewShape = 0x001a;
window['AscDFH'].historydescription_Document_EditWrapPolygon = 0x001b;
window['AscDFH'].historydescription_Document_MoveInlineObject = 0x001c;
window['AscDFH'].historydescription_Document_CopyAndMoveInlineObject = 0x001d;
window['AscDFH'].historydescription_Document_RotateInlineDrawing = 0x001e;
window['AscDFH'].historydescription_Document_RotateFlowDrawingCtrl = 0x001f;
window['AscDFH'].historydescription_Document_RotateFlowDrawingNoCtrl = 0x0020;
window['AscDFH'].historydescription_Document_MoveInGroup = 0x0021;
window['AscDFH'].historydescription_Document_ChangeWrapContour = 0x0022;
window['AscDFH'].historydescription_Document_ChangeWrapContourAddPoint = 0x0023;
window['AscDFH'].historydescription_Document_GrObjectsBringToFront = 0x0024;
window['AscDFH'].historydescription_Document_GrObjectsBringForwardGroup = 0x0025;
window['AscDFH'].historydescription_Document_GrObjectsBringForward = 0x0026;
window['AscDFH'].historydescription_Document_GrObjectsSendToBackGroup = 0x0027;
window['AscDFH'].historydescription_Document_GrObjectsSendToBack = 0x0028;
window['AscDFH'].historydescription_Document_GrObjectsBringBackwardGroup = 0x0029;
window['AscDFH'].historydescription_Document_GrObjectsBringBackward = 0x002a;
window['AscDFH'].historydescription_Document_GrObjectsChangeWrapPolygon = 0x002b;
window['AscDFH'].historydescription_Document_MathAutoCorrect = 0x002c;
window['AscDFH'].historydescription_Document_SetFramePrWithFontFamily = 0x002d;
window['AscDFH'].historydescription_Document_SetFramePr = 0x002e;
window['AscDFH'].historydescription_Document_SetFramePrWithFontFamilyLong = 0x002f;
window['AscDFH'].historydescription_Document_SetTextFontName = 0x0030;
window['AscDFH'].historydescription_Document_SetTextFontSize = 0x0031;
window['AscDFH'].historydescription_Document_SetTextBold = 0x0032;
window['AscDFH'].historydescription_Document_SetTextItalic = 0x0033;
window['AscDFH'].historydescription_Document_SetTextUnderline = 0x0034;
window['AscDFH'].historydescription_Document_SetTextStrikeout = 0x0035;
window['AscDFH'].historydescription_Document_SetTextDStrikeout = 0x0036;
window['AscDFH'].historydescription_Document_SetTextSpacing = 0x0037;
window['AscDFH'].historydescription_Document_SetTextCaps = 0x0038;
window['AscDFH'].historydescription_Document_SetTextSmallCaps = 0x0039;
window['AscDFH'].historydescription_Document_SetTextPosition = 0x003a;
window['AscDFH'].historydescription_Document_SetTextLang = 0x003b;
window['AscDFH'].historydescription_Document_SetParagraphLineSpacing = 0x003c;
window['AscDFH'].historydescription_Document_SetParagraphLineSpacingBeforeAfter = 0x003d;
window['AscDFH'].historydescription_Document_IncFontSize = 0x003e;
window['AscDFH'].historydescription_Document_DecFontSize = 0x003f;
window['AscDFH'].historydescription_Document_SetParagraphBorders = 0x0040;
window['AscDFH'].historydescription_Document_SetParagraphPr = 0x0041;
window['AscDFH'].historydescription_Document_SetParagraphAlign = 0x0042;
window['AscDFH'].historydescription_Document_SetTextVertAlign = 0x0043;
window['AscDFH'].historydescription_Document_SetParagraphNumbering = 0x0044;
window['AscDFH'].historydescription_Document_SetParagraphStyle = 0x0045;
window['AscDFH'].historydescription_Document_SetParagraphPageBreakBefore = 0x0046;
window['AscDFH'].historydescription_Document_SetParagraphWidowControl = 0x0047;
window['AscDFH'].historydescription_Document_SetParagraphKeepLines = 0x0048;
window['AscDFH'].historydescription_Document_SetParagraphKeepNext = 0x0049;
window['AscDFH'].historydescription_Document_SetParagraphContextualSpacing = 0x004a;
window['AscDFH'].historydescription_Document_SetTextHighlightNone = 0x004b;
window['AscDFH'].historydescription_Document_SetTextHighlightColor = 0x004c;
window['AscDFH'].historydescription_Document_SetTextColor = 0x004d;
window['AscDFH'].historydescription_Document_SetParagraphShd = 0x004e;
window['AscDFH'].historydescription_Document_SetParagraphIndent = 0x004f;
window['AscDFH'].historydescription_Document_IncParagraphIndent = 0x0050;
window['AscDFH'].historydescription_Document_DecParagraphIndent = 0x0051;
window['AscDFH'].historydescription_Document_SetParagraphIndentRight = 0x0052;
window['AscDFH'].historydescription_Document_SetParagraphIndentFirstLine = 0x0053;
window['AscDFH'].historydescription_Document_SetPageOrientation = 0x0054;
window['AscDFH'].historydescription_Document_SetPageSize = 0x0055;
window['AscDFH'].historydescription_Document_AddPageBreak = 0x0056;
window['AscDFH'].historydescription_Document_AddPageNumToHdrFtr = 0x0057;
window['AscDFH'].historydescription_Document_AddPageNumToCurrentPos = 0x0058;
window['AscDFH'].historydescription_Document_SetHdrFtrDistance = 0x0059;
window['AscDFH'].historydescription_Document_SetHdrFtrFirstPage = 0x005a;
window['AscDFH'].historydescription_Document_SetHdrFtrEvenAndOdd = 0x005b;
window['AscDFH'].historydescription_Document_SetHdrFtrLink = 0x005c;
window['AscDFH'].historydescription_Document_AddTable = 0x005d;
window['AscDFH'].historydescription_Document_TableAddRowAbove = 0x005e;
window['AscDFH'].historydescription_Document_TableAddRowBelow = 0x005f;
window['AscDFH'].historydescription_Document_TableAddColumnLeft = 0x0060;
window['AscDFH'].historydescription_Document_TableAddColumnRight = 0x0061;
window['AscDFH'].historydescription_Document_TableRemoveRow = 0x0062;
window['AscDFH'].historydescription_Document_TableRemoveColumn = 0x0063;
window['AscDFH'].historydescription_Document_RemoveTable = 0x0064;
window['AscDFH'].historydescription_Document_MergeTableCells = 0x0065;
window['AscDFH'].historydescription_Document_SplitTableCells = 0x0066;
window['AscDFH'].historydescription_Document_ApplyTablePr = 0x0067;
window['AscDFH'].historydescription_Document_AddImageUrl = 0x0068;
window['AscDFH'].historydescription_Document_AddImageUrlLong = 0x0069;
window['AscDFH'].historydescription_Document_AddImageToPage = 0x006a;
window['AscDFH'].historydescription_Document_ApplyImagePrWithUrl = 0x006b;
window['AscDFH'].historydescription_Document_ApplyImagePrWithUrlLong = 0x006c;
window['AscDFH'].historydescription_Document_ApplyImagePrWithFillUrl = 0x006d;
window['AscDFH'].historydescription_Document_ApplyImagePrWithFillUrlLong = 0x006e;
window['AscDFH'].historydescription_Document_ApplyImagePr = 0x006f;
window['AscDFH'].historydescription_Document_AddHyperlink = 0x0070;
window['AscDFH'].historydescription_Document_ChangeHyperlink = 0x0071;
window['AscDFH'].historydescription_Document_RemoveHyperlink = 0x0072;
window['AscDFH'].historydescription_Document_ReplaceMisspelledWord = 0x0073;
window['AscDFH'].historydescription_Document_AddComment = 0x0074;
window['AscDFH'].historydescription_Document_RemoveComment = 0x0075;
window['AscDFH'].historydescription_Document_ChangeComment = 0x0076;
window['AscDFH'].historydescription_Document_SetTextFontNameLong = 0x0077;
window['AscDFH'].historydescription_Document_AddImage = 0x0078;
window['AscDFH'].historydescription_Document_ClearFormatting = 0x0079;
window['AscDFH'].historydescription_Document_AddSectionBreak = 0x007a;
window['AscDFH'].historydescription_Document_AddMath = 0x007b;
window['AscDFH'].historydescription_Document_SetParagraphTabs = 0x007c;
window['AscDFH'].historydescription_Document_SetParagraphIndentFromRulers = 0x007d;
window['AscDFH'].historydescription_Document_SetDocumentMargin_Hor = 0x007e;
window['AscDFH'].historydescription_Document_SetTableMarkup_Hor = 0x007f;
window['AscDFH'].historydescription_Document_SetDocumentMargin_Ver = 0x0080;
window['AscDFH'].historydescription_Document_SetHdrFtrBounds = 0x0081;
window['AscDFH'].historydescription_Document_SetTableMarkup_Ver = 0x0082;
window['AscDFH'].historydescription_Document_DocumentExtendToPos = 0x0083;
window['AscDFH'].historydescription_Document_AddDropCap = 0x0084;
window['AscDFH'].historydescription_Document_RemoveDropCap = 0x0085;
window['AscDFH'].historydescription_Document_SetTextHighlight = 0x0086;
window['AscDFH'].historydescription_Document_BackSpaceButton = 0x0087;
window['AscDFH'].historydescription_Document_MoveParagraphByTab = 0x0088;
window['AscDFH'].historydescription_Document_AddTab = 0x0089;
window['AscDFH'].historydescription_Document_EnterButton = 0x008a;
window['AscDFH'].historydescription_Document_SpaceButton = 0x008b;
window['AscDFH'].historydescription_Document_ShiftInsert = 0x008c;
window['AscDFH'].historydescription_Document_ShiftInsertSafari = 0x008d;
window['AscDFH'].historydescription_Document_DeleteButton = 0x008e;
window['AscDFH'].historydescription_Document_ShiftDeleteButton = 0x008f;
window['AscDFH'].historydescription_Document_SetStyleHeading1 = 0x0090;
window['AscDFH'].historydescription_Document_SetStyleHeading2 = 0x0091;
window['AscDFH'].historydescription_Document_SetStyleHeading3 = 0x0092;
window['AscDFH'].historydescription_Document_SetTextStrikeoutHotKey = 0x0093;
window['AscDFH'].historydescription_Document_SetTextBoldHotKey = 0x0094;
window['AscDFH'].historydescription_Document_SetParagraphAlignHotKey = 0x0095;
window['AscDFH'].historydescription_Document_AddEuroLetter = 0x0096;
window['AscDFH'].historydescription_Document_SetTextItalicHotKey = 0x0097;
window['AscDFH'].historydescription_Document_SetParagraphAlignHotKey2 = 0x0098;
window['AscDFH'].historydescription_Document_SetParagraphNumberingHotKey = 0x0099;
window['AscDFH'].historydescription_Document_SetParagraphAlignHotKey3 = 0x009a;
window['AscDFH'].historydescription_Document_AddPageNumHotKey = 0x009b;
window['AscDFH'].historydescription_Document_SetParagraphAlignHotKey4 = 0x009c;
window['AscDFH'].historydescription_Document_SetTextUnderlineHotKey = 0x009d;
window['AscDFH'].historydescription_Document_FormatPasteHotKey = 0x009e;
window['AscDFH'].historydescription_Document_PasteHotKey = 0x009f;
window['AscDFH'].historydescription_Document_PasteSafariHotKey = 0x00a0;
window['AscDFH'].historydescription_Document_CutHotKey = 0x00a1;
window['AscDFH'].historydescription_Document_SetTextVertAlignHotKey = 0x00a2;
window['AscDFH'].historydescription_Document_AddMathHotKey = 0x00a3;
window['AscDFH'].historydescription_Document_SetTextVertAlignHotKey2 = 0x00a4;
window['AscDFH'].historydescription_Document_MinusButton = 0x00a5;
window['AscDFH'].historydescription_Document_SetTextVertAlignHotKey3 = 0x00a6;
window['AscDFH'].historydescription_Document_AddLetter = 0x00a7;
window['AscDFH'].historydescription_Document_MoveTableBorder = 0x00a8;
window['AscDFH'].historydescription_Document_FormatPasteHotKey2 = 0x00a9;
window['AscDFH'].historydescription_Document_SetTextHighlight2 = 0x00aa;
window['AscDFH'].historydescription_Document_AddTextFromTextBox = 0x00ab;
window['AscDFH'].historydescription_Document_AddMailMergeField = 0x00ac;
window['AscDFH'].historydescription_Document_MoveInlineTable = 0x00ad;
window['AscDFH'].historydescription_Document_MoveFlowTable = 0x00ae;
window['AscDFH'].historydescription_Document_RestoreFieldTemplateText = 0x00af;
window['AscDFH'].historydescription_Spreadsheet_SetCellFontName = 0x00b0;
window['AscDFH'].historydescription_Spreadsheet_SetCellFontSize = 0x00b1;
window['AscDFH'].historydescription_Spreadsheet_SetCellBold = 0x00b2;
window['AscDFH'].historydescription_Spreadsheet_SetCellItalic = 0x00b3;
window['AscDFH'].historydescription_Spreadsheet_SetCellUnderline = 0x00b4;
window['AscDFH'].historydescription_Spreadsheet_SetCellStrikeout = 0x00b5;
window['AscDFH'].historydescription_Spreadsheet_SetCellSubscript = 0x00b6;
window['AscDFH'].historydescription_Spreadsheet_SetCellSuperscript = 0x00b7;
window['AscDFH'].historydescription_Spreadsheet_SetCellAlign = 0x00b8;
window['AscDFH'].historydescription_Spreadsheet_SetCellVertAlign = 0x00b9;
window['AscDFH'].historydescription_Spreadsheet_SetCellTextColor = 0x00ba;
window['AscDFH'].historydescription_Spreadsheet_SetCellBackgroundColor = 0x00bb;
window['AscDFH'].historydescription_Spreadsheet_SetCellIncreaseFontSize = 0x00bc;
window['AscDFH'].historydescription_Spreadsheet_SetCellDecreaseFontSize = 0x00bd;
window['AscDFH'].historydescription_Spreadsheet_SetCellHyperlinkAdd = 0x00be;
window['AscDFH'].historydescription_Spreadsheet_SetCellHyperlinkModify = 0x00bf;
window['AscDFH'].historydescription_Spreadsheet_SetCellHyperlinkRemove = 0x00c0;
window['AscDFH'].historydescription_Spreadsheet_EditChart = 0x00c1;
window['AscDFH'].historydescription_Spreadsheet_Remove = 0x00c2;
window['AscDFH'].historydescription_Spreadsheet_AddTab = 0x00c3;
window['AscDFH'].historydescription_Spreadsheet_AddNewParagraph = 0x00c4;
window['AscDFH'].historydescription_Spreadsheet_AddSpace = 0x00c5;
window['AscDFH'].historydescription_Spreadsheet_AddItem = 0x00c6;
window['AscDFH'].historydescription_Spreadsheet_PutPrLineSpacing = 0x00c7;
window['AscDFH'].historydescription_Spreadsheet_SetParagraphSpacing = 0x00c8;
window['AscDFH'].historydescription_Spreadsheet_SetGraphicObjectsProps = 0x00c9;
window['AscDFH'].historydescription_Spreadsheet_ParaApply = 0x00ca;
window['AscDFH'].historydescription_Spreadsheet_GraphicObjectLayer = 0x00cb;
window['AscDFH'].historydescription_Spreadsheet_ParagraphAdd = 0x00cc;
window['AscDFH'].historydescription_Spreadsheet_CreateGroup = 0x00cd;
window['AscDFH'].historydescription_CommonDrawings_ChangeAdj = 0x00ce;
window['AscDFH'].historydescription_CommonDrawings_EndTrack = 0x00cf;
window['AscDFH'].historydescription_CommonDrawings_CopyCtrl = 0x00d0;
window['AscDFH'].historydescription_Presentation_ParaApply = 0x00d1;
window['AscDFH'].historydescription_Presentation_ParaFormatPaste = 0x00d2;
window['AscDFH'].historydescription_Presentation_AddNewParagraph = 0x00d3;
window['AscDFH'].historydescription_Presentation_CreateGroup = 0x00d4;
window['AscDFH'].historydescription_Presentation_UnGroup = 0x00d5;
window['AscDFH'].historydescription_Presentation_AddChart = 0x00d6;
window['AscDFH'].historydescription_Presentation_EditChart = 0x00d7;
window['AscDFH'].historydescription_Presentation_ParagraphAdd = 0x00d8;
window['AscDFH'].historydescription_Presentation_ParagraphClearFormatting = 0x00d9;
window['AscDFH'].historydescription_Presentation_SetParagraphAlign = 0x00da;
window['AscDFH'].historydescription_Presentation_SetParagraphSpacing = 0x00db;
window['AscDFH'].historydescription_Presentation_SetParagraphTabs = 0x00dc;
window['AscDFH'].historydescription_Presentation_SetParagraphIndent = 0x00dd;
window['AscDFH'].historydescription_Presentation_SetParagraphNumbering = 0x00de;
window['AscDFH'].historydescription_Presentation_ParagraphIncDecFontSize = 0x00df;
window['AscDFH'].historydescription_Presentation_ParagraphIncDecIndent = 0x00e0;
window['AscDFH'].historydescription_Presentation_SetImageProps = 0x00e1;
window['AscDFH'].historydescription_Presentation_SetShapeProps = 0x00e2;
window['AscDFH'].historydescription_Presentation_ChartApply = 0x00e3;
window['AscDFH'].historydescription_Presentation_ChangeShapeType = 0x00e4;
window['AscDFH'].historydescription_Presentation_SetVerticalAlign = 0x00e5;
window['AscDFH'].historydescription_Presentation_HyperlinkAdd = 0x00e6;
window['AscDFH'].historydescription_Presentation_HyperlinkModify = 0x00e7;
window['AscDFH'].historydescription_Presentation_HyperlinkRemove = 0x00e8;
window['AscDFH'].historydescription_Presentation_DistHor = 0x00e9;
window['AscDFH'].historydescription_Presentation_DistVer = 0x00ea;
window['AscDFH'].historydescription_Presentation_BringToFront = 0x00eb;
window['AscDFH'].historydescription_Presentation_BringForward = 0x00ec;
window['AscDFH'].historydescription_Presentation_SendToBack = 0x00ed;
window['AscDFH'].historydescription_Presentation_BringBackward = 0x00ef;
window['AscDFH'].historydescription_Presentation_ApplyTiming = 0x00f0;
window['AscDFH'].historydescription_Presentation_MoveSlidesToEnd = 0x00f1;
window['AscDFH'].historydescription_Presentation_MoveSlidesNextPos = 0x00f2;
window['AscDFH'].historydescription_Presentation_MoveSlidesPrevPos = 0x00f3;
window['AscDFH'].historydescription_Presentation_MoveSlidesToStart = 0x00f4;
window['AscDFH'].historydescription_Presentation_MoveComments = 0x00f5;
window['AscDFH'].historydescription_Presentation_TableBorder = 0x00f6;
window['AscDFH'].historydescription_Presentation_AddFlowImage = 0x00f7;
window['AscDFH'].historydescription_Presentation_AddFlowTable = 0x00f8;
window['AscDFH'].historydescription_Presentation_ChangeBackground = 0x00f9;
window['AscDFH'].historydescription_Presentation_AddNextSlide = 0x00fa;
window['AscDFH'].historydescription_Presentation_ShiftSlides = 0x00fb;
window['AscDFH'].historydescription_Presentation_DeleteSlides = 0x00fc;
window['AscDFH'].historydescription_Presentation_ChangeLayout = 0x00fd;
window['AscDFH'].historydescription_Presentation_ChangeSlideSize = 0x00fe;
window['AscDFH'].historydescription_Presentation_ChangeColorScheme = 0x00ff;
window['AscDFH'].historydescription_Presentation_AddComment = 0x0100;
window['AscDFH'].historydescription_Presentation_ChangeComment = 0x0101;
window['AscDFH'].historydescription_Presentation_PutTextPrFontName = 0x0102;
window['AscDFH'].historydescription_Presentation_PutTextPrFontSize = 0x0103;
window['AscDFH'].historydescription_Presentation_PutTextPrBold = 0x0104;
window['AscDFH'].historydescription_Presentation_PutTextPrItalic = 0x0105;
window['AscDFH'].historydescription_Presentation_PutTextPrUnderline = 0x0106;
window['AscDFH'].historydescription_Presentation_PutTextPrStrikeout = 0x0107;
window['AscDFH'].historydescription_Presentation_PutTextPrLineSpacing = 0x0108;
window['AscDFH'].historydescription_Presentation_PutTextPrSpacingBeforeAfter = 0x0109;
window['AscDFH'].historydescription_Presentation_PutTextPrIncreaseFontSize = 0x010a;
window['AscDFH'].historydescription_Presentation_PutTextPrDecreaseFontSize = 0x010b;
window['AscDFH'].historydescription_Presentation_PutTextPrAlign = 0x010c;
window['AscDFH'].historydescription_Presentation_PutTextPrBaseline = 0x010d;
window['AscDFH'].historydescription_Presentation_PutTextPrListType = 0x010e;
window['AscDFH'].historydescription_Presentation_PutTextColor = 0x010f;
window['AscDFH'].historydescription_Presentation_PutTextColor2 = 0x010f;
window['AscDFH'].historydescription_Presentation_PutPrIndent = 0x010f;
window['AscDFH'].historydescription_Presentation_PutPrIndentRight = 0x010f;
window['AscDFH'].historydescription_Presentation_PutPrFirstLineIndent = 0x010f;
window['AscDFH'].historydescription_Presentation_AddPageBreak = 0x010f;
window['AscDFH'].historydescription_Presentation_AddRowAbove = 0x0110;
window['AscDFH'].historydescription_Presentation_AddRowBelow = 0x0111;
window['AscDFH'].historydescription_Presentation_AddColLeft = 0x0112;
window['AscDFH'].historydescription_Presentation_AddColRight = 0x0113;
window['AscDFH'].historydescription_Presentation_RemoveRow = 0x0114;
window['AscDFH'].historydescription_Presentation_RemoveCol = 0x0115;
window['AscDFH'].historydescription_Presentation_RemoveTable = 0x0116;
window['AscDFH'].historydescription_Presentation_MergeCells = 0x0117;
window['AscDFH'].historydescription_Presentation_SplitCells = 0x0118;
window['AscDFH'].historydescription_Presentation_TblApply = 0x0119;
window['AscDFH'].historydescription_Presentation_RemoveComment = 0x011a;
window['AscDFH'].historydescription_Presentation_EndFontLoad = 0x011b;
window['AscDFH'].historydescription_Presentation_ChangeTheme = 0x011c;
window['AscDFH'].historydescription_Presentation_TableMoveFromRulers = 0x011d;
window['AscDFH'].historydescription_Presentation_TableMoveFromRulersInline = 0x011e;
window['AscDFH'].historydescription_Presentation_PasteOnThumbnails = 0x011f;
window['AscDFH'].historydescription_Presentation_PasteOnThumbnailsSafari = 0x0120;
window['AscDFH'].historydescription_Document_ConvertOldEquation = 0x0121;
window['AscDFH'].historydescription_Presentation_SetVert = 0x0122;
window['AscDFH'].historydescription_Document_AddNewStyle = 0x0123;
window['AscDFH'].historydescription_Document_RemoveStyle = 0x0124;
window['AscDFH'].historydescription_Document_AddTextArt = 0x0125;
window['AscDFH'].historydescription_Document_RemoveAllCustomStyles = 0x0126;
window['AscDFH'].historydescription_Document_AcceptAllRevisionChanges = 0x0127;
window['AscDFH'].historydescription_Document_RejectAllRevisionChanges = 0x0128;
window['AscDFH'].historydescription_Document_AcceptRevisionChange = 0x0129;
window['AscDFH'].historydescription_Document_RejectRevisionChange = 0x012a;
window['AscDFH'].historydescription_Document_AcceptRevisionChangesBySelection = 0x012b;
window['AscDFH'].historydescription_Document_RejectRevisionChangesBySelection = 0x012c;
window['AscDFH'].historydescription_Document_AddLetterUnion = 0x012d;
window['AscDFH'].historydescription_Presentation_ApplyTimingToAll = 0x012e;
window['AscDFH'].historydescription_Document_SetColumnsFromRuler = 0x012f;
window['AscDFH'].historydescription_Document_SetColumnsProps = 0x0130;
window['AscDFH'].historydescription_Document_AddColumnBreak = 0x0131;
window['AscDFH'].historydescription_Document_SetSectionProps = 0x0132;
window['AscDFH'].historydescription_Document_AddTabToMath = 0x0133;
window['AscDFH'].historydescription_Document_SetMathProps = 0x0134;
window['AscDFH'].historydescription_Document_ApplyPrToMath = 0x0135;
window['AscDFH'].historydescription_Document_ApiBuilder = 0x0136;
window['AscDFH'].historydescription_Document_AddOleObject = 0x0137;
window['AscDFH'].historydescription_Document_EditOleObject = 0x0138;
window['AscDFH'].historydescription_Document_CompositeInput = 0x0139;
window['AscDFH'].historydescription_Document_CompositeInputReplace = 0x013a;
window['AscDFH'].historydescription_Document_AddPageCount = 0x013b;
window['AscDFH'].historydescription_Document_AddFootnote = 0x013c;
window['AscDFH'].historydescription_Document_SetFootnotePr = 0x013d;
window['AscDFH'].historydescription_Document_RemoveAllFootnotes = 0x013e;
window['AscDFH'].historydescription_Document_InsertDocumentsByUrls = 0x013f;
window['AscDFH'].historydescription_Document_InsertSignatureLine = 0x0140;
window['AscDFH'].historydescription_Document_AddBlockLevelContentControl = 0x0141;
window['AscDFH'].historydescription_Document_AddInlineLevelContentControl = 0x0142;
window['AscDFH'].historydescription_Document_RemoveContentControl = 0x0143;
window['AscDFH'].historydescription_Document_RemoveContentControlWrapper = 0x0144;
window['AscDFH'].historydescription_Document_ChangeContentControlProperties = 0x0145;
window['AscDFH'].historydescription_Presentation_HideSlides = 0x0146;
window['AscDFH'].historydescription_DocumentMacros_Data = 0x0147;
window['AscDFH'].historydescription_Document_AddBookmark = 0x0148;
window['AscDFH'].historydescription_Document_AddTableOfContents = 0x0149;
window['AscDFH'].historydescription_Document_ChangeOutlineLevel = 0x014a;
window['AscDFH'].historydescription_Document_AddElementToOutline = 0x014b;
window['AscDFH'].historydescription_Document_ResizeTable = 0x014c;
window['AscDFH'].historydescription_Document_RemoveComplexField = 0x014d;
window['AscDFH'].historydescription_Document_SetComplexFieldPr = 0x014e;
window['AscDFH'].historydescription_Document_UpdateTableOfContents = 0x014f;
window['AscDFH'].historydescription_Document_SectionStartPage = 0x0150;
window['AscDFH'].historydescription_Document_DistributeTableCells = 0x0151;
window['AscDFH'].historydescription_Document_RemoveBookmark = 0x0152;
window['AscDFH'].historydescription_Document_ContinueNumbering = 0x0153;
window['AscDFH'].historydescription_Document_RestartNumbering = 0x0154;
window['AscDFH'].historydescription_Document_AutomaticListAsType = 0x0155;
window['AscDFH'].historydescription_Document_CreateNum = 0x0156;
window['AscDFH'].historydescription_Document_ChangeNumLvl = 0x0157;
window['AscDFH'].historydescription_Document_AutoCorrectSmartQuotes = 0x0158;
window['AscDFH'].historydescription_Document_AutoCorrectHyphensWithDash = 0x0159;
window['AscDFH'].historydescription_Document_SetGlobalSdtHighlightColor = 0x015a;
window['AscDFH'].historydescription_Document_SetGlobalSdtShowHighlight = 0x015b;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Фабрика изменений (заполняется там же, где и определяются классы изменений)
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].changesFactory = {};
window['AscDFH'].changesFactory[window['AscDFH'].historyitem_Unknown_Unknown] = CChangesBase;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Карта зависимости изменений. Изменения зависят только от изменений для того же класса, но вот типы могут быть
// разными. В основном изменения зависят только от изменений такого же типа.
//
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
window['AscDFH'].changesRelationMap = {};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Базовые классы для изменений
//
// Разница между классами Property и Value в том, что Property могут быть undefined, а Value всегда значение
// заданного типа.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* Базовый класс для всех изменений совместного редактирования.
* @constructor
*/
function CChangesBase(Class)
{
this.Class = Class;
this.Reverted = false;
}
CChangesBase.prototype.Type = window['AscDFH'].historyitem_Unknown_Unknown;
CChangesBase.prototype.Undo = function()
{
if (this.Class && this.Class.Undo)
this.Class.Undo(this);
};
CChangesBase.prototype.Redo = function()
{
if (this.Class && this.Class.Redo)
this.Class.Redo(this);
};
CChangesBase.prototype.WriteToBinary = function(Writer)
{
if (this.Class && this.Class.Save_Changes)
this.Class.Save_Changes(this, Writer);
};
CChangesBase.prototype.ReadFromBinary = function(Reader)
{
};
CChangesBase.prototype.Load = function()
{
// В большинстве случаев загрузка чужого изменения работает как простое Redo
this.Redo();
};
CChangesBase.prototype.GetClass = function()
{
return this.Class;
};
CChangesBase.prototype.RefreshRecalcData = function()
{
if (this.Class && this.Class.Refresh_RecalcData)
this.Class.Refresh_RecalcData(this);
};
CChangesBase.prototype.IsContentChange = function()
{
return false;
};
CChangesBase.prototype.CreateReverseChange = function()
{
return null;
};
CChangesBase.prototype.Merge = function(oChange)
{
return true;
};
CChangesBase.prototype.IsPosExtChange = function(oChange)
{
return false;
};
CChangesBase.prototype.IsReverted = function()
{
return this.Reverted;
};
CChangesBase.prototype.SetReverted = function(isReverted)
{
this.Reverted = isReverted;
};
CChangesBase.prototype.IsParagraphSimpleChanges = function()
{
return false;
};
window['AscDFH'].CChangesBase = CChangesBase;
/**
* Базовый класс для изменений, которые меняют содержимое родительского класса.*
* @constructor
* @extends {AscDFH.CChangesBase}
*/
function CChangesBaseContentChange(Class, Pos, Items, isAdd)
{
CChangesBase.call(this, Class);
this.Pos = Pos;
this.Items = Items;
this.UseArray = false;
this.PosArray = [];
this.Add = isAdd;
this.Reverted = false;
}
CChangesBaseContentChange.prototype = Object.create(CChangesBase.prototype);
CChangesBaseContentChange.prototype.constructor = CChangesBaseContentChange;
CChangesBaseContentChange.prototype.IsContentChange = function()
{
return true;
};
CChangesBaseContentChange.prototype.IsAdd = function()
{
return this.Add;
};
CChangesBaseContentChange.prototype.Copy = function()
{
var oChanges = new this.constructor(this.Class, this.Pos, this.Items, this.Add);
oChanges.UseArray = this.UseArray;
for (var nIndex = 0, nCount = this.PosArray.length; nIndex < nCount; ++nIndex)
oChanges.PosArray[nIndex] = this.PosArray[nIndex];
return oChanges;
};
CChangesBaseContentChange.prototype.GetItemsCount = function()
{
return this.Items.length;
};
CChangesBaseContentChange.prototype.WriteToBinary = function(Writer)
{
// Long : Количество элементов
// Array of
// {
// Long : позиции элементов
// Variable : Item
// }
// Long : Поле Color
var bArray = this.UseArray;
var nCount = this.Items.length;
var nStartPos = Writer.GetCurPosition();
Writer.Skip(4);
var nRealCount = nCount;
for (var nIndex = 0; nIndex < nCount; ++nIndex)
{
if (true === bArray)
{
if (false === this.PosArray[nIndex])
{
nRealCount--;
}
else
{
Writer.WriteLong(this.PosArray[nIndex]);
this.private_WriteItem(Writer, this.Items[nIndex]);
}
}
else
{
Writer.WriteLong(this.Pos);
this.private_WriteItem(Writer, this.Items[nIndex]);
}
}
var nEndPos = Writer.GetCurPosition();
Writer.Seek(nStartPos);
Writer.WriteLong(nRealCount);
Writer.Seek(nEndPos);
var nColor = 0;
if (undefined !== this.Color)
{
nColor |= 1;
if (true === this.Color)
nColor |= 2;
}
Writer.WriteLong(nColor);
};
CChangesBaseContentChange.prototype.ReadFromBinary = function(Reader)
{
// Long : Количество элементов
// Array of
// {
// Long : позиции элементов
// Variable : Item
// }
// Long : поле Color
this.UseArray = true;
this.Items = [];
this.PosArray = [];
var nCount = Reader.GetLong();
for (var nIndex = 0; nIndex < nCount; ++nIndex)
{
this.PosArray[nIndex] = Reader.GetLong();
this.Items[nIndex] = this.private_ReadItem(Reader);
}
var nColor = Reader.GetLong();
if (nColor & 1)
this.Color = (nColor & 2) ? true : false;
};
CChangesBaseContentChange.prototype.private_WriteItem = function(Writer, Item)
{
};
CChangesBaseContentChange.prototype.private_ReadItem = function(Reader)
{
return null;
};
CChangesBaseContentChange.prototype.ConvertToSimpleActions = function()
{
var arrActions = [];
if (this.UseArray)
{
for (var nIndex = 0, nCount = this.Items.length; nIndex < nCount; ++nIndex)
{
arrActions.push({
Item : this.Items[nIndex],
Pos : this.PosArray[nIndex],
Add : this.Add
});
}
}
else
{
var Pos = this.Pos;
for (var nIndex = 0, nCount = this.Items.length; nIndex < nCount; ++nIndex)
{
arrActions.push({
Item : this.Items[nIndex],
Pos : Pos + nIndex,
Add : this.Add
});
}
}
return arrActions;
};
CChangesBaseContentChange.prototype.ConvertFromSimpleActions = function(arrActions)
{
this.UseArray = true;
this.Pos = 0;
this.Items = [];
this.PosArray = [];
for (var nIndex = 0, nCount = arrActions.length; nIndex < nCount; ++nIndex)
{
this.PosArray[nIndex] = arrActions[nIndex].Pos;
this.Items[nIndex] = arrActions[nIndex].Item;
}
};
CChangesBaseContentChange.prototype.IsRelated = function(oChanges)
{
if (this.Class !== oChanges.GetClass() || this.Type !== oChanges.Type)
return false;
return true;
};
CChangesBaseContentChange.prototype.private_CreateReverseChange = function(fConstructor)
{
var oChange = new fConstructor();
oChange.Class = this.Class;
oChange.Pos = this.Pos;
oChange.Items = this.Items;
oChange.Add = !this.Add;
oChange.UseArray = this.UseArray;
oChange.PosArray = [];
for (var nIndex = 0, nCount = this.PosArray.length; nIndex < nCount; ++nIndex)
oChange.PosArray[nIndex] = this.PosArray[nIndex];
return oChange;
};
CChangesBaseContentChange.prototype.Merge = function(oChange)
{
// TODO: Сюда надо бы перенести работу с ContentChanges
return true;
};
CChangesBaseContentChange.prototype.GetMinPos = function()
{
var nPos = null;
if (this.UseArray)
{
for (var nIndex = 0, nCount = this.PosArray.length; nIndex < nCount; ++nIndex)
{
if (null === nPos || nPos > this.PosArray[nIndex])
nPos = this.PosArray[nIndex];
}
if (null === nPos)
nPos = 0;
}
else
{
nPos = this.Pos;
}
return nPos;
};
window['AscDFH'].CChangesBaseContentChange = CChangesBaseContentChange;
/**
* Базовый класс для изменения свойств.
* @constructor
* @extends {AscDFH.CChangesBase}
*/
function CChangesBaseProperty(Class, Old, New, Color)
{
CChangesBase.call(this, Class);
this.Color = true === Color ? true : false;
this.Old = Old;
this.New = New;
}
CChangesBaseProperty.prototype = Object.create(CChangesBase.prototype);
CChangesBaseProperty.prototype.constructor = CChangesBaseProperty;
CChangesBaseProperty.prototype.Undo = function()
{
this.private_SetValue(this.Old);
};
CChangesBaseProperty.prototype.Redo = function()
{
this.private_SetValue(this.New);
};
CChangesBaseProperty.prototype.private_SetValue = function(Value)
{
// Эту функцию нужно переопределить в дочернем классе
};
CChangesBaseProperty.prototype.CreateReverseChange = function()
{
return new this.constructor(this.Class, this.New, this.Old, this.Color);
};
CChangesBaseProperty.prototype.Merge = function(oChange)
{
if (oChange.Class === this.Class && oChange.Type === this.Type)
{
this.New = oChange.New;
return false;
}
return true;
};
window['AscDFH'].CChangesBaseProperty = CChangesBaseProperty;
/**
* Базовый класс для изменения булевых свойств.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseBoolProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseBoolProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseBoolProperty.prototype.constructor = CChangesBaseBoolProperty;
CChangesBaseBoolProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : New value
// 4-bit : IsUndefined Old
// 5-bit : Old value
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
else if (true === this.New)
nFlags |= 4;
if (undefined === this.Old)
nFlags |= 8;
else if (true === this.Old)
nFlags |= 16;
Writer.WriteLong(nFlags);
};
CChangesBaseBoolProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : New value
// 4-bit : IsUndefined Old
// 5-bit : Old value
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
this.New = undefined;
else if (nFlags & 4)
this.New = true;
else
this.New = false;
if (nFlags & 8)
this.Old = undefined;
else if (nFlags & 16)
this.Old = true;
else
this.Old = false;
};
window['AscDFH'].CChangesBaseBoolProperty = CChangesBaseBoolProperty;
/**
* Базовый класс для изменения числовых (double) свойств.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseDoubleProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseDoubleProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseDoubleProperty.prototype.constructor = CChangesBaseDoubleProperty;
CChangesBaseDoubleProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// double : New
// double : Old
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
if (undefined === this.Old)
nFlags |= 4;
Writer.WriteLong(nFlags);
if (undefined !== this.New)
Writer.WriteDouble(this.New);
if (undefined !== this.Old)
Writer.WriteDouble(this.Old);
};
CChangesBaseDoubleProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// double : New
// double : Old
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
this.New = undefined;
else
this.New = Reader.GetDouble();
if (nFlags & 4)
this.Old = undefined;
else
this.Old = Reader.GetDouble();
};
window['AscDFH'].CChangesBaseDoubleProperty = CChangesBaseDoubleProperty;
/**
* Базовый класс для изменения объектных свойств, т.е. если свойство задано объектом.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseObjectProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseObjectProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseObjectProperty.prototype.constructor = CChangesBaseObjectProperty;
CChangesBaseObjectProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// Variable : New
// Variable : Old
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
if (undefined === this.Old)
nFlags |= 4;
Writer.WriteLong(nFlags);
if (undefined !== this.New && this.New.Write_ToBinary)
this.New.Write_ToBinary(Writer);
if (undefined !== this.Old && this.Old.Write_ToBinary)
this.Old.Write_ToBinary(Writer);
};
CChangesBaseObjectProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// Variable : New
// Variable : Old
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
{
if (true === this.private_IsCreateEmptyObject())
this.New = this.private_CreateObject();
else
this.New = undefined;
}
else
{
this.New = this.private_CreateObject();
if (this.New && this.New.Read_FromBinary)
this.New.Read_FromBinary(Reader);
}
if (nFlags & 4)
{
if (true === this.private_IsCreateEmptyObject())
this.Old = this.private_CreateObject();
else
this.Old = undefined;
}
else
{
this.Old = this.private_CreateObject();
if (this.Old && this.Old.Read_FromBinary)
this.Old.Read_FromBinary(Reader);
}
};
CChangesBaseObjectProperty.prototype.private_CreateObject = function()
{
// Эту функцию нужно переопределить в дочернем классе
return null;
};
CChangesBaseObjectProperty.prototype.private_IsCreateEmptyObject = function()
{
return false;
};
window['AscDFH'].CChangesBaseObjectProperty = CChangesBaseObjectProperty;
/**
* Базовый класс для изменения числовых (long) свойств.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseLongProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseLongProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseLongProperty.prototype.constructor = CChangesBaseLongProperty;
CChangesBaseLongProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// long : New
// long : Old
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
if (undefined === this.Old)
nFlags |= 4;
Writer.WriteLong(nFlags);
if (undefined !== this.New)
Writer.WriteLong(this.New);
if (undefined !== this.Old)
Writer.WriteLong(this.Old);
};
CChangesBaseLongProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// long : New
// long : Old
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
this.New = undefined;
else
this.New = Reader.GetLong();
if (nFlags & 4)
this.Old = undefined;
else
this.Old = Reader.GetLong();
};
window['AscDFH'].CChangesBaseLongProperty = CChangesBaseLongProperty;
/**
* Базовый класс для изменения строковых свойств.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseStringProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseStringProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseStringProperty.prototype.constructor = CChangesBaseStringProperty;
CChangesBaseStringProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// string : New
// string : Old
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
if (undefined === this.Old)
nFlags |= 4;
Writer.WriteLong(nFlags);
if (undefined !== this.New)
Writer.WriteString2(this.New);
if (undefined !== this.Old)
Writer.WriteString2(this.Old);
};
CChangesBaseStringProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// string : New
// string : Old
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
this.New = undefined;
else
this.New = Reader.GetString2();
if (nFlags & 4)
this.Old = undefined;
else
this.Old = Reader.GetString2();
};
window['AscDFH'].CChangesBaseStringProperty = CChangesBaseStringProperty;
/**
* Базовый класс для изменения числовых (byte) свойств.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseByteProperty(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseByteProperty.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseByteProperty.prototype.constructor = CChangesBaseByteProperty;
CChangesBaseByteProperty.prototype.WriteToBinary = function(Writer)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// byte : New
// byte : Old
var nFlags = 0;
if (false !== this.Color)
nFlags |= 1;
if (undefined === this.New)
nFlags |= 2;
if (undefined === this.Old)
nFlags |= 4;
Writer.WriteLong(nFlags);
if (undefined !== this.New)
Writer.WriteByte(this.New);
if (undefined !== this.Old)
Writer.WriteByte(this.Old);
};
CChangesBaseByteProperty.prototype.ReadFromBinary = function(Reader)
{
// Long : Flag
// 1-bit : Подсвечивать ли данные изменения
// 2-bit : IsUndefined New
// 3-bit : IsUndefined Old
// byte : New
// byte : Old
var nFlags = Reader.GetLong();
if (nFlags & 1)
this.Color = true;
else
this.Color = false;
if (nFlags & 2)
this.New = undefined;
else
this.New = Reader.GetByte();
if (nFlags & 4)
this.Old = undefined;
else
this.Old = Reader.GetByte();
};
window['AscDFH'].CChangesBaseByteProperty = CChangesBaseByteProperty;
/**
* Базовый класс для изменения числовых(long) значений.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseLongValue(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseLongValue.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseLongValue.prototype.constructor = CChangesBaseLongValue;
CChangesBaseLongValue.prototype.WriteToBinary = function(Writer)
{
// Long : New
// Long : Old
Writer.WriteLong(this.New);
Writer.WriteLong(this.Old);
};
CChangesBaseLongValue.prototype.ReadFromBinary = function(Reader)
{
// Long : New
// Long : Old
this.New = Reader.GetLong();
this.Old = Reader.GetLong();
};
window['AscDFH'].CChangesBaseLongValue = CChangesBaseLongValue;
/**
* Базовый класс для изменения булевых значений.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseBoolValue(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseBoolValue.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseBoolValue.prototype.constructor = CChangesBaseBoolValue;
CChangesBaseBoolValue.prototype.WriteToBinary = function(Writer)
{
// Bool : New
// Bool : Old
Writer.WriteBool(this.New);
Writer.WriteBool(this.Old);
};
CChangesBaseBoolValue.prototype.ReadFromBinary = function(Reader)
{
// Bool : New
// Bool : Old
this.New = Reader.GetBool();
this.Old = Reader.GetBool();
};
window['AscDFH'].CChangesBaseBoolValue = CChangesBaseBoolValue;
/**
* Базовый класс для изменения объектных значений.
* @constructor
* @extends {AscDFH.CChangesBaseObjectProperty}
*/
function CChangesBaseObjectValue(Class, Old, New, Color)
{
CChangesBaseObjectProperty.call(this, Class, Old, New, Color);
}
CChangesBaseObjectValue.prototype = Object.create(CChangesBaseObjectProperty.prototype);
CChangesBaseObjectValue.prototype.constructor = CChangesBaseObjectValue;
CChangesBaseObjectValue.prototype.private_IsCreateEmptyObject = function()
{
return true;
};
window['AscDFH'].CChangesBaseObjectValue = CChangesBaseObjectValue;
/**
* Базовый класс для изменения строковых значений.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseStringValue(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseStringValue.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseStringValue.prototype.constructor = CChangesBaseStringValue;
CChangesBaseStringValue.prototype.WriteToBinary = function(Writer)
{
// String : New
// String : Old
Writer.WriteString2(this.New);
Writer.WriteString2(this.Old);
};
CChangesBaseStringValue.prototype.ReadFromBinary = function(Reader)
{
// String : New
// String : Old
this.New = Reader.GetString2();
this.Old = Reader.GetString2();
};
window['AscDFH'].CChangesBaseStringValue = CChangesBaseStringValue;
/**
* Базовый класс для изменения числовых(byte) значений.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseByteValue(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseByteValue.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseByteValue.prototype.constructor = CChangesBaseByteValue;
CChangesBaseByteValue.prototype.WriteToBinary = function(Writer)
{
// Byte : New
// Byte : Old
Writer.WriteByte(this.New);
Writer.WriteByte(this.Old);
};
CChangesBaseByteValue.prototype.ReadFromBinary = function(Reader)
{
// Byte : New
// Byte : Old
this.New = Reader.GetByte();
this.Old = Reader.GetByte();
};
window['AscDFH'].CChangesBaseByteValue = CChangesBaseByteValue;
/**
* Базовый класс для изменения числовых(double) значений.
* @constructor
* @extends {AscDFH.CChangesBaseProperty}
*/
function CChangesBaseDoubleValue(Class, Old, New, Color)
{
CChangesBaseProperty.call(this, Class, Old, New, Color);
}
CChangesBaseDoubleValue.prototype = Object.create(CChangesBaseProperty.prototype);
CChangesBaseDoubleValue.prototype.constructor = CChangesBaseDoubleValue;
CChangesBaseDoubleValue.prototype.WriteToBinary = function(Writer)
{
// Double : New
// Double : Old
Writer.WriteDouble(this.New);
Writer.WriteDouble(this.Old);
};
CChangesBaseDoubleValue.prototype.ReadFromBinary = function(Reader)
{
// Double : New
// Double : Old
this.New = Reader.GetDouble();
this.Old = Reader.GetDouble();
};
window['AscDFH'].CChangesBaseDoubleValue = CChangesBaseDoubleValue;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
/**
* User: Ilja.Kirillov
* Date: 26.10.2016
* Time: 18:45
*/
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined)
{
function CTableId()
{
this.m_aPairs = null;
this.m_bTurnOff = false;
this.m_oFactoryClass = {};
this.Id = null;
this.isInit = false;
}
CTableId.prototype.checkInit = function()
{
return this.isInit;
};
CTableId.prototype.init = function()
{
this.m_aPairs = {};
this.m_bTurnOff = false;
this.m_oFactoryClass = {};
this.Id = AscCommon.g_oIdCounter.Get_NewId();
this.Add(this, this.Id);
this.private_InitFactoryClass();
this.isInit = true;
};
CTableId.prototype.Add = function(Class, Id)
{
if (false === this.m_bTurnOff)
{
Class.Id = Id;
this.m_aPairs[Id] = Class;
AscCommon.History.Add(new AscCommon.CChangesTableIdAdd(this, Id, Class));
}
};
CTableId.prototype.TurnOff = function()
{
this.m_bTurnOff = true;
};
CTableId.prototype.TurnOn = function()
{
this.m_bTurnOff = false;
};
/**
* Получаем указатель на класс по Id
* @param Id
* @returns {*}
*/
CTableId.prototype.Get_ById = function(Id)
{
if ("" === Id)
return null;
if (this.m_aPairs[Id])
return this.m_aPairs[Id];
return null;
};
/**
* Получаем Id, по классу (вообще, данную функцию лучше не использовать)
* @param Class
* @returns {*}
*/
CTableId.prototype.Get_ByClass = function(Class)
{
if (Class.Get_Id)
return Class.Get_Id();
if (Class.GetId())
return Class.GetId();
return null;
};
CTableId.prototype.Get_Id = function()
{
return this.Id;
};
CTableId.prototype.Clear = function()
{
this.m_aPairs = {};
this.m_bTurnOff = false;
this.Id = AscCommon.g_oIdCounter.Get_NewId();
this.Add(this, this.Id);
};
CTableId.prototype.private_InitFactoryClass = function()
{
this.m_oFactoryClass[AscDFH.historyitem_type_Paragraph] = AscCommonWord.Paragraph;
this.m_oFactoryClass[AscDFH.historyitem_type_TextPr] = AscCommonWord.ParaTextPr;
this.m_oFactoryClass[AscDFH.historyitem_type_Hyperlink] = AscCommonWord.ParaHyperlink;
this.m_oFactoryClass[AscDFH.historyitem_type_Drawing] = AscCommonWord.ParaDrawing;
this.m_oFactoryClass[AscDFH.historyitem_type_Table] = AscCommonWord.CTable;
this.m_oFactoryClass[AscDFH.historyitem_type_TableRow] = AscCommonWord.CTableRow;
this.m_oFactoryClass[AscDFH.historyitem_type_TableCell] = AscCommonWord.CTableCell;
this.m_oFactoryClass[AscDFH.historyitem_type_DocumentContent] = AscCommonWord.CDocumentContent;
this.m_oFactoryClass[AscDFH.historyitem_type_HdrFtr] = AscCommonWord.CHeaderFooter;
this.m_oFactoryClass[AscDFH.historyitem_type_AbstractNum] = AscCommonWord.CAbstractNum;
this.m_oFactoryClass[AscDFH.historyitem_type_Comment] = AscCommon.CComment;
this.m_oFactoryClass[AscDFH.historyitem_type_Style] = AscCommonWord.CStyle;
this.m_oFactoryClass[AscDFH.historyitem_type_CommentMark] = AscCommon.ParaComment;
this.m_oFactoryClass[AscDFH.historyitem_type_ParaRun] = AscCommonWord.ParaRun;
this.m_oFactoryClass[AscDFH.historyitem_type_Section] = AscCommonWord.CSectionPr;
this.m_oFactoryClass[AscDFH.historyitem_type_Field] = AscCommonWord.ParaField;
this.m_oFactoryClass[AscDFH.historyitem_type_FootEndNote] = AscCommonWord.CFootEndnote;
this.m_oFactoryClass[AscDFH.historyitem_type_DefaultShapeDefinition] = AscFormat.DefaultShapeDefinition;
this.m_oFactoryClass[AscDFH.historyitem_type_CNvPr] = AscFormat.CNvPr;
this.m_oFactoryClass[AscDFH.historyitem_type_NvPr] = AscFormat.NvPr;
this.m_oFactoryClass[AscDFH.historyitem_type_Ph] = AscFormat.Ph;
this.m_oFactoryClass[AscDFH.historyitem_type_UniNvPr] = AscFormat.UniNvPr;
this.m_oFactoryClass[AscDFH.historyitem_type_StyleRef] = AscFormat.StyleRef;
this.m_oFactoryClass[AscDFH.historyitem_type_FontRef] = AscFormat.FontRef;
this.m_oFactoryClass[AscDFH.historyitem_type_Chart] = AscFormat.CChart;
this.m_oFactoryClass[AscDFH.historyitem_type_ChartSpace] = AscFormat.CChartSpace;
this.m_oFactoryClass[AscDFH.historyitem_type_Legend] = AscFormat.CLegend;
this.m_oFactoryClass[AscDFH.historyitem_type_Layout] = AscFormat.CLayout;
this.m_oFactoryClass[AscDFH.historyitem_type_LegendEntry] = AscFormat.CLegendEntry;
this.m_oFactoryClass[AscDFH.historyitem_type_PivotFmt] = AscFormat.CPivotFmt;
this.m_oFactoryClass[AscDFH.historyitem_type_DLbl] = AscFormat.CDLbl;
this.m_oFactoryClass[AscDFH.historyitem_type_Marker] = AscFormat.CMarker;
this.m_oFactoryClass[AscDFH.historyitem_type_PlotArea] = AscFormat.CPlotArea;
this.m_oFactoryClass[AscDFH.historyitem_type_NumFmt] = AscFormat.CNumFmt;
this.m_oFactoryClass[AscDFH.historyitem_type_Scaling] = AscFormat.CScaling;
this.m_oFactoryClass[AscDFH.historyitem_type_DTable] = AscFormat.CDTable;
this.m_oFactoryClass[AscDFH.historyitem_type_LineChart] = AscFormat.CLineChart;
this.m_oFactoryClass[AscDFH.historyitem_type_DLbls] = AscFormat.CDLbls;
this.m_oFactoryClass[AscDFH.historyitem_type_UpDownBars] = AscFormat.CUpDownBars;
this.m_oFactoryClass[AscDFH.historyitem_type_BarChart] = AscFormat.CBarChart;
this.m_oFactoryClass[AscDFH.historyitem_type_BubbleChart] = AscFormat.CBubbleChart;
this.m_oFactoryClass[AscDFH.historyitem_type_DoughnutChart] = AscFormat.CDoughnutChart;
this.m_oFactoryClass[AscDFH.historyitem_type_OfPieChart] = AscFormat.COfPieChart;
this.m_oFactoryClass[AscDFH.historyitem_type_PieChart] = AscFormat.CPieChart;
this.m_oFactoryClass[AscDFH.historyitem_type_RadarChart] = AscFormat.CRadarChart;
this.m_oFactoryClass[AscDFH.historyitem_type_ScatterChart] = AscFormat.CScatterChart;
this.m_oFactoryClass[AscDFH.historyitem_type_StockChart] = AscFormat.CStockChart;
this.m_oFactoryClass[AscDFH.historyitem_type_SurfaceChart] = AscFormat.CSurfaceChart;
this.m_oFactoryClass[AscDFH.historyitem_type_BandFmt] = AscFormat.CBandFmt;
this.m_oFactoryClass[AscDFH.historyitem_type_AreaChart] = AscFormat.CAreaChart;
this.m_oFactoryClass[AscDFH.historyitem_type_ScatterSer] = AscFormat.CScatterSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_DPt] = AscFormat.CDPt;
this.m_oFactoryClass[AscDFH.historyitem_type_ErrBars] = AscFormat.CErrBars;
this.m_oFactoryClass[AscDFH.historyitem_type_MinusPlus] = AscFormat.CMinusPlus;
this.m_oFactoryClass[AscDFH.historyitem_type_NumLit] = AscFormat.CNumLit;
this.m_oFactoryClass[AscDFH.historyitem_type_NumericPoint] = AscFormat.CNumericPoint;
this.m_oFactoryClass[AscDFH.historyitem_type_NumRef] = AscFormat.CNumRef;
this.m_oFactoryClass[AscDFH.historyitem_type_TrendLine] = AscFormat.CTrendLine;
this.m_oFactoryClass[AscDFH.historyitem_type_Tx] = AscFormat.CTx;
this.m_oFactoryClass[AscDFH.historyitem_type_StrRef] = AscFormat.CStrRef;
this.m_oFactoryClass[AscDFH.historyitem_type_StrCache] = AscFormat.CStrCache;
this.m_oFactoryClass[AscDFH.historyitem_type_StrPoint] = AscFormat.CStringPoint;
this.m_oFactoryClass[AscDFH.historyitem_type_XVal] = AscFormat.CXVal;
this.m_oFactoryClass[AscDFH.historyitem_type_MultiLvlStrRef] = AscFormat.CMultiLvlStrRef;
this.m_oFactoryClass[AscDFH.historyitem_type_MultiLvlStrCache] = AscFormat.CMultiLvlStrCache;
this.m_oFactoryClass[AscDFH.historyitem_type_StringLiteral] = AscFormat.CStringLiteral;
this.m_oFactoryClass[AscDFH.historyitem_type_YVal] = AscFormat.CYVal;
this.m_oFactoryClass[AscDFH.historyitem_type_AreaSeries] = AscFormat.CAreaSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_Cat] = AscFormat.CCat;
this.m_oFactoryClass[AscDFH.historyitem_type_PictureOptions] = AscFormat.CPictureOptions;
this.m_oFactoryClass[AscDFH.historyitem_type_RadarSeries] = AscFormat.CRadarSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_BarSeries] = AscFormat.CBarSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_LineSeries] = AscFormat.CLineSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_PieSeries] = AscFormat.CPieSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_SurfaceSeries] = AscFormat.CSurfaceSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_BubbleSeries] = AscFormat.CBubbleSeries;
this.m_oFactoryClass[AscDFH.historyitem_type_ExternalData] = AscFormat.CExternalData;
this.m_oFactoryClass[AscDFH.historyitem_type_PivotSource] = AscFormat.CPivotSource;
this.m_oFactoryClass[AscDFH.historyitem_type_Protection] = AscFormat.CProtection;
this.m_oFactoryClass[AscDFH.historyitem_type_ChartWall] = AscFormat.CChartWall;
this.m_oFactoryClass[AscDFH.historyitem_type_View3d] = AscFormat.CView3d;
this.m_oFactoryClass[AscDFH.historyitem_type_ChartText] = AscFormat.CChartText;
this.m_oFactoryClass[AscDFH.historyitem_type_ShapeStyle] = AscFormat.CShapeStyle;
this.m_oFactoryClass[AscDFH.historyitem_type_Xfrm] = AscFormat.CXfrm;
this.m_oFactoryClass[AscDFH.historyitem_type_SpPr] = AscFormat.CSpPr;
this.m_oFactoryClass[AscDFH.historyitem_type_ClrScheme] = AscFormat.ClrScheme;
this.m_oFactoryClass[AscDFH.historyitem_type_ClrMap] = AscFormat.ClrMap;
this.m_oFactoryClass[AscDFH.historyitem_type_ExtraClrScheme] = AscFormat.ExtraClrScheme;
this.m_oFactoryClass[AscDFH.historyitem_type_FontCollection] = AscFormat.FontCollection;
this.m_oFactoryClass[AscDFH.historyitem_type_FontScheme] = AscFormat.FontScheme;
this.m_oFactoryClass[AscDFH.historyitem_type_FormatScheme] = AscFormat.FmtScheme;
this.m_oFactoryClass[AscDFH.historyitem_type_ThemeElements] = AscFormat.ThemeElements;
this.m_oFactoryClass[AscDFH.historyitem_type_HF] = AscFormat.HF;
this.m_oFactoryClass[AscDFH.historyitem_type_BgPr] = AscFormat.CBgPr;
this.m_oFactoryClass[AscDFH.historyitem_type_Bg] = AscFormat.CBg;
this.m_oFactoryClass[AscDFH.historyitem_type_PrintSettings] = AscFormat.CPrintSettings;
this.m_oFactoryClass[AscDFH.historyitem_type_HeaderFooterChart] = AscFormat.CHeaderFooterChart;
this.m_oFactoryClass[AscDFH.historyitem_type_PageMarginsChart] = AscFormat.CPageMarginsChart;
this.m_oFactoryClass[AscDFH.historyitem_type_PageSetup] = AscFormat.CPageSetup;
this.m_oFactoryClass[AscDFH.historyitem_type_Shape] = AscFormat.CShape;
this.m_oFactoryClass[AscDFH.historyitem_type_DispUnits] = AscFormat.CDispUnits;
this.m_oFactoryClass[AscDFH.historyitem_type_GroupShape] = AscFormat.CGroupShape;
this.m_oFactoryClass[AscDFH.historyitem_type_ImageShape] = AscFormat.CImageShape;
this.m_oFactoryClass[AscDFH.historyitem_type_Geometry] = AscFormat.Geometry;
this.m_oFactoryClass[AscDFH.historyitem_type_Path] = AscFormat.Path;
this.m_oFactoryClass[AscDFH.historyitem_type_TextBody] = AscFormat.CTextBody;
this.m_oFactoryClass[AscDFH.historyitem_type_CatAx] = AscFormat.CCatAx;
this.m_oFactoryClass[AscDFH.historyitem_type_ValAx] = AscFormat.CValAx;
this.m_oFactoryClass[AscDFH.historyitem_type_WrapPolygon] = AscCommonWord.CWrapPolygon;
this.m_oFactoryClass[AscDFH.historyitem_type_DateAx] = AscFormat.CDateAx;
this.m_oFactoryClass[AscDFH.historyitem_type_SerAx] = AscFormat.CSerAx;
this.m_oFactoryClass[AscDFH.historyitem_type_Title] = AscFormat.CTitle;
this.m_oFactoryClass[AscDFH.historyitem_type_OleObject] = AscFormat.COleObject;
this.m_oFactoryClass[AscDFH.historyitem_type_Cnx] = AscFormat.CConnectionShape;
this.m_oFactoryClass[AscDFH.historyitem_type_DrawingContent] = AscFormat.CDrawingDocContent;
this.m_oFactoryClass[AscDFH.historyitem_type_Math] = AscCommonWord.ParaMath;
this.m_oFactoryClass[AscDFH.historyitem_type_MathContent] = AscCommonWord.CMathContent;
this.m_oFactoryClass[AscDFH.historyitem_type_acc] = AscCommonWord.CAccent;
this.m_oFactoryClass[AscDFH.historyitem_type_bar] = AscCommonWord.CBar;
this.m_oFactoryClass[AscDFH.historyitem_type_box] = AscCommonWord.CBox;
this.m_oFactoryClass[AscDFH.historyitem_type_borderBox] = AscCommonWord.CBorderBox;
this.m_oFactoryClass[AscDFH.historyitem_type_delimiter] = AscCommonWord.CDelimiter;
this.m_oFactoryClass[AscDFH.historyitem_type_eqArr] = AscCommonWord.CEqArray;
this.m_oFactoryClass[AscDFH.historyitem_type_frac] = AscCommonWord.CFraction;
this.m_oFactoryClass[AscDFH.historyitem_type_mathFunc] = AscCommonWord.CMathFunc;
this.m_oFactoryClass[AscDFH.historyitem_type_groupChr] = AscCommonWord.CGroupCharacter;
this.m_oFactoryClass[AscDFH.historyitem_type_lim] = AscCommonWord.CLimit;
this.m_oFactoryClass[AscDFH.historyitem_type_matrix] = AscCommonWord.CMathMatrix;
this.m_oFactoryClass[AscDFH.historyitem_type_nary] = AscCommonWord.CNary;
this.m_oFactoryClass[AscDFH.historyitem_type_phant] = AscCommonWord.CPhantom;
this.m_oFactoryClass[AscDFH.historyitem_type_rad] = AscCommonWord.CRadical;
this.m_oFactoryClass[AscDFH.historyitem_type_deg_subsup] = AscCommonWord.CDegreeSubSup;
this.m_oFactoryClass[AscDFH.historyitem_type_deg] = AscCommonWord.CDegree;
this.m_oFactoryClass[AscDFH.historyitem_type_BlockLevelSdt] = AscCommonWord.CBlockLevelSdt;
this.m_oFactoryClass[AscDFH.historyitem_type_InlineLevelSdt] = AscCommonWord.CInlineLevelSdt;
this.m_oFactoryClass[AscDFH.historyitem_type_ParaBookmark] = AscCommonWord.CParagraphBookmark;
this.m_oFactoryClass[AscDFH.historyitem_type_Num] = AscCommonWord.CNum;
if (window['AscCommonSlide'])
{
this.m_oFactoryClass[AscDFH.historyitem_type_Slide] = AscCommonSlide.Slide;
this.m_oFactoryClass[AscDFH.historyitem_type_SlideLayout] = AscCommonSlide.SlideLayout;
this.m_oFactoryClass[AscDFH.historyitem_type_SlideMaster] = AscCommonSlide.MasterSlide;
this.m_oFactoryClass[AscDFH.historyitem_type_SlideComments] = AscCommonSlide.SlideComments;
this.m_oFactoryClass[AscDFH.historyitem_type_PropLocker] = AscCommonSlide.PropLocker;
this.m_oFactoryClass[AscDFH.historyitem_type_NotesMaster] = AscCommonSlide.CNotesMaster;
this.m_oFactoryClass[AscDFH.historyitem_type_Notes] = AscCommonSlide.CNotes;
this.m_oFactoryClass[AscDFH.historyitem_type_PresentationSection] = AscCommonSlide.CPrSection;
}
this.m_oFactoryClass[AscDFH.historyitem_type_Theme] = AscFormat.CTheme;
this.m_oFactoryClass[AscDFH.historyitem_type_GraphicFrame] = AscFormat.CGraphicFrame;
if (window['AscCommonExcel'])
{
this.m_oFactoryClass[AscDFH.historyitem_type_Sparkline] = AscCommonExcel.sparklineGroup;
this.m_oFactoryClass[AscDFH.historyitem_type_PivotTableDefinition] = Asc.CT_pivotTableDefinition;
}
this.m_oFactoryClass[AscDFH.historyitem_type_DocumentMacros] = AscCommon.CDocumentMacros;
};
CTableId.prototype.GetClassFromFactory = function(nType)
{
if (this.m_oFactoryClass[nType])
return new this.m_oFactoryClass[nType]();
return null;
};
CTableId.prototype.Refresh_RecalcData = function(Data)
{
};
//-----------------------------------------------------------------------------------
// Функции для работы с совместным редактирования
//-----------------------------------------------------------------------------------
CTableId.prototype.Unlock = function(Data)
{
// Ничего не делаем
};
window["AscCommon"].g_oTableId = new CTableId();
window["AscCommon"].CTableId = CTableId;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
/**
* User: Ilja.Kirillov
* Date: 26.10.2016
* Time: 18:53
*/
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined)
{
/**
* @constructor
* @extends {AscDFH.CChangesBase}
*/
function CChangesTableIdAdd(Class, Id, NewClass)
{
AscDFH.CChangesBase.call(this, Class);
this.Id = Id;
this.NewClass = NewClass;
}
CChangesTableIdAdd.prototype = Object.create(AscDFH.CChangesBase.prototype);
CChangesTableIdAdd.prototype.constructor = CChangesTableIdAdd;
CChangesTableIdAdd.prototype.Type = AscDFH.historyitem_TableId_Add;
CChangesTableIdAdd.prototype.Undo = function()
{
};
CChangesTableIdAdd.prototype.Redo = function()
{
};
CChangesTableIdAdd.prototype.WriteToBinary = function(Writer)
{
// String : Id элемента
// Varibale : сам элемент
Writer.WriteString2(this.Id);
this.NewClass.Write_ToBinary2(Writer);
};
CChangesTableIdAdd.prototype.ReadFromBinary = function(Reader)
{
// String : Id элемента
// Varibale : сам элемент
this.Id = Reader.GetString2();
this.NewClass = this.private_ReadClassFromBinary(Reader);
};
CChangesTableIdAdd.prototype.Load = function(Color)
{
this.Class.m_aPairs[this.Id] = this.NewClass;
};
CChangesTableIdAdd.prototype.RefreshRecalcData = function()
{
};
CChangesTableIdAdd.prototype.private_ReadClassFromBinary = function(Reader)
{
var oTableId = this.Class;
var ElementType = Reader.GetLong();
oTableId.TurnOff();
var Element = oTableId.GetClassFromFactory(ElementType);
if (null !== Element)
Element.Read_FromBinary2(Reader);
oTableId.TurnOn();
return Element;
};
CChangesTableIdAdd.prototype.CreateReverseChange = function()
{
return null;
};
window["AscCommon"].CChangesTableIdAdd = CChangesTableIdAdd;
/**
* @constructor
* @extends {AscDFH.CChangesBase}
*/
function CChangesTableIdDescription(Class, FileCheckSum, FileSize, Description, ItemsCount, PointIndex, StartPoint, LastPoint, SumIndex, DeletedIndex)
{
AscDFH.CChangesBase.call(this, Class);
this.FileCheckSum = FileCheckSum;
this.FileSize = FileSize;
this.Description = Description;
this.ItemsCount = ItemsCount;
this.PointIndex = PointIndex;
this.StartPoint = StartPoint;
this.LastPoint = LastPoint;
this.SumIndex = SumIndex;
this.DeletedIndex = DeletedIndex;
this.VersionString = "0.0.0.0.@@Rev";
}
CChangesTableIdDescription.prototype = Object.create(AscDFH.CChangesBase.prototype);
CChangesTableIdDescription.prototype.constructor = CChangesTableIdDescription;
CChangesTableIdDescription.prototype.Type = AscDFH.historyitem_TableId_Description;
CChangesTableIdDescription.prototype.Undo = function()
{
};
CChangesTableIdDescription.prototype.Redo = function()
{
};
CChangesTableIdDescription.prototype.WriteToBinary = function(Writer)
{
// Long : FileCheckSum
// Long : FileSize
// Long : Description
// Long : ItemsCount
// Long : PointIndex
// Long : StartPoint
// Long : LastPoint
// Long : SumIndex
// Long : DeletedIndex
// String : Версия SDK
Writer.WriteLong(this.FileCheckSum);
Writer.WriteLong(this.FileSize);
Writer.WriteLong(this.Description);
Writer.WriteLong(this.ItemsCount);
Writer.WriteLong(this.PointIndex);
Writer.WriteLong(this.StartPoint);
Writer.WriteLong(this.LastPoint);
Writer.WriteLong(this.SumIndex);
Writer.WriteLong(null === this.DeletedIndex ? -10 : this.DeletedIndex);
Writer.WriteString2(this.VersionString);
};
CChangesTableIdDescription.prototype.ReadFromBinary = function(Reader)
{
// Long : FileCheckSum
// Long : FileSize
// Long : Description
// Long : ItemsCount
// Long : PointIndex
// Long : StartPoint
// Long : LastPoint
// Long : SumIndex
// Long : DeletedIndex
// String : Версия SDK
this.FileCheckSum = Reader.GetLong();
this.FileSize = Reader.GetLong();
this.Description = Reader.GetLong();
this.ItemsCount = Reader.GetLong();
this.PointIndex = Reader.GetLong();
this.StartPoint = Reader.GetLong();
this.LastPoint = Reader.GetLong();
this.SumIndex = Reader.GetLong();
this.DeletedIndex = Reader.GetLong();
this.VersionString = Reader.GetString2();
};
CChangesTableIdDescription.prototype.Load = function(Color)
{
// var CollaborativeEditing = AscCommon.CollaborativeEditing;
// // CollaborativeEditing LOG
// console.log("ItemsCount2 " + CollaborativeEditing.m_nErrorLog_PointChangesCount);
// if (CollaborativeEditing.m_nErrorLog_PointChangesCount !== CollaborativeEditing.m_nErrorLog_SavedPCC)
// console.log("========================= BAD Changes Count in Point =============================");
// if (CollaborativeEditing.m_nErrorLog_CurPointIndex + 1 !== this.PointIndex && 0 !== this.PointIndex)
// console.log("========================= BAD Point index ========================================");
// var bBadSumIndex = false;
// if (0 === this.PointIndex)
// {
// CollaborativeEditing.m_nErrorLog_SumIndex = 0;
// }
// else
// {
// // Потому что мы не учитываем данное изменение
// CollaborativeEditing.m_nErrorLog_SumIndex += CollaborativeEditing.m_nErrorLog_SavedPCC + 1;
// if (this.PointIndex === this.StartPoint)
// {
// if (CollaborativeEditing.m_nErrorLog_SumIndex !== this.SumIndex)
// bBadSumIndex = true;
//
// console.log("SumIndex2 " + CollaborativeEditing.m_nErrorLog_SumIndex);
// CollaborativeEditing.m_nErrorLog_SumIndex = this.SumIndex;
// }
// }
//
// console.log("----------------------------");
// console.log("FileCheckSum " + this.FileCheckSum);
// console.log("FileSize " + this.FileSize);
// console.log("Description " + this.Description + " " +
// AscDFH.GetHistoryPointStringDescription(this.Description));
// console.log("PointIndex " + this.PointIndex);
// console.log("StartPoint " + this.StartPoint);
// console.log("LastPoint " + this.LastPoint);
// console.log("ItemsCount " + this.ItemsCount);
// console.log("SumIndex " + this.SumIndex);
// console.log("DeletedIndex " + (-10 === this.DeletedIndex ? null : this.DeletedIndex));
// // -1 Чтобы не учитывалось данное изменение
// CollaborativeEditing.m_nErrorLog_SavedPCC = this.ItemsCount;
// CollaborativeEditing.m_nErrorLog_PointChangesCount = -1;
// CollaborativeEditing.m_nErrorLog_CurPointIndex = this.PointIndex;
// if (bBadSumIndex)
// console.log("========================= BAD Sum index ==========================================");
};
CChangesTableIdDescription.prototype.RefreshRecalcData = function()
{
};
CChangesTableIdDescription.prototype.CreateReverseChange = function()
{
return null;
};
window["AscCommon"].CChangesTableIdDescription = CChangesTableIdDescription;
/**
* @constructor
* @extends {AscDFH.CChangesBase}
*/
function CChangesCommonAddWaterMark(Class, Url)
{
AscDFH.CChangesBase.call(this, Class);
this.Url = Url ? Url : "";
}
CChangesCommonAddWaterMark.prototype = Object.create(AscDFH.CChangesBase.prototype);
CChangesCommonAddWaterMark.prototype.constructor = CChangesCommonAddWaterMark;
CChangesCommonAddWaterMark.prototype.Type = AscDFH.historyitem_Common_AddWatermark;
CChangesCommonAddWaterMark.prototype.Undo = function()
{
};
CChangesCommonAddWaterMark.prototype.Redo = function()
{
};
CChangesCommonAddWaterMark.prototype.WriteToBinary = function(Writer)
{
Writer.WriteString2(this.Url);
};
CChangesCommonAddWaterMark.prototype.ReadFromBinary = function(Reader)
{
this.Url = Reader.GetString2();
};
CChangesCommonAddWaterMark.prototype.Load = function(Color)
{
var sUrl = this.Url;
if (editor && editor.WordControl && editor.WordControl.m_oLogicDocument)
{
var oLogicDocument = editor.WordControl.m_oLogicDocument;
if (oLogicDocument instanceof AscCommonWord.CDocument)
{
var oParaDrawing = oLogicDocument.DrawingObjects.getTrialImage(sUrl);
var oFirstParagraph = oLogicDocument.Get_FirstParagraph();
AscFormat.ExecuteNoHistory(function()
{
var oRun = new AscCommonWord.ParaRun();
oRun.Content.splice(0, 0, oParaDrawing);
oFirstParagraph.Content.splice(0, 0, oRun);
oLogicDocument.DrawingObjects.addGraphicObject(oParaDrawing);
}, this, []);
}
else if (oLogicDocument instanceof AscCommonSlide.CPresentation)
{
if (oLogicDocument.Slides[0])
{
var oDrawing = oLogicDocument.Slides[0].graphicObjects.createWatermarkImage(sUrl);
oDrawing.spPr.xfrm.offX = (oLogicDocument.Width - oDrawing.spPr.xfrm.extX) / 2;
oDrawing.spPr.xfrm.offY = (oLogicDocument.Height - oDrawing.spPr.xfrm.extY) / 2;
oDrawing.parent = oLogicDocument.Slides[0];
oLogicDocument.Slides[0].cSld.spTree.push(oDrawing);
}
}
}
else
{
var oWsModel = window["Asc"]["editor"].wbModel.aWorksheets[0];
if (oWsModel)
{
var objectRender = new AscFormat.DrawingObjects();
var oNewDrawing = objectRender.createDrawingObject(AscCommon.c_oAscCellAnchorType.cellanchorAbsolute);
var oImage = AscFormat.DrawingObjectsController.prototype.createWatermarkImage(sUrl);
oNewDrawing.ext.cx = oImage.spPr.xfrm.extX;
oNewDrawing.ext.cy = oImage.spPr.xfrm.extY;
oNewDrawing.graphicObject = oImage;
oWsModel.Drawings.push(oNewDrawing);
}
}
};
CChangesCommonAddWaterMark.prototype.RefreshRecalcData = function()
{
};
CChangesCommonAddWaterMark.prototype.CreateReverseChange = function()
{
return null;
};
window["AscCommon"].CChangesCommonAddWaterMark = CChangesCommonAddWaterMark;
})(window);
AscDFH.changesFactory[AscDFH.historyitem_TableId_Add] = AscCommon.CChangesTableIdAdd;
AscDFH.changesFactory[AscDFH.historyitem_TableId_Description] = AscCommon.CChangesTableIdDescription;
AscDFH.changesFactory[AscDFH.historyitem_Common_AddWatermark] = AscCommon.CChangesCommonAddWaterMark;
//----------------------------------------------------------------------------------------------------------------------
// Карта зависимости изменений
//----------------------------------------------------------------------------------------------------------------------
AscDFH.changesRelationMap[AscDFH.historyitem_TableId_Add] = [AscDFH.historyitem_TableId_Add];
AscDFH.changesRelationMap[AscDFH.historyitem_TableId_Reset] = [AscDFH.historyitem_TableId_Reset];
AscDFH.changesRelationMap[AscDFH.historyitem_TableId_Description] = [AscDFH.historyitem_TableId_Description];
AscDFH.changesRelationMap[AscDFH.historyitem_Common_AddWatermark] = [AscDFH.historyitem_Common_AddWatermark];
//----------------------------------------------------------------------------------------------------------------------
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function ( window, undefined) {
/** @constructor */
function asc_CAdvancedOptions(id,opt){
this.optionId = null;
this.options = null;
switch(id){
case Asc.c_oAscAdvancedOptionsID.CSV:
this.optionId = id;
this.options = new asc_CCSVOptions(opt);
break;
case Asc.c_oAscAdvancedOptionsID.TXT:
this.optionId = id;
this.options = new asc_CTXTOptions(opt);
break;
case Asc.c_oAscAdvancedOptionsID.DRM:
this.optionId = id;
break;
}
}
asc_CAdvancedOptions.prototype.asc_getOptionId = function(){ return this.optionId; };
asc_CAdvancedOptions.prototype.asc_getOptions = function(){ return this.options; };
/** @constructor */
function asc_CCSVOptions(opt){
this.codePages = function(){
var arr = [], c, encodings = opt["encodings"];
for(var i = 0; i < encodings.length; i++ ){
c = new asc_CCodePage();
c.init(encodings[i]);
arr.push(c);
}
return arr;
}();
this.recommendedSettings = new asc_CCSVAdvancedOptions (opt["codepage"], opt["delimiter"]);
this.data = opt["data"];
}
asc_CCSVOptions.prototype.asc_getCodePages = function(){ return this.codePages;};
asc_CCSVOptions.prototype.asc_getRecommendedSettings = function () { return this.recommendedSettings; };
asc_CCSVOptions.prototype.asc_getData = function () { return this.data; };
/** @constructor */
function asc_CTXTOptions(opt){
this.codePages = function(){
var arr = [], c, encodings = opt["encodings"];
for(var i = 0; i < encodings.length; i++ ){
c = new asc_CCodePage();
c.init(encodings[i]);
arr.push(c);
}
return arr;
}();
this.recommendedSettings = new asc_CTXTAdvancedOptions (opt["codepage"]);
this.data = opt["data"];
}
asc_CTXTOptions.prototype.asc_getCodePages = function(){ return this.codePages;};
asc_CTXTOptions.prototype.asc_getRecommendedSettings = function () { return this.recommendedSettings; };
asc_CTXTOptions.prototype.asc_getData = function () { return this.data; };
/** @constructor */
function asc_CCSVAdvancedOptions(codepage, delimiter, delimiterChar){
this.codePage = codepage;
this.delimiter = delimiter;
this.delimiterChar = delimiterChar;
}
asc_CCSVAdvancedOptions.prototype.asc_getDelimiter = function(){return this.delimiter;};
asc_CCSVAdvancedOptions.prototype.asc_setDelimiter = function(v){this.delimiter = v;};
asc_CCSVAdvancedOptions.prototype.asc_getDelimiterChar = function(){return this.delimiterChar;};
asc_CCSVAdvancedOptions.prototype.asc_setDelimiterChar = function(v){this.delimiterChar = v;};
asc_CCSVAdvancedOptions.prototype.asc_getCodePage = function(){return this.codePage;};
asc_CCSVAdvancedOptions.prototype.asc_setCodePage = function(v){this.codePage = v;};
/** @constructor */
function asc_CTXTAdvancedOptions(codepage){
this.codePage = codepage;
}
asc_CTXTAdvancedOptions.prototype.asc_getCodePage = function(){return this.codePage;};
asc_CTXTAdvancedOptions.prototype.asc_setCodePage = function(v){this.codePage = v;};
/** @constructor */
function asc_CDRMAdvancedOptions(password){
this.password = password;
}
asc_CDRMAdvancedOptions.prototype.asc_getPassword = function(){return this.password;};
asc_CDRMAdvancedOptions.prototype.asc_setPassword = function(v){this.password = v;};
/** @constructor */
function asc_CCodePage(){
this.codePageName = null;
this.codePage = null;
this.text = null;
this.lcid = null;
}
asc_CCodePage.prototype.init = function (encoding) {
this.codePageName = encoding["name"];
this.codePage = encoding["codepage"];
this.text = encoding["text"];
this.lcid = encoding["lcid"];
};
asc_CCodePage.prototype.asc_getCodePageName = function(){return this.codePageName;};
asc_CCodePage.prototype.asc_setCodePageName = function(v){this.codePageName = v;};
asc_CCodePage.prototype.asc_getCodePage = function(){return this.codePage;};
asc_CCodePage.prototype.asc_setCodePage = function(v){this.codePage = v;};
asc_CCodePage.prototype.asc_getText = function(){return this.text;};
asc_CCodePage.prototype.asc_setText = function(v){this.text = v;};
asc_CCodePage.prototype.asc_getLcid = function(){return this.lcid;};
asc_CCodePage.prototype.asc_setLcid = function(v){this.lcid = v;};
/** @constructor */
function asc_CDelimiter(delimiter){
this.delimiterName = delimiter;
}
asc_CDelimiter.prototype.asc_getDelimiterName = function(){return this.delimiterName;};
asc_CDelimiter.prototype.asc_setDelimiterName = function(v){ this.delimiterName = v;};
/** @constructor */
function asc_CFormulaGroup(name){
this.groupName = name;
this.formulasArray = [];
}
asc_CFormulaGroup.prototype.asc_getGroupName = function() { return this.groupName; };
asc_CFormulaGroup.prototype.asc_getFormulasArray = function() { return this.formulasArray; };
asc_CFormulaGroup.prototype.asc_addFormulaElement = function(o) { return this.formulasArray.push(o); };
/** @constructor */
function asc_CFormula(o){
this.name = o.name;
}
asc_CFormula.prototype.asc_getName = function () {
return this.name;
};
asc_CFormula.prototype.asc_getLocaleName = function () {
return AscCommonExcel.cFormulaFunctionToLocale ? AscCommonExcel.cFormulaFunctionToLocale[this.name] : this.name;
};
//----------------------------------------------------------export----------------------------------------------------
var prot;
window['Asc'] = window['Asc'] || {};
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].asc_CAdvancedOptions = asc_CAdvancedOptions;
prot = asc_CAdvancedOptions.prototype;
prot["asc_getOptionId"] = prot.asc_getOptionId;
prot["asc_getOptions"] = prot.asc_getOptions;
prot = asc_CCSVOptions.prototype;
prot["asc_getCodePages"] = prot.asc_getCodePages;
prot["asc_getRecommendedSettings"] = prot.asc_getRecommendedSettings;
prot["asc_getData"] = prot.asc_getData;
prot = asc_CTXTOptions.prototype;
prot["asc_getCodePages"] = prot.asc_getCodePages;
prot["asc_getRecommendedSettings"] = prot.asc_getRecommendedSettings;
prot["asc_getData"] = prot.asc_getData;
window["Asc"].asc_CCSVAdvancedOptions = window["Asc"]["asc_CCSVAdvancedOptions"] = asc_CCSVAdvancedOptions;
prot = asc_CCSVAdvancedOptions.prototype;
prot["asc_getDelimiter"] = prot.asc_getDelimiter;
prot["asc_setDelimiter"] = prot.asc_setDelimiter;
prot["asc_getDelimiterChar"] = prot.asc_getDelimiterChar;
prot["asc_setDelimiterChar"] = prot.asc_setDelimiterChar;
prot["asc_getCodePage"] = prot.asc_getCodePage;
prot["asc_setCodePage"] = prot.asc_setCodePage;
window["Asc"].asc_CTXTAdvancedOptions = window["Asc"]["asc_CTXTAdvancedOptions"] = asc_CTXTAdvancedOptions;
prot = asc_CTXTAdvancedOptions.prototype;
prot["asc_getCodePage"] = prot.asc_getCodePage;
prot["asc_setCodePage"] = prot.asc_setCodePage;
window["Asc"].asc_CDRMAdvancedOptions = window["Asc"]["asc_CDRMAdvancedOptions"] = asc_CDRMAdvancedOptions;
prot = asc_CDRMAdvancedOptions.prototype;
prot["asc_getPassword"] = prot.asc_getPassword;
prot["asc_setPassword"] = prot.asc_setPassword;
prot = asc_CCodePage.prototype;
prot["asc_getCodePageName"] = prot.asc_getCodePageName;
prot["asc_setCodePageName"] = prot.asc_setCodePageName;
prot["asc_getCodePage"] = prot.asc_getCodePage;
prot["asc_setCodePage"] = prot.asc_setCodePage;
prot["asc_getText"] = prot.asc_getText;
prot["asc_setText"] = prot.asc_setText;
prot["asc_getLcid"] = prot.asc_getLcid;
prot["asc_setLcid"] = prot.asc_setLcid;
prot = asc_CDelimiter.prototype;
prot["asc_getDelimiterName"] = prot.asc_getDelimiterName;
prot["asc_setDelimiterName"] = prot.asc_setDelimiterName;
window["AscCommon"].asc_CFormulaGroup = asc_CFormulaGroup;
prot = asc_CFormulaGroup.prototype;
prot["asc_getGroupName"] = prot.asc_getGroupName;
prot["asc_getFormulasArray"] = prot.asc_getFormulasArray;
prot["asc_addFormulaElement"] = prot.asc_addFormulaElement;
window["AscCommon"].asc_CFormula = asc_CFormula;
prot = asc_CFormula.prototype;
prot["asc_getName"] = prot.asc_getName;
prot["asc_getLocaleName"] = prot.asc_getLocaleName;
}
)(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
// Используем [] вместо new Array() для ускорения (http://jsperf.com/creation-array)
// Используем {} вместо new Object() для ускорения (http://jsperf.com/creation-object)
// Import
var CColor = AscCommon.CColor;
var c_oAscConfirm = {
ConfirmReplaceRange: 0,
ConfirmPutMergeRange: 1
};
var c_oAscMergeOptions = {
Disabled: -1,
None: 0,
Merge: 1,
MergeCenter: 2,
MergeAcross: 3
};
var c_oAscSortOptions = {
Ascending: 1,
Descending: 2,
ByColorFill: 3,
ByColorFont: 4
};
var c_oAscBorderOptions = {
Top: 0,
Right: 1,
Bottom: 2,
Left: 3,
DiagD: 4,
DiagU: 5,
InnerV: 6,
InnerH: 7
};
var c_oAscCleanOptions = {
All: 0,
Text: 1,
Format: 2,
Formula: 4,
Comments: 5,
Hyperlinks: 6,
Sparklines: 7,
SparklineGroups: 8
};
var c_oAscDrawDepOptions = {
Master: 0,
Slave: 1,
Clear: 2
};
var c_oAscSelectionDialogType = {
None: 0,
FormatTable: 1,
Chart: 2,
FormatTableChangeRange: 4
};
var c_oAscScrollType = {
ScrollVertical: 1,
ScrollHorizontal: 2
};
var c_oAscHyperlinkType = {
WebLink: 1,
RangeLink: 2
};
var c_oAscMouseMoveType = {
None: 0,
Hyperlink: 1,
Comment: 2,
LockedObject: 3,
ResizeColumn: 4,
ResizeRow: 5,
Filter: 6
};
var c_oAscMouseMoveLockedObjectType = {
None: -1,
Range: 0,
TableProperties: 1,
Sheet: 2
};
var c_oAscLockTypeElem = {
Range: 1,
Object: 2,
Sheet: 3
};
var c_oAscLockTypeElemSubType = {
DeleteColumns: 1,
InsertColumns: 2,
DeleteRows: 3,
InsertRows: 4,
ChangeProperties: 5,
DefinedNames: 6
};
var c_oAscRecalcIndexTypes = {
RecalcIndexAdd: 1,
RecalcIndexRemove: 2
};
// Тип печати
var c_oAscPrintType = {
ActiveSheets: 0, // Активные листы
EntireWorkbook: 1, // Всю книгу
Selection: 2 // Выделенный фрагмент
};
/** @enum */
var c_oAscCustomAutoFilter = {
equals: 1,
isGreaterThan: 2,
isGreaterThanOrEqualTo: 3,
isLessThan: 4,
isLessThanOrEqualTo: 5,
doesNotEqual: 6,
beginsWith: 7,
doesNotBeginWith: 8,
endsWith: 9,
doesNotEndWith: 10,
contains: 11,
doesNotContain: 12
};
/** @enum */
var c_oAscDynamicAutoFilter = {
aboveAverage: 1,
belowAverage: 2,
lastMonth: 3,
lastQuarter: 4,
lastWeek: 5,
lastYear: 6,
m1: 7,
m10: 8,
m11: 9,
m12: 10,
m2: 11,
m3: 12,
m4: 13,
m5: 14,
m6: 15,
m7: 16,
m8: 17,
m9: 18,
nextMonth: 19,
nextQuarter: 20,
nextWeek: 21,
nextYear: 22,
q1: 23,
q2: 24,
q3: 25,
q4: 26,
thisMonth: 27,
thisQuarter: 28,
thisWeek: 29,
thisYear: 30,
today: 31,
tomorrow: 32,
yearToDate: 33,
yesterday: 34
};
var c_oAscTop10AutoFilter = {
max: 1,
min: 2
};
var c_oAscChangeFilterOptions = {
filter: 1,
style: 2
};
var c_oAscChangeSelectionFormatTable = {
all: 1,
data: 2,
row: 3,
column: 4
};
var c_oAscChangeTableStyleInfo = {
columnFirst: 1,
columnLast: 2,
columnBanded: 3,
rowHeader: 4,
rowTotal: 5,
rowBanded: 6,
filterButton: 7,
advancedSettings: 8
};
// Состояние редактора ячейки
var c_oAscCellEditorState = {
editEnd: 0, // Окончание редактирования
editStart: 1, // Начало редактирования
editEmptyCell: 2, // Редактирование пустой ячейки (доступны функции и свойства текста)
editText: 3, // Редактирование текста, числа, даты и др. формата, кроме формулы
editFormula: 4, // Редактирование формулы
editInFormulaBar: 5, // Редактирование в строке формул
editInCell: 6 // Редактирование в ячейке
};
// Состояние select-а
var c_oAscCellEditorSelectState = {
no : 0,
char : 1,
word : 2
};
// Пересчитывать ли ширину столбца
var c_oAscCanChangeColWidth = {
none: 0, // not recalc
numbers: 1, // only numbers
all: 2 // numbers + text
};
// Merge cell type
var c_oAscMergeType = {
none: 0,
columns: 1, // Замержены ли колонки (если да, то автоподбор ширины не должен работать)
rows: 2 // Замержены ли строки (если да, то автоподбор высоты не должен работать)
};
var c_oAscPaneState = {
Frozen: "frozen",
FrozenSplit: "frozenSplit",
Split: "split"
};
var c_oAscFindLookIn = {
Formulas: 1,
Value: 2,
Annotations: 3
};
var c_oTargetType = {
None: 0,
ColumnResize: 1,
RowResize: 2,
FillHandle: 3,
MoveRange: 4,
MoveResizeRange: 5,
FilterObject: 6,
ColumnHeader: 7,
RowHeader: 8,
Corner: 9,
Hyperlink: 10,
Cells: 11,
Shape: 12,
FrozenAnchorH: 14,
FrozenAnchorV: 15
};
var c_oAscAutoFilterTypes = {
ColorFilter: 0,
CustomFilters: 1,
DynamicFilter: 2,
Top10: 3,
Filters: 4,
None: 5
};
var c_oAscCoAuthoringMeBorderColor = new CColor(22, 156, 0);
var c_oAscCoAuthoringOtherBorderColor = new CColor(238, 53, 37);
var c_oAscCoAuthoringLockTablePropertiesBorderColor = new CColor(255, 144, 0);
var c_oAscCoAuthoringDottedWidth = 4;
var c_oAscCoAuthoringDottedDistance = 2;
var c_oAscFormulaRangeBorderColor = [
new CColor(95, 140, 237),
new CColor(235, 94, 96),
new CColor(141, 97, 194),
new CColor(45, 150, 57),
new CColor(191, 76, 145),
new CColor(227, 130, 34),
new CColor(55, 127, 158)
];
var selectionLineType = {
None : 0,
Selection : 1,
ActiveCell : 2,
Resize : 4,
Promote : 8,
Dash : 16
};
var c_oAscLockNameFrozenPane = "frozenPane";
var c_oAscLockNameTabColor = "tabColor";
var c_oAscLockAddSheet = "addSheet";
var c_oAscLockLayoutOptions = "layoutOptions";
var c_oAscGetDefinedNamesList = {
Worksheet: 0,
WorksheetWorkbook: 1,
All: 2
};
var c_oAscDefinedNameReason = {
WrongName: -1,
IsLocked: -2,
Existed: -3,
LockDefNameManager: -4,
NameReserved: -5,
OK: 0
};
var c_oAscPopUpSelectorType = {
None: 0,
Func: 1,
Range: 2,
Table: 3
};
/** @enum */
var c_oSerFormat = {
Version : 2, //1.0.0.2
Signature : "XLSY"
};
var c_oAscSparklineType = {
Line: 0,
Column: 1,
Stacked: 2
};
var c_oAscEDispBlanksAs = {
Span: 0,
Gap: 1,
Zero: 2
};
var c_oAscSparklineAxisMinMax = {
Individual: 0,
Group: 1,
Custom: 2
};
var c_oAscAutoCorrectOptions = {
UndoTableAutoExpansion: 0,
RedoTableAutoExpansion: 1
};
var c_kMaxPrintPages = 1500;
//----------------------------------------------------------export----------------------------------------------------
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
window['AscCommonExcel'].c_oAscDrawDepOptions = c_oAscDrawDepOptions;
window['AscCommonExcel'].c_oAscScrollType = c_oAscScrollType;
window['AscCommonExcel'].c_oAscLockTypeElem = c_oAscLockTypeElem;
window['AscCommonExcel'].c_oAscLockTypeElemSubType = c_oAscLockTypeElemSubType;
window['AscCommonExcel'].c_oAscRecalcIndexTypes = c_oAscRecalcIndexTypes;
window['AscCommonExcel'].c_oAscCellEditorSelectState = c_oAscCellEditorSelectState;
window['AscCommonExcel'].c_oAscCanChangeColWidth = c_oAscCanChangeColWidth;
window['AscCommonExcel'].c_oAscMergeType = c_oAscMergeType;
window['AscCommonExcel'].c_oAscPaneState = c_oAscPaneState;
window['AscCommonExcel'].c_oTargetType = c_oTargetType;
window['AscCommonExcel'].c_oAscCoAuthoringMeBorderColor = c_oAscCoAuthoringMeBorderColor;
window['AscCommonExcel'].c_oAscCoAuthoringOtherBorderColor = c_oAscCoAuthoringOtherBorderColor;
window['AscCommonExcel'].c_oAscCoAuthoringLockTablePropertiesBorderColor = c_oAscCoAuthoringLockTablePropertiesBorderColor;
window['AscCommonExcel'].c_oAscCoAuthoringDottedWidth = c_oAscCoAuthoringDottedWidth;
window['AscCommonExcel'].c_oAscCoAuthoringDottedDistance = c_oAscCoAuthoringDottedDistance;
window['AscCommonExcel'].c_oAscFormulaRangeBorderColor = c_oAscFormulaRangeBorderColor;
window['AscCommonExcel'].selectionLineType = selectionLineType;
window['AscCommonExcel'].c_oAscLockNameFrozenPane = c_oAscLockNameFrozenPane;
window['AscCommonExcel'].c_oAscLockNameTabColor = c_oAscLockNameTabColor;
window['AscCommonExcel'].c_oAscLockAddSheet = c_oAscLockAddSheet;
window['AscCommonExcel'].c_oAscLockLayoutOptions = c_oAscLockLayoutOptions;
window['AscCommonExcel'].c_kMaxPrintPages = c_kMaxPrintPages;
window['AscCommonExcel'].filteringMode = true;
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].c_oSerFormat = c_oSerFormat;
window['AscCommon'].CurFileVersion = c_oSerFormat.Version;
var prot;
window['Asc'] = window['Asc'] || {};
window['Asc']['c_oAscSortOptions'] = window['Asc'].c_oAscSortOptions = c_oAscSortOptions;
prot = c_oAscSortOptions;
prot['Ascending'] = prot.Ascending;
prot['Descending'] = prot.Descending;
prot['ByColorFill'] = prot.ByColorFill;
prot['ByColorFont'] = prot.ByColorFont;
window['Asc']['c_oAscConfirm'] = window['Asc'].c_oAscConfirm = c_oAscConfirm;
prot = c_oAscConfirm;
prot['ConfirmReplaceRange'] = prot.ConfirmReplaceRange;
prot['ConfirmPutMergeRange'] = prot.ConfirmPutMergeRange;
window['Asc']['c_oAscMergeOptions'] = window['Asc'].c_oAscMergeOptions = c_oAscMergeOptions;
prot = c_oAscMergeOptions;
prot['Disabled'] = prot.Disabled;
prot['None'] = prot.None;
prot['Merge'] = prot.Merge;
prot['MergeCenter'] = prot.MergeCenter;
prot['MergeAcross'] = prot.MergeAcross;
window['Asc']['c_oAscBorderOptions'] = window['Asc'].c_oAscBorderOptions = c_oAscBorderOptions;
prot = c_oAscBorderOptions;
prot['Top'] = prot.Top;
prot['Right'] = prot.Right;
prot['Bottom'] = prot.Bottom;
prot['Left'] = prot.Left;
prot['DiagD'] = prot.DiagD;
prot['DiagU'] = prot.DiagU;
prot['InnerV'] = prot.InnerV;
prot['InnerH'] = prot.InnerH;
window['Asc']['c_oAscCleanOptions'] = window['Asc'].c_oAscCleanOptions = c_oAscCleanOptions;
prot = c_oAscCleanOptions;
prot['All'] = prot.All;
prot['Text'] = prot.Text;
prot['Format'] = prot.Format;
prot['Formula'] = prot.Formula;
prot['Comments'] = prot.Comments;
prot['Hyperlinks'] = prot.Hyperlinks;
prot['Sparklines'] = prot.Sparklines;
prot['SparklineGroups'] = prot.SparklineGroups;
window['Asc']['c_oAscSelectionDialogType'] = window['Asc'].c_oAscSelectionDialogType = c_oAscSelectionDialogType;
prot = c_oAscSelectionDialogType;
prot['None'] = prot.None;
prot['FormatTable'] = prot.FormatTable;
prot['Chart'] = prot.Chart;
prot['FormatTableChangeRange'] = prot.FormatTableChangeRange;
window['Asc']['c_oAscHyperlinkType'] = window['Asc'].c_oAscHyperlinkType = c_oAscHyperlinkType;
prot = c_oAscHyperlinkType;
prot['WebLink'] = prot.WebLink;
prot['RangeLink'] = prot.RangeLink;
window['Asc']['c_oAscMouseMoveType'] = window['Asc'].c_oAscMouseMoveType = c_oAscMouseMoveType;
prot = c_oAscMouseMoveType;
prot['None'] = prot.None;
prot['Hyperlink'] = prot.Hyperlink;
prot['Comment'] = prot.Comment;
prot['LockedObject'] = prot.LockedObject;
prot['ResizeColumn'] = prot.ResizeColumn;
prot['ResizeRow'] = prot.ResizeRow;
prot['Filter'] = prot.Filter;
window['Asc']['c_oAscMouseMoveLockedObjectType'] = window['Asc'].c_oAscMouseMoveLockedObjectType = c_oAscMouseMoveLockedObjectType;
prot = c_oAscMouseMoveLockedObjectType;
prot['None'] = prot.None;
prot['Range'] = prot.Range;
prot['TableProperties'] = prot.TableProperties;
prot['Sheet'] = prot.Sheet;
window['Asc']['c_oAscPrintType'] = window['Asc'].c_oAscPrintType = c_oAscPrintType;
prot = c_oAscPrintType;
prot['ActiveSheets'] = prot.ActiveSheets;
prot['EntireWorkbook'] = prot.EntireWorkbook;
prot['Selection'] = prot.Selection;
window['Asc']['c_oAscCustomAutoFilter'] = window['Asc'].c_oAscCustomAutoFilter = c_oAscCustomAutoFilter;
prot = c_oAscCustomAutoFilter;
prot['equals'] = prot.equals;
prot['isGreaterThan'] = prot.isGreaterThan;
prot['isGreaterThanOrEqualTo'] = prot.isGreaterThanOrEqualTo;
prot['isLessThan'] = prot.isLessThan;
prot['isLessThanOrEqualTo'] = prot.isLessThanOrEqualTo;
prot['doesNotEqual'] = prot.doesNotEqual;
prot['beginsWith'] = prot.beginsWith;
prot['doesNotBeginWith'] = prot.doesNotBeginWith;
prot['endsWith'] = prot.endsWith;
prot['doesNotEndWith'] = prot.doesNotEndWith;
prot['contains'] = prot.contains;
prot['doesNotContain'] = prot.doesNotContain;
window['Asc']['c_oAscDynamicAutoFilter'] = window['Asc'].c_oAscDynamicAutoFilter = c_oAscDynamicAutoFilter;
prot = c_oAscDynamicAutoFilter;
prot['aboveAverage'] = prot.aboveAverage;
prot['belowAverage'] = prot.belowAverage;
window['Asc']['c_oAscTop10AutoFilter'] = window['Asc'].c_oAscTop10AutoFilter = c_oAscTop10AutoFilter;
prot = c_oAscTop10AutoFilter;
prot['max'] = prot.max;
prot['min'] = prot.min;
window['Asc']['c_oAscChangeFilterOptions'] = window['Asc'].c_oAscChangeFilterOptions = c_oAscChangeFilterOptions;
prot = c_oAscChangeFilterOptions;
prot['filter'] = prot.filter;
prot['style'] = prot.style;
window['Asc']['c_oAscCellEditorState'] = window['Asc'].c_oAscCellEditorState = c_oAscCellEditorState;
prot = c_oAscCellEditorState;
prot['editEnd'] = prot.editEnd;
prot['editStart'] = prot.editStart;
prot['editEmptyCell'] = prot.editEmptyCell;
prot['editText'] = prot.editText;
prot['editFormula'] = prot.editFormula;
prot['editInFormulaBar'] = prot.editInFormulaBar;
prot['editInCell'] = prot.editInCell;
window['Asc']['c_oAscChangeSelectionFormatTable'] = window['Asc'].c_oAscChangeSelectionFormatTable = c_oAscChangeSelectionFormatTable;
prot = c_oAscChangeSelectionFormatTable;
prot['all'] = prot.all;
prot['data'] = prot.data;
prot['row'] = prot.row;
prot['column'] = prot.column;
window['Asc']['c_oAscChangeTableStyleInfo'] = window['Asc'].c_oAscChangeTableStyleInfo = c_oAscChangeTableStyleInfo;
prot = c_oAscChangeTableStyleInfo;
prot['columnFirst'] = prot.columnFirst;
prot['columnLast'] = prot.columnLast;
prot['columnBanded'] = prot.columnBanded;
prot['rowHeader'] = prot.rowHeader;
prot['rowTotal'] = prot.rowTotal;
prot['rowBanded'] = prot.rowBanded;
prot['filterButton'] = prot.filterButton;
prot['advancedSettings'] = prot.advancedSettings;
window['Asc']['c_oAscAutoFilterTypes'] = window['Asc'].c_oAscAutoFilterTypes = c_oAscAutoFilterTypes;
prot = c_oAscAutoFilterTypes;
prot['ColorFilter'] = prot.ColorFilter;
prot['CustomFilters'] = prot.CustomFilters;
prot['DynamicFilter'] = prot.DynamicFilter;
prot['Top10'] = prot.Top10;
prot['Filters'] = prot.Filters;
prot['None'] = prot.None;
window['Asc']['c_oAscFindLookIn'] = window['Asc'].c_oAscFindLookIn = c_oAscFindLookIn;
prot = c_oAscFindLookIn;
prot['Formulas'] = prot.Formulas;
prot['Value'] = prot.Value;
prot['Annotations'] = prot.Annotations;
window['Asc']['c_oAscGetDefinedNamesList'] = window['Asc'].c_oAscGetDefinedNamesList = c_oAscGetDefinedNamesList;
prot = c_oAscGetDefinedNamesList;
prot['Worksheet'] = prot.Worksheet;
prot['WorksheetWorkbook'] = prot.WorksheetWorkbook;
prot['All'] = prot.All;
window['Asc']['c_oAscDefinedNameReason'] = window['Asc'].c_oAscDefinedNameReason = c_oAscDefinedNameReason;
prot = c_oAscDefinedNameReason;
prot['WrongName'] = prot.WrongName;
prot['IsLocked'] = prot.IsLocked;
prot['Existed'] = prot.Existed;
prot['LockDefNameManager'] = prot.LockDefNameManager;
prot['NameReserved'] = prot.NameReserved;
prot['OK'] = prot.OK;
window['Asc']['c_oAscPopUpSelectorType'] = window['Asc'].c_oAscPopUpSelectorType = c_oAscPopUpSelectorType;
prot = c_oAscPopUpSelectorType;
prot['None'] = prot.None;
prot['Func'] = prot.Func;
prot['Range'] = prot.Range;
prot['Table'] = prot.Table;
window['Asc']['c_oAscSparklineType'] = window['Asc'].c_oAscSparklineType = c_oAscSparklineType;
prot = c_oAscSparklineType;
prot['Line'] = prot.Line;
prot['Column'] = prot.Column;
prot['Stacked'] = prot.Stacked;
window['Asc']['c_oAscEDispBlanksAs'] = window['Asc'].c_oAscEDispBlanksAs = c_oAscEDispBlanksAs;
prot = c_oAscEDispBlanksAs;
prot['Span'] = prot.Span;
prot['Gap'] = prot.Gap;
prot['Zero'] = prot.Zero;
window['Asc']['c_oAscSparklineAxisMinMax'] = window['Asc'].c_oAscSparklineAxisMinMax = c_oAscSparklineAxisMinMax;
prot = c_oAscSparklineAxisMinMax;
prot['Individual'] = prot.Individual;
prot['Group'] = prot.Group;
prot['Custom'] = prot.Custom;
window['Asc']['c_oAscAutoCorrectOptions'] = window['Asc'].c_oAscAutoCorrectOptions = c_oAscAutoCorrectOptions;
prot = c_oAscAutoCorrectOptions;
prot['UndoTableAutoExpansion'] = prot.UndoTableAutoExpansion;
prot['RedoTableAutoExpansion'] = prot.RedoTableAutoExpansion;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
// Import
var gc_nMaxRow0 = AscCommon.gc_nMaxRow0;
var gc_nMaxCol0 = AscCommon.gc_nMaxCol0;
var g_oCellAddressUtils = AscCommon.g_oCellAddressUtils;
var AscBrowser = AscCommon.AscBrowser;
var c_oAscSelectionType = Asc.c_oAscSelectionType;
var c_oAscShiftType = {
None : 0,
Move : 1,
Change: 2
};
/** @const */
var kLeftLim1 = .999999999999999;
var MAX_EXCEL_INT = 1e308;
var MIN_EXCEL_INT = -MAX_EXCEL_INT;
/** @const */
var kUndefinedL = "undefined";
/** @const */
var kNullL = "null";
/** @const */
var kObjectL = "object";
/** @const */
var kFunctionL = "function";
/** @const */
var kNumberL = "number";
/** @const */
var kArrayL = "array";
var recalcType = {
recalc : 0, // без пересчета
full : 1, // пересчитываем все
newLines: 2 // пересчитываем новые строки
};
var sizePxinPt = 72 / 96;
function applyFunction(callback) {
if (kFunctionL === typeof callback) {
callback.apply(null, Array.prototype.slice.call(arguments, 1));
}
}
function typeOf(obj) {
if (obj === undefined) {return kUndefinedL;}
if (obj === null) {return kNullL;}
return Object.prototype.toString.call(obj).slice(8, -1).toLowerCase();
}
function lastIndexOf(s, regExp, fromIndex) {
var end = fromIndex >= 0 && fromIndex <= s.length ? fromIndex : s.length;
for (var i = end - 1; i >= 0; --i) {
var j = s.slice(i, end).search(regExp);
if (j >= 0) {return i + j;}
}
return -1;
}
function search(arr, fn) {
for (var i = 0; i < arr.length; ++i) {
if ( fn(arr[i]) ) {return i;}
}
return -1;
}
function getUniqueRangeColor (arrRanges, curElem, tmpColors) {
var colorIndex, j, range = arrRanges[curElem];
for (j = 0; j < curElem; ++j) {
if (range.isEqual(arrRanges[j])) {
colorIndex = tmpColors[j];
break;
}
}
return colorIndex;
}
function getMinValueOrNull (val1, val2) {
return null === val2 ? val1 : (null === val1 ? val2 : Math.min(val1, val2));
}
function round(x) {
var y = x + (x >= 0 ? .5 : -.5);
return y | y;
//return Math.round(x);
}
function floor(x) {
var y = x | x;
y -= x < 0 && y > x ? 1 : 0;
return y + (x - y > kLeftLim1 ? 1 : 0); // to fix float number precision caused by binary presentation
//return Math.floor(x);
}
function ceil(x) {
var y = x | x;
y += x > 0 && y < x ? 1 : 0;
return y - (y - x > kLeftLim1 ? 1 : 0); // to fix float number precision caused by binary presentation
//return Math.ceil(x);
}
function incDecFonSize (bIncrease, oValue) {
// Закон изменения размеров :
// Результатом должно быть ближайшее из отрезка [8,72] по следующим числам 8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72
// Если значение меньше или равно 8 и мы уменьшаем, то ничего не меняется
// Если значение больше или равно 72 и мы увеличиваем, то ничего не меняется
var aSizes = [8,9,10,11,12,14,16,18,20,22,24,26,28,36,48,72];
var nLength = aSizes.length;
var i;
if (true === bIncrease) {
if (oValue >= aSizes[nLength - 1])
return null;
for (i = 0; i < nLength; ++i)
if (aSizes[i] > oValue)
break;
} else {
if (oValue <= aSizes[0])
return null;
for (i = nLength - 1; i >= 0; --i)
if (aSizes[i] < oValue)
break;
}
return aSizes[i];
}
function calcDecades(num) {
return Math.abs(num) < 10 ? 1 : 1 + calcDecades(floor(num * 0.1));
}
function convertPtToPx(value) {
value = value / sizePxinPt;
value = value | value;
if (AscBrowser.isRetina) {
value = AscBrowser.convertToRetinaValue(value, true);
}
return value;
}
function convertPxToPt(value) {
value = value * sizePxinPt;
if (AscBrowser.isRetina) {
value = AscBrowser.convertToRetinaValue(value);
}
return value;
}
// Определяет времени работы функции
function profileTime(fn/*[, arguments]*/) {
var start, end, arg = [], i;
if (arguments.length) {
if (arguments.length > 1) {
for (i = 1; i < arguments.length; ++i)
arg.push(arguments[i]);
start = new Date();
fn.apply(window, arg);
end = new Date();
} else {
start = new Date();
fn();
end = new Date();
}
return end.getTime() - start.getTime();
}
return undefined;
}
function getMatchingBorder(border1, border2) {
// ECMA-376 Part 1 17.4.67 tcBorders (Table Cell Borders)
if (!border1) {
return border2;
}
if (!border2) {
return border1;
}
if (border1.w > border2.w) {
return border1;
} else if (border1.w < border2.w) {
return border2;
}
var r1 = border1.c.getR(), g1 = border1.c.getG(), b1 = border1.c.getB();
var r2 = border2.c.getR(), g2 = border2.c.getG(), b2 = border2.c.getB();
var Brightness_1_1 = r1 + b1 + 2 * g1;
var Brightness_1_2 = r2 + b2 + 2 * g2;
if (Brightness_1_1 < Brightness_1_2) {
return border1;
} else if (Brightness_1_1 > Brightness_1_2) {
return border2;
}
var Brightness_2_1 = Brightness_1_1 - r1;
var Brightness_2_2 = Brightness_1_2 - r2;
if (Brightness_2_1 < Brightness_2_2) {
return border1;
} else if (Brightness_2_1 > Brightness_2_2) {
return border2;
}
var Brightness_3_1 = g1;
var Brightness_3_2 = g2;
if (Brightness_3_1 < Brightness_3_2) {
return border1;
} else if (Brightness_3_1 > Brightness_3_2) {
return border2;
}
// borders equal
return border1;
}
var referenceType = {
A: 0, // Absolute
ARRC: 1, // Absolute row; relative column
RRAC: 2, // Relative row; absolute column
R: 3 // Relative
};
/**
* Rectangle region of cells
* @constructor
* @memberOf Asc
* @param c1 {Number} Left side of range.
* @param r1 {Number} Top side of range.
* @param c2 {Number} Right side of range (inclusively).
* @param r2 {Number} Bottom side of range (inclusively).
* @param normalize {Boolean=} Optional. If true, range will be converted to form (left,top) - (right,bottom).
* @return {Range}
*/
function Range(c1, r1, c2, r2, normalize) {
if (!(this instanceof Range)) {
return new Range(c1, r1, c2, r2, normalize);
}
/** @type Number */
this.c1 = c1;
/** @type Number */
this.r1 = r1;
/** @type Number */
this.c2 = c2;
/** @type Number */
this.r2 = r2;
this.refType1 = referenceType.R;
this.refType2 = referenceType.R;
return normalize ? this.normalize() : this;
}
Range.prototype.assign = function (c1, r1, c2, r2, normalize) {
if (typeOf(c1) !== kNumberL || typeOf(c2) !== kNumberL || typeOf(r1) !== kNumberL || typeOf(r2) !== kNumberL) {
throw "Error: range.assign(" + c1 + "," + r1 + "," + c2 + "," + r2 + ") - numerical args are expected";
}
this.c1 = c1;
this.r1 = r1;
this.c2 = c2;
this.r2 = r2;
return normalize ? this.normalize() : this;
};
Range.prototype.assign2 = function (range) {
this.refType1 = range.refType1;
this.refType2 = range.refType2;
return this.assign(range.c1, range.r1, range.c2, range.r2);
};
Range.prototype.clone = function (normalize) {
var oRes = new Range(this.c1, this.r1, this.c2, this.r2, normalize);
oRes.refType1 = this.refType1;
oRes.refType2 = this.refType2;
return oRes;
};
Range.prototype.normalize = function () {
var tmp;
if (this.c1 > this.c2) {
tmp = this.c1;
this.c1 = this.c2;
this.c2 = tmp;
}
if (this.r1 > this.r2) {
tmp = this.r1;
this.r1 = this.r2;
this.r2 = tmp;
}
return this;
};
Range.prototype.isEqual = function (range) {
return range && this.c1 === range.c1 && this.r1 === range.r1 && this.c2 === range.c2 && this.r2 === range.r2;
};
Range.prototype.isEqualAll = function (range) {
return this.isEqual(range) && this.refType1 === range.refType1 && this.refType2 === range.refType2;
};
Range.prototype.isEqualWithOffsetRow = function (range, offsetRow) {
return this.c1 === range.c1 && this.c2 === range.c2 &&
this.isAbsC1() === range.isAbsC1() && this.isAbsC2() === range.isAbsC2() &&
this.isAbsR1() === range.isAbsR1() && this.isAbsR2() === range.isAbsR2() &&
(((this.isAbsR1() ? this.r1 === range.r1 : this.r1 + offsetRow === range.r1) &&
(this.isAbsR2() ? this.r2 === range.r2 : this.r2 + offsetRow === range.r2)) ||
(this.r1 === 0 && this.r2 === gc_nMaxRow0 && this.r1 === range.r1 && this.r2 === range.r2));
};
Range.prototype.contains = function (c, r) {
return this.c1 <= c && c <= this.c2 && this.r1 <= r && r <= this.r2;
};
Range.prototype.contains2 = function (cell) {
return this.contains(cell.col, cell.row);
};
Range.prototype.containsRange = function (range) {
return this.contains(range.c1, range.r1) && this.contains(range.c2, range.r2);
};
Range.prototype.containsFirstLineRange = function (range) {
return this.contains(range.c1, range.r1) && this.contains(range.c2, range.r1);
};
Range.prototype.intersection = function (range) {
var s1 = this.clone(true), s2 = range instanceof Range ? range.clone(true) :
new Range(range.c1, range.r1, range.c2, range.r2, true);
if (s2.c1 > s1.c2 || s2.c2 < s1.c1 || s2.r1 > s1.r2 || s2.r2 < s1.r1) {
return null;
}
return new Range(s2.c1 >= s1.c1 && s2.c1 <= s1.c2 ? s2.c1 : s1.c1, s2.r1 >= s1.r1 && s2.r1 <= s1.r2 ? s2.r1 :
s1.r1, Math.min(s1.c2, s2.c2), Math.min(s1.r2, s2.r2));
};
Range.prototype.intersectionSimple = function (range) {
var oRes = null;
var r1 = Math.max(this.r1, range.r1);
var c1 = Math.max(this.c1, range.c1);
var r2 = Math.min(this.r2, range.r2);
var c2 = Math.min(this.c2, range.c2);
if (r1 <= r2 && c1 <= c2) {
oRes = new Range(c1, r1, c2, r2);
}
return oRes;
};
Range.prototype.isIntersect = function (range) {
var bRes = true;
if (range.r2 < this.r1 || this.r2 < range.r1) {
bRes = false;
} else if (range.c2 < this.c1 || this.c2 < range.c1) {
bRes = false;
}
return bRes;
};
Range.prototype.isIntersectForShift = function(range, offset) {
var isHor = offset && offset.col;
var isDelete = offset && (offset.col < 0 || offset.row < 0);
if (isHor) {
if (this.r1 <= range.r1 && range.r2 <= this.r2 && this.c1 <= range.c2) {
return (this.c1 < range.c1 || (!isDelete && this.c1 === range.c1 && this.c2 === range.c1)) ?
c_oAscShiftType.Move : c_oAscShiftType.Change;
} else if (isDelete && this.c1 <= range.c1 && range.c2 <= this.c2) {
var topIn = this.r1 <= range.r1 && range.r1 <= this.r2;
var bottomIn = this.r1 <= range.r2 && range.r2 <= this.r2;
return topIn || bottomIn;
}
} else {
if (this.c1 <= range.c1 && range.c2 <= this.c2 && this.r1 <= range.r2) {
return (this.r1 < range.r1 || (!isDelete && this.r1 === range.r1 && this.r2 === range.r1)) ?
c_oAscShiftType.Move : c_oAscShiftType.Change;
} else if (isDelete && this.r1 <= range.r1 && range.r2 <= this.r2) {
var leftIn = this.c1 <= range.c1 && range.c1 <= this.c2;
var rightIn = this.c1 <= range.c2 && range.c2 <= this.c2;
return leftIn || rightIn;
}
}
return c_oAscShiftType.None;
};
Range.prototype.difference = function(range) {
var res = [];
var intersect;
if (this.r1 > 0) {
intersect = new Range(0, 0, gc_nMaxCol0, this.r1 - 1).intersectionSimple(range);
if (intersect) {
res.push(intersect);
}
}
if (this.c1 > 0) {
intersect = new Range(0, this.r1, this.c1 - 1, this.r2).intersectionSimple(range);
if (intersect) {
res.push(intersect);
}
}
if (this.c2 < gc_nMaxCol0) {
intersect = new Range(this.c2 + 1, this.r1, gc_nMaxCol0, this.r2).intersectionSimple(range);
if (intersect) {
res.push(intersect);
}
}
if (this.r2 < gc_nMaxRow0) {
intersect = new Range(0, this.r2 + 1, gc_nMaxCol0, gc_nMaxRow0).intersectionSimple(range);
if (intersect) {
res.push(intersect);
}
}
return res;
};
Range.prototype.isIntersectForShiftCell = function(col, row, offset) {
var isHor = offset && 0 != offset.col;
if (isHor) {
return this.r1 <= row && row <= this.r2 && this.c1 <= col;
} else {
return this.c1 <= col && col <= this.c2 && this.r1 <= row;
}
};
Range.prototype.forShift = function(bbox, offset, bUndo) {
var isNoDelete = true;
var isHor = 0 != offset.col;
var toDelete = offset.col < 0 || offset.row < 0;
if (isHor) {
if (toDelete) {
if (this.c1 < bbox.c1) {
if (this.c2 <= bbox.c2) {
this.setOffsetLast(new AscCommon.CellBase(0, -(this.c2 - bbox.c1 + 1)));
} else {
this.setOffsetLast(offset);
}
} else if (this.c1 <= bbox.c2) {
if (this.c2 <= bbox.c2) {
if(!bUndo){
var topIn = bbox.r1 <= this.r1 && this.r1 <= bbox.r2;
var bottomIn = bbox.r1 <= this.r2 && this.r2 <= bbox.r2;
if (topIn && bottomIn) {
isNoDelete = false;
} else if (topIn) {
this.setOffsetFirst(new AscCommon.CellBase(bbox.r2 - this.r1 + 1, 0));
} else if (bottomIn) {
this.setOffsetLast(new AscCommon.CellBase(bbox.r1 - this.r2 - 1, 0));
}
}
} else {
this.setOffsetFirst(new AscCommon.CellBase(0, bbox.c1 - this.c1));
this.setOffsetLast(offset);
}
} else {
this.setOffset(offset);
}
} else {
if (this.c1 < bbox.c1) {
this.setOffsetLast(offset);
} else {
this.setOffset(offset);
}
}
} else {
if (toDelete) {
if (this.r1 < bbox.r1) {
if (this.r2 <= bbox.r2) {
this.setOffsetLast(new AscCommon.CellBase(-(this.r2 - bbox.r1 + 1), 0));
} else {
this.setOffsetLast(offset);
}
} else if (this.r1 <= bbox.r2) {
if (this.r2 <= bbox.r2) {
if(!bUndo) {
var leftIn = bbox.c1 <= this.c1 && this.c1 <= bbox.c2;
var rightIn = bbox.c1 <= this.c2 && this.c2 <= bbox.c2;
if (leftIn && rightIn) {
isNoDelete = false;
} else if (leftIn) {
this.setOffsetFirst(new AscCommon.CellBase(0, bbox.c2 - this.c1 + 1));
} else if (rightIn) {
this.setOffsetLast(new AscCommon.CellBase(0, bbox.c1 - this.c2 - 1));
}
}
} else {
this.setOffsetFirst(new AscCommon.CellBase(bbox.r1 - this.r1, 0));
this.setOffsetLast(offset);
}
} else {
this.setOffset(offset);
}
} else {
if (this.r1 < bbox.r1) {
this.setOffsetLast(offset);
} else {
this.setOffset(offset);
}
}
}
return isNoDelete;
};
Range.prototype.isOneCell = function () {
return this.r1 === this.r2 && this.c1 === this.c2;
};
Range.prototype.isOnTheEdge = function (c, r) {
return this.r1 === r || this.r2 === r || this.c1 === c || this.c2 === c;
};
Range.prototype.union = function (range) {
var s1 = this.clone(true), s2 = range instanceof Range ? range.clone(true) :
new Range(range.c1, range.r1, range.c2, range.r2, true);
return new Range(Math.min(s1.c1, s2.c1), Math.min(s1.r1, s2.r1), Math.max(s1.c2, s2.c2), Math.max(s1.r2, s2.r2));
};
Range.prototype.union2 = function (range) {
this.c1 = Math.min(this.c1, range.c1);
this.c2 = Math.max(this.c2, range.c2);
this.r1 = Math.min(this.r1, range.r1);
this.r2 = Math.max(this.r2, range.r2);
};
Range.prototype.union3 = function (c, r) {
this.c1 = Math.min(this.c1, c);
this.c2 = Math.max(this.c2, c);
this.r1 = Math.min(this.r1, r);
this.r2 = Math.max(this.r2, r);
};
Range.prototype.setOffsetWithAbs = function(offset, opt_canResize, opt_circle) {
var temp;
var row = offset.row;
var col = offset.col;
//todo offset A1048576:A1 (row = 1 -> A1:A2; row = -1 -> A1048575:A1048576)
if (0 === this.r1 && gc_nMaxRow0 === this.r2) {
//full sheet is 1:1048576 but row is valid for it
row = 0;
} else if (0 === this.c1 && gc_nMaxCol0 === this.c2) {
col = 0;
}
var isAbsRow1 = this.isAbsRow(this.refType1);
var isAbsCol1 = this.isAbsCol(this.refType1);
var isAbsRow2 = this.isAbsRow(this.refType2);
var isAbsCol2 = this.isAbsCol(this.refType2);
if (!isAbsRow1) {
this.r1 += row;
if (this.r1 < 0) {
if (opt_circle) {
this.r1 += gc_nMaxRow0 + 1;
} else {
this.r1 = 0;
if (!opt_canResize) {
return false;
}
}
}
if (this.r1 > gc_nMaxRow0) {
if (opt_circle) {
this.r1 -= gc_nMaxRow0 + 1;
} else {
this.r1 = gc_nMaxRow0;
return false;
}
}
}
if (!isAbsCol1) {
this.c1 += col;
if (this.c1 < 0) {
if (opt_circle) {
this.c1 += gc_nMaxCol0 + 1;
} else {
this.c1 = 0;
if (!opt_canResize) {
return false;
}
}
}
if (this.c1 > gc_nMaxCol0) {
if (opt_circle) {
this.c1 -= gc_nMaxCol0 + 1;
} else {
this.c1 = gc_nMaxCol0;
return false;
}
}
}
if (!isAbsRow2) {
this.r2 += row;
if (this.r2 < 0) {
if (opt_circle) {
this.r2 += gc_nMaxRow0 + 1;
} else {
this.r2 = 0;
return false;
}
}
if (this.r2 > gc_nMaxRow0) {
if (opt_circle) {
this.r2 -= gc_nMaxRow0 + 1;
} else {
this.r2 = gc_nMaxRow0;
if (!opt_canResize) {
return false;
}
}
}
}
if (!isAbsCol2) {
this.c2 += col;
if (this.c2 < 0) {
if (opt_circle) {
this.c2 += gc_nMaxCol0 + 1;
} else {
this.c2 = 0;
return false;
}
}
if (this.c2 > gc_nMaxCol0) {
if (opt_circle) {
this.c2 -= gc_nMaxCol0 + 1;
} else {
this.c2 = gc_nMaxCol0;
if (!opt_canResize) {
return false;
}
}
}
}
//switch abs flag
if (this.r1 > this.r2) {
temp = this.r1;
this.r1 = this.r2;
this.r2 = temp;
if (!isAbsRow1 && isAbsRow2) {
isAbsRow1 = !isAbsRow1;
isAbsRow2 = !isAbsRow2;
this.setAbs(isAbsRow1, isAbsCol1, isAbsRow2, isAbsCol2);
}
}
if (this.c1 > this.c2) {
temp = this.c1;
this.c1 = this.c2;
this.c2 = temp;
if (!isAbsCol1 && isAbsCol2) {
isAbsCol1 = !isAbsCol1;
isAbsCol2 = !isAbsCol2;
this.setAbs(isAbsRow1, isAbsCol1, isAbsRow2, isAbsCol2);
}
}
return true;
};
Range.prototype.setOffset = function (offset) {
if (this.r1 == 0 && this.r2 == gc_nMaxRow0 && offset.row != 0 ||
this.c1 == 0 && this.c2 == gc_nMaxCol0 && offset.col != 0) {
return;
}
this.setOffsetFirst(offset);
this.setOffsetLast(offset);
};
Range.prototype.setOffsetFirst = function (offset) {
this.c1 += offset.col;
if (this.c1 < 0) {
this.c1 = 0;
}
if (this.c1 > gc_nMaxCol0) {
this.c1 = gc_nMaxCol0;
}
this.r1 += offset.row;
if (this.r1 < 0) {
this.r1 = 0;
}
if (this.r1 > gc_nMaxRow0) {
this.r1 = gc_nMaxRow0;
}
};
Range.prototype.setOffsetLast = function (offset) {
this.c2 += offset.col;
if (this.c2 < 0) {
this.c2 = 0;
}
if (this.c2 > gc_nMaxCol0) {
this.c2 = gc_nMaxCol0;
}
this.r2 += offset.row;
if (this.r2 < 0) {
this.r2 = 0;
}
if (this.r2 > gc_nMaxRow0) {
this.r2 = gc_nMaxRow0;
}
};
Range.prototype._getName = function (val, isCol, abs) {
var isR1C1Mode = AscCommonExcel.g_R1C1Mode;
val += 1;
if (isCol && !isR1C1Mode) {
val = g_oCellAddressUtils.colnumToColstr(val);
}
return (isR1C1Mode ? (isCol ? 'C' : 'R') : '') + (abs ? (isR1C1Mode ? val : '$' + val) :
(isR1C1Mode ? ((0 !== (val = (val - (isCol ? AscCommonExcel.g_ActiveCell.c1 :
AscCommonExcel.g_ActiveCell.r1) - 1))) ? '[' + val + ']' : '') : val));
};
Range.prototype.getName = function (refType) {
var isR1C1Mode = AscCommonExcel.g_R1C1Mode;
var c, r, type = this.getType();
var sRes = "";
var c1Abs, c2Abs, r1Abs, r2Abs;
if (referenceType.A === refType) {
c1Abs = c2Abs = r1Abs = r2Abs = true;
} else if (referenceType.R === refType) {
c1Abs = c2Abs = r1Abs = r2Abs = false;
} else {
c1Abs = this.isAbsCol(this.refType1);
c2Abs = this.isAbsCol(this.refType2);
r1Abs = this.isAbsRow(this.refType1);
r2Abs = this.isAbsRow(this.refType2);
}
if ((c_oAscSelectionType.RangeMax === type || c_oAscSelectionType.RangeRow === type) && c1Abs === c2Abs) {
sRes = this._getName(this.r1, false, r1Abs);
if (this.r1 !== this.r2 || r1Abs !== r2Abs || !isR1C1Mode) {
sRes += ':' + this._getName(this.r2, false, r2Abs);
}
} else if ((c_oAscSelectionType.RangeMax === type || c_oAscSelectionType.RangeCol === type) && r1Abs === r2Abs) {
sRes = this._getName(this.c1, true, c1Abs);
if (this.c1 !== this.c2 || c1Abs !== c2Abs || !isR1C1Mode) {
sRes += ':' + this._getName(this.c2, true, c2Abs);
}
} else {
r = this._getName(this.r1, false, r1Abs);
c = this._getName(this.c1, true, c1Abs);
sRes = isR1C1Mode ? r + c : c + r;
if (!this.isOneCell() || r1Abs !== r2Abs || c1Abs !== c2Abs) {
r = this._getName(this.r2, false, r2Abs);
c = this._getName(this.c2, true, c2Abs);
sRes += ':' + (isR1C1Mode ? r + c : c + r);
}
}
return sRes;
};
Range.prototype.getAbsName = function () {
return this.getName(referenceType.A);
};
Range.prototype.getType = function () {
var bRow = 0 === this.c1 && gc_nMaxCol0 === this.c2;
var bCol = 0 === this.r1 && gc_nMaxRow0 === this.r2;
var res;
if (bCol && bRow) {
res = c_oAscSelectionType.RangeMax;
} else if (bCol) {
res = c_oAscSelectionType.RangeCol;
} else if (bRow) {
res = c_oAscSelectionType.RangeRow;
} else {
res = c_oAscSelectionType.RangeCells;
}
return res;
};
Range.prototype.getSharedRange = function (sharedRef, c, r) {
var isAbsR1 = this.isAbsR1();
var isAbsC1 = this.isAbsC1();
var isAbsR2 = this.isAbsR2();
var isAbsC2 = this.isAbsC2();
if(this.r1 === 0 && this.r2 === gc_nMaxRow0){
isAbsR1 = isAbsR2 = true;
}
if(this.c1 === 0 && this.c2 === gc_nMaxCol0){
isAbsC1 = isAbsC2 = true;
}
var r1 = isAbsR2 ? sharedRef.r1 : Math.max(sharedRef.r2 + (r - this.r2), sharedRef.r1);
var c1 = isAbsC2 ? sharedRef.c1 : Math.max(sharedRef.c2 + (c - this.c2), sharedRef.c1);
var r2 = isAbsR1 ? sharedRef.r2 : Math.min(sharedRef.r1 + (r - this.r1), sharedRef.r2);
var c2 = isAbsC1 ? sharedRef.c2 : Math.min(sharedRef.c1 + (c - this.c1), sharedRef.c2);
return new Range(c1, r1, c2, r2);
};
Range.prototype.getSharedRangeBbox = function(ref, base) {
var res = this.clone();
var shiftBase;
var offset = new AscCommon.CellBase(ref.r1 - base.nRow, ref.c1 - base.nCol);
if (!offset.isEmpty()) {
shiftBase = this.clone();
shiftBase.setOffsetWithAbs(offset, false, false);
}
offset.row = ref.r2 - base.nRow;
offset.col = ref.c2 - base.nCol;
res.setOffsetWithAbs(offset, false, false);
res.union2(shiftBase ? shiftBase : this);
return res;
};
Range.prototype.getSharedIntersect = function(sharedRef, bbox) {
var leftTop = this.getSharedRange(sharedRef, bbox.c1, bbox.r1);
var rightBottom = this.getSharedRange(sharedRef, bbox.c2, bbox.r2);
return leftTop.union(rightBottom);
};
Range.prototype.setAbs = function (absRow1, absCol1, absRow2, absCol2) {
this.refType1 = (absRow1 ? 0 : 2) + (absCol1 ? 0 : 1);
this.refType2 = (absRow2 ? 0 : 2) + (absCol2 ? 0 : 1);
};
Range.prototype.isAbsCol = function (refType) {
return (refType === referenceType.A || refType === referenceType.RRAC);
};
Range.prototype.isAbsRow = function (refType) {
return (refType === referenceType.A || refType === referenceType.ARRC);
};
Range.prototype.isAbsR1 = function () {
return this.isAbsRow(this.refType1);
};
Range.prototype.isAbsC1 = function () {
return this.isAbsCol(this.refType1);
};
Range.prototype.isAbsR2 = function () {
return this.isAbsRow(this.refType2);
};
Range.prototype.isAbsC2 = function () {
return this.isAbsCol(this.refType2);
};
Range.prototype.isAbsAll = function () {
return this.isAbsR1() && this.isAbsC1() && this.isAbsR2() && this.isAbsC2();
};
Range.prototype.switchReference = function () {
this.refType1 = (this.refType1 + 1) % 4;
this.refType2 = (this.refType2 + 1) % 4;
};
/**
*
* @constructor
* @extends {Range}
*/
function Range3D() {
this.sheet = '';
this.sheet2 = '';
if (3 == arguments.length) {
var range = arguments[0];
Range.call(this, range.c1, range.r1, range.c2, range.r2);
// ToDo стоит пересмотреть конструкторы.
this.refType1 = range.refType1;
this.refType2 = range.refType2;
this.sheet = arguments[1];
this.sheet2 = arguments[2];
} else if (arguments.length > 1) {
Range.apply(this, arguments);
} else {
Range.call(this, 0, 0, 0, 0);
}
}
Range3D.prototype = Object.create(Range.prototype);
Range3D.prototype.constructor = Range3D;
Range3D.prototype.isIntersect = function () {
var oRes = true;
if (2 == arguments.length) {
oRes = this.sheet === arguments[1];
}
return oRes && Range.prototype.isIntersect.apply(this, arguments);
};
Range3D.prototype.clone = function () {
return new Range3D(Range.prototype.clone.apply(this, arguments), this.sheet, this.sheet2);
};
Range3D.prototype.setSheet = function (sheet, sheet2) {
this.sheet = sheet;
this.sheet2 = sheet2 ? sheet2 : sheet;
};
Range3D.prototype.getName = function () {
return AscCommon.parserHelp.get3DRef(this.sheet, Range.prototype.getName.apply(this));
};
/**
* @constructor
*/
function SelectionRange(ws) {
this.ranges = [new Range(0, 0, 0, 0)];
this.activeCell = new AscCommon.CellBase(0, 0); // Active cell
this.activeCellId = 0;
this.worksheet = ws;
}
SelectionRange.prototype.clean = function () {
this.ranges = [new Range(0, 0, 0, 0)];
this.activeCellId = 0;
this.activeCell.clean();
};
SelectionRange.prototype.contains = function (c, r) {
return this.ranges.some(function (item) {
return item.contains(c, r);
});
};
SelectionRange.prototype.contains2 = function (cell) {
return this.contains(cell.col, cell.row);
};
SelectionRange.prototype.inContains = function (ranges) {
var t = this;
return this.ranges.every(function (item1) {
return ranges.some(function (item2) {
return item2.containsRange(item1);
});
});
};
SelectionRange.prototype.containsRange = function (range) {
return this.ranges.some(function (item) {
return item.containsRange(range);
});
};
SelectionRange.prototype.clone = function (worksheet) {
var res = new SelectionRange();
res.ranges = this.ranges.map(function (range) {
return range.clone();
});
res.activeCell = this.activeCell.clone();
res.activeCellId = this.activeCellId;
res.worksheet = worksheet || this.worksheet;
return res;
};
SelectionRange.prototype.isEqual = function (range) {
if (this.activeCellId !== range.activeCellId || !this.activeCell.isEqual(range.activeCell) ||
this.ranges.length !== range.ranges.length) {
return false;
}
for (var i = 0; i < this.ranges.length; ++i) {
if (!this.ranges[i].isEqual(range.ranges[i])) {
return false;
}
}
return true;
};
SelectionRange.prototype.addRange = function () {
this.activeCellId = this.ranges.push(new Range(0, 0, 0, 0)) - 1;
this.activeCell.clean();
};
SelectionRange.prototype.assign2 = function (range) {
this.clean();
this.getLast().assign2(range);
this.update();
};
SelectionRange.prototype.union = function (range) {
var res = this.ranges.some(function (item) {
var success = false;
if (item.c1 === range.c1 && item.c2 === range.c2) {
if (range.r1 === item.r2 + 1) {
item.r2 = range.r2;
success = true;
} else if (range.r2 === item.r1 - 1) {
item.r1 = range.r1;
success = true;
}
} else if (item.r1 === range.r1 && item.r2 === range.r2) {
if (range.c1 === item.c2 + 1) {
item.c2 = range.c2;
success = true;
} else if (range.c2 === item.c1 - 1) {
item.c1 = range.c1;
success = true;
}
}
return success;
});
if (!res) {
this.addRange();
this.getLast().assign2(range);
}
};
SelectionRange.prototype.getUnion = function () {
var result = new SelectionRange(this.worksheet);
var unionRanges = function (ranges, res) {
for (var i = 0; i < ranges.length; ++i) {
if (0 === i) {
res.assign2(ranges[i]);
} else {
res.union(ranges[i]);
}
}
};
unionRanges(this.ranges, result);
var isUnion = true, resultTmp;
while (isUnion && !result.isSingleRange()) {
resultTmp = new SelectionRange(this.worksheet);
unionRanges(result.ranges, resultTmp);
isUnion = result.ranges.length !== resultTmp.ranges.length;
result = resultTmp;
}
return result;
};
SelectionRange.prototype.offsetCell = function (dr, dc, changeRange, fCheckSize) {
var done, curRange, mc, incompleate;
// Check one cell
if (1 === this.ranges.length) {
curRange = this.ranges[this.activeCellId];
if (curRange.isOneCell()) {
return 0;
} else {
mc = this.worksheet.getMergedByCell(this.activeCell.row, this.activeCell.col);
if (mc && curRange.isEqual(mc)) {
return 0;
}
}
}
var lastRow = this.activeCell.row;
var lastCol = this.activeCell.col;
this.activeCell.row += dr;
this.activeCell.col += dc;
while (!done) {
done = true;
curRange = this.ranges[this.activeCellId];
if (!curRange.contains2(this.activeCell)) {
if (dr) {
if (0 < dr) {
this.activeCell.row = curRange.r1;
this.activeCell.col += 1;
} else {
this.activeCell.row = curRange.r2;
this.activeCell.col -= 1;
}
} else {
if (0 < dc) {
this.activeCell.row += 1;
this.activeCell.col = curRange.c1;
} else {
this.activeCell.row -= 1;
this.activeCell.col = curRange.c2;
}
}
if (!curRange.contains2(this.activeCell)) {
if (!changeRange) {
this.activeCell.row = lastRow;
this.activeCell.col = lastCol;
return -1;
}
if (0 < dc || 0 < dr) {
this.activeCellId += 1;
this.activeCellId = (this.ranges.length > this.activeCellId) ? this.activeCellId : 0;
curRange = this.ranges[this.activeCellId];
this.activeCell.row = curRange.r1;
this.activeCell.col = curRange.c1;
} else {
this.activeCellId -= 1;
this.activeCellId = (0 <= this.activeCellId) ? this.activeCellId : this.ranges.length - 1;
curRange = this.ranges[this.activeCellId];
this.activeCell.row = curRange.r2;
this.activeCell.col = curRange.c2;
}
}
}
mc = this.worksheet.getMergedByCell(this.activeCell.row, this.activeCell.col);
if (mc) {
incompleate = !curRange.containsRange(mc);
if (dc > 0 && (incompleate || this.activeCell.col > mc.c1 || this.activeCell.row !== mc.r1)) {
// Движение слева направо
this.activeCell.col = mc.c2 + 1;
done = false;
} else if (dc < 0 && (incompleate || this.activeCell.col < mc.c2 || this.activeCell.row !== mc.r1)) {
// Движение справа налево
this.activeCell.col = mc.c1 - 1;
done = false;
}
if (dr > 0 && (incompleate || this.activeCell.row > mc.r1 || this.activeCell.col !== mc.c1)) {
// Движение сверху вниз
this.activeCell.row = mc.r2 + 1;
done = false;
} else if (dr < 0 && (incompleate || this.activeCell.row < mc.r2 || this.activeCell.col !== mc.c1)) {
// Движение снизу вверх
this.activeCell.row = mc.r1 - 1;
done = false;
}
}
if (!done) {
continue;
}
while (this.activeCell.col >= curRange.c1 && this.activeCell.col <= curRange.c2 && fCheckSize(-1, this.activeCell.col)) {
this.activeCell.col += dc || (dr > 0 ? +1 : -1);
done = false;
}
if (!done) {
continue;
}
while (this.activeCell.row >= curRange.r1 && this.activeCell.row <= curRange.r2 && fCheckSize(this.activeCell.row, -1)) {
this.activeCell.row += dr || (dc > 0 ? +1 : -1);
done = false;
}
if (!done) {
continue;
}
break;
}
return (lastRow !== this.activeCell.row || lastCol !== this.activeCell.col) ? 1 : -1;
};
SelectionRange.prototype.setCell = function (r, c) {
var res = false;
this.activeCell.row = r;
this.activeCell.col = c;
this.update();
// Check active cell in merge cell (bug 36708)
var mc = this.worksheet.getMergedByCell(this.activeCell.row, this.activeCell.col);
if (this.worksheet.getMergedByCell(this.activeCell.row, this.activeCell.col)) {
res = -1 === this.offsetCell(1, 0, false, function () {return false;});
if (res) {
this.activeCell.row = mc.r1;
this.activeCell.col = mc.c1;
}
}
return res;
};
SelectionRange.prototype.getLast = function () {
return this.ranges[this.ranges.length - 1];
};
SelectionRange.prototype.isSingleRange = function () {
return 1 === this.ranges.length;
};
SelectionRange.prototype.update = function () {
//меняем выделеную ячейку, если она не входит в диапазон
//возможно, в будующем придется пределать логику, пока нет примеров, когда это работает плохо
var range = this.ranges[this.activeCellId];
if (!range || !range.contains(this.activeCell.col, this.activeCell.row)) {
range = this.getLast();
this.activeCell.col = range.c1;
this.activeCell.row = range.r1;
this.activeCellId = this.ranges.length - 1;
}
};
SelectionRange.prototype.WriteToBinary = function(w) {
w.WriteLong(this.ranges.length);
for (var i = 0; i < this.ranges.length; ++i) {
var range = this.ranges[i];
w.WriteLong(range.c1);
w.WriteLong(range.r1);
w.WriteLong(range.c2);
w.WriteLong(range.r2);
}
w.WriteLong(this.activeCell.row);
w.WriteLong(this.activeCell.col);
w.WriteLong(this.activeCellId);
};
SelectionRange.prototype.ReadFromBinary = function(r) {
this.clean();
var count = r.GetLong();
var rangesNew = [];
for (var i = 0; i < count; ++i) {
var range = new Asc.Range(r.GetLong(), r.GetLong(), r.GetLong(), r.GetLong());
rangesNew.push(range);
}
if (rangesNew.length > 0) {
this.ranges = rangesNew;
}
this.activeCell.row = r.GetLong();
this.activeCell.col = r.GetLong();
this.activeCellId = r.GetLong();
this.update();
};
SelectionRange.prototype.Select = function () {
this.worksheet.selectionRange = this.clone();
this.worksheet.workbook.handlers.trigger('updateSelection');
};
/**
*
* @constructor
* @extends {Range}
*/
function ActiveRange(){
if(1 == arguments.length)
{
var range = arguments[0];
Range.call(this, range.c1, range.r1, range.c2, range.r2);
// ToDo стоит пересмотреть конструкторы.
this.refType1 = range.refType1;
this.refType2 = range.refType2;
}
else if(arguments.length > 1)
Range.apply(this, arguments);
else
Range.call(this, 0, 0, 0, 0);
this.startCol = 0; // Активная ячейка в выделении
this.startRow = 0; // Активная ячейка в выделении
this._updateAdditionalData();
}
ActiveRange.prototype = Object.create(Range.prototype);
ActiveRange.prototype.constructor = ActiveRange;
ActiveRange.prototype.assign = function () {
Range.prototype.assign.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.assign2 = function () {
Range.prototype.assign2.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.clone = function(){
var oRes = new ActiveRange(Range.prototype.clone.apply(this, arguments));
oRes.startCol = this.startCol;
oRes.startRow = this.startRow;
return oRes;
};
ActiveRange.prototype.normalize = function () {
Range.prototype.normalize.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.isEqualAll = function () {
var bRes = Range.prototype.isEqual.apply(this, arguments);
if(bRes && arguments.length > 0)
{
var range = arguments[0];
bRes = this.startCol == range.startCol && this.startRow == range.startRow;
}
return bRes;
};
ActiveRange.prototype.contains = function () {
return Range.prototype.contains.apply(this, arguments);
};
ActiveRange.prototype.containsRange = function () {
return Range.prototype.containsRange.apply(this, arguments);
};
ActiveRange.prototype.containsFirstLineRange = function () {
return Range.prototype.containsFirstLineRange.apply(this, arguments);
};
ActiveRange.prototype.intersection = function () {
var oRes = Range.prototype.intersection.apply(this, arguments);
if(null != oRes)
{
oRes = new ActiveRange(oRes);
oRes._updateAdditionalData();
}
return oRes;
};
ActiveRange.prototype.intersectionSimple = function () {
var oRes = Range.prototype.intersectionSimple.apply(this, arguments);
if(null != oRes)
{
oRes = new ActiveRange(oRes);
oRes._updateAdditionalData();
}
return oRes;
};
ActiveRange.prototype.union = function () {
var oRes = new ActiveRange(Range.prototype.union.apply(this, arguments));
oRes._updateAdditionalData();
return oRes;
};
ActiveRange.prototype.union2 = function () {
Range.prototype.union2.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.union3 = function () {
Range.prototype.union3.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.setOffset = function(offset){
this.setOffsetFirst(offset);
this.setOffsetLast(offset);
};
ActiveRange.prototype.setOffsetFirst = function(offset){
Range.prototype.setOffsetFirst.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype.setOffsetLast = function(offset){
Range.prototype.setOffsetLast.apply(this, arguments);
this._updateAdditionalData();
return this;
};
ActiveRange.prototype._updateAdditionalData = function(){
//меняем выделеную ячейку, если она не входит в диапазон
//возможно, в будующем придется пределать логику, пока нет примеров, когда это работает плохо
if(!this.contains(this.startCol, this.startRow))
{
this.startCol = this.c1;
this.startRow = this.r1;
}
};
/**
*
* @constructor
* @extends {Range}
*/
function FormulaRange(){
if(1 == arguments.length)
{
var range = arguments[0];
Range.call(this, range.c1, range.r1, range.c2, range.r2);
}
else if(arguments.length > 1)
Range.apply(this, arguments);
else
Range.call(this, 0, 0, 0, 0);
this.refType1 = referenceType.R;
this.refType2 = referenceType.R;
}
FormulaRange.prototype = Object.create(Range.prototype);
FormulaRange.prototype.constructor = FormulaRange;
FormulaRange.prototype.clone = function () {
var oRes = new FormulaRange(Range.prototype.clone.apply(this, arguments));
oRes.refType1 = this.refType1;
oRes.refType2 = this.refType2;
return oRes;
};
FormulaRange.prototype.intersection = function () {
var oRes = Range.prototype.intersection.apply(this, arguments);
if(null != oRes)
oRes = new FormulaRange(oRes);
return oRes;
};
FormulaRange.prototype.intersectionSimple = function () {
var oRes = Range.prototype.intersectionSimple.apply(this, arguments);
if(null != oRes)
oRes = new FormulaRange(oRes);
return oRes;
};
FormulaRange.prototype.union = function () {
return new FormulaRange(Range.prototype.union.apply(this, arguments));
};
FormulaRange.prototype.getName = function () {
var sRes = "";
var c1Abs = this.isAbsCol(this.refType1), c2Abs = this.isAbsCol(this.refType2);
var r1Abs = this.isAbsRow(this.refType1), r2Abs = this.isAbsRow(this.refType2);
if(0 == this.c1 && gc_nMaxCol0 == this.c2)
{
if(r1Abs)
sRes += "$";
sRes += (this.r1 + 1) + ":";
if(r2Abs)
sRes += "$";
sRes += (this.r2 + 1);
}
else if(0 == this.r1 && gc_nMaxRow0 == this.r2)
{
if(c1Abs)
sRes += "$";
sRes += g_oCellAddressUtils.colnumToColstr(this.c1 + 1) + ":";
if(c2Abs)
sRes += "$";
sRes += g_oCellAddressUtils.colnumToColstr(this.c2 + 1);
}
else
{
if(c1Abs)
sRes += "$";
sRes += g_oCellAddressUtils.colnumToColstr(this.c1 + 1);
if(r1Abs)
sRes += "$";
sRes += (this.r1 + 1);
if(!this.isOneCell())
{
sRes += ":";
if(c2Abs)
sRes += "$";
sRes += g_oCellAddressUtils.colnumToColstr(this.c2 + 1);
if(r2Abs)
sRes += "$";
sRes += (this.r2 + 1);
}
}
return sRes;
};
function MultiplyRange(ranges) {
this.ranges = ranges;
}
MultiplyRange.prototype.clone = function() {
return new MultiplyRange(this.ranges.slice());
};
MultiplyRange.prototype.union2 = function(multiplyRange) {
this.ranges = this.ranges.concat(multiplyRange.ranges);
};
MultiplyRange.prototype.isIntersect = function(range) {
for (var i = 0; i < this.ranges.length; ++i) {
if (range.isIntersect(this.ranges[i])) {
return true;
}
}
return false;
};
MultiplyRange.prototype.contains = function(c, r) {
for (var i = 0; i < this.ranges.length; ++i) {
if (this.ranges[i].contains(c, r)) {
return true;
}
}
return false;
};
function VisibleRange(visibleRange, offsetX, offsetY) {
this.visibleRange = visibleRange;
this.offsetX = offsetX;
this.offsetY = offsetY;
}
function RangeCache() {
this.oCache = {};
}
RangeCache.prototype.getAscRange = function (sRange) {
return this._getRange(sRange, 1);
};
RangeCache.prototype.getRange3D = function (sRange) {
var res = AscCommon.parserHelp.parse3DRef(sRange);
if (!res) {
return null;
}
var range = this._getRange(res.range.toUpperCase(), 1);
return range ? new Range3D(range, res.sheet, res.sheet2) : null;
};
RangeCache.prototype.getActiveRange = function (sRange) {
return this._getRange(sRange, 2);
};
RangeCache.prototype.getActiveRangesFromSqRef = function (sqRef) {
var res = [];
var refs = sqRef.split(' ');
for (var i = 0; i < refs.length; ++i) {
var ref = AscCommonExcel.g_oRangeCache.getAscRange(refs[i]);
if (ref) {
res.push(ref.clone());
}
}
return res;
};
RangeCache.prototype.getFormulaRange = function (sRange) {
return this._getRange(sRange, 3);
};
RangeCache.prototype._getRange = function (sRange, type) {
if (AscCommonExcel.g_R1C1Mode) {
var o = {
Formula: sRange, pCurrPos: 0
};
if (AscCommon.parserHelp.isArea.call(o, o.Formula, o.pCurrPos)) {
sRange = o.real_str;
} else if (AscCommon.parserHelp.isRef.call(o, o.Formula, o.pCurrPos)) {
sRange = o.real_str;
}
}
var oRes = null;
var oCacheVal = this.oCache[sRange];
if (null == oCacheVal) {
var oFirstAddr, oLastAddr;
var bIsSingle = true;
var nIndex = sRange.indexOf(":");
if (-1 != nIndex) {
bIsSingle = false;
oFirstAddr = g_oCellAddressUtils.getCellAddress(sRange.substring(0, nIndex));
oLastAddr = g_oCellAddressUtils.getCellAddress(sRange.substring(nIndex + 1));
} else {
oFirstAddr = oLastAddr = g_oCellAddressUtils.getCellAddress(sRange);
}
oCacheVal = {first: null, last: null, ascRange: null, formulaRange: null, activeRange: null};
//последнее условие, чтобы не распознавалось "A", "1"(должно быть "A:A", "1:1")
if (oFirstAddr.isValid() && oLastAddr.isValid() &&
(!bIsSingle || (!oFirstAddr.getIsRow() && !oFirstAddr.getIsCol()))) {
oCacheVal.first = oFirstAddr;
oCacheVal.last = oLastAddr;
}
this.oCache[sRange] = oCacheVal;
}
if (1 == type) {
oRes = oCacheVal.ascRange;
} else if (2 == type) {
oRes = oCacheVal.activeRange;
} else {
oRes = oCacheVal.formulaRange;
}
if (null == oRes && null != oCacheVal.first && null != oCacheVal.last) {
var r1 = oCacheVal.first.getRow0(), r2 = oCacheVal.last.getRow0(), c1 = oCacheVal.first.getCol0(), c2 = oCacheVal.last.getCol0();
var r1Abs = oCacheVal.first.getRowAbs(), r2Abs = oCacheVal.last.getRowAbs(),
c1Abs = oCacheVal.first.getColAbs(), c2Abs = oCacheVal.last.getColAbs();
if (oCacheVal.first.getIsRow() && oCacheVal.last.getIsRow()) {
c1 = 0;
c2 = gc_nMaxCol0;
}
if (oCacheVal.first.getIsCol() && oCacheVal.last.getIsCol()) {
r1 = 0;
r2 = gc_nMaxRow0;
}
if (r1 > r2) {
var temp = r1;
r1 = r2;
r2 = temp;
temp = r1Abs;
r1Abs = r2Abs;
r2Abs = temp;
}
if (c1 > c2) {
var temp = c1;
c1 = c2;
c2 = temp;
temp = c1Abs;
c1Abs = c2Abs;
c2Abs = temp;
}
if (1 == type) {
if (null == oCacheVal.ascRange) {
var oAscRange = new Range(c1, r1, c2, r2);
oAscRange.setAbs(r1Abs, c1Abs, r2Abs, c2Abs);
oCacheVal.ascRange = oAscRange;
}
oRes = oCacheVal.ascRange;
} else if (2 == type) {
if (null == oCacheVal.activeRange) {
var oActiveRange = new ActiveRange(c1, r1, c2, r2);
oActiveRange.setAbs(r1Abs, c1Abs, r2Abs, c2Abs);
oActiveRange.startCol = oActiveRange.c1;
oActiveRange.startRow = oActiveRange.r1;
oCacheVal.activeRange = oActiveRange;
}
oRes = oCacheVal.activeRange;
} else {
if (null == oCacheVal.formulaRange) {
var oFormulaRange = new FormulaRange(c1, r1, c2, r2);
oFormulaRange.setAbs(r1Abs, c1Abs, r2Abs, c2Abs);
oCacheVal.formulaRange = oFormulaRange;
}
oRes = oCacheVal.formulaRange;
}
}
return oRes;
};
var g_oRangeCache = new RangeCache();
/**
* @constructor
* @memberOf Asc
*/
function HandlersList(handlers) {
if ( !(this instanceof HandlersList) ) {return new HandlersList(handlers);}
this.handlers = handlers || {};
return this;
}
HandlersList.prototype = {
constructor: HandlersList,
trigger: function (eventName) {
var h = this.handlers[eventName], t = typeOf(h), a = Array.prototype.slice.call(arguments, 1), i;
if (t === kFunctionL) {
return h.apply(this, a);
}
if (t === kArrayL) {
for (i = 0; i < h.length; i += 1) {
if (typeOf(h[i]) === kFunctionL) {h[i].apply(this, a);}
}
return true;
}
return false;
},
add: function (eventName, eventHandler, replaceOldHandler) {
var th = this.handlers, h, old, t;
if (replaceOldHandler || !th.hasOwnProperty(eventName)) {
th[eventName] = eventHandler;
} else {
old = h = th[eventName];
t = typeOf(old);
if (t !== kArrayL) {
h = th[eventName] = [];
if (t === kFunctionL) {h.push(old);}
}
h.push(eventHandler);
}
},
remove: function (eventName, eventHandler) {
var th = this.handlers, h = th[eventName], i;
if (th.hasOwnProperty(eventName)) {
if (typeOf(h) !== kArrayL || typeOf(eventHandler) !== kFunctionL) {
delete th[eventName];
return true;
}
for (i = h.length - 1; i >= 0; i -= 1) {
if (h[i] === eventHandler) {
delete h[i];
return true;
}
}
}
return false;
}
};
function outputDebugStr(channel) {
var c = window.console;
if (Asc.g_debug_mode && c && c[channel] && c[channel].apply) {
c[channel].apply(this, Array.prototype.slice.call(arguments, 1));
}
}
function trim(val)
{
if(!String.prototype.trim)
return val.trim();
else
return val.replace(/^\s+|\s+$/g,'');
}
function isNumberInfinity(val) {
var valTrim = trim(val);
var valInt = valTrim - 0;
return valInt == valTrim && valTrim.length > 0 && MIN_EXCEL_INT < valInt && valInt < MAX_EXCEL_INT;//
}
function arrayToLowerCase(array) {
var result = [];
for (var i = 0, length = array.length; i < length; ++i)
result.push(array[i].toLowerCase());
return result;
}
function isFixedWidthCell(frag) {
for (var i = 0; i < frag.length; ++i) {
var f = frag[i].format;
if (f && f.getRepeat()) {return true;}
}
return false;
}
function dropDecimalAutofit(f) {
var s = getFragmentsText(f);
// Проверка scientific format
if (s.search(/E/i) >= 0) {
return f;
}
// Поиск десятичной точки
var pos = s.indexOf(AscCommon.g_oDefaultCultureInfo.NumberDecimalSeparator);
if (-1 !== pos) {
f = [f[0].clone()];
f[0].text = s.slice(0, pos);
}
return f;
}
function getFragmentsText(f) {
return f.reduce(function (pv, cv) {
return pv + cv.text;
}, "");
}
function executeInR1C1Mode(mode, runFunction) {
var oldMode = AscCommonExcel.g_R1C1Mode;
AscCommonExcel.g_R1C1Mode = mode;
runFunction();
AscCommonExcel.g_R1C1Mode = oldMode;
}
function getEndValueRange (dx, start, v1, v2) {
var x1, x2;
if (0 !== dx) {
if (start === v1) {
x1 = v1;
x2 = v2;
} else if (start === v2) {
x1 = v2;
x2 = v1;
} else {
if (0 > dx) {
x1 = v2;
x2 = v1;
} else {
x1 = v1;
x2 = v2;
}
}
} else {
x1 = v1;
x2 = v2;
}
return {x1: x1, x2: x2};
}
//-----------------------------------------------------------------
// События движения мыши
//-----------------------------------------------------------------
/** @constructor */
function asc_CMouseMoveData (obj) {
if ( !(this instanceof asc_CMouseMoveData) ) {
return new asc_CMouseMoveData(obj);
}
if (obj) {
this.type = obj.type;
this.x = obj.x;
this.reverseX = obj.reverseX; // Отображать комментарий слева от ячейки
this.y = obj.y;
this.hyperlink = obj.hyperlink;
this.aCommentIndexes = obj.aCommentIndexes;
this.userId = obj.userId;
this.lockedObjectType = obj.lockedObjectType;
// Для resize
this.sizeCCOrPt = obj.sizeCCOrPt;
this.sizePx = obj.sizePx;
//Filter
this.filter = obj.filter;
}
return this;
}
asc_CMouseMoveData.prototype = {
constructor: asc_CMouseMoveData,
asc_getType: function () { return this.type; },
asc_getX: function () { return this.x; },
asc_getReverseX: function () { return this.reverseX; },
asc_getY: function () { return this.y; },
asc_getHyperlink: function () { return this.hyperlink; },
asc_getCommentIndexes: function () { return this.aCommentIndexes; },
asc_getUserId: function () { return this.userId; },
asc_getLockedObjectType: function () { return this.lockedObjectType; },
asc_getSizeCCOrPt: function () { return this.sizeCCOrPt; },
asc_getSizePx: function () { return this.sizePx; },
asc_getFilter: function () { return this.filter; }
};
// Гиперссылка
/** @constructor */
function asc_CHyperlink (obj) {
if (!(this instanceof asc_CHyperlink)) {
return new asc_CHyperlink(obj);
}
// Класс Hyperlink из модели
this.hyperlinkModel = null != obj ? obj : new AscCommonExcel.Hyperlink();
// Используется только для выдачи наружу и выставлении обратно
this.text = null;
return this;
}
asc_CHyperlink.prototype = {
constructor: asc_CHyperlink,
asc_getType: function () { return this.hyperlinkModel.getHyperlinkType(); },
asc_getHyperlinkUrl: function () { return this.hyperlinkModel.Hyperlink; },
asc_getTooltip: function () { return this.hyperlinkModel.Tooltip; },
asc_getLocation: function () { return this.hyperlinkModel.getLocation(); },
asc_getSheet: function () { return this.hyperlinkModel.LocationSheet; },
asc_getRange: function () {return this.hyperlinkModel.getLocationRange();},
asc_getText: function () { return this.text; },
asc_setType: function (val) {
// В принципе эта функция избыточна
switch (val) {
case Asc.c_oAscHyperlinkType.WebLink:
this.hyperlinkModel.setLocation(null);
break;
case Asc.c_oAscHyperlinkType.RangeLink:
this.hyperlinkModel.Hyperlink = null;
break;
}
},
asc_setHyperlinkUrl: function (val) { this.hyperlinkModel.Hyperlink = val; },
asc_setTooltip: function (val) { this.hyperlinkModel.Tooltip = val ? val.slice(0, Asc.c_oAscMaxTooltipLength) : val; },
asc_setLocation: function (val) { this.hyperlinkModel.setLocation(val); },
asc_setSheet: function (val) { this.hyperlinkModel.setLocationSheet(val); },
asc_setRange: function (val) { this.hyperlinkModel.setLocationRange(val); },
asc_setText: function (val) { this.text = val; }
};
function CPagePrint() {
this.pageWidth = 0;
this.pageHeight = 0;
this.pageClipRectLeft = 0;
this.pageClipRectTop = 0;
this.pageClipRectWidth = 0;
this.pageClipRectHeight = 0;
this.pageRange = null;
this.leftFieldInPx = 0;
this.topFieldInPx = 0;
this.pageGridLines = false;
this.pageHeadings = false;
this.indexWorksheet = -1;
this.startOffset = 0;
this.startOffsetPx = 0;
return this;
}
function CPrintPagesData () {
this.arrPages = [];
this.currentIndex = 0;
return this;
}
/** @constructor */
function asc_CAdjustPrint () {
// Вид печати
this.printType = Asc.c_oAscPrintType.ActiveSheets;
this.pageOptionsMap = null;
// ToDo сюда же start и end page index
return this;
}
asc_CAdjustPrint.prototype.asc_getPrintType = function () { return this.printType; };
asc_CAdjustPrint.prototype.asc_setPrintType = function (val) { this.printType = val; };
asc_CAdjustPrint.prototype.asc_getPageOptionsMap = function () { return this.pageOptionsMap; };
asc_CAdjustPrint.prototype.asc_setPageOptionsMap = function (val) { this.pageOptionsMap = val; };
/** @constructor */
function asc_CLockInfo () {
this["sheetId"] = null;
this["type"] = null;
this["subType"] = null;
this["guid"] = null;
this["rangeOrObjectId"] = null;
}
/** @constructor */
function asc_CCollaborativeRange (c1, r1, c2, r2) {
this["c1"] = c1;
this["r1"] = r1;
this["c2"] = c2;
this["r2"] = r2;
}
/** @constructor */
function asc_CSheetViewSettings () {
// Показывать ли сетку
this.showGridLines = null;
// Показывать обозначения строк и столбцов
this.showRowColHeaders = null;
// Закрепление области
this.pane = null;
//current view zoom
this.zoomScale = 100;
return this;
}
asc_CSheetViewSettings.prototype = {
constructor: asc_CSheetViewSettings,
clone: function () {
var result = new asc_CSheetViewSettings();
result.showGridLines = this.showGridLines;
result.showRowColHeaders = this.showRowColHeaders;
result.zoom = this.zoom;
if (this.pane)
result.pane = this.pane.clone();
return result;
},
isEqual: function (settings) {
return this.asc_getShowGridLines() === settings.asc_getShowGridLines() &&
this.asc_getShowRowColHeaders() === settings.asc_getShowRowColHeaders();
},
asc_getShowGridLines: function () { return false !== this.showGridLines; },
asc_getShowRowColHeaders: function () { return false !== this.showRowColHeaders; },
asc_getZoomScale: function () { return this.zoomScale; },
asc_getIsFreezePane: function () { return null !== this.pane && this.pane.isInit(); },
asc_setShowGridLines: function (val) { this.showGridLines = val; },
asc_setShowRowColHeaders: function (val) { this.showRowColHeaders = val; },
asc_setZoomScale: function (val) { this.zoomScale = val; }
};
/** @constructor */
function asc_CPane () {
this.state = null;
this.topLeftCell = null;
this.xSplit = 0;
this.ySplit = 0;
// CellAddress для удобства
this.topLeftFrozenCell = null;
return this;
}
asc_CPane.prototype.isInit = function () {
return null !== this.topLeftFrozenCell;
};
asc_CPane.prototype.clone = function() {
var res = new asc_CPane();
res.state = this.state;
res.topLeftCell = this.topLeftCell;
res.xSplit = this.xSplit;
res.ySplit = this.ySplit;
res.topLeftFrozenCell = this.topLeftFrozenCell ?
new AscCommon.CellAddress(this.topLeftFrozenCell.row, this.topLeftFrozenCell.col) : null;
return res;
};
asc_CPane.prototype.init = function() {
// ToDo Обрабатываем пока только frozen и frozenSplit
if ((AscCommonExcel.c_oAscPaneState.Frozen === this.state || AscCommonExcel.c_oAscPaneState.FrozenSplit === this.state) &&
(0 < this.xSplit || 0 < this.ySplit)) {
this.topLeftFrozenCell = new AscCommon.CellAddress(this.ySplit, this.xSplit, 0);
if (!this.topLeftFrozenCell.isValid())
this.topLeftFrozenCell = null;
}
};
function RedoObjectParam () {
this.bIsOn = false;
this.bIsReInit = false;
this.oChangeWorksheetUpdate = {};
this.bUpdateWorksheetByModel = false;
this.bOnSheetsChanged = false;
this.oOnUpdateTabColor = {};
this.oOnUpdateSheetViewSettings = {};
this.bAddRemoveRowCol = false;
this.bChangeActive = false;
this.activeSheet = null;
}
/** @constructor */
function asc_CStylesPainter(width, height) {
this.defaultStyles = null;
this.docStyles = null;
this.styleThumbnailWidth = width;
this.styleThumbnailHeight = height;
this.styleThumbnailWidthPt = this.styleThumbnailWidth * 72 / 96;
this.styleThumbnailHeightPt = this.styleThumbnailHeight * 72 / 96;
this.styleThumbnailWidthWithRetina = this.styleThumbnailWidth;
this.styleThumbnailHeightWithRetina = this.styleThumbnailHeight;
if (AscCommon.AscBrowser.isRetina) {
this.styleThumbnailWidthWithRetina =
AscCommon.AscBrowser.convertToRetinaValue(this.styleThumbnailWidthWithRetina, true);
this.styleThumbnailHeightWithRetina =
AscCommon.AscBrowser.convertToRetinaValue(this.styleThumbnailHeightWithRetina, true);
}
}
asc_CStylesPainter.prototype.asc_checkStylesNames = function(cellStylesAll) {
var oStyle, i;
for (i = 0; i < cellStylesAll.DefaultStyles.length; ++i) {
oStyle = cellStylesAll.DefaultStyles[i];
AscFonts.FontPickerByCharacter.getFontsByString(oStyle.Name);
AscFonts.FontPickerByCharacter.getFontsByString(AscCommon.translateManager.getValue(oStyle.Name));
}
for (i = 0; i < cellStylesAll.CustomStyles.length; ++i) {
oStyle = cellStylesAll.CustomStyles[i];
AscFonts.FontPickerByCharacter.getFontsByString(oStyle.Name);
}
};
asc_CStylesPainter.prototype.asc_getStyleThumbnailWidth = function () {
return this.styleThumbnailWidthWithRetina;
};
asc_CStylesPainter.prototype.asc_getStyleThumbnailHeight = function () {
return this.styleThumbnailHeightWithRetina;
};
asc_CStylesPainter.prototype.asc_getDefaultStyles = function () {
return this.defaultStyles;
};
asc_CStylesPainter.prototype.asc_getDocStyles = function () {
return this.docStyles;
};
asc_CStylesPainter.prototype.generateStylesAll = function (cellStylesAll, fmgrGraphics, oFont, sr) {
this.generateDefaultStyles(cellStylesAll, fmgrGraphics, oFont, sr);
this.generateDocumentStyles(cellStylesAll, fmgrGraphics, oFont, sr);
};
asc_CStylesPainter.prototype.generateDefaultStyles = function (cellStylesAll, fmgrGraphics, oFont, sr) {
var cellStyles = cellStylesAll.DefaultStyles;
var oCanvas = document.createElement('canvas');
oCanvas.width = this.styleThumbnailWidthWithRetina;
oCanvas.height = this.styleThumbnailHeightWithRetina;
var oGraphics = new Asc.DrawingContext(
{canvas: oCanvas, units: 1/*pt*/, fmgrGraphics: fmgrGraphics, font: oFont});
var oStyle, oCustomStyle;
this.defaultStyles = [];
for (var i = 0; i < cellStyles.length; ++i) {
oStyle = cellStyles[i];
if (oStyle.Hidden) {
continue;
}
// ToDo Возможно стоит переписать немного, чтобы не пробегать каждый раз по массиву custom-стилей (нужно генерировать AllStyles)
oCustomStyle = cellStylesAll.getCustomStyleByBuiltinId(oStyle.BuiltinId);
this.drawStyle(oGraphics, sr, oCustomStyle || oStyle, AscCommon.translateManager.getValue(oStyle.Name));
this.defaultStyles.push(new AscCommon.CStyleImage(oStyle.Name, AscCommon.c_oAscStyleImage.Default,
oCanvas.toDataURL("image/png")));
}
};
asc_CStylesPainter.prototype.generateDocumentStyles = function (cellStylesAll, fmgrGraphics, oFont, sr) {
var cellStyles = cellStylesAll.CustomStyles;
var oCanvas = document.createElement('canvas');
oCanvas.width = this.styleThumbnailWidthWithRetina;
oCanvas.height = this.styleThumbnailHeightWithRetina;
var oGraphics = new Asc.DrawingContext(
{canvas: oCanvas, units: 1/*pt*/, fmgrGraphics: fmgrGraphics, font: oFont});
var oStyle;
this.docStyles = [];
for (var i = 0; i < cellStyles.length && i < 1000; ++i) {
oStyle = cellStyles[i];
if (oStyle.Hidden || null != oStyle.BuiltinId) {
continue;
}
this.drawStyle(oGraphics, sr, oStyle, oStyle.Name);
this.docStyles.push(new AscCommon.CStyleImage(oStyle.Name, AscCommon.c_oAscStyleImage.Document,
oCanvas.toDataURL("image/png")));
}
};
asc_CStylesPainter.prototype.drawStyle = function (oGraphics, sr, oStyle, sStyleName) {
oGraphics.clear();
// Fill cell
var oColor = oStyle.getFill();
if (null !== oColor) {
oGraphics.setFillStyle(oColor);
oGraphics.fillRect(0, 0, this.styleThumbnailWidthPt, this.styleThumbnailHeightPt);
}
var drawBorder = function (b, x1, y1, x2, y2) {
if (b && AscCommon.c_oAscBorderStyles.None !== b.s) {
oGraphics.setStrokeStyle(b.c);
// ToDo поправить
oGraphics.setLineWidth(b.w).beginPath().moveTo(x1, y1).lineTo(x2, y2).stroke();
}
};
// borders
var oBorders = oStyle.getBorder();
drawBorder(oBorders.l, 0, 0, 0, this.styleThumbnailHeightPt);
drawBorder(oBorders.r, this.styleThumbnailWidthPt, 0, this.styleThumbnailWidthPt,
this.styleThumbnailHeightPt);
drawBorder(oBorders.t, 0, 0, this.styleThumbnailWidthPt, 0);
drawBorder(oBorders.b, 0, this.styleThumbnailHeightPt, this.styleThumbnailWidthPt,
this.styleThumbnailHeightPt);
// Draw text
var fc = oStyle.getFontColor();
var oFontColor = fc !== null ? fc : new AscCommon.CColor(0, 0, 0);
var format = oStyle.getFont();
var fs = format.getSize();
// Для размера шрифта делаем ограничение для превью в 16pt (у Excel 18pt, но и высота превью больше 22px)
var oFont = new Asc.FontProperties(format.getName(), (16 < fs) ? 16 : fs, format.getBold(),
format.getItalic(), format.getUnderline(), format.getStrikeout());
var width_padding = 3; // 4 * 72 / 96
var tm = sr.measureString(sStyleName);
// Текст будем рисовать по центру (в Excel чуть по другому реализовано, у них постоянный отступ снизу)
var textY = 0.5 * (this.styleThumbnailHeightPt - tm.height);
oGraphics.setFont(oFont);
oGraphics.setFillStyle(oFontColor);
oGraphics.fillText(sStyleName, width_padding, textY + tm.baseline);
};
/** @constructor */
function asc_CSheetPr() {
if (!(this instanceof asc_CSheetPr)) {
return new asc_CSheetPr();
}
this.CodeName = null;
this.EnableFormatConditionsCalculation = null;
this.FilterMode = null;
this.Published = null;
this.SyncHorizontal = null;
this.SyncRef = null;
this.SyncVertical = null;
this.TransitionEntry = null;
this.TransitionEvaluation = null;
this.TabColor = null;
return this;
}
asc_CSheetPr.prototype.clone = function() {
var res = new asc_CSheetPr();
res.CodeName = this.CodeName;
res.EnableFormatConditionsCalculation = this.EnableFormatConditionsCalculation;
res.FilterMode = this.FilterMode;
res.Published = this.Published;
res.SyncHorizontal = this.SyncHorizontal;
res.SyncRef = this.SyncRef;
res.SyncVertical = this.SyncVertical;
res.TransitionEntry = this.TransitionEntry;
res.TransitionEvaluation = this.TransitionEvaluation;
if (this.TabColor)
res.TabColor = this.TabColor.clone();
return res;
};
// Математическая информация о выделении
/** @constructor */
function asc_CSelectionMathInfo() {
this.count = 0;
this.countNumbers = 0;
this.sum = null;
this.average = null;
this.min = null;
this.max = null;
}
asc_CSelectionMathInfo.prototype = {
constructor: asc_CSelectionMathInfo,
asc_getCount: function () { return this.count; },
asc_getCountNumbers: function () { return this.countNumbers; },
asc_getSum: function () { return this.sum; },
asc_getAverage: function () { return this.average; },
asc_getMin: function () { return this.min; },
asc_getMax: function () { return this.max; }
};
/** @constructor */
function asc_CFindOptions() {
this.findWhat = ""; // текст, который ищем
this.scanByRows = true; // просмотр по строкам/столбцам
this.scanForward = true; // поиск вперед/назад
this.isMatchCase = false; // учитывать регистр
this.isWholeCell = false; // ячейка целиком
this.scanOnOnlySheet = true; // искать только на листе/в книге
this.lookIn = Asc.c_oAscFindLookIn.Formulas; // искать в формулах/значениях/примечаниях
this.replaceWith = ""; // текст, на который заменяем (если у нас замена)
this.isReplaceAll = false; // заменить все (если у нас замена)
// внутренние переменные
this.findInSelection = false;
this.selectionRange = null;
this.findRange = null;
this.findResults = null;
this.indexInArray = 0;
this.countFind = 0;
this.countReplace = 0;
this.countFindAll = 0;
this.countReplaceAll = 0;
this.sheetIndex = -1;
this.error = false;
}
asc_CFindOptions.prototype.clone = function () {
var result = new asc_CFindOptions();
result.findWhat = this.findWhat;
result.scanByRows = this.scanByRows;
result.scanForward = this.scanForward;
result.isMatchCase = this.isMatchCase;
result.isWholeCell = this.isWholeCell;
result.scanOnOnlySheet = this.scanOnOnlySheet;
result.lookIn = this.lookIn;
result.replaceWith = this.replaceWith;
result.isReplaceAll = this.isReplaceAll;
result.findInSelection = this.findInSelection;
result.selectionRange = this.selectionRange ? this.selectionRange.clone() : null;
result.findRange = this.findRange ? this.findRange.clone() : null;
result.indexInArray = this.indexInArray;
result.countFind = this.countFind;
result.countReplace = this.countReplace;
result.countFindAll = this.countFindAll;
result.countReplaceAll = this.countReplaceAll;
result.sheetIndex = this.sheetIndex;
result.error = this.error;
return result;
};
asc_CFindOptions.prototype.isEqual = function (obj) {
return obj && this.isEqual2(obj) && this.scanForward === obj.scanForward &&
this.scanOnOnlySheet === obj.scanOnOnlySheet;
};
asc_CFindOptions.prototype.isEqual2 = function (obj) {
return obj && this.findWhat === obj.findWhat && this.scanByRows === obj.scanByRows &&
this.isMatchCase === obj.isMatchCase && this.isWholeCell === obj.isWholeCell &&
this.lookIn === obj.lookIn;
};
asc_CFindOptions.prototype.clearFindAll = function () {
this.countFindAll = 0;
this.countReplaceAll = 0;
this.error = false;
};
asc_CFindOptions.prototype.updateFindAll = function () {
this.countFindAll += this.countFind;
this.countReplaceAll += this.countReplace;
};
asc_CFindOptions.prototype.asc_setFindWhat = function (val) {this.findWhat = val;};
asc_CFindOptions.prototype.asc_setScanByRows = function (val) {this.scanByRows = val;};
asc_CFindOptions.prototype.asc_setScanForward = function (val) {this.scanForward = val;};
asc_CFindOptions.prototype.asc_setIsMatchCase = function (val) {this.isMatchCase = val;};
asc_CFindOptions.prototype.asc_setIsWholeCell = function (val) {this.isWholeCell = val;};
asc_CFindOptions.prototype.asc_setScanOnOnlySheet = function (val) {this.scanOnOnlySheet = val;};
asc_CFindOptions.prototype.asc_setLookIn = function (val) {this.lookIn = val;};
asc_CFindOptions.prototype.asc_setReplaceWith = function (val) {this.replaceWith = val;};
asc_CFindOptions.prototype.asc_setIsReplaceAll = function (val) {this.isReplaceAll = val;};
/** @constructor */
function findResults() {
this.values = {};
this.currentKey1 = -1;
this.currentKey2 = -1;
this.currentKeys1 = null;
this.currentKeys2 = null;
}
findResults.prototype.isNotEmpty = function () {
return 0 !== Object.keys(this.values).length;
};
findResults.prototype.contains = function (key1, key2) {
return this.values[key1] && this.values[key1][key2];
};
findResults.prototype.add = function (key1, key2, cell) {
if (!this.values[key1]) {
this.values[key1] = {};
}
this.values[key1][key2] = cell;
};
findResults.prototype._init = function (key1, key2) {
this.currentKey1 = key1;
this.currentKey2 = key2;
this.currentKeyIndex1 = -1;
this.currentKeyIndex2 = -1;
this.currentKeys2 = null;
this.currentKeys1 = Object.keys(this.values).sort(AscCommon.fSortAscending);
this.currentKeyIndex1 = this._findKey(this.currentKey1, this.currentKeys1);
if (0 === this.currentKeys1[this.currentKeyIndex1] - this.currentKey1) {
this.currentKeys2 = Object.keys(this.values[this.currentKey1]).sort(AscCommon.fSortAscending);
this.currentKeyIndex2 = this._findKey(this.currentKey2, this.currentKeys2);
}
};
findResults.prototype.find = function (key1, key2, forward) {
this.forward = forward;
if (this.currentKey1 !== key1 || this.currentKey2 !== key2) {
this._init(key1, key2);
}
if (0 === this.currentKeys1.length) {
return false;
}
var step = this.forward ? +1 : -1;
this.currentKeyIndex2 += step;
if (!this.currentKeys2 || !this.currentKeys2[this.currentKeyIndex2]) {
this.currentKeyIndex1 += step;
if (!this.currentKeys1[this.currentKeyIndex1]) {
this.currentKeyIndex1 = this.forward ? 0 : this.currentKeys1.length - 1;
}
this.currentKey1 = this.currentKeys1[this.currentKeyIndex1] >> 0;
this.currentKeys2 = Object.keys(this.values[this.currentKey1]).sort(AscCommon.fSortAscending);
this.currentKeyIndex2 = this.forward ? 0 : this.currentKeys2.length - 1;
}
this.currentKey2 = this.currentKeys2[this.currentKeyIndex2] >> 0;
return true;
};
findResults.prototype._findKey = function (key, arrayKeys) {
var i = this.forward ? 0 : arrayKeys.length - 1;
var step = this.forward ? +1 : -1;
var _key;
while (_key = arrayKeys[i]) {
_key = step * ((_key >> 0) - key);
if (_key >= 0) {
return 0 === _key ? i : (i - step);
}
i += step;
}
return -2;
};
/** @constructor */
function asc_CCompleteMenu(name, type) {
this.name = name;
this.type = type;
}
asc_CCompleteMenu.prototype.asc_getName = function () {return this.name;};
asc_CCompleteMenu.prototype.asc_getType = function () {return this.type;};
function CCacheMeasureEmpty() {
this.cache = {};
}
CCacheMeasureEmpty.prototype.add = function (elem, val) {
var fn = elem.getName();
var font = (this.cache[fn] || (this.cache[fn] = {}));
font[elem.getSize()] = val;
};
CCacheMeasureEmpty.prototype.get = function (elem) {
var font = this.cache[elem.getName()];
return font ? font[elem.getSize()] : null;
};
var g_oCacheMeasureEmpty = new CCacheMeasureEmpty();
/** @constructor */
function asc_CFormatCellsInfo() {
this.type = Asc.c_oAscNumFormatType.General;
this.decimalPlaces = 2;
this.separator = false;
this.symbol = null;
}
asc_CFormatCellsInfo.prototype.asc_setType = function (val) {this.type = val;};
asc_CFormatCellsInfo.prototype.asc_setDecimalPlaces = function (val) {this.decimalPlaces = val;};
asc_CFormatCellsInfo.prototype.asc_setSeparator = function (val) {this.separator = val;};
asc_CFormatCellsInfo.prototype.asc_setSymbol = function (val) {this.symbol = val;};
asc_CFormatCellsInfo.prototype.asc_getType = function () {return this.type;};
asc_CFormatCellsInfo.prototype.asc_getDecimalPlaces = function () {return this.decimalPlaces;};
asc_CFormatCellsInfo.prototype.asc_getSeparator = function () {return this.separator;};
asc_CFormatCellsInfo.prototype.asc_getSymbol = function () {return this.symbol;};
function asc_CSelectionRangeValue(){
this.name = null;
this.type = null;
}
asc_CSelectionRangeValue.prototype.asc_setType = function (val) {this.type = val;};
asc_CSelectionRangeValue.prototype.asc_setName = function (val) {this.name = val;};
asc_CSelectionRangeValue.prototype.asc_getType = function () {return this.type;};
asc_CSelectionRangeValue.prototype.asc_getName = function () {return this.name;};
//передаём в меню для того, чтобы показать иконку опций авторавертывания таблиц
function asc_CAutoCorrectOptions(){
this.type = null;
this.options = [];
this.cellCoord = null;
}
asc_CAutoCorrectOptions.prototype.asc_setType = function (val) {this.type = val;};
asc_CAutoCorrectOptions.prototype.asc_setOptions = function (val) {this.options = val;};
asc_CAutoCorrectOptions.prototype.asc_setCellCoord = function(val) { this.cellCoord = val; };
asc_CAutoCorrectOptions.prototype.asc_getType = function () {return this.type;};
asc_CAutoCorrectOptions.prototype.asc_getOptions = function () {return this.options;};
asc_CAutoCorrectOptions.prototype.asc_getCellCoord = function () {return this.cellCoord;};
/*
* Export
* -----------------------------------------------------------------------------
*/
var prot;
window['Asc'] = window['Asc'] || {};
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
window['AscCommonExcel'].g_ActiveCell = null; // Active Cell for calculate (in R1C1 mode for relative cell)
window['AscCommonExcel'].g_R1C1Mode = false; // No calculate in R1C1 mode
window["AscCommonExcel"].c_oAscShiftType = c_oAscShiftType;
window["AscCommonExcel"].recalcType = recalcType;
window["AscCommonExcel"].sizePxinPt = sizePxinPt;
window["AscCommonExcel"].applyFunction = applyFunction;
window["Asc"].typeOf = typeOf;
window["Asc"].lastIndexOf = lastIndexOf;
window["Asc"].search = search;
window["Asc"].getUniqueRangeColor = getUniqueRangeColor;
window["Asc"].getMinValueOrNull = getMinValueOrNull;
window["Asc"].round = round;
window["Asc"].floor = floor;
window["Asc"].ceil = ceil;
window["Asc"].incDecFonSize = incDecFonSize;
window["AscCommonExcel"].calcDecades = calcDecades;
window["AscCommonExcel"].convertPtToPx = convertPtToPx;
window["AscCommonExcel"].convertPxToPt = convertPxToPt;
window["Asc"].outputDebugStr = outputDebugStr;
window["Asc"].profileTime = profileTime;
window["AscCommonExcel"].getMatchingBorder = getMatchingBorder;
window["Asc"].isNumberInfinity = isNumberInfinity;
window["Asc"].trim = trim;
window["Asc"].arrayToLowerCase = arrayToLowerCase;
window["Asc"].isFixedWidthCell = isFixedWidthCell;
window["AscCommonExcel"].dropDecimalAutofit = dropDecimalAutofit;
window["AscCommonExcel"].getFragmentsText = getFragmentsText;
window['AscCommonExcel'].executeInR1C1Mode = executeInR1C1Mode;
window["Asc"].getEndValueRange = getEndValueRange;
window["AscCommonExcel"].referenceType = referenceType;
window["Asc"].Range = Range;
window["AscCommonExcel"].Range3D = Range3D;
window["AscCommonExcel"].SelectionRange = SelectionRange;
window["AscCommonExcel"].ActiveRange = ActiveRange;
window["AscCommonExcel"].FormulaRange = FormulaRange;
window["AscCommonExcel"].MultiplyRange = MultiplyRange;
window["AscCommonExcel"].VisibleRange = VisibleRange;
window["AscCommonExcel"].g_oRangeCache = g_oRangeCache;
window["AscCommonExcel"].HandlersList = HandlersList;
window["AscCommonExcel"].RedoObjectParam = RedoObjectParam;
window["AscCommonExcel"].asc_CMouseMoveData = asc_CMouseMoveData;
prot = asc_CMouseMoveData.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getX"] = prot.asc_getX;
prot["asc_getReverseX"] = prot.asc_getReverseX;
prot["asc_getY"] = prot.asc_getY;
prot["asc_getHyperlink"] = prot.asc_getHyperlink;
prot["asc_getCommentIndexes"] = prot.asc_getCommentIndexes;
prot["asc_getUserId"] = prot.asc_getUserId;
prot["asc_getLockedObjectType"] = prot.asc_getLockedObjectType;
prot["asc_getSizeCCOrPt"] = prot.asc_getSizeCCOrPt;
prot["asc_getSizePx"] = prot.asc_getSizePx;
prot["asc_getFilter"] = prot.asc_getFilter;
window["Asc"]["asc_CHyperlink"] = window["Asc"].asc_CHyperlink = asc_CHyperlink;
prot = asc_CHyperlink.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getHyperlinkUrl"] = prot.asc_getHyperlinkUrl;
prot["asc_getTooltip"] = prot.asc_getTooltip;
prot["asc_getLocation"] = prot.asc_getLocation;
prot["asc_getSheet"] = prot.asc_getSheet;
prot["asc_getRange"] = prot.asc_getRange;
prot["asc_getText"] = prot.asc_getText;
prot["asc_setType"] = prot.asc_setType;
prot["asc_setHyperlinkUrl"] = prot.asc_setHyperlinkUrl;
prot["asc_setTooltip"] = prot.asc_setTooltip;
prot["asc_setLocation"] = prot.asc_setLocation;
prot["asc_setSheet"] = prot.asc_setSheet;
prot["asc_setRange"] = prot.asc_setRange;
prot["asc_setText"] = prot.asc_setText;
window["AscCommonExcel"].CPagePrint = CPagePrint;
window["AscCommonExcel"].CPrintPagesData = CPrintPagesData;
window["Asc"]["asc_CAdjustPrint"] = window["Asc"].asc_CAdjustPrint = asc_CAdjustPrint;
prot = asc_CAdjustPrint.prototype;
prot["asc_getPrintType"] = prot.asc_getPrintType;
prot["asc_setPrintType"] = prot.asc_setPrintType;
prot["asc_getPageOptionsMap"] = prot.asc_getPageOptionsMap;
prot["asc_setPageOptionsMap"] = prot.asc_setPageOptionsMap;
window["AscCommonExcel"].asc_CLockInfo = asc_CLockInfo;
window["AscCommonExcel"].asc_CCollaborativeRange = asc_CCollaborativeRange;
window["AscCommonExcel"].asc_CSheetViewSettings = asc_CSheetViewSettings;
prot = asc_CSheetViewSettings.prototype;
prot["asc_getShowGridLines"] = prot.asc_getShowGridLines;
prot["asc_getShowRowColHeaders"] = prot.asc_getShowRowColHeaders;
prot["asc_getIsFreezePane"] = prot.asc_getIsFreezePane;
prot["asc_setShowGridLines"] = prot.asc_setShowGridLines;
prot["asc_setShowRowColHeaders"] = prot.asc_setShowRowColHeaders;
window["AscCommonExcel"].asc_CPane = asc_CPane;
window["AscCommonExcel"].asc_CStylesPainter = asc_CStylesPainter;
prot = asc_CStylesPainter.prototype;
prot["asc_getStyleThumbnailWidth"] = prot.asc_getStyleThumbnailWidth;
prot["asc_getStyleThumbnailHeight"] = prot.asc_getStyleThumbnailHeight;
prot["asc_getDefaultStyles"] = prot.asc_getDefaultStyles;
prot["asc_getDocStyles"] = prot.asc_getDocStyles;
window["AscCommonExcel"].asc_CSheetPr = asc_CSheetPr;
window["AscCommonExcel"].asc_CSelectionMathInfo = asc_CSelectionMathInfo;
prot = asc_CSelectionMathInfo.prototype;
prot["asc_getCount"] = prot.asc_getCount;
prot["asc_getCountNumbers"] = prot.asc_getCountNumbers;
prot["asc_getSum"] = prot.asc_getSum;
prot["asc_getAverage"] = prot.asc_getAverage;
prot["asc_getMin"] = prot.asc_getMin;
prot["asc_getMax"] = prot.asc_getMax;
window["Asc"]["asc_CFindOptions"] = window["Asc"].asc_CFindOptions = asc_CFindOptions;
prot = asc_CFindOptions.prototype;
prot["asc_setFindWhat"] = prot.asc_setFindWhat;
prot["asc_setScanByRows"] = prot.asc_setScanByRows;
prot["asc_setScanForward"] = prot.asc_setScanForward;
prot["asc_setIsMatchCase"] = prot.asc_setIsMatchCase;
prot["asc_setIsWholeCell"] = prot.asc_setIsWholeCell;
prot["asc_setScanOnOnlySheet"] = prot.asc_setScanOnOnlySheet;
prot["asc_setLookIn"] = prot.asc_setLookIn;
prot["asc_setReplaceWith"] = prot.asc_setReplaceWith;
prot["asc_setIsReplaceAll"] = prot.asc_setIsReplaceAll;
window["AscCommonExcel"].findResults = findResults;
window["AscCommonExcel"].asc_CCompleteMenu = asc_CCompleteMenu;
prot = asc_CCompleteMenu.prototype;
prot["asc_getName"] = prot.asc_getName;
prot["asc_getType"] = prot.asc_getType;
window["AscCommonExcel"].g_oCacheMeasureEmpty = g_oCacheMeasureEmpty;
window["Asc"]["asc_CFormatCellsInfo"] = window["Asc"].asc_CFormatCellsInfo = asc_CFormatCellsInfo;
prot = asc_CFormatCellsInfo.prototype;
prot["asc_setType"] = prot.asc_setType;
prot["asc_setDecimalPlaces"] = prot.asc_setDecimalPlaces;
prot["asc_setSeparator"] = prot.asc_setSeparator;
prot["asc_setSymbol"] = prot.asc_setSymbol;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getDecimalPlaces"] = prot.asc_getDecimalPlaces;
prot["asc_getSeparator"] = prot.asc_getSeparator;
prot["asc_getSymbol"] = prot.asc_getSymbol;
window["AscCommonExcel"]["asc_CSelectionRangeValue"] = window["AscCommonExcel"].asc_CSelectionRangeValue = asc_CSelectionRangeValue;
prot = asc_CSelectionRangeValue.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getName"] = prot.asc_getName;
window["Asc"]["asc_CAutoCorrectOptions"] = window["Asc"].asc_CAutoCorrectOptions = asc_CAutoCorrectOptions;
prot = asc_CAutoCorrectOptions.prototype;
prot["asc_getType"] = prot.asc_getType;
prot["asc_getOptions"] = prot.asc_getOptions;
prot["asc_getCellCoord"] = prot.asc_getCellCoord;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(
/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined) {
/*
* Import
* -----------------------------------------------------------------------------
*/
var asc = window["Asc"],
asc_typeOf = asc.typeOf;
/** @constructor */
function asc_CHandlersList(handlers) {
this.handlers = handlers || {};
return this;
}
asc_CHandlersList.prototype.hasTrigger = function (eventName) {
return null != this.handlers[eventName];
};
asc_CHandlersList.prototype.trigger = function (eventName) {
var h = this.handlers[eventName], t = asc_typeOf(h), a = Array.prototype.slice.call(arguments, 1), i;
if (t === "function") {
return h.apply(this, a);
}
if (t === "array") {
for (i = 0; i < h.length; i += 1) {
if (asc_typeOf(h[i]) === "function") {h[i].apply(this, a);}
}
return true;
}
return false;
};
asc_CHandlersList.prototype.add = function (eventName, eventHandler, replaceOldHandler) {
var th = this.handlers, h, old, t;
if (replaceOldHandler || !th.hasOwnProperty(eventName)) {
th[eventName] = eventHandler;
} else {
old = h = th[eventName];
t = asc_typeOf(old);
if (t !== "array") {
h = th[eventName] = [];
if (t === "function") {h.push(old);}
}
h.push(eventHandler);
}
};
asc_CHandlersList.prototype.remove = function (eventName, eventHandler) {
var th = this.handlers, h = th[eventName], i;
if (th.hasOwnProperty(eventName)) {
if (asc_typeOf(h) !== "array" || asc_typeOf(eventHandler) !== "function") {
delete th[eventName];
return true;
}
for (i = h.length - 1; i >= 0; i -= 1) {
if (h[i] === eventHandler) {
delete h[i];
return true;
}
}
}
return false;
};
//---------------------------------------------------------export---------------------------------------------------
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
AscCommonExcel.asc_CHandlersList = asc_CHandlersList;
}
)(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function (window, undefined) {
/*
* Import
* -----------------------------------------------------------------------------
*/
var asc_applyFunction = AscCommonExcel.applyFunction;
var asc_Range = Asc.Range;
var c_oAscLockTypes = AscCommon.c_oAscLockTypes;
var c_oAscRecalcIndexTypes = AscCommonExcel.c_oAscRecalcIndexTypes;
var c_oAscLockTypeElemSubType = AscCommonExcel.c_oAscLockTypeElemSubType;
var c_oAscLockTypeElem = AscCommonExcel.c_oAscLockTypeElem;
/**
* Отвечает за совместное редактирование
* -----------------------------------------------------------------------------
*
* @constructor
* @memberOf AscCommonExcel
*/
function CCollaborativeEditing (handlers, isViewerMode) {
if ( !(this instanceof CCollaborativeEditing) ) {
return new CCollaborativeEditing ();
}
this.m_nUseType = 1; // 1 - 1 клиент и мы сохраняем историю, -1 - несколько клиентов, 0 - переход из -1 в 1
this.handlers = new AscCommonExcel.asc_CHandlersList(handlers);
this.m_bIsViewerMode = !!isViewerMode; // Режим Viewer-а
this.m_bGlobalLock = false; // Глобальный lock
this.m_bGlobalLockEditCell = false; // Глобальный lock (для редактирования ячейки) - отключаем смену select-а, но разрешаем сразу вводить
this.m_arrCheckLocks = []; // Массив для проверки залоченности объектов, которые мы собираемся изменять
this.m_arrNeedUnlock = []; // Массив со списком залоченных объектов(которые были залочены другими пользователями)
this.m_arrNeedUnlock2 = []; // Массив со списком залоченных объектов(которые были залочены на данном клиенте)
this.m_arrChanges = []; // Массив с изменениями других пользователей
this.m_oRecalcIndexColumns = {};
this.m_oRecalcIndexRows = {};
this.m_oInsertColumns = {}; // Массив листов с массивами списков добавленных колонок
this.m_oInsertRows = {}; // Массив листов с массивами списков добавленных строк
this.m_bFast = false;
this.init();
return this;
}
CCollaborativeEditing.prototype.init = function () {
};
// Очищаем индексы пересчета (при открытии это необходимо)
CCollaborativeEditing.prototype.clearRecalcIndex = function () {
this.m_oRecalcIndexColumns = {};
this.m_oRecalcIndexRows = {};
};
// Начало совместного редактирования
CCollaborativeEditing.prototype.startCollaborationEditing = function() {
this.m_nUseType = -1;
};
// Временное окончание совместного редактирования
CCollaborativeEditing.prototype.endCollaborationEditing = function() {
if (this.m_nUseType <= 0)
this.m_nUseType = 0;
};
// Выставление режима view
CCollaborativeEditing.prototype.setViewerMode = function (isViewerMode) {
this.m_bIsViewerMode = isViewerMode;
};
CCollaborativeEditing.prototype.setFast = function (bFast) {
return this.m_bFast = bFast;
};
CCollaborativeEditing.prototype.getFast = function () {
return this.m_bFast;
};
CCollaborativeEditing.prototype.Is_SingleUser = function () {
return !this.getCollaborativeEditing();
};
CCollaborativeEditing.prototype.getCollaborativeEditing = function () {
if (this.m_bIsViewerMode)
return false;
return 1 !== this.m_nUseType;
};
CCollaborativeEditing.prototype.haveOtherChanges = function () {
return 0 < this.m_arrChanges.length;
};
CCollaborativeEditing.prototype.getOwnLocksLength = function () {
return this.m_arrNeedUnlock2.length;
};
//-----------------------------------------------------------------------------------
// Функции для проверки залоченности объектов
//-----------------------------------------------------------------------------------
CCollaborativeEditing.prototype.getGlobalLock = function () {
return this.m_bGlobalLock;
};
CCollaborativeEditing.prototype.getGlobalLockEditCell = function () {
return this.m_bGlobalLockEditCell;
};
CCollaborativeEditing.prototype.onStartEditCell = function () {
// Вызывать эту функцию только в случае редактирования ячейки и если мы не одни редактируем!!!
if (this.getCollaborativeEditing())
this.m_bGlobalLockEditCell = true;
};
CCollaborativeEditing.prototype.onStopEditCell = function () {
// Вызывать эту функцию только в случае окончания редактирования ячейки!!!
this.m_bGlobalLockEditCell = false;
};
CCollaborativeEditing.prototype.lock = function (arrLocks, callback) {
var type;
callback = this._checkCollaborative(callback);
this.onStartCheckLock();
for (var i = 0; i < arrLocks.length; ++i) {
type = this._addCheckLock(arrLocks[i], callback);
if (c_oAscLockTypes.kLockTypeNone !== type) {
// Снимаем глобальный лок (для редактирования ячейки)
this.m_bGlobalLockEditCell = false;
return c_oAscLockTypes.kLockTypeMine === type;
}
}
this.onEndCheckLock(callback);
return true;
};
CCollaborativeEditing.prototype._checkCollaborative = function (callback) {
if (false === this.getCollaborativeEditing()) {
// Пользователь редактирует один: не ждем ответа, а сразу продолжаем редактирование
AscCommonExcel.applyFunction(callback, true);
callback = undefined;
}
return callback;
};
CCollaborativeEditing.prototype._addCheckLock = function (lockInfo, callback) {
if (false !== this.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeMine, false)) {
// Редактируем сами
AscCommonExcel.applyFunction(callback, true);
return c_oAscLockTypes.kLockTypeMine;
} else if (false !== this.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, false)) {
// Уже ячейку кто-то редактирует
AscCommonExcel.applyFunction(callback, false);
return c_oAscLockTypes.kLockTypeOther;
}
this.m_arrCheckLocks.push(lockInfo);
return c_oAscLockTypes.kLockTypeNone;
};
CCollaborativeEditing.prototype.onStartCheckLock = function () {
this.m_arrCheckLocks.length = 0;
};
CCollaborativeEditing.prototype.addCheckLock = function (oItem) {
this.m_arrCheckLocks.push (oItem);
};
CCollaborativeEditing.prototype.onEndCheckLock = function (callback) {
var t = this;
if (this.m_arrCheckLocks.length > 0) {
// Отправляем запрос на сервер со списком элементов
this.handlers.trigger("askLock", this.m_arrCheckLocks, function (result) {t.onCallbackAskLock (result, callback);});
if (undefined !== callback) {
// Ставим глобальный лок (только если мы не одни и ждем ответа!)
this.m_bGlobalLock = true;
}
}
else {
asc_applyFunction(callback, true);
// Снимаем глобальный лок (для редактирования ячейки)
this.m_bGlobalLockEditCell = false;
}
};
CCollaborativeEditing.prototype.onCallbackAskLock = function(result, callback) {
// Снимаем глобальный лок
this.m_bGlobalLock = false;
// Снимаем глобальный лок (для редактирования ячейки)
this.m_bGlobalLockEditCell = false;
if (result["lock"]) {
// Пробегаемся по массиву и проставляем, что залочено нами
var count = this.m_arrCheckLocks.length;
for (var i = 0; i < count; ++i) {
var oItem = this.m_arrCheckLocks[i];
if (true !== oItem && false !== oItem) // сравниваем по значению и типу обязательно
{
var oNewLock = new CLock(oItem);
oNewLock.setType (c_oAscLockTypes.kLockTypeMine);
this.addUnlock2 (oNewLock);
}
}
asc_applyFunction(callback, true);
} else if (result["error"]) {
asc_applyFunction(callback, false);
}
};
CCollaborativeEditing.prototype.addUnlock = function (LockClass) {
this.m_arrNeedUnlock.push (LockClass);
};
CCollaborativeEditing.prototype.addUnlock2 = function (Lock) {
this.m_arrNeedUnlock2.push (Lock);
this.handlers.trigger("updateDocumentCanSave");
};
CCollaborativeEditing.prototype.removeUnlock = function (Lock) {
for (var i = 0; i < this.m_arrNeedUnlock.length; ++i)
if (Lock.Element["guid"] === this.m_arrNeedUnlock[i].Element["guid"]) {
this.m_arrNeedUnlock.splice(i, 1);
return true;
}
return false;
};
CCollaborativeEditing.prototype.addChanges = function (oChanges) {
this.m_arrChanges.push (oChanges);
};
// Возвращает - нужно ли отправлять end action
CCollaborativeEditing.prototype.applyChanges = function () {
var t = this;
var length = this.m_arrChanges.length;
// Принимаем изменения
if (0 < length) {
//splice to prevent double apply other changes in case of load fonts
var changes = t.m_arrChanges.splice(0, length);
this.handlers.trigger("applyChanges", changes, function () {
t.handlers.trigger("updateAfterApplyChanges");
});
return false;
}
return true;
};
CCollaborativeEditing.prototype.sendChanges = function (IsUserSave, isAfterAskSave) {
// Когда не совместное редактирование чистить ничего не нужно, но отправлять нужно.
var bIsCollaborative = this.getCollaborativeEditing();
var bCheckRedraw = false, bRedrawGraphicObjects = false, bUnlockDefName = false;
var oLock = null;
if (bIsCollaborative) {
if (0 < this.m_arrNeedUnlock.length || 0 < this.m_arrNeedUnlock2.length) {
bCheckRedraw = true;
this.handlers.trigger("cleanSelection");
}
// Очищаем свои изменения
while (0 < this.m_arrNeedUnlock2.length) {
oLock = this.m_arrNeedUnlock2.shift();
oLock.setType(c_oAscLockTypes.kLockTypeNone, false);
var drawing = AscCommon.g_oTableId.Get_ById(oLock.Element["rangeOrObjectId"]);
if(drawing && drawing.lockType !== c_oAscLockTypes.kLockTypeNone) {
drawing.lockType = c_oAscLockTypes.kLockTypeNone;
bRedrawGraphicObjects = true;
}
if(!bUnlockDefName){
bUnlockDefName = this.handlers.trigger("checkDefNameLock", oLock);
}
this.handlers.trigger("releaseLocks", oLock.Element["guid"]);
}
// Очищаем примененные чужие изменения
var nIndex = 0;
var nCount = this.m_arrNeedUnlock.length;
for (;nIndex < nCount; ++nIndex) {
oLock = this.m_arrNeedUnlock[nIndex];
if (c_oAscLockTypes.kLockTypeOther2 === oLock.getType()) {
if (!this.handlers.trigger("checkCommentRemoveLock", oLock.Element)) {
drawing = AscCommon.g_oTableId.Get_ById(oLock.Element["rangeOrObjectId"]);
if(drawing && drawing.lockType !== c_oAscLockTypes.kLockTypeNone) {
drawing.lockType = c_oAscLockTypes.kLockTypeNone;
bRedrawGraphicObjects = true;
}
if(!bUnlockDefName){
bUnlockDefName = this.handlers.trigger("checkDefNameLock", oLock);
}
}
this.m_arrNeedUnlock.splice(nIndex, 1);
--nIndex;
--nCount;
}
}
}
// Отправляем на сервер изменения
this.handlers.trigger("sendChanges", this.getRecalcIndexSave(this.m_oRecalcIndexColumns), this.getRecalcIndexSave(this.m_oRecalcIndexRows), isAfterAskSave);
if (bIsCollaborative) {
// Пересчитываем lock-и от чужих пользователей
this._recalcLockArrayOthers();
// Очищаем свои изменения (удаляем массив добавленных строк/столбцов)
delete this.m_oInsertColumns;
delete this.m_oInsertRows;
this.m_oInsertColumns = {};
this.m_oInsertRows = {};
// Очищаем свои пересчетные индексы
this.clearRecalcIndex();
// Чистим Undo/Redo
AscCommon.History.Clear();
// Перерисовываем
if (bCheckRedraw) {
this.handlers.trigger("drawSelection");
this.handlers.trigger("drawFrozenPaneLines");
this.handlers.trigger("updateAllSheetsLock");
this.handlers.trigger("showComments");
}
if (bCheckRedraw || bRedrawGraphicObjects)
this.handlers.trigger("showDrawingObjects");
// if(bUnlockDefName){
this.handlers.trigger("unlockDefName");
// }
this.handlers.trigger("updateAllLayoutsLock");
if (0 === this.m_nUseType)
this.m_nUseType = 1;
} else {
// Обновляем точку последнего сохранения в истории
AscCommon.History.Reset_SavedIndex(IsUserSave);
}
};
CCollaborativeEditing.prototype.getRecalcIndexSave = function (oRecalcIndex) {
var bHasIndex = false;
var result = {};
var element = null;
for (var sheetId in oRecalcIndex) {
if (!oRecalcIndex.hasOwnProperty(sheetId))
continue;
result[sheetId] = {"_arrElements": []};
for (var i = 0, length = oRecalcIndex[sheetId]._arrElements.length; i < length; ++i) {
bHasIndex = true;
element = oRecalcIndex[sheetId]._arrElements[i];
result[sheetId]["_arrElements"].push({"_recalcType" : element._recalcType,
"_position" : element._position, "_count" : element._count,
"m_bIsSaveIndex" : element.m_bIsSaveIndex});
}
}
return bHasIndex ? result : null;
};
CCollaborativeEditing.prototype.S4 = function () {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
CCollaborativeEditing.prototype.createGUID = function () {
return (this.S4() + this.S4() + "-" + this.S4() + "-" + this.S4() + "-" + this.S4() + "-" + this.S4() + this.S4() + this.S4());
};
CCollaborativeEditing.prototype.getLockInfo = function (typeElem, subType, sheetId, info) {
var oLockInfo = new AscCommonExcel.asc_CLockInfo();
oLockInfo["sheetId"] = sheetId;
oLockInfo["type"] = typeElem;
oLockInfo["subType"] = subType;
oLockInfo["guid"] = this.createGUID();
oLockInfo["rangeOrObjectId"] = info;
return oLockInfo;
};
CCollaborativeEditing.prototype.getLockByElem = function (element, type) {
var arrayElements = (c_oAscLockTypes.kLockTypeMine === type) ? this.m_arrNeedUnlock2 : this.m_arrNeedUnlock;
for (var i = 0; i < arrayElements.length; ++i)
if (element["guid"] === arrayElements[i].Element["guid"])
return arrayElements[i];
return null;
};
/**
* Проверка lock для элемента
* @param {asc_CLockInfo} element элемент для проверки lock
* @param {c_oAscLockTypes} type сами(kLockTypeMine) или кто-то другой
* @param {Boolean} bCheckOnlyLockAll проверять только lock для свойств всего листа (либо только проверять удален ли лист, а не просто залочен)
*/
CCollaborativeEditing.prototype.getLockIntersection = function (element, type, bCheckOnlyLockAll) {
var arrayElements = (c_oAscLockTypes.kLockTypeMine === type) ? this.m_arrNeedUnlock2 : this.m_arrNeedUnlock;
var oUnlockElement = null, rangeTmp1, rangeTmp2;
for (var i = 0; i < arrayElements.length; ++i) {
oUnlockElement = arrayElements[i].Element;
if (c_oAscLockTypeElem.Sheet === element["type"] && element["type"] === oUnlockElement["type"]) {
// Проверка только на удаление листа (если проверка для себя, то выходим не сразу, т.к. нужно проверить lock от других элементов)
if ((c_oAscLockTypes.kLockTypeMine !== type && false === bCheckOnlyLockAll) ||
element["sheetId"] === oUnlockElement["sheetId"]) {
// Если кто-то залочил sheet, то больше никто не может лочить sheet-ы (иначе можно удалить все листы)
return arrayElements[i];
}
}
if (element["sheetId"] !== oUnlockElement["sheetId"])
continue;
if (null !== element["subType"] && null !== oUnlockElement["subType"])
return arrayElements[i];
// Не учитываем lock от ChangeProperties (только если это не lock листа)
if (true === bCheckOnlyLockAll ||
(c_oAscLockTypeElemSubType.ChangeProperties === oUnlockElement["subType"]
&& c_oAscLockTypeElem.Sheet !== element["type"]))
continue;
if (element["type"] === oUnlockElement["type"]) {
if (element["type"] === c_oAscLockTypeElem.Object) {
if (element["rangeOrObjectId"] === oUnlockElement["rangeOrObjectId"])
return arrayElements[i];
} else if (element["type"] === c_oAscLockTypeElem.Range) {
// Не учитываем lock от Insert
if (c_oAscLockTypes.kLockTypeMine === type || c_oAscLockTypeElemSubType.InsertRows === oUnlockElement["subType"] || c_oAscLockTypeElemSubType.InsertColumns === oUnlockElement["subType"])
continue;
rangeTmp1 = oUnlockElement["rangeOrObjectId"];
rangeTmp2 = element["rangeOrObjectId"];
if (rangeTmp2["c1"] > rangeTmp1["c2"] || rangeTmp2["c2"] < rangeTmp1["c1"] || rangeTmp2["r1"] > rangeTmp1["r2"] || rangeTmp2["r2"] < rangeTmp1["r1"])
continue;
return arrayElements[i];
}
} else if (oUnlockElement["type"] === c_oAscLockTypeElem.Sheet ||
(element["type"] === c_oAscLockTypeElem.Sheet && c_oAscLockTypes.kLockTypeMine !== type)) {
// Если кто-то уже залочил лист или мы пытаемся сами залочить и проверяем на чужие lock
return arrayElements[i];
}
}
return false;
};
CCollaborativeEditing.prototype.getLockElem = function (typeElem, type, sheetId) {
var arrayElements = (c_oAscLockTypes.kLockTypeMine === type) ? this.m_arrNeedUnlock2 : this.m_arrNeedUnlock;
var count = arrayElements.length;
var element = null, oRangeOrObjectId = null;
var result = [];
var c1, c2, r1, r2;
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexColumns[sheetId] = new CRecalcIndex();
}
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexRows[sheetId] = new CRecalcIndex();
}
for (var i = 0; i < count; ++i) {
element = arrayElements[i].Element;
if (element["sheetId"] !== sheetId || element["type"] !== typeElem)
continue;
// Отображать залоченность удаленных текущим пользователем строк/столбцов не нужно (уже нечего отображать)
if (c_oAscLockTypes.kLockTypeMine === type && c_oAscLockTypeElem.Range === typeElem &&
(c_oAscLockTypeElemSubType.DeleteColumns === element["subType"] ||
c_oAscLockTypeElemSubType.DeleteRows === element["subType"]))
continue;
// Отображать залоченность добавленных другим пользователем строк/столбцов не нужно (еще нечего отображать)
if (c_oAscLockTypeElem.Range === typeElem &&
(c_oAscLockTypeElemSubType.InsertColumns === element["subType"] ||
c_oAscLockTypeElemSubType.InsertRows === element["subType"]))
continue;
// Отображать lock-диапазон для lockAll(всего листа) не нужно
if (c_oAscLockTypeElemSubType.ChangeProperties === element["subType"])
continue;
oRangeOrObjectId = element["rangeOrObjectId"];
// Для диапазона нужно сделать пересчет с учетом удаленных или добавленных строк/столбцов
if (c_oAscLockTypeElem.Range === typeElem) {
// Пересчитывать для удаленных строк/столбцов у другого пользователя не нужно
if (c_oAscLockTypes.kLockTypeMine !== type && c_oAscLockTypeElem.Range === typeElem &&
(c_oAscLockTypeElemSubType.DeleteColumns === element["subType"] ||
c_oAscLockTypeElemSubType.DeleteRows === element["subType"])) {
c1 = oRangeOrObjectId["c1"];
c2 = oRangeOrObjectId["c2"];
r1 = oRangeOrObjectId["r1"];
r2 = oRangeOrObjectId["r2"];
} else {
c1 = this.m_oRecalcIndexColumns[sheetId].getLockOther(oRangeOrObjectId["c1"], type);
c2 = this.m_oRecalcIndexColumns[sheetId].getLockOther(oRangeOrObjectId["c2"], type);
r1 = this.m_oRecalcIndexRows[sheetId].getLockOther(oRangeOrObjectId["r1"], type);
r2 = this.m_oRecalcIndexRows[sheetId].getLockOther(oRangeOrObjectId["r2"], type);
}
if (null === c1 || null === c2 || null === r1 || null === r2)
continue;
oRangeOrObjectId = new asc_Range(c1, r1, c2, r2);
}
result.push(oRangeOrObjectId);
}
return result;
};
CCollaborativeEditing.prototype.getLockCellsMe = function (sheetId) {
return this.getLockElem(c_oAscLockTypeElem.Range, c_oAscLockTypes.kLockTypeMine, sheetId);
};
CCollaborativeEditing.prototype.getLockCellsOther = function (sheetId) {
return this.getLockElem(c_oAscLockTypeElem.Range, c_oAscLockTypes.kLockTypeOther, sheetId);
};
CCollaborativeEditing.prototype.getLockObjectsMe = function (sheetId) {
return this.getLockElem(c_oAscLockTypeElem.Object, c_oAscLockTypes.kLockTypeMine, sheetId);
};
CCollaborativeEditing.prototype.getLockObjectsOther = function (sheetId) {
return this.getLockElem(c_oAscLockTypeElem.Object, c_oAscLockTypes.kLockTypeOther, sheetId);
};
/**
* Проверка lock для всего листа
* @param {Number} sheetId элемент для проверки lock
* @return {Asc.c_oAscMouseMoveLockedObjectType} oLockedObjectType
*/
CCollaborativeEditing.prototype.isLockAllOther = function (sheetId) {
var arrayElements = this.m_arrNeedUnlock;
var count = arrayElements.length;
var element = null;
var oLockedObjectType = Asc.c_oAscMouseMoveLockedObjectType.None;
for (var i = 0; i < count; ++i) {
element = arrayElements[i].Element;
if (element["sheetId"] === sheetId) {
if (element["type"] === c_oAscLockTypeElem.Sheet) {
oLockedObjectType = Asc.c_oAscMouseMoveLockedObjectType.Sheet;
break;
} else if (element["type"] === c_oAscLockTypeElem.Range && null !== element["subType"])
oLockedObjectType = Asc.c_oAscMouseMoveLockedObjectType.TableProperties;
}
}
return oLockedObjectType;
};
CCollaborativeEditing.prototype._recalcLockArray = function (typeLock, oRecalcIndexColumns, oRecalcIndexRows) {
var arrayElements = (c_oAscLockTypes.kLockTypeMine === typeLock) ? this.m_arrNeedUnlock2 : this.m_arrNeedUnlock;
var count = arrayElements.length;
var element = null, oRangeOrObjectId = null;
var i;
var sheetId = -1;
for (i = 0; i < count; ++i) {
element = arrayElements[i].Element;
// Для удаления пересчитывать индексы не нужно
if (c_oAscLockTypeElem.Range !== element["type"] ||
c_oAscLockTypeElemSubType.InsertColumns === element["subType"] ||
c_oAscLockTypeElemSubType.InsertRows === element["subType"] ||
c_oAscLockTypeElemSubType.DeleteColumns === element["subType"] ||
c_oAscLockTypeElemSubType.DeleteRows === element["subType"])
continue;
sheetId = element["sheetId"];
oRangeOrObjectId = element["rangeOrObjectId"];
if (oRecalcIndexColumns && oRecalcIndexColumns.hasOwnProperty(sheetId)) {
// Пересчет колонок
oRangeOrObjectId["c1"] = oRecalcIndexColumns[sheetId].getLockMe(oRangeOrObjectId["c1"]);
oRangeOrObjectId["c2"] = oRecalcIndexColumns[sheetId].getLockMe(oRangeOrObjectId["c2"]);
}
if (oRecalcIndexRows && oRecalcIndexRows.hasOwnProperty(sheetId)) {
// Пересчет строк
oRangeOrObjectId["r1"] = oRecalcIndexRows[sheetId].getLockMe(oRangeOrObjectId["r1"]);
oRangeOrObjectId["r2"] = oRecalcIndexRows[sheetId].getLockMe(oRangeOrObjectId["r2"]);
}
}
};
// Пересчет только для чужих Lock при сохранении на клиенте, который добавлял/удалял строки или столбцы
CCollaborativeEditing.prototype._recalcLockArrayOthers = function () {
var typeLock = c_oAscLockTypes.kLockTypeOther;
var arrayElements = (c_oAscLockTypes.kLockTypeMine === typeLock) ? this.m_arrNeedUnlock2 : this.m_arrNeedUnlock;
var count = arrayElements.length;
var element = null, oRangeOrObjectId = null;
var i;
var sheetId = -1;
for (i = 0; i < count; ++i) {
element = arrayElements[i].Element;
if (c_oAscLockTypeElem.Range !== element["type"] ||
c_oAscLockTypeElemSubType.InsertColumns === element["subType"] ||
c_oAscLockTypeElemSubType.InsertRows === element["subType"])
continue;
sheetId = element["sheetId"];
oRangeOrObjectId = element["rangeOrObjectId"];
if (this.m_oRecalcIndexColumns.hasOwnProperty(sheetId)) {
// Пересчет колонок
oRangeOrObjectId["c1"] = this.m_oRecalcIndexColumns[sheetId].getLockOther(oRangeOrObjectId["c1"]);
oRangeOrObjectId["c2"] = this.m_oRecalcIndexColumns[sheetId].getLockOther(oRangeOrObjectId["c2"]);
}
if (this.m_oRecalcIndexRows.hasOwnProperty(sheetId)) {
// Пересчет строк
oRangeOrObjectId["r1"] = this.m_oRecalcIndexRows[sheetId].getLockOther(oRangeOrObjectId["r1"]);
oRangeOrObjectId["r2"] = this.m_oRecalcIndexRows[sheetId].getLockOther(oRangeOrObjectId["r2"]);
}
}
};
CCollaborativeEditing.prototype.addRecalcIndex = function (type, oRecalcIndex) {
if (null == oRecalcIndex)
return null;
var nIndex = 0;
var nRecalcType = c_oAscRecalcIndexTypes.RecalcIndexAdd;
var oRecalcIndexElement = null;
var oRecalcIndexResult = {};
var oRecalcIndexTmp = ("0" === type) ? this.m_oRecalcIndexColumns : this.m_oRecalcIndexRows;
for (var sheetId in oRecalcIndex) {
if (oRecalcIndex.hasOwnProperty(sheetId)) {
if (!oRecalcIndexTmp.hasOwnProperty(sheetId)) {
oRecalcIndexTmp[sheetId] = new CRecalcIndex();
}
if (!oRecalcIndexResult.hasOwnProperty(sheetId)) {
oRecalcIndexResult[sheetId] = new CRecalcIndex();
}
for (; nIndex < oRecalcIndex[sheetId]["_arrElements"].length; ++nIndex) {
oRecalcIndexElement = oRecalcIndex[sheetId]["_arrElements"][nIndex];
if (true === oRecalcIndexElement["m_bIsSaveIndex"])
continue;
nRecalcType = (c_oAscRecalcIndexTypes.RecalcIndexAdd === oRecalcIndexElement["_recalcType"]) ?
c_oAscRecalcIndexTypes.RecalcIndexRemove : c_oAscRecalcIndexTypes.RecalcIndexAdd;
oRecalcIndexTmp[sheetId].add(nRecalcType, oRecalcIndexElement["_position"],
oRecalcIndexElement["_count"], /*bIsSaveIndex*/true);
// Дублируем для возврата результата (нам нужно пересчитать только по последнему индексу
oRecalcIndexResult[sheetId].add(nRecalcType, oRecalcIndexElement["_position"],
oRecalcIndexElement["_count"], /*bIsSaveIndex*/true);
}
}
}
return oRecalcIndexResult;
};
// Undo для добавления/удаления столбцов
CCollaborativeEditing.prototype.undoCols = function (sheetId, count) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId))
return;
this.m_oRecalcIndexColumns[sheetId].remove(count);
};
// Undo для добавления/удаления строк
CCollaborativeEditing.prototype.undoRows = function (sheetId, count) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId))
return;
this.m_oRecalcIndexRows[sheetId].remove(count);
};
CCollaborativeEditing.prototype.removeCols = function (sheetId, position, count) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexColumns[sheetId] = new CRecalcIndex();
}
this.m_oRecalcIndexColumns[sheetId].add(c_oAscRecalcIndexTypes.RecalcIndexRemove, position,
count, /*bIsSaveIndex*/false);
};
CCollaborativeEditing.prototype.addCols = function (sheetId, position, count) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexColumns[sheetId] = new CRecalcIndex();
}
this.m_oRecalcIndexColumns[sheetId].add(c_oAscRecalcIndexTypes.RecalcIndexAdd, position,
count, /*bIsSaveIndex*/false);
};
CCollaborativeEditing.prototype.removeRows = function (sheetId, position, count) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexRows[sheetId] = new CRecalcIndex();
}
this.m_oRecalcIndexRows[sheetId].add(c_oAscRecalcIndexTypes.RecalcIndexRemove, position,
count, /*bIsSaveIndex*/false);
};
CCollaborativeEditing.prototype.addRows = function (sheetId, position, count) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId)) {
this.m_oRecalcIndexRows[sheetId] = new CRecalcIndex();
}
this.m_oRecalcIndexRows[sheetId].add(c_oAscRecalcIndexTypes.RecalcIndexAdd, position,
count, /*bIsSaveIndex*/false);
};
CCollaborativeEditing.prototype.addColsRange = function (sheetId, range) {
if (!this.m_oInsertColumns.hasOwnProperty(sheetId)) {
this.m_oInsertColumns[sheetId] = [];
}
var arrInsertColumns = this.m_oInsertColumns[sheetId];
// Перед добавлением нужно передвинуть имеющиеся
var countCols = range.c2 - range.c1 + 1;
var isAddNewRange = true;
for (var i = 0; i < arrInsertColumns.length; ++i) {
if (arrInsertColumns[i].c1 > range.c1) {
arrInsertColumns[i].c1 += countCols;
arrInsertColumns[i].c2 += countCols;
} else if (arrInsertColumns[i].c1 <= range.c1 && arrInsertColumns[i].c2 >= range.c1) {
arrInsertColumns[i].c2 += countCols;
isAddNewRange = false;
}
}
if (isAddNewRange)
arrInsertColumns.push(range);
};
CCollaborativeEditing.prototype.addRowsRange = function (sheetId, range) {
if (!this.m_oInsertRows.hasOwnProperty(sheetId)) {
this.m_oInsertRows[sheetId] = [];
}
var arrInsertRows = this.m_oInsertRows[sheetId];
// Перед добавлением нужно передвинуть имеющиеся
var countRows = range.r2 - range.r1 + 1;
var isAddNewRange = true;
for (var i = 0; i < arrInsertRows.length; ++i) {
if (arrInsertRows[i].r1 > range.r1) {
arrInsertRows[i].r1 += countRows;
arrInsertRows[i].r2 += countRows;
} else if (arrInsertRows[i].r1 <= range.r1 && arrInsertRows[i].r2 >= range.r1) {
arrInsertRows[i].r2 += countRows;
isAddNewRange = false;
}
}
if (isAddNewRange)
arrInsertRows.push(range);
};
CCollaborativeEditing.prototype.removeColsRange = function (sheetId, range) {
if (!this.m_oInsertColumns.hasOwnProperty(sheetId))
return;
var arrInsertColumns = this.m_oInsertColumns[sheetId];
// Нужно убрать те колонки, которые входят в диапазон
var countCols = range.c2 - range.c1 + 1;
for (var i = 0; i < arrInsertColumns.length; ++i) {
if (arrInsertColumns[i].c1 > range.c2) {
// Справа от удаляемого диапазона
arrInsertColumns[i].c1 -= countCols;
arrInsertColumns[i].c2 -= countCols;
} else if (arrInsertColumns[i].c1 >= range.c1 && arrInsertColumns[i].c2 <= range.c2) {
// Полностью включение в удаляемый диапазон
arrInsertColumns.splice(i, 1);
i -= 1;
} else if (arrInsertColumns[i].c1 >= range.c1 && arrInsertColumns[i].c1 <= range.c2 && arrInsertColumns[i].c2 > range.c2) {
// Частичное включение начала диапазона
arrInsertColumns[i].c1 = range.c2 + 1;
arrInsertColumns[i].c1 -= countCols;
arrInsertColumns[i].c2 -= countCols;
} else if (arrInsertColumns[i].c1 < range.c1 && arrInsertColumns[i].c2 >= range.c1 && arrInsertColumns[i].c2 <= range.c2) {
// Частичное включение окончания диапазона
arrInsertColumns[i].c2 = range.c1 - 1;
} else if (arrInsertColumns[i].c1 < range.c1 && arrInsertColumns[i].c2 > range.c2) {
// Удаляемый диапазон внутри нашего диапазона
arrInsertColumns[i].c2 -= countCols;
}
}
};
CCollaborativeEditing.prototype.removeRowsRange = function (sheetId, range) {
if (!this.m_oInsertRows.hasOwnProperty(sheetId))
return;
var arrInsertRows = this.m_oInsertRows[sheetId];
// Нужно убрать те строки, которые входят в диапазон
var countRows = range.r2 - range.r1 + 1;
for (var i = 0; i < arrInsertRows.length; ++i) {
if (arrInsertRows[i].r1 > range.r2) {
// Снизу от удаляемого диапазона
arrInsertRows[i].r1 -= countRows;
arrInsertRows[i].r2 -= countRows;
} else if (arrInsertRows[i].r1 >= range.r1 && arrInsertRows[i].r2 <= range.r2) {
// Полностью включение в удаляемый диапазон
arrInsertRows.splice(i, 1);
i -= 1;
} else if (arrInsertRows[i].r1 >= range.r1 && arrInsertRows[i].r1 <= range.r2 && arrInsertRows[i].r2 > range.r2) {
// Частичное включение начала диапазона
arrInsertRows[i].r1 = range.r2 + 1;
arrInsertRows[i].r1 -= countRows;
arrInsertRows[i].r2 -= countRows;
} else if (arrInsertRows[i].r1 < range.r1 && arrInsertRows[i].r2 >= range.r1 && arrInsertRows[i].r2 <= range.r2) {
// Частичное включение окончания диапазона
arrInsertRows[i].r2 = range.r1 - 1;
} else if (arrInsertRows[i].r1 < range.r1 && arrInsertRows[i].r2 > range.r2) {
// Удаляемый диапазон внутри нашего диапазона
arrInsertRows[i].r2 -= countRows;
}
}
};
CCollaborativeEditing.prototype.isIntersectionInCols = function (sheetId, col) {
if (!this.m_oInsertColumns.hasOwnProperty(sheetId))
return false;
var arrInsertColumns = this.m_oInsertColumns[sheetId];
for (var i = 0; i < arrInsertColumns.length; ++i) {
if (arrInsertColumns[i].c1 <= col && col <= arrInsertColumns[i].c2)
return true;
}
return false;
};
CCollaborativeEditing.prototype.isIntersectionInRows = function (sheetId, row) {
if (!this.m_oInsertRows.hasOwnProperty(sheetId))
return false;
var arrInsertRows = this.m_oInsertRows[sheetId];
for (var i = 0; i < arrInsertRows.length; ++i) {
if (arrInsertRows[i].r1 <= row && row <= arrInsertRows[i].r2)
return true;
}
return false;
};
CCollaborativeEditing.prototype.getArrayInsertColumnsBySheetId = function (sheetId) {
if (!this.m_oInsertColumns.hasOwnProperty(sheetId))
return [];
return this.m_oInsertColumns[sheetId];
};
CCollaborativeEditing.prototype.getArrayInsertRowsBySheetId = function (sheetId) {
if (!this.m_oInsertRows.hasOwnProperty(sheetId))
return [];
return this.m_oInsertRows[sheetId];
};
CCollaborativeEditing.prototype.getLockMeColumn = function (sheetId, col) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId))
return col;
return this.m_oRecalcIndexColumns[sheetId].getLockMe(col);
};
CCollaborativeEditing.prototype.getLockMeRow = function (sheetId, row) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId))
return row;
return this.m_oRecalcIndexRows[sheetId].getLockMe(row);
};
// Только когда от других пользователей изменения колонок (для пересчета)
CCollaborativeEditing.prototype.getLockMeColumn2 = function (sheetId, col) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId))
return col;
return this.m_oRecalcIndexColumns[sheetId].getLockMe2(col);
};
// Только когда от других пользователей изменения строк (для пересчета)
CCollaborativeEditing.prototype.getLockMeRow2 = function (sheetId, row) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId))
return row;
return this.m_oRecalcIndexRows[sheetId].getLockMe2(row);
};
// Только для принятия изменений от других пользователей! (для пересчета только в сохранении)
CCollaborativeEditing.prototype.getLockOtherColumn2 = function (sheetId, col) {
if (!this.m_oRecalcIndexColumns.hasOwnProperty(sheetId))
return col;
return this.m_oRecalcIndexColumns[sheetId].getLockSaveOther(col);
};
// Только для принятия изменений от других пользователей! (для пересчета только в сохранении)
CCollaborativeEditing.prototype.getLockOtherRow2 = function (sheetId, row) {
if (!this.m_oRecalcIndexRows.hasOwnProperty(sheetId))
return row;
return this.m_oRecalcIndexRows[sheetId].getLockSaveOther(row);
};
/**
* Отвечает за лок в совместном редактировании
* -----------------------------------------------------------------------------
*
* @constructor
* @memberOf Asc
*/
function CLock(element) {
this.Type = c_oAscLockTypes.kLockTypeNone;
this.UserId = null;
this.Element = element;
this.init();
return this;
}
CLock.prototype.init = function () {
};
CLock.prototype.getType = function () {
return this.Type;
};
CLock.prototype.setType = function (newType) {
if (newType === c_oAscLockTypes.kLockTypeNone)
this.UserId = null;
this.Type = newType;
};
CLock.prototype.Lock = function(bMine) {
if (c_oAscLockTypes.kLockTypeNone === this.Type)
{
if (true === bMine)
this.Type = c_oAscLockTypes.kLockTypeMine;
else
this.Type = c_oAscLockTypes.kLockTypeOther;
}
};
CLock.prototype.setUserId = function(UserId) {
this.UserId = UserId;
};
function CRecalcIndexElement(recalcType, position, bIsSaveIndex) {
if ( !(this instanceof CRecalcIndexElement) ) {
return new CRecalcIndexElement (recalcType, position, bIsSaveIndex);
}
this._recalcType = recalcType; // Тип изменений (удаление или добавление)
this._position = position; // Позиция, в которой произошли изменения
this._count = 1; // Считаем все изменения за простейшие
this.m_bIsSaveIndex = !!bIsSaveIndex; // Это индексы из изменений других пользователей (которые мы еще не применили)
return this;
}
// Пересчет для других
CRecalcIndexElement.prototype.getLockOther = function (position, type) {
var inc = (c_oAscRecalcIndexTypes.RecalcIndexAdd === this._recalcType) ? +1 : -1;
if (position === this._position && c_oAscRecalcIndexTypes.RecalcIndexRemove === this._recalcType &&
true === this.m_bIsSaveIndex) {
// Мы еще не применили чужие изменения (поэтому для insert не нужно отрисовывать)
// RecalcIndexRemove (потому что перевертываем для правильной отработки, от другого пользователя
// пришло RecalcIndexAdd
return null;
} else if (position === this._position &&
c_oAscRecalcIndexTypes.RecalcIndexRemove === this._recalcType &&
c_oAscLockTypes.kLockTypeMine === type && false === this.m_bIsSaveIndex) {
// Для пользователя, который удалил столбец, рисовать залоченные ранее в данном столбце ячейки
// не нужно
return null;
} else if (position < this._position)
return position;
else
return (position + inc);
};
// Пересчет для других (только для сохранения)
CRecalcIndexElement.prototype.getLockSaveOther = function (position, type) {
if (this.m_bIsSaveIndex)
return position;
var inc = (c_oAscRecalcIndexTypes.RecalcIndexAdd === this._recalcType) ? +1 : -1;
if (position === this._position && c_oAscRecalcIndexTypes.RecalcIndexRemove === this._recalcType &&
true === this.m_bIsSaveIndex) {
// Мы еще не применили чужие изменения (поэтому для insert не нужно отрисовывать)
// RecalcIndexRemove (потому что перевертываем для правильной отработки, от другого пользователя
// пришло RecalcIndexAdd
return null;
} else if (position === this._position &&
c_oAscRecalcIndexTypes.RecalcIndexRemove === this._recalcType &&
c_oAscLockTypes.kLockTypeMine === type && false === this.m_bIsSaveIndex) {
// Для пользователя, который удалил столбец, рисовать залоченные ранее в данном столбце ячейки
// не нужно
return null;
} else if (position < this._position)
return position;
else
return (position + inc);
};
// Пересчет для себя
CRecalcIndexElement.prototype.getLockMe = function (position) {
var inc = (c_oAscRecalcIndexTypes.RecalcIndexAdd === this._recalcType) ? -1 : +1;
if (position < this._position)
return position;
else
return (position + inc);
};
// Только когда от других пользователей изменения (для пересчета)
CRecalcIndexElement.prototype.getLockMe2 = function (position) {
var inc = (c_oAscRecalcIndexTypes.RecalcIndexAdd === this._recalcType) ? -1 : +1;
if (true !== this.m_bIsSaveIndex || position < this._position)
return position;
else
return (position + inc);
};
function CRecalcIndex() {
if ( !(this instanceof CRecalcIndex) ) {
return new CRecalcIndex ();
}
this._arrElements = []; // Массив CRecalcIndexElement
return this;
}
CRecalcIndex.prototype.add = function (recalcType, position, count, bIsSaveIndex) {
for (var i = 0; i < count; ++i)
this._arrElements.push(new CRecalcIndexElement(recalcType, position, bIsSaveIndex));
};
// Удаляет из пересчета, для undo
CRecalcIndex.prototype.remove = function (count) {
for (var i = 0; i < count; ++i)
this._arrElements.pop();
};
CRecalcIndex.prototype.clear = function () {
this._arrElements.length = 0;
};
// Пересчет для других
CRecalcIndex.prototype.getLockOther = function (position, type) {
var newPosition = position;
/*var count = this._arrElements.length;
for (var i = 0; i < count; ++i) {
newPosition = this._arrElements[i].getLockOther(newPosition, type);
if (null === newPosition)
break;
}*/
var count = this._arrElements.length;
if (0 >= count)
return newPosition;
// Для пересчета, когда добавил сам - обратный порядок
// Для пересчета, когда добавил кто-то другой - прямой
var bIsDirect = !this._arrElements[0].m_bIsSaveIndex;
var i;
if (bIsDirect) {
for (i = 0; i < count; ++i) {
newPosition = this._arrElements[i].getLockOther(newPosition, type);
if (null === newPosition)
break;
}
} else {
for (i = count - 1; i >= 0; --i) {
newPosition = this._arrElements[i].getLockOther(newPosition, type);
if (null === newPosition)
break;
}
}
return newPosition;
};
// Пересчет для других (только для сохранения)
CRecalcIndex.prototype.getLockSaveOther = function (position, type) {
var newPosition = position;
var count = this._arrElements.length;
for (var i = 0; i < count; ++i) {
newPosition = this._arrElements[i].getLockSaveOther(newPosition, type);
if (null === newPosition)
break;
}
return newPosition;
};
// Пересчет для себя
CRecalcIndex.prototype.getLockMe = function (position) {
var newPosition = position;
var count = this._arrElements.length;
if (0 >= count)
return newPosition;
// Для пересчета, когда добавил сам - обратный порядок
// Для пересчета, когда добавил кто-то другой - прямой
var bIsDirect = this._arrElements[0].m_bIsSaveIndex;
var i;
if (bIsDirect) {
for (i = 0; i < count; ++i) {
newPosition = this._arrElements[i].getLockMe(newPosition);
if (null === newPosition)
break;
}
} else {
for (i = count - 1; i >= 0; --i) {
newPosition = this._arrElements[i].getLockMe(newPosition);
if (null === newPosition)
break;
}
}
return newPosition;
};
// Только когда от других пользователей изменения (для пересчета)
CRecalcIndex.prototype.getLockMe2 = function (position) {
var newPosition = position;
var count = this._arrElements.length;
if (0 >= count)
return newPosition;
// Для пересчета, когда добавил сам - обратный порядок
// Для пересчета, когда добавил кто-то другой - прямой
var bIsDirect = this._arrElements[0].m_bIsSaveIndex;
var i;
if (bIsDirect) {
for (i = 0; i < count; ++i) {
newPosition = this._arrElements[i].getLockMe2(newPosition);
if (null === newPosition)
break;
}
} else {
for (i = count - 1; i >= 0; --i) {
newPosition = this._arrElements[i].getLockMe2(newPosition);
if (null === newPosition)
break;
}
}
return newPosition;
};
//----------------------------------------------------------export----------------------------------------------------
window['Asc'] = window['Asc'] || {};
window['AscCommonExcel'] = window['AscCommonExcel'] || {};
window['AscCommonExcel'].CLock = CLock;
window['AscCommonExcel'].CCollaborativeEditing = CCollaborativeEditing;
window['Asc'].CRecalcIndexElement = CRecalcIndexElement;
window['Asc'].CRecalcIndex = CRecalcIndex;
}
)(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function (window, undefined)
{
/** @constructor */
function CDocumentMacros()
{
this.Id = "_macrosGlobalId";//AscCommon.g_oIdCounter.Get_NewId();
this.Lock = new AscCommon.CLock();
this.Data = "";
AscCommon.g_oTableId.Add(this, this.Id);
}
CDocumentMacros.prototype.SetData = function(sData)
{
AscCommon.History.Add(new CChangesDocumentMacrosData(this, this.Data, sData));
this.Data = sData;
};
CDocumentMacros.prototype.GetData = function()
{
return this.Data;
};
CDocumentMacros.prototype.Get_Id = function()
{
return this.Id;
};
CDocumentMacros.prototype.CheckLock = function()
{
this.Lock.Check(this.Id);
};
CDocumentMacros.prototype.Write_ToBinary2 = function(Writer)
{
Writer.WriteLong(AscDFH.historyitem_type_DocumentMacros);
// String2 : Id
// String2 : Data
Writer.WriteString2("" + this.Id);
Writer.WriteString2(this.Data);
};
CDocumentMacros.prototype.Read_FromBinary2 = function(Reader)
{
// String2 : Id
// String2 : Data
this.Id = Reader.GetString2();
this.Data = Reader.GetString2();
};
CDocumentMacros.prototype.Refresh_RecalcData = function()
{
};
AscDFH.changesFactory[AscDFH.historyitem_DocumentMacros_Data] = CChangesDocumentMacrosData;
AscDFH.changesRelationMap[AscDFH.historyitem_DocumentMacros_Data] = [AscDFH.historyitem_DocumentMacros_Data];
/**
* @constructor
* @extends {AscDFH.CChangesBaseStringProperty}
*/
function CChangesDocumentMacrosData(Class, Old, New)
{
AscDFH.CChangesBaseStringProperty.call(this, Class, Old, New);
}
CChangesDocumentMacrosData.prototype = Object.create(AscDFH.CChangesBaseStringProperty.prototype);
CChangesDocumentMacrosData.prototype.constructor = CChangesDocumentMacrosData;
CChangesDocumentMacrosData.prototype.Type = AscDFH.historyitem_DocumentMacros_Data;
CChangesDocumentMacrosData.prototype.private_SetValue = function(Value)
{
this.Class.Data = Value;
};
window['AscCommon'] = window['AscCommon'] || {};
window["AscCommon"].CDocumentMacros = CDocumentMacros;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function(window, undefined)
{
var prot;
// Import
var c_oEditorId = AscCommon.c_oEditorId;
var c_oCloseCode = AscCommon.c_oCloseCode;
var c_oAscError = Asc.c_oAscError;
var c_oAscAsyncAction = Asc.c_oAscAsyncAction;
var c_oAscAsyncActionType = Asc.c_oAscAsyncActionType;
/** @constructor */
function baseEditorsApi(config, editorId)
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["CreateEditorApi"]();
this.editorId = editorId;
this.isLoadFullApi = false;
this.openResult = null;
this.HtmlElementName = config['id-view'] || '';
this.HtmlElement = null;
this.isMobileVersion = (config['mobile'] === true);
this.isEmbedVersion = (config['embedded'] === true);
this.isViewMode = false;
this.restrictions = Asc.c_oAscRestrictionType.None;
this.FontLoader = null;
this.ImageLoader = null;
this.LoadedObject = null;
this.DocumentType = 0; // 0 - empty, 1 - test, 2 - document (from json)
this.DocInfo = null;
this.documentId = undefined;
this.documentUserId = undefined;
this.documentUrl = "null";
this.documentUrlChanges = null;
this.documentCallbackUrl = undefined; // Ссылка для отправления информации о документе
this.documentFormat = "null";
this.documentTitle = "null";
this.documentFormatSave = Asc.c_oAscFileType.UNKNOWN;
this.documentOpenOptions = undefined; // Опции при открытии (пока только опции для CSV)
// Тип состояния на данный момент (сохранение, открытие или никакое)
this.advancedOptionsAction = AscCommon.c_oAscAdvancedOptionsAction.None;
// Тип скачивания файлы(download или event).нужен для txt, csv. запоминаем на asc_DownloadAs используем asc_setAdvancedOptions
this.downloadType = AscCommon.DownloadType.None;
this.OpenDocumentProgress = new AscCommon.COpenProgress();
var sProtocol = window.location.protocol;
this.documentOrigin = ((sProtocol && '' !== sProtocol) ? sProtocol + '//' : '') + window.location.host; // for presentation theme url
this.documentPathname = window.location.pathname; // for presentation theme url
// Переменная отвечает, получили ли мы ответ с сервера совместного редактирования
this.ServerIdWaitComplete = false;
// Long action
this.IsLongActionCurrent = 0;
this.LongActionCallbacks = [];
this.LongActionCallbacksParams = [];
// AutoSave
this.autoSaveGap = 0; // Интервал автосохранения (0 - означает, что автосохранения нет) в милесекундах
this.lastSaveTime = null; // Время последнего сохранения
this.autoSaveGapFast = 2000; // Интервал быстрого автосохранения (когда человек один) - 2 сек.
this.autoSaveGapSlow = 10 * 60 * 1000; // Интервал медленного автосохранения (когда совместно) - 10 минут
this.intervalWaitAutoSave = 1000;
// Unlock document
this.canUnlockDocument = false;
this.canUnlockDocument2 = false; // Дублирующий флаг, только для saveChanges или unLockDocument
this.canStartCoAuthoring = false;
this.isDocumentCanSave = false; // Флаг, говорит о возможности сохранять документ (активна кнопка save или нет)
// translate manager
this.translateManager = AscCommon.translateManager.init(config['translate']);
// Chart
this.chartPreviewManager = null;
this.textArtPreviewManager = null;
this.shapeElementId = null;
// Режим вставки диаграмм в редакторе документов
this.isChartEditor = false;
this.isOpenedChartFrame = false;
this.MathMenuLoad = false;
// CoAuthoring and Chat
this.User = undefined;
this.CoAuthoringApi = new AscCommon.CDocsCoApi();
this.isCoAuthoringEnable = true;
// Массив lock-ов, которые были на открытии документа
this.arrPreOpenLocksObjects = [];
// Spell Checking
this.SpellCheckUrl = ''; // Ссылка сервиса для проверки орфографии
// Результат получения лицензии
this.licenseResult = null;
// Подключились ли уже к серверу
this.isOnFirstConnectEnd = false;
// Получили ли лицензию
this.isOnLoadLicense = false;
// Переменная, которая отвечает, послали ли мы окончание открытия документа
this.isDocumentLoadComplete = false;
// Переменная, которая отвечает, послали ли мы окончание открытия документа
this.isPreOpenLocks = true;
this.isApplyChangesOnOpenEnabled = true;
this.canSave = true; // Флаг нужен чтобы не происходило сохранение пока не завершится предыдущее сохранение
this.IsUserSave = false; // Флаг, контролирующий сохранение было сделано пользователем или нет (по умолчанию - нет)
this.isForceSaveOnUserSave = false;
this.forceSaveButtonTimeout = null;
this.forceSaveButtonContinue = false;
this.forceSaveTimeoutTimeout = null;
this.disconnectOnSave = null;
this.forceSaveUndoRequest = false; // Флаг нужен, чтобы мы знали, что данное сохранение пришло по запросу Undo в совместке
// Version History
this.VersionHistory = null; // Объект, который отвечает за точку в списке версий
//Флаги для применения свойств через слайдеры
this.noCreatePoint = false;
this.exucuteHistory = false;
this.exucuteHistoryEnd = false;
this.selectSearchingResults = false;
this.isSendStandartTextures = false;
this.tmpFocus = null;
this.fCurCallback = null;
this.pluginsManager = null;
this.isLockTargetUpdate = false;
this.lastWorkTime = 0;
this.signatures = [];
this.currentPassword = "";
this.macros = null;
this.openFileCryptBinary = null;
this.copyOutEnabled = (config['copyoutenabled'] !== false);
//config['watermark_on_draw'] = window.TEST_WATERMARK_STRING;
this.watermarkDraw =
config['watermark_on_draw'] ? new AscCommon.CWatermarkOnDraw(config['watermark_on_draw']) : null;
return this;
}
baseEditorsApi.prototype._init = function()
{
var t = this;
//Asc.editor = Asc['editor'] = AscCommon['editor'] = AscCommon.editor = this; // ToDo сделать это!
this.HtmlElement = document.getElementById(this.HtmlElementName);
// init OnMessage
AscCommon.InitOnMessage(function(error, url)
{
if (c_oAscError.ID.No !== error)
{
t.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
}
else
{
t._addImageUrl([url]);
}
t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
});
AscCommon.loadSdk(this._editorNameById(), function()
{
t.isLoadFullApi = true;
t._onEndLoadSdk();
t.onEndLoadDocInfo();
}, function(err) {
t.sendEvent("asc_onError", Asc.c_oAscError.ID.LoadingScriptError, c_oAscError.Level.Critical);
});
var oldOnError = window.onerror;
window.onerror = function(errorMsg, url, lineNumber, column, errorObj) {
var msg = 'Error: ' + errorMsg + ' Script: ' + url + ' Line: ' + lineNumber + ':' + column +
' userAgent: ' + (navigator.userAgent || navigator.vendor || window.opera) + ' platform: ' +
navigator.platform + ' isLoadFullApi: ' + t.isLoadFullApi + ' isDocumentLoadComplete: ' +
t.isDocumentLoadComplete + ' StackTrace: ' + (errorObj ? errorObj.stack : "");
t.CoAuthoringApi.sendChangesError(msg);
//send only first error to reduce number of requests. also following error may be consequences of first
window.onerror = oldOnError;
if (oldOnError) {
return oldOnError.apply(this, arguments);
} else {
return false;
}
}
};
baseEditorsApi.prototype._editorNameById = function()
{
var res = '';
switch (this.editorId)
{
case c_oEditorId.Word:
res = 'word';
break;
case c_oEditorId.Spreadsheet:
res = 'cell';
break;
case c_oEditorId.Presentation:
res = 'slide';
break;
}
return res;
};
baseEditorsApi.prototype.getEditorId = function()
{
return this.editorId;
};
baseEditorsApi.prototype.asc_GetFontThumbnailsPath = function()
{
return '../Common/Images/';
};
baseEditorsApi.prototype.asc_getDocumentName = function()
{
return this.documentTitle;
};
baseEditorsApi.prototype.asc_setDocInfo = function(oDocInfo)
{
var oldInfo = this.DocInfo;
if (oDocInfo)
{
this.DocInfo = oDocInfo;
}
if (this.DocInfo)
{
this.documentId = this.DocInfo.get_Id();
this.documentUserId = this.DocInfo.get_UserId();
this.documentUrl = this.DocInfo.get_Url();
this.documentTitle = this.DocInfo.get_Title();
this.documentFormat = this.DocInfo.get_Format();
this.documentCallbackUrl = this.DocInfo.get_CallbackUrl();
this.documentOpenOptions = this.DocInfo.asc_getOptions();
this.User = new AscCommon.asc_CUser();
this.User.setId(this.DocInfo.get_UserId());
this.User.setUserName(this.DocInfo.get_UserName());
this.User.setFirstName(this.DocInfo.get_FirstName());
this.User.setLastName(this.DocInfo.get_LastName());
//чтобы в versionHistory был один documentId для auth и open
this.CoAuthoringApi.setDocId(this.documentId);
if (this.watermarkDraw)
{
this.watermarkDraw.CheckParams(this);
}
}
if (AscCommon.chartMode === this.documentUrl)
{
this.isChartEditor = true;
AscCommon.EncryptionWorker.isChartEditor = true;
this.DocInfo.put_OfflineApp(true);
}
else if (AscCommon.offlineMode === this.documentUrl)
{
this.DocInfo.put_OfflineApp(true);
}
if (undefined !== window["AscDesktopEditor"] && !(this.DocInfo && this.DocInfo.get_OfflineApp()))
{
window["AscDesktopEditor"]["SetDocumentName"](this.documentTitle);
}
if (!this.isChartEditor && undefined !== window["AscDesktopEditor"] && undefined !== window["AscDesktopEditor"]["CryptoMode"])
{
this.DocInfo.put_Encrypted(0 < window["AscDesktopEditor"]["CryptoMode"]);
}
if (!oldInfo)
{
this.onEndLoadDocInfo();
}
};
baseEditorsApi.prototype.asc_enableKeyEvents = function(isEnabled, isFromInput)
{
};
// Copy/Past/Cut
baseEditorsApi.prototype.asc_IsFocus = function(bIsNaturalFocus)
{
var _ret = false;
if (this.WordControl.IsFocus)
_ret = true;
if (_ret && bIsNaturalFocus && this.WordControl.TextBoxInputFocus)
_ret = false;
return _ret;
};
baseEditorsApi.prototype.isCopyOutEnabled = function()
{
return this.copyOutEnabled;
};
// target pos
baseEditorsApi.prototype.asc_LockTargetUpdate = function(isLock)
{
this.isLockTargetUpdate = isLock;
};
// Просмотр PDF
baseEditorsApi.prototype.isPdfViewer = function()
{
return false;
};
// Events
baseEditorsApi.prototype.sendEvent = function()
{
};
baseEditorsApi.prototype.SendOpenProgress = function()
{
this.sendEvent("asc_onOpenDocumentProgress", this.OpenDocumentProgress);
};
baseEditorsApi.prototype.sync_InitEditorFonts = function(gui_fonts)
{
if (!this.isViewMode) {
this.sendEvent("asc_onInitEditorFonts", gui_fonts);
}
};
baseEditorsApi.prototype.sync_StartAction = function(type, id)
{
this.sendEvent('asc_onStartAction', type, id);
//console.log("asc_onStartAction: type = " + type + " id = " + id);
if (c_oAscAsyncActionType.BlockInteraction === type)
{
this.incrementCounterLongAction();
}
};
baseEditorsApi.prototype.sync_EndAction = function(type, id)
{
this.sendEvent('asc_onEndAction', type, id);
//console.log("asc_onEndAction: type = " + type + " id = " + id);
if (c_oAscAsyncActionType.BlockInteraction === type)
{
this.decrementCounterLongAction();
}
};
baseEditorsApi.prototype.sync_TryUndoInFastCollaborative = function()
{
this.sendEvent("asc_OnTryUndoInFastCollaborative");
};
baseEditorsApi.prototype.asc_setViewMode = function()
{
};
baseEditorsApi.prototype.asc_setRestriction = function(val)
{
this.restrictions = val;
};
baseEditorsApi.prototype.getViewMode = function()
{
return this.isViewMode;
};
baseEditorsApi.prototype.canEdit = function()
{
return !this.isViewMode && this.restrictions === Asc.c_oAscRestrictionType.None;
};
baseEditorsApi.prototype.isRestrictionForms = function()
{
return (this.restrictions === Asc.c_oAscRestrictionType.OnlyForms);
};
baseEditorsApi.prototype.isRestrictionComments = function()
{
return (this.restrictions === Asc.c_oAscRestrictionType.OnlyComments);
};
baseEditorsApi.prototype.isRestrictionSignatures = function()
{
return (this.restrictions === Asc.c_oAscRestrictionType.OnlySignatures);
};
baseEditorsApi.prototype.isRestrictionView = function()
{
return (this.restrictions === Asc.c_oAscRestrictionType.View);
};
baseEditorsApi.prototype.isLongAction = function()
{
return (0 !== this.IsLongActionCurrent);
};
baseEditorsApi.prototype.incrementCounterLongAction = function()
{
++this.IsLongActionCurrent;
};
baseEditorsApi.prototype.decrementCounterLongAction = function()
{
this.IsLongActionCurrent--;
if (this.IsLongActionCurrent < 0)
{
this.IsLongActionCurrent = 0;
}
if (!this.isLongAction())
{
var _length = this.LongActionCallbacks.length;
for (var i = 0; i < _length; i++)
{
this.LongActionCallbacks[i](this.LongActionCallbacksParams[i]);
}
this.LongActionCallbacks.splice(0, _length);
this.LongActionCallbacksParams.splice(0, _length);
}
};
baseEditorsApi.prototype.checkLongActionCallback = function(_callback, _param)
{
if (this.isLongAction())
{
this.LongActionCallbacks[this.LongActionCallbacks.length] = _callback;
this.LongActionCallbacksParams[this.LongActionCallbacksParams.length] = _param;
return false;
}
else
{
return true;
}
};
/**
* Функция для загрузчика шрифтов (нужно ли грузить default шрифты). Для Excel всегда возвращаем false
* @returns {boolean}
*/
baseEditorsApi.prototype.IsNeedDefaultFonts = function()
{
var res = false;
switch (this.editorId)
{
case c_oEditorId.Word:
res = !this.isPdfViewer();
break;
case c_oEditorId.Presentation:
res = true;
break;
}
return res;
};
baseEditorsApi.prototype.onPrint = function()
{
this.sendEvent("asc_onPrint");
};
// Open
baseEditorsApi.prototype.asc_LoadDocument = function(versionHistory, isRepeat)
{
// Меняем тип состояния (на открытие)
this.advancedOptionsAction = AscCommon.c_oAscAdvancedOptionsAction.Open;
var rData = null;
if (!(this.DocInfo && this.DocInfo.get_OfflineApp()))
{
rData = {
"c" : 'open',
"id" : this.documentId,
"userid" : this.documentUserId,
"format" : this.documentFormat,
"url" : this.documentUrl,
"title" : this.documentTitle,
"nobase64" : true
};
if (versionHistory)
{
rData["serverVersion"] = versionHistory.serverVersion;
rData["closeonerror"] = versionHistory.isRequested;
rData["jwt"] = versionHistory.token;
//чтобы результат пришел только этому соединению, а не всем кто в документе
rData["userconnectionid"] = this.CoAuthoringApi.getUserConnectionId();
}
}
if (versionHistory) {
this.CoAuthoringApi.versionHistory(rData);
} else {
this.CoAuthoringApi.auth(this.getViewMode(), rData);
}
if (!isRepeat) {
this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Open);
}
if (this.DocInfo.get_Encrypted() && window["AscDesktopEditor"] && !window["AscDesktopEditor"]["IsLocalFile"](true))
{
window["AscDesktopEditor"]["OpenFileCrypt"](this.DocInfo.get_Title(), this.DocInfo.get_Url(), window.openFileCryptCallback);
}
};
baseEditorsApi.prototype._OfflineAppDocumentStartLoad = function()
{
this._OfflineAppDocumentEndLoad();
};
baseEditorsApi.prototype._OfflineAppDocumentEndLoad = function()
{
};
baseEditorsApi.prototype._onOpenCommand = function(data)
{
};
baseEditorsApi.prototype._onNeedParams = function(data, opt_isPassword)
{
};
baseEditorsApi.prototype.asyncServerIdEndLoaded = function()
{
};
baseEditorsApi.prototype.asyncFontStartLoaded = function()
{
// здесь прокинуть евент о заморозке меню
this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont);
};
baseEditorsApi.prototype.asyncImageStartLoaded = function()
{
// здесь прокинуть евент о заморозке меню
};
baseEditorsApi.prototype.asyncImagesDocumentStartLoaded = function()
{
// евент о заморозке не нужен... оно и так заморожено
// просто нужно вывести информацию в статус бар (что началась загрузка картинок)
};
baseEditorsApi.prototype.onDocumentContentReady = function()
{
var t = this;
this.isDocumentLoadComplete = true;
if (!window['IS_NATIVE_EDITOR']) {
setInterval(function() {t._autoSave();}, 40);
}
this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Open);
this.sendEvent('asc_onDocumentContentReady');
if (this.editorId == c_oEditorId.Spreadsheet)
this.onUpdateDocumentModified(this.asc_isDocumentModified());
};
// Save
baseEditorsApi.prototype.processSavedFile = function(url, downloadType)
{
if (AscCommon.DownloadType.None !== downloadType)
{
this.sendEvent(downloadType, url, function(hasError)
{
});
}
else
{
AscCommon.getFile(url);
}
};
baseEditorsApi.prototype.forceSave = function()
{
return this.CoAuthoringApi.forceSave();
};
baseEditorsApi.prototype.asc_setIsForceSaveOnUserSave = function(val)
{
this.isForceSaveOnUserSave = val;
};
baseEditorsApi.prototype._onUpdateDocumentCanSave = function () {
};
baseEditorsApi.prototype._onUpdateDocumentCanUndoRedo = function () {
};
baseEditorsApi.prototype._saveCheck = function () {
return false;
};
// Переопределяется во всех редакторах
baseEditorsApi.prototype._haveOtherChanges = function () {
return false;
};
baseEditorsApi.prototype._onSaveCallback = function (e) {
var t = this;
var nState;
if (false == e["saveLock"]) {
if (this.isLongAction()) {
// Мы не можем в этот момент сохранять, т.к. попали в ситуацию, когда мы залочили сохранение и успели нажать вставку до ответа
// Нужно снять lock с сохранения
this.CoAuthoringApi.onUnSaveLock = function () {
t.canSave = true;
t.IsUserSave = false;
t.lastSaveTime = null;
if (t.canUnlockDocument) {
t._unlockDocument();
}
};
this.CoAuthoringApi.unSaveLock();
return;
}
this.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
this.canUnlockDocument2 = this.canUnlockDocument;
if (this.canUnlockDocument && this.canStartCoAuthoring) {
this.CoAuthoringApi.onStartCoAuthoring(true);
}
this.canStartCoAuthoring = false;
this.canUnlockDocument = false;
this._onSaveCallbackInner();
} else {
nState = this.CoAuthoringApi.get_state();
if (AscCommon.ConnectionState.ClosedCoAuth === nState || AscCommon.ConnectionState.ClosedAll === nState) {
// Отключаемся от сохранения, соединение потеряно
this.IsUserSave = false;
this.canSave = true;
} else {
// Если автосохранение, то не будем ждать ответа, а просто перезапустим таймер на немного
if (!this.IsUserSave) {
this.canSave = true;
if (this.canUnlockDocument) {
this._unlockDocument();
}
return;
}
setTimeout(function() {
t.CoAuthoringApi.askSaveChanges(function(event) {
t._onSaveCallback(event);
});
}, 1000);
}
}
};
// Функция сохранения. Переопределяется во всех редакторах
baseEditorsApi.prototype._onSaveCallbackInner = function () {
};
baseEditorsApi.prototype._autoSave = function () {
if (this.canSave && !this.isViewMode && (this.canUnlockDocument || 0 !== this.autoSaveGap)) {
if (this.canUnlockDocument) {
this.lastSaveTime = new Date();
// Check edit mode after unlock document http://bugzilla.onlyoffice.com/show_bug.cgi?id=35971
// Close cell edit without errors (isIdle = true)
this.asc_Save(true, true);
} else {
this._autoSaveInner();
}
}
};
// Функция автосохранения. Переопределяется во всех редакторах
baseEditorsApi.prototype._autoSaveInner = function () {
};
baseEditorsApi.prototype._prepareSave = function (isIdle) {
return true;
};
// Unlock document when start co-authoring
baseEditorsApi.prototype._unlockDocument = function () {
if (this.isDocumentLoadComplete) {
// Document is load
this.canUnlockDocument = true;
this.canStartCoAuthoring = true;
if (this.canSave) {
// We can only unlock with delete index
this.CoAuthoringApi.unLockDocument(false, true, AscCommon.History.GetDeleteIndex());
this.startCollaborationEditing();
AscCommon.History.RemovePointsByDeleteIndex();
this._onUpdateDocumentCanSave();
this._onUpdateDocumentCanUndoRedo();
this.canStartCoAuthoring = false;
this.canUnlockDocument = false;
} else {
// ToDo !!!!
}
} else {
// Когда документ еще не загружен, нужно отпустить lock (при быстром открытии 2-мя пользователями)
this.startCollaborationEditing();
this.CoAuthoringApi.unLockDocument(false, true);
}
};
// Выставление интервала автосохранения (0 - означает, что автосохранения нет)
baseEditorsApi.prototype.asc_setAutoSaveGap = function(autoSaveGap)
{
if (typeof autoSaveGap === "number")
{
this.autoSaveGap = autoSaveGap * 1000; // Нам выставляют в секундах
}
};
// send chart message
baseEditorsApi.prototype.asc_coAuthoringChatSendMessage = function(message)
{
this.CoAuthoringApi.sendMessage(message);
};
// get chart messages
baseEditorsApi.prototype.asc_coAuthoringChatGetMessages = function()
{
this.CoAuthoringApi.getMessages();
};
// get users, возвращается массив users
baseEditorsApi.prototype.asc_coAuthoringGetUsers = function()
{
this.CoAuthoringApi.getUsers();
};
// get permissions
baseEditorsApi.prototype.asc_getEditorPermissions = function()
{
this._coAuthoringInit();
};
baseEditorsApi.prototype._onEndPermissions = function()
{
if (this.isOnFirstConnectEnd && this.isOnLoadLicense)
{
this.sendEvent('asc_onGetEditorPermissions', new AscCommon.asc_CAscEditorPermissions());
}
};
// CoAuthoring
baseEditorsApi.prototype._coAuthoringInit = function()
{
var t = this;
//Если User не задан, отключаем коавторинг.
if (null == this.User || null == this.User.asc_getId())
{
this.User = new AscCommon.asc_CUser();
this.User.setId("Unknown");
this.User.setUserName("Unknown");
}
//в обычном серверном режиме портим ссылку, потому что CoAuthoring теперь имеет встроенный адрес
//todo надо использовать проверку get_OfflineApp
if (!(window['NATIVE_EDITOR_ENJINE'] || (this.DocInfo && this.DocInfo.get_OfflineApp())) || window['IS_NATIVE_EDITOR'])
{
this.CoAuthoringApi.set_url(null);
}
this.CoAuthoringApi.onMessage = function(e, clear)
{
t.sendEvent('asc_onCoAuthoringChatReceiveMessage', e, clear);
};
this.CoAuthoringApi.onServerVersion = function (buildVersion, buildNumber) {
t.sendEvent('asc_onServerVersion', buildVersion, buildNumber);
};
this.CoAuthoringApi.onAuthParticipantsChanged = function(users, userId)
{
t.sendEvent("asc_onAuthParticipantsChanged", users, userId);
};
this.CoAuthoringApi.onParticipantsChanged = function(users)
{
t.sendEvent("asc_onParticipantsChanged", users);
};
this.CoAuthoringApi.onSpellCheckInit = function(e)
{
t.SpellCheckUrl = e;
t._coSpellCheckInit();
};
this.CoAuthoringApi.onSetIndexUser = function(e)
{
AscCommon.g_oIdCounter.Set_UserId('' + e);
};
this.CoAuthoringApi.onFirstLoadChangesEnd = function()
{
t.asyncServerIdEndLoaded();
};
this.CoAuthoringApi.onFirstConnect = function()
{
if (t.isOnFirstConnectEnd)
{
if (t.CoAuthoringApi.get_isAuth()) {
t.CoAuthoringApi.auth(t.getViewMode(), undefined, t.isIdle());
} else {
//первый запрос или ответ не дошел надо повторить открытие
t.asc_LoadDocument(undefined, true);
}
}
else
{
t.isOnFirstConnectEnd = true;
t._onEndPermissions();
}
};
this.CoAuthoringApi.onLicense = function(res)
{
t.licenseResult = res;
t.isOnLoadLicense = true;
t._onEndPermissions();
};
this.CoAuthoringApi.onLicenseChanged = function(res)
{
t.licenseResult = res;
t.isOnLoadLicense = true;
var oResult = new AscCommon.asc_CAscEditorPermissions();
oResult.setLicenseType(res);
t.sendEvent('asc_onLicenseChanged', oResult);
};
this.CoAuthoringApi.onWarning = function(code)
{
t.sendEvent('asc_onError', code || c_oAscError.ID.Warning, c_oAscError.Level.NoCritical);
};
this.CoAuthoringApi.onMeta = function(data)
{
var newDocumentTitle = data["title"];
if (newDocumentTitle) {
t.documentTitle = newDocumentTitle;
if (t.DocInfo) {
t.DocInfo.asc_putTitle(newDocumentTitle);
}
}
t.sendEvent('asc_onMeta', data);
};
this.CoAuthoringApi.onSession = function(data) {
var code = data["code"];
var reason = data["reason"];
var interval = data["interval"];
var extendSession = true;
if (c_oCloseCode.sessionIdle == code) {
var idleTime = t.isIdle();
if (idleTime > interval) {
extendSession = false;
} else {
t.CoAuthoringApi.extendSession(idleTime);
}
} else if (c_oCloseCode.sessionAbsolute == code) {
extendSession = false;
}
if (!extendSession) {
if (t.asc_Save(false, true)) {
//enter view mode because save async
t.setViewModeDisconnect();
t.disconnectOnSave = {code: code, reason: reason};
} else {
t.CoAuthoringApi.disconnect(code, reason);
}
}
};
this.CoAuthoringApi.onForceSave = function(data) {
if (AscCommon.c_oAscForceSaveTypes.Button === data.type) {
if (data.start) {
if (null === t.forceSaveButtonTimeout && !t.forceSaveButtonContinue) {
t.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveButton);
} else {
clearInterval(t.forceSaveButtonTimeout);
}
t.forceSaveButtonTimeout = setTimeout(function() {
t.forceSaveButtonTimeout = null;
if (t.forceSaveButtonContinue) {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
} else {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveButton);
}
t.forceSaveButtonContinue = false;
t.sendEvent('asc_onError', Asc.c_oAscError.ID.ForceSaveButton, c_oAscError.Level.NoCritical);
}, Asc.c_nMaxConversionTime);
} else if (data.refuse) {
if (t.forceSaveButtonContinue) {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
}
t.forceSaveButtonContinue = false;
} else {
if (null !== t.forceSaveButtonTimeout) {
clearInterval(t.forceSaveButtonTimeout);
t.forceSaveButtonTimeout = null;
if (t.forceSaveButtonContinue) {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
} else {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveButton);
}
t.forceSaveButtonContinue = false;
if (!data.success) {
t.sendEvent('asc_onError', Asc.c_oAscError.ID.ForceSaveButton, c_oAscError.Level.NoCritical);
}
}
}
} else {
if (AscCommon.CollaborativeEditing.Is_Fast() || null !== t.forceSaveTimeoutTimeout) {
if (data.start) {
if (null === t.forceSaveTimeoutTimeout) {
t.sync_StartAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveTimeout);
} else {
clearInterval(t.forceSaveTimeoutTimeout);
}
t.forceSaveTimeoutTimeout = setTimeout(function() {
t.forceSaveTimeoutTimeout = null;
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveTimeout);
t.sendEvent('asc_onError', Asc.c_oAscError.ID.ForceSaveTimeout, c_oAscError.Level.NoCritical);
}, Asc.c_nMaxConversionTime);
} else {
if (null !== t.forceSaveTimeoutTimeout) {
clearInterval(t.forceSaveTimeoutTimeout);
t.forceSaveTimeoutTimeout = null;
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.ForceSaveTimeout);
if (!data.success) {
t.sendEvent('asc_onError', Asc.c_oAscError.ID.ForceSaveTimeout, c_oAscError.Level.NoCritical);
}
}
}
}
}
};
this.CoAuthoringApi.onExpiredToken = function() {
t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.Open);
t.VersionHistory = null;
t.sendEvent('asc_onExpiredToken');
};
this.CoAuthoringApi.onHasForgotten = function() {
//todo very bad way, need rewrite
var isDocumentCanSaveOld = t.isDocumentCanSave;
var canSaveOld = t.canSave;
t.isDocumentCanSave = true;
t.canSave = false;
t.sendEvent("asc_onDocumentModifiedChanged");
t.isDocumentCanSave = isDocumentCanSaveOld;
t.canSave = canSaveOld;
t.sendEvent("asc_onDocumentModifiedChanged");
};
/**
* Event об отсоединении от сервера
* @param {jQuery} e event об отсоединении с причиной
* @param {Bool} isDisconnectAtAll окончательно ли отсоединяемся(true) или будем пробовать сделать reconnect(false) + сами отключились
* @param {Bool} isCloseCoAuthoring
*/
this.CoAuthoringApi.onDisconnect = function(e, error)
{
if (AscCommon.ConnectionState.None === t.CoAuthoringApi.get_state())
{
t.asyncServerIdEndLoaded();
}
if (null != error)
{
t.setViewModeDisconnect();
t.sendEvent('asc_onError', error.code, error.level);
}
};
this.CoAuthoringApi.onDocumentOpen = function (inputWrap) {
if (AscCommon.EncryptionWorker.isNeedCrypt())
{
if (t.fCurCallback) {
t.fCurCallback(inputWrap ? inputWrap["data"] : undefined);
t.fCurCallback = null;
}
return;
}
if (inputWrap["data"]) {
var input = inputWrap["data"];
switch (input["type"]) {
case 'reopen':
case 'open':
switch (input["status"]) {
case "updateversion":
case "ok":
var urls = input["data"];
AscCommon.g_oDocumentUrls.init(urls);
if (null != urls['Editor.bin']) {
if ('ok' === input["status"] || t.getViewMode()) {
t._onOpenCommand(urls['Editor.bin']);
} else {
t.sendEvent("asc_onDocumentUpdateVersion", function () {
if (t.isCoAuthoringEnable) {
t.asc_coAuthoringDisconnect();
}
t._onOpenCommand(urls['Editor.bin']);
})
}
} else {
t.sendEvent("asc_onError", c_oAscError.ID.ConvertationOpenError,
c_oAscError.Level.Critical);
}
break;
case "needparams":
t._onNeedParams(input["data"]);
break;
case "needpassword":
t._onNeedParams(null, true);
break;
case "err":
t.sendEvent("asc_onError",
AscCommon.mapAscServerErrorToAscError(parseInt(input["data"]),
Asc.c_oAscError.ID.ConvertationOpenError), c_oAscError.Level.Critical);
break;
}
break;
default:
if (t.fCurCallback) {
t.fCurCallback(input);
t.fCurCallback = null;
} else {
t.sendEvent("asc_onError", c_oAscError.ID.Unknown, c_oAscError.Level.NoCritical);
}
break;
}
}
};
this.CoAuthoringApi.onStartCoAuthoring = function (isStartEvent) {
if (t.isViewMode) {
return;
}
// На старте не нужно ничего делать
if (isStartEvent) {
t.startCollaborationEditing();
} else {
t._unlockDocument();
}
};
this.CoAuthoringApi.onEndCoAuthoring = function (isStartEvent) {
if (t.canUnlockDocument) {
t.canStartCoAuthoring = false;
} else {
t.endCollaborationEditing();
}
};
this._coAuthoringInitEnd();
this.CoAuthoringApi.init(this.User, this.documentId, this.documentCallbackUrl, 'fghhfgsjdgfjs', this.editorId, this.documentFormatSave, this.DocInfo);
};
baseEditorsApi.prototype._coAuthoringInitEnd = function()
{
};
baseEditorsApi.prototype.startCollaborationEditing = function()
{
};
baseEditorsApi.prototype.endCollaborationEditing = function()
{
};
baseEditorsApi.prototype._coAuthoringCheckEndOpenDocument = function(f)
{
if (this.isPreOpenLocks)
{
var context = this.CoAuthoringApi;
var args = Array.prototype.slice.call(arguments, 1);
// Пока документ еще не загружен, будем сохранять функцию и аргументы
this.arrPreOpenLocksObjects.push(function()
{
f.apply(context, args);
});
return true;
}
return false;
};
baseEditorsApi.prototype._applyPreOpenLocks = function()
{
this.isPreOpenLocks = false;
// Применяем все lock-и (ToDo возможно стоит пересмотреть вообще Lock-и)
for (var i = 0; i < this.arrPreOpenLocksObjects.length; ++i)
{
this.arrPreOpenLocksObjects[i]();
}
this.arrPreOpenLocksObjects = [];
};
// server disconnect
baseEditorsApi.prototype.asc_coAuthoringDisconnect = function()
{
this.CoAuthoringApi.disconnect();
this.isCoAuthoringEnable = false;
// Выставляем view-режим
this.asc_setViewMode(true);
};
baseEditorsApi.prototype.asc_stopSaving = function()
{
this.incrementCounterLongAction();
};
baseEditorsApi.prototype.asc_continueSaving = function()
{
this.decrementCounterLongAction();
};
// SpellCheck
baseEditorsApi.prototype._coSpellCheckInit = function()
{
};
// Images & Charts & TextArts
baseEditorsApi.prototype.asc_getChartPreviews = function(chartType)
{
return this.chartPreviewManager.getChartPreviews(chartType);
};
baseEditorsApi.prototype.asc_getTextArtPreviews = function()
{
return this.textArtPreviewManager.getWordArtStyles();
};
baseEditorsApi.prototype.asc_onOpenChartFrame = function()
{
if(this.isMobileVersion){
return;
}
this.isOpenedChartFrame = true;
};
baseEditorsApi.prototype.asc_onCloseChartFrame = function()
{
this.isOpenedChartFrame = false;
};
baseEditorsApi.prototype.asc_setInterfaceDrawImagePlaceShape = function(elementId)
{
this.shapeElementId = elementId;
};
baseEditorsApi.prototype.asc_getPropertyEditorShapes = function()
{
return [AscCommon.g_oAutoShapesGroups, AscCommon.g_oAutoShapesTypes];
};
baseEditorsApi.prototype.asc_getPropertyEditorTextArts = function()
{
return [AscCommon.g_oPresetTxWarpGroups, AscCommon.g_PresetTxWarpTypes];
};
// Add image
baseEditorsApi.prototype._addImageUrl = function()
{
};
// CRYPTPAD
// This method is necessary to add the loaded images to the list of loaded images
// The code is in slide/api.js
baseEditorsApi.prototype.asc_addImageCallback = function(res)
{
};
baseEditorsApi.prototype.asc_addImage = function()
{
var t = this;
// CryptPad: we need to take control of the upload
// t.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
// This method calls back to the cryptpad onlyoffice inner.js to load the cryptad file dialog
window.parent.APP.AddImage(function(res) {
// This method adds the loaded image to the list of loaded images
console.log("AddImageCallback");
t.asc_addImageCallback(res);
// This method activats the image
t._addImageUrl([res.url]);
// t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
}, function() {
// t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
t.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
});
return;
// Cryptpad end
AscCommon.ShowImageFileDialog(this.documentId, this.documentUserId, this.CoAuthoringApi.get_jwt(), function(error, files)
{
t._uploadCallback(error, files);
}, function(error)
{
if (c_oAscError.ID.No !== error)
{
t.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
}
t.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
});
};
baseEditorsApi.prototype._uploadCallback = function(error, files)
{
var t = this;
if (c_oAscError.ID.No !== error)
{
this.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
}
else
{
this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
AscCommon.UploadImageFiles(files, this.documentId, this.documentUserId, this.CoAuthoringApi.get_jwt(), function(error, urls)
{
if (c_oAscError.ID.No !== error)
{
t.sendEvent("asc_onError", error, c_oAscError.Level.NoCritical);
}
else
{
t._addImageUrl(urls);
}
t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
});
}
};
//метод, который подменяет callback загрузки в каждом редакторе, TODO: переделать, сделать одинаково в о всех редакторах
baseEditorsApi.prototype.asc_replaceLoadImageCallback = function(fCallback)
{
};
baseEditorsApi.prototype.asc_loadLocalImageAndAction = function(sLocalImage, fCallback)
{
var _loadedUrl = this.ImageLoader.LoadImage(AscCommon.getFullImageSrc2(sLocalImage), 1);
if (_loadedUrl != null)
fCallback(_loadedUrl);
else
this.asc_replaceLoadImageCallback(fCallback);
};
baseEditorsApi.prototype.asc_checkImageUrlAndAction = function(sImageUrl, fCallback)
{
var oThis = this;
this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
var fCallback2 = function()
{
oThis.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.UploadImage);
fCallback.apply(oThis, arguments);
};
var sLocalImage = AscCommon.g_oDocumentUrls.getImageLocal(sImageUrl);
if (sLocalImage)
{
this.asc_loadLocalImageAndAction(sLocalImage, fCallback2);
return;
}
AscCommon.sendImgUrls(oThis, [sImageUrl], function(data)
{
if (data[0] && data[0].path != null)
{
oThis.asc_loadLocalImageAndAction(AscCommon.g_oDocumentUrls.imagePath2Local(data[0].path), fCallback2);
}
}, this.editorId === c_oEditorId.Spreadsheet);
};
baseEditorsApi.prototype.asc_addOleObject = function(oPluginData)
{
if(this.isViewMode){
return;
}
Asc.CPluginData_wrap(oPluginData);
var oThis = this;
var sImgSrc = oPluginData.getAttribute("imgSrc");
var nWidthPix = oPluginData.getAttribute("widthPix");
var nHeightPix = oPluginData.getAttribute("heightPix");
var fWidth = oPluginData.getAttribute("width");
var fHeight = oPluginData.getAttribute("height");
var sData = oPluginData.getAttribute("data");
var sGuid = oPluginData.getAttribute("guid");
if (typeof sImgSrc === "string" && sImgSrc.length > 0 && typeof sData === "string"
&& typeof sGuid === "string" && sGuid.length > 0
&& AscFormat.isRealNumber(nWidthPix) && AscFormat.isRealNumber(nHeightPix)
&& AscFormat.isRealNumber(fWidth) && AscFormat.isRealNumber(fHeight)
)
this.asc_checkImageUrlAndAction(sImgSrc, function(oImage)
{
oThis.asc_addOleObjectAction(AscCommon.g_oDocumentUrls.getImageLocal(oImage.src), sData, sGuid, fWidth, fHeight, nWidthPix, nHeightPix);
});
};
baseEditorsApi.prototype.asc_editOleObject = function(oPluginData)
{
if(this.isViewMode){
return;
}
Asc.CPluginData_wrap(oPluginData);
var oThis = this;
var bResize = oPluginData.getAttribute("resize");
var sImgSrc = oPluginData.getAttribute("imgSrc");
var oOleObject = AscCommon.g_oTableId.Get_ById(oPluginData.getAttribute("objectId"));
var nWidthPix = oPluginData.getAttribute("widthPix");
var nHeightPix = oPluginData.getAttribute("heightPix");
var sData = oPluginData.getAttribute("data");
if (typeof sImgSrc === "string" && sImgSrc.length > 0 && typeof sData === "string"
&& oOleObject && AscFormat.isRealNumber(nWidthPix) && AscFormat.isRealNumber(nHeightPix))
{
this.asc_checkImageUrlAndAction(sImgSrc, function(oImage)
{
oThis.asc_editOleObjectAction(bResize, oOleObject, AscCommon.g_oDocumentUrls.getImageLocal(oImage.src), sData, nWidthPix, nHeightPix);
});
}
};
baseEditorsApi.prototype.asc_addOleObjectAction = function(sLocalUrl, sData, sApplicationId, fWidth, fHeight)
{
};
baseEditorsApi.prototype.asc_editOleObjectAction = function(bResize, oOleObject, sImageUrl, sData, nPixWidth, nPixHeight)
{
};
baseEditorsApi.prototype.asc_selectSearchingResults = function(value)
{
if (this.selectSearchingResults === value)
{
return;
}
this.selectSearchingResults = value;
this._selectSearchingResults(value);
};
baseEditorsApi.prototype.asc_startEditCurrentOleObject = function(){
};
// Version History
baseEditorsApi.prototype.asc_showRevision = function(newObj)
{
};
baseEditorsApi.prototype.asc_undoAllChanges = function()
{
};
baseEditorsApi.prototype.asc_Save = function (isAutoSave, isIdle) {
var t = this;
var res = false;
if (this.canSave && this._saveCheck()) {
this.IsUserSave = !isAutoSave;
if (this.asc_isDocumentCanSave() || AscCommon.History.Have_Changes() || this._haveOtherChanges() ||
this.canUnlockDocument || this.forceSaveUndoRequest) {
if (this._prepareSave(isIdle)) {
// Не даем пользователю сохранять, пока не закончится сохранение (если оно началось)
this.canSave = false;
this.CoAuthoringApi.askSaveChanges(function (e) {
t._onSaveCallback(e);
});
res = true;
}
} else if (this.isForceSaveOnUserSave && this.IsUserSave) {
this.forceSave();
}
}
return res;
};
/**
* Эта функция возвращает true, если есть изменения или есть lock-и в документе
*/
baseEditorsApi.prototype.asc_isDocumentCanSave = function()
{
return this.isDocumentCanSave;
};
baseEditorsApi.prototype.asc_getCanUndo = function()
{
return AscCommon.History.Can_Undo();
};
baseEditorsApi.prototype.asc_getCanRedo = function()
{
return AscCommon.History.Can_Redo();
};
// Offline mode
baseEditorsApi.prototype.asc_isOffline = function()
{
return (window.location.protocol.indexOf("file") == 0) ? true : false;
};
baseEditorsApi.prototype.asc_getUrlType = function(url)
{
return AscCommon.getUrlType(url);
};
baseEditorsApi.prototype.openDocument = function()
{
};
baseEditorsApi.prototype.openDocumentFromZip = function()
{
};
baseEditorsApi.prototype.onEndLoadDocInfo = function()
{
if (this.isLoadFullApi && this.DocInfo)
{
if (this.DocInfo.get_OfflineApp())
{
if (this.editorId === c_oEditorId.Spreadsheet && this.isChartEditor)
{
this.onEndLoadFile(AscCommonExcel.getEmptyWorkbook());
}
else
{
this._OfflineAppDocumentStartLoad();
}
}
this.onEndLoadFile(null);
}
};
baseEditorsApi.prototype.onEndLoadFile = function(result)
{
if (result)
{
this.openResult = result;
}
if (this.isLoadFullApi && this.DocInfo && this.openResult)
{
this.openDocument(this.openResult);
this.openResult = null;
}
};
baseEditorsApi.prototype._onEndLoadSdk = function()
{
AscCommon.g_oTableId.init();
// init drag&drop
var t = this;
AscCommon.InitDragAndDrop(this.HtmlElement, function(error, files)
{
t._uploadCallback(error, files);
});
AscFonts.g_fontApplication.Init();
this.FontLoader = AscCommon.g_font_loader;
this.ImageLoader = AscCommon.g_image_loader;
this.FontLoader.put_Api(this);
this.ImageLoader.put_Api(this);
this.FontLoader.SetStandartFonts();
this.chartPreviewManager = new AscCommon.ChartPreviewManager();
this.textArtPreviewManager = new AscCommon.TextArtPreviewManager();
AscFormat.initStyleManager();
if (null !== this.tmpFocus)
{
this.asc_enableKeyEvents(this.tmpFocus);
}
this.pluginsManager = Asc.createPluginsManager(this);
this.macros = new AscCommon.CDocumentMacros();
};
baseEditorsApi.prototype.sendStandartTextures = function()
{
if (this.isSendStandartTextures)
return;
this.isSendStandartTextures = true;
var _count = AscCommon.g_oUserTexturePresets.length;
var arr = new Array(_count);
for (var i = 0; i < _count; ++i)
{
arr[i] = new AscCommon.asc_CTexture();
arr[i].Id = i;
arr[i].Image = AscCommon.g_oUserTexturePresets[i];
this.ImageLoader.LoadImage(AscCommon.g_oUserTexturePresets[i], 1);
}
this.sendEvent('asc_onInitStandartTextures', arr);
};
baseEditorsApi.prototype.sendMathToMenu = function ()
{
if (this.MathMenuLoad)
return;
// GENERATE_IMAGES
//var _MathPainter = new CMathPainter(this.m_oWordControl.m_oApi);
//_MathPainter.StartLoad();
//return;
var _MathPainter = new AscFormat.CMathPainter(this);
_MathPainter.Generate();
this.MathMenuLoad = true;
};
baseEditorsApi.prototype.sendMathTypesToMenu = function(_math)
{
this.sendEvent("asc_onMathTypes", _math);
};
baseEditorsApi.prototype.asyncFontEndLoaded_MathDraw = function(Obj)
{
this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont);
Obj.Generate2();
};
baseEditorsApi.prototype.sendColorThemes = function (theme) {
var result = AscCommon.g_oUserColorScheme.slice();
// theme colors
var elem, _c;
var _extra = theme.extraClrSchemeLst;
var _count = _extra.length;
var _rgba = {R: 0, G: 0, B: 0, A: 255};
for (var i = 0; i < _count; ++i) {
var _scheme = _extra[i].clrScheme;
elem = new AscCommon.CAscColorScheme();
elem.name = _scheme.name;
_scheme.colors[8].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[8].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[12].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[12].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[9].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[9].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[13].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[13].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[0].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[0].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[1].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[1].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[2].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[2].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[3].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[3].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[4].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[4].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[5].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[5].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[11].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[11].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
_scheme.colors[10].Calculate(theme, null, null, null, _rgba);
_c = _scheme.colors[10].RGBA;
elem.colors.push(new AscCommon.CColor(_c.R, _c.G, _c.B));
result.push(elem)
}
this.sendEvent("asc_onSendThemeColorSchemes", result);
return result;
};
// plugins
baseEditorsApi.prototype._checkLicenseApiFunctions = function()
{
return this.licenseResult && true === this.licenseResult['plugins'];
};
baseEditorsApi.prototype.asc_pluginsRegister = function(basePath, plugins)
{
if (null != this.pluginsManager)
this.pluginsManager.register(basePath, plugins);
};
baseEditorsApi.prototype.asc_pluginRun = function(guid, variation, pluginData)
{
if (null != this.pluginsManager)
this.pluginsManager.run(guid, variation, pluginData);
};
baseEditorsApi.prototype.asc_pluginResize = function(pluginData)
{
if (null != this.pluginsManager)
this.pluginsManager.runResize(pluginData);
};
baseEditorsApi.prototype.asc_pluginButtonClick = function(id)
{
if (null != this.pluginsManager)
this.pluginsManager.buttonClick(id);
};
baseEditorsApi.prototype.asc_pluginEnableMouseEvents = function(isEnable)
{
if (!this.pluginsManager)
return;
this.pluginsManager.onEnableMouseEvents(isEnable);
};
baseEditorsApi.prototype.isEnabledDropTarget = function()
{
return true;
};
baseEditorsApi.prototype.beginInlineDropTarget = function(e)
{
};
baseEditorsApi.prototype.endInlineDropTarget = function(e)
{
};
baseEditorsApi.prototype["pluginMethod_GetFontList"] = function()
{
return AscFonts.g_fontApplication.g_fontSelections.SerializeList();
};
baseEditorsApi.prototype["pluginMethod_PasteHtml"] = function(htmlText)
{
if (!AscCommon.g_clipboardBase)
return null;
var _elem = document.createElement("div");
if (this.editorId == c_oEditorId.Word || this.editorId == c_oEditorId.Presentation)
{
var textPr = this.get_TextProps();
if (textPr)
{
if (undefined !== textPr.TextPr.FontSize)
_elem.style.fontSize = textPr.TextPr.FontSize + "pt";
_elem.style.fontWeight = (true === textPr.TextPr.Bold) ? "bold" : "normal";
_elem.style.fontStyle = (true === textPr.TextPr.Italic) ? "italic" : "normal";
var _color = textPr.TextPr.Color;
if (_color)
_elem.style.color = "rgb(" + _color.r + "," + _color.g + "," + _color.b + ")";
else
_elem.style.color = "rgb(0,0,0)";
}
}
else if (this.editorId == c_oEditorId.Spreadsheet)
{
var props = this.asc_getCellInfo();
if (props && props.font)
{
if (undefined != props.font.size)
_elem.style.fontSize = props.font.size + "pt";
_elem.style.fontWeight = (true === props.font.bold) ? "bold" : "normal";
_elem.style.fontStyle = (true === props.font.italic) ? "italic" : "normal";
}
}
_elem.innerHTML = htmlText;
document.body.appendChild(_elem);
this.incrementCounterLongAction();
var b_old_save_format = AscCommon.g_clipboardBase.bSaveFormat;
AscCommon.g_clipboardBase.bSaveFormat = true;
this.asc_PasteData(AscCommon.c_oAscClipboardDataFormat.HtmlElement, _elem, null, null, null, true);
this.decrementCounterLongAction();
if (true)
{
var fCallback = function ()
{
document.body.removeChild(_elem);
_elem = null;
AscCommon.g_clipboardBase.bSaveFormat = b_old_save_format;
};
if(this.checkLongActionCallback(fCallback, null)){
fCallback();
}
}
else
{
document.body.removeChild(_elem);
_elem = null;
AscCommon.g_clipboardBase.bSaveFormat = b_old_save_format;
}
};
baseEditorsApi.prototype["pluginMethod_PasteText"] = function(text)
{
if (!AscCommon.g_clipboardBase)
return null;
this.asc_PasteData(AscCommon.c_oAscClipboardDataFormat.Text, text);
};
baseEditorsApi.prototype["pluginMethod_GetMacros"] = function()
{
return this.asc_getMacros();
};
baseEditorsApi.prototype["pluginMethod_SetMacros"] = function(data)
{
return this.asc_setMacros(data);
};
baseEditorsApi.prototype["pluginMethod_StartAction"] = function(type, description)
{
this.sync_StartAction((type == "Block") ? c_oAscAsyncActionType.BlockInteraction : c_oAscAsyncActionType.Information, description);
};
baseEditorsApi.prototype["pluginMethod_EndAction"] = function(type, description)
{
this.sync_EndAction((type == "Block") ? c_oAscAsyncActionType.BlockInteraction : c_oAscAsyncActionType.Information, description);
if (this._callbackPluginEndAction)
{
this._callbackPluginEndAction.call(this);
}
};
baseEditorsApi.prototype["pluginMethod_OnEncryption"] = function(obj)
{
var _editor = window["Asc"]["editor"] ? window["Asc"]["editor"] : window.editor;
switch (obj.type)
{
case "generatePassword":
{
if ("" == obj["password"])
{
_editor.sendEvent("asc_onError", "There is no connection with the blockchain", c_oAscError.Level.Critical);
return;
}
var _ret = _editor.asc_nativeGetFile3();
AscCommon.EncryptionWorker.isPasswordCryptoPresent = true;
window["AscDesktopEditor"]["buildCryptedStart"](_ret.data, _ret.header, obj["password"], obj["docinfo"] ? obj["docinfo"] : "");
break;
}
case "getPasswordByFile":
{
if ("" != obj["password"])
{
var _param = ("<m_sPassword>" + AscCommon.CopyPasteCorrectString(obj["password"]) + "</m_sPassword>");
_editor.currentPassword = obj["password"];
_editor.currentDocumentHash = obj["hash"];
_editor.currentDocumentInfo = obj["docinfo"];
AscCommon.EncryptionWorker.isPasswordCryptoPresent = true;
if (window.isNativeOpenPassword)
{
window["AscDesktopEditor"]["NativeViewerOpen"](obj["password"]);
}
else
{
window["AscDesktopEditor"]["SetAdvancedOptions"](_param);
}
}
else
{
this._onNeedParams(undefined, true);
}
break;
}
case "encryptData":
case "decryptData":
{
AscCommon.EncryptionWorker.receiveChanges(obj);
break;
}
}
};
// Builder
baseEditorsApi.prototype.asc_nativeInitBuilder = function()
{
this.asc_setDocInfo(new Asc.asc_CDocInfo());
};
baseEditorsApi.prototype.asc_SetSilentMode = function()
{
};
baseEditorsApi.prototype.asc_canPaste = function()
{
return false;
};
baseEditorsApi.prototype.asc_Recalculate = function()
{
};
// Native
baseEditorsApi.prototype['asc_nativeCheckPdfRenderer'] = function (_memory1, _memory2) {
if (true) {
// pos не должен минимизироваться!!!
_memory1.Copy = _memory1["Copy"];
_memory1.ClearNoAttack = _memory1["ClearNoAttack"];
_memory1.WriteByte = _memory1["WriteByte"];
_memory1.WriteBool = _memory1["WriteBool"];
_memory1.WriteLong = _memory1["WriteLong"];
_memory1.WriteDouble = _memory1["WriteDouble"];
_memory1.WriteString = _memory1["WriteString"];
_memory1.WriteString2 = _memory1["WriteString2"];
_memory2.Copy = _memory1["Copy"];
_memory2.ClearNoAttack = _memory1["ClearNoAttack"];
_memory2.WriteByte = _memory1["WriteByte"];
_memory2.WriteBool = _memory1["WriteBool"];
_memory2.WriteLong = _memory1["WriteLong"];
_memory2.WriteDouble = _memory1["WriteDouble"];
_memory2.WriteString = _memory1["WriteString"];
_memory2.WriteString2 = _memory1["WriteString2"];
}
var _printer = new AscCommon.CDocumentRenderer();
_printer.Memory = _memory1;
_printer.VectorMemoryForPrint = _memory2;
return _printer;
};
// input
baseEditorsApi.prototype.Begin_CompositeInput = function()
{
};
baseEditorsApi.prototype.Add_CompositeText = function(nCharCode)
{
};
baseEditorsApi.prototype.Remove_CompositeText = function(nCount)
{
};
baseEditorsApi.prototype.Replace_CompositeText = function(arrCharCodes)
{
};
baseEditorsApi.prototype.Set_CursorPosInCompositeText = function(nPos)
{
};
baseEditorsApi.prototype.Get_CursorPosInCompositeText = function()
{
};
baseEditorsApi.prototype.End_CompositeInput = function()
{
};
baseEditorsApi.prototype.Get_MaxCursorPosInCompositeText = function()
{
};
baseEditorsApi.prototype.Input_UpdatePos = function()
{
};
baseEditorsApi.prototype["setInputParams"] = function(_obj)
{
window["AscInputMethod"] = window["AscInputMethod"] || {};
for (var _prop in _obj)
{
window["AscInputMethod"][_prop] = _obj[_prop];
}
};
baseEditorsApi.prototype.asc_addSignatureLine = function (sGuid, sSigner, sSigner2, sEmail, Width, Height, sImgUrl) {
};
baseEditorsApi.prototype.asc_getAllSignatures = function () {
return [];
};
baseEditorsApi.prototype.asc_CallSignatureDblClickEvent = function(sGuid){
};
// signatures
baseEditorsApi.prototype.asc_AddSignatureLine2 = function(_obj)
{
var _w = 50;
var _h = 50;
var _w_pix = (_w * AscCommon.g_dKoef_mm_to_pix) >> 0;
var _h_pix = (_h * AscCommon.g_dKoef_mm_to_pix) >> 0;
var _canvas = document.createElement("canvas");
_canvas.width = _w_pix;
_canvas.height = _h_pix;
var _ctx = _canvas.getContext("2d");
_ctx.fillStyle = "#000000";
_ctx.strokeStyle = "#000000";
_ctx.font = "10pt 'Courier New'";
_ctx.lineWidth = 3;
_ctx.beginPath();
var _y_line = (_h_pix >> 1) + 0.5;
_ctx.moveTo(0, _y_line);
_ctx.lineTo(_w_pix, _y_line);
_ctx.stroke();
_ctx.beginPath();
_ctx.lineWidth = 2;
_y_line -= 10;
_ctx.moveTo(10, _y_line);
_ctx.lineTo(25, _y_line - 10);
_ctx.lineTo(10, _y_line - 20);
_ctx.stroke();
_ctx.beginPath();
_ctx.fillText(_obj.asc_getSigner1(), 10, _y_line + 25);
_ctx.fillText(_obj.asc_getSigner2(), 10, _y_line + 40);
_ctx.fillText(_obj.asc_getEmail(), 10, _y_line + 55);
var _url = _canvas.toDataURL("image/png");
_canvas = null;
var _args = [AscCommon.CreateGUID(), _obj.asc_getSigner1(), _obj.asc_getSigner2(), _obj.asc_getEmail(), _w, _h, _url];
this.ImageLoader.LoadImagesWithCallback([_url], function(_args) {
this.asc_addSignatureLine(_args[0], _args[1], _args[2], _args[3], _args[4], _args[5], _args[6]);
}, _args);
};
baseEditorsApi.prototype.asc_getRequestSignatures = function()
{
var _sigs = this.asc_getAllSignatures();
var _sigs_ret = [];
var _found;
for (var i = _sigs.length - 1; i >= 0; i--)
{
var _sig = _sigs[i];
_found = false;
for (var j = this.signatures.length - 1; j >= 0; j--)
{
if (this.signatures[j].guid == _sig.id)
{
_found = true;
break;
}
}
if (!_found)
{
var _add_sig = new AscCommon.asc_CSignatureLine();
_add_sig.guid = _sig.id;
_add_sig.signer1 = _sig.signer;
_add_sig.signer2 = _sig.signer2;
_add_sig.email = _sig.email;
_sigs_ret.push(_add_sig);
}
}
return _sigs_ret;
};
baseEditorsApi.prototype.asc_Sign = function(id, guid, url1, url2)
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["Sign"](id, guid, url1, url2);
};
baseEditorsApi.prototype.asc_RequestSign = function(guid)
{
var signGuid = (guid == "unvisibleAdd") ? AscCommon.CreateGUID() : guid;
if (window["asc_LocalRequestSign"])
window["asc_LocalRequestSign"](signGuid);
};
baseEditorsApi.prototype.asc_ViewCertificate = function(id)
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["ViewCertificate"](parseInt("" + id)); // integer or string!
};
baseEditorsApi.prototype.asc_SelectCertificate = function()
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["SelectCertificate"]();
};
baseEditorsApi.prototype.asc_GetDefaultCertificate = function()
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["GetDefaultCertificate"]();
};
baseEditorsApi.prototype.asc_getSignatures = function()
{
return this.signatures;
};
baseEditorsApi.prototype.asc_RemoveSignature = function(guid)
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["RemoveSignature"](guid);
};
baseEditorsApi.prototype.asc_RemoveAllSignatures = function()
{
if (window["AscDesktopEditor"])
window["AscDesktopEditor"]["RemoveAllSignatures"]();
};
baseEditorsApi.prototype.asc_isSignaturesSupport = function()
{
if (window["AscDesktopEditor"] && window["AscDesktopEditor"]["IsSignaturesSupport"])
return window["AscDesktopEditor"]["IsSignaturesSupport"]();
return false;
};
baseEditorsApi.prototype.asc_isProtectionSupport = function()
{
if (window["AscDesktopEditor"] && window["AscDesktopEditor"]["IsProtectionSupport"])
return window["AscDesktopEditor"]["IsProtectionSupport"]();
return false;
};
baseEditorsApi.prototype.asc_gotoSignature = function(guid)
{
if (window["AscDesktopEditor"] && window["asc_IsVisibleSign"] && window["asc_IsVisibleSign"](guid))
{
if (this.asc_MoveCursorToSignature)
this.asc_MoveCursorToSignature(guid);
}
};
baseEditorsApi.prototype.asc_getSignatureSetup = function(guid)
{
var _sigs = this.asc_getAllSignatures();
for (var i = _sigs.length - 1; i >= 0; i--)
{
var _sig = _sigs[i];
if (_sig.id == guid)
{
var _add_sig = new AscCommon.asc_CSignatureLine();
_add_sig.guid = _sig.id;
_add_sig.signer1 = _sig.signer;
_add_sig.signer2 = _sig.signer2;
_add_sig.email = _sig.email;
_add_sig.isrequested = true;
for (var j = 0; j < this.signatures.length; j++)
{
var signDoc = this.signatures[j];
if (signDoc.guid == _add_sig.guid)
{
_add_sig.valid = signDoc.valid;
_add_sig.isrequested = false;
break;
}
}
return _add_sig;
}
}
return null;
};
baseEditorsApi.prototype.asc_getSignatureImage = function (sGuid) {
var count = this.signatures.length;
for (var i = 0; i < count; i++)
{
if (this.signatures[i].guid == sGuid)
return this.signatures[i].image;
}
return "";
};
baseEditorsApi.prototype.asc_getSessionToken = function () {
return this.CoAuthoringApi.get_jwt()
};
baseEditorsApi.prototype.asc_InputClearKeyboardElement = function()
{
if (AscCommon.g_inputContext)
AscCommon.g_inputContext.nativeFocusElement = null;
};
baseEditorsApi.prototype.onKeyDown = function(e)
{
};
baseEditorsApi.prototype.onKeyPress = function(e)
{
};
baseEditorsApi.prototype.onKeyUp = function(e)
{
};
/**
* Получаем текст (в виде массива юникодных значений), который будет добавлен на ивенте KeyDown
* @param e
* @returns {Number[]}
*/
baseEditorsApi.prototype.getAddedTextOnKeyDown = function(e)
{
return [];
};
baseEditorsApi.prototype.pre_Paste = function(_fonts, _images, callback)
{
};
baseEditorsApi.prototype.asc_Remove = function()
{
if (AscCommon.g_inputContext)
AscCommon.g_inputContext.emulateKeyDownApi(46);
};
// System input
baseEditorsApi.prototype.SetTextBoxInputMode = function(bIsEnable)
{
AscCommon.TextBoxInputMode = bIsEnable;
if (AscCommon.g_inputContext)
AscCommon.g_inputContext.systemInputEnable(AscCommon.TextBoxInputMode);
};
baseEditorsApi.prototype.GetTextBoxInputMode = function()
{
return AscCommon.TextBoxInputMode;
};
baseEditorsApi.prototype.asc_OnHideContextMenu = function()
{
};
baseEditorsApi.prototype.asc_OnShowContextMenu = function()
{
};
baseEditorsApi.prototype.isIdle = function()
{
// пока не стартовали - считаем работаем
if (0 == this.lastWorkTime)
return 0;
// если плагин работает - то и мы тоже
if (this.pluginsManager && this.pluginsManager.isWorked())
return 0;
if (this.isEmbedVersion)
return 0;
if (!this.canSave || !this._saveCheck())
return 0;
return new Date().getTime() - this.lastWorkTime;
};
baseEditorsApi.prototype.checkLastWork = function()
{
this.lastWorkTime = new Date().getTime();
};
baseEditorsApi.prototype.setViewModeDisconnect = function()
{
// Посылаем наверх эвент об отключении от сервера
this.sendEvent('asc_onCoAuthoringDisconnect');
// И переходим в режим просмотра т.к. мы не можем сохранить файл
this.asc_setViewMode(true);
};
baseEditorsApi.prototype.asc_setCurrentPassword = function(password)
{
this.currentPassword = password;
this.asc_Save(false, undefined, true);
};
baseEditorsApi.prototype.asc_resetPassword = function()
{
this.currentPassword = "";
this.asc_Save(false, undefined, true);
};
baseEditorsApi.prototype.asc_setMacros = function(sData)
{
if (!this.macros)
return true;
if (true === AscCommon.CollaborativeEditing.Get_GlobalLock())
return true;
AscCommon.CollaborativeEditing.OnStart_CheckLock();
this.macros.CheckLock();
if (this.editorId == AscCommon.c_oEditorId.Spreadsheet)
{
var locker = Asc.editor.wb.getWorksheet().objectRender.objectLocker;
locker.addObjectId(this.macros.Get_Id());
var _this = this;
locker.checkObjects(function(bNoLock) {
if (bNoLock)
{
AscCommon.History.Create_NewPoint(AscDFH.historydescription_DocumentMacros_Data);
_this.macros.SetData(sData);
}
});
}
else
{
if (false === AscCommon.CollaborativeEditing.OnEnd_CheckLock(false))
{
AscCommon.History.Create_NewPoint(AscDFH.historydescription_DocumentMacros_Data);
this.macros.SetData(sData);
}
}
};
baseEditorsApi.prototype.asc_getMacros = function()
{
return this.macros.GetData();
};
function parseCSV(text, options) {
var delimiterChar;
if (options.asc_getDelimiterChar()) {
delimiterChar = options.asc_getDelimiterChar();
} else {
switch (options.asc_getDelimiter()) {
case AscCommon.c_oAscCsvDelimiter.None:
delimiterChar = undefined;
break;
case AscCommon.c_oAscCsvDelimiter.Tab:
delimiterChar = "\t";
break;
case AscCommon.c_oAscCsvDelimiter.Semicolon:
delimiterChar = ";";
break;
case AscCommon.c_oAscCsvDelimiter.Colon:
delimiterChar = ":";
break;
case AscCommon.c_oAscCsvDelimiter.Comma:
delimiterChar = ",";
break;
case AscCommon.c_oAscCsvDelimiter.Space:
delimiterChar = " ";
break;
}
}
var matrix = [];
var rows = text.match(/[^\r\n]+/g);
for (var i = 0; i < rows.length; ++i) {
var row = rows[i];
//todo quotes
matrix.push(row.split(delimiterChar));
}
return matrix;
}
baseEditorsApi.prototype.asc_decodeBuffer = function(buffer, options, callback) {
var reader = new FileReader();
//todo onerror
reader.onload = reader.onerror = function(e) {
var text = e.target.result ? e.target.result : "";
if (options instanceof Asc.asc_CCSVAdvancedOptions) {
callback(parseCSV(text, options));
} else {
callback(text.match(/[^\r\n]+/g));
}
};
reader.readAsText(new Blob([buffer]), AscCommon.c_oAscEncodings[options.asc_getCodePage()][2]);
};
//----------------------------------------------------------export----------------------------------------------------
window['AscCommon'] = window['AscCommon'] || {};
window['AscCommon'].baseEditorsApi = baseEditorsApi;
prot = baseEditorsApi.prototype;
prot['asc_selectSearchingResults'] = prot.asc_selectSearchingResults;
})(window);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
AscCommon.baseEditorsApi.prototype._onEndPermissions = function () {
if (this.isOnFirstConnectEnd && this.isOnLoadLicense) {
var oResult = new AscCommon.asc_CAscEditorPermissions();
if (null !== this.licenseResult) {
var type = this.licenseResult['type'];
oResult.setLicenseType(type);
oResult.setCanBranding(this.licenseResult['branding']);
oResult.setIsLight(this.licenseResult['light']);
oResult.setLicenseMode(this.licenseResult['mode']);
oResult.setRights(this.licenseResult['rights']);
oResult.setBuildVersion(this.licenseResult['buildVersion']);
oResult.setBuildNumber(this.licenseResult['buildNumber']);
}
this.sendEvent('asc_onGetEditorPermissions', oResult);
}
};
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
(function (window, undefined)
{
window['Asc'] = window['Asc'] || {};
// ---------------------------------------------------------------
function CAscTableStyle()
{
this.Id = "";
this.Type = 0;
this.Image = "";
}
CAscTableStyle.prototype.get_Id = function ()
{
return this.Id;
};
CAscTableStyle.prototype.get_Image = function ()
{
return this.Image;
};
CAscTableStyle.prototype.get_Type = function ()
{
return this.Type;
};
window['Asc']['CAscTableStyle'] = window['Asc'].CAscTableStyle = CAscTableStyle;
CAscTableStyle.prototype['get_Id'] = CAscTableStyle.prototype.get_Id;
CAscTableStyle.prototype['get_Image'] = CAscTableStyle.prototype.get_Image;
CAscTableStyle.prototype['get_Type'] = CAscTableStyle.prototype.get_Type;
// ---------------------------------------------------------------
// CBackground
// Value : тип заливки(прозрачная или нет),
// Color : { r : 0, g : 0, b : 0 }
function CBackground(obj)
{
if (obj)
{
if (obj.Unifill && obj.Unifill.fill && obj.Unifill.fill.type === window['Asc'].c_oAscFill.FILL_TYPE_SOLID && obj.Unifill.fill.color)
{
this.Color = AscCommon.CreateAscColor(obj.Unifill.fill.color);
}
else
{
this.Color = (undefined != obj.Color && null != obj.Color) ? AscCommon.CreateAscColorCustom(obj.Color.r, obj.Color.g, obj.Color.b) : null;
}
this.Value = (undefined != obj.Value) ? obj.Value : null;
}
else
{
this.Color = AscCommon.CreateAscColorCustom(0, 0, 0);
this.Value = 1;
}
}
CBackground.prototype.get_Color = function ()
{
return this.Color;
};
CBackground.prototype.put_Color = function (v)
{
this.Color = (v) ? v : null;
};
CBackground.prototype.get_Value = function ()
{
return this.Value;
};
CBackground.prototype.put_Value = function (v)
{
this.Value = v;
};
window['Asc']['CBackground'] = window['Asc'].CBackground = CBackground;
CBackground.prototype['get_Color'] = CBackground.prototype.get_Color;
CBackground.prototype['put_Color'] = CBackground.prototype.put_Color;
CBackground.prototype['get_Value'] = CBackground.prototype.get_Value;
CBackground.prototype['put_Value'] = CBackground.prototype.put_Value;
// ---------------------------------------------------------------
function CTablePositionH(obj)
{
if (obj)
{
this.RelativeFrom = ( undefined === obj.RelativeFrom ) ? Asc.c_oAscHAnchor.Margin : obj.RelativeFrom;
this.UseAlign = ( undefined === obj.UseAlign ) ? false : obj.UseAlign;
this.Align = ( undefined === obj.Align ) ? undefined : obj.Align;
this.Value = ( undefined === obj.Value ) ? 0 : obj.Value;
}
else
{
this.RelativeFrom = Asc.c_oAscHAnchor.Column;
this.UseAlign = false;
this.Align = undefined;
this.Value = 0;
}
}
CTablePositionH.prototype.get_RelativeFrom = function ()
{
return this.RelativeFrom;
};
CTablePositionH.prototype.put_RelativeFrom = function (v)
{
this.RelativeFrom = v;
};
CTablePositionH.prototype.get_UseAlign = function ()
{
return this.UseAlign;
};
CTablePositionH.prototype.put_UseAlign = function (v)
{
this.UseAlign = v;
};
CTablePositionH.prototype.get_Align = function ()
{
return this.Align;
};
CTablePositionH.prototype.put_Align = function (v)
{
this.Align = v;
};
CTablePositionH.prototype.get_Value = function ()
{
return this.Value;
};
CTablePositionH.prototype.put_Value = function (v)
{
this.Value = v;
};
function CTablePositionV(obj)
{
if (obj)
{
this.RelativeFrom = ( undefined === obj.RelativeFrom ) ? Asc.c_oAscVAnchor.Text : obj.RelativeFrom;
this.UseAlign = ( undefined === obj.UseAlign ) ? false : obj.UseAlign;
this.Align = ( undefined === obj.Align ) ? undefined : obj.Align;
this.Value = ( undefined === obj.Value ) ? 0 : obj.Value;
}
else
{
this.RelativeFrom = Asc.c_oAscVAnchor.Text;
this.UseAlign = false;
this.Align = undefined;
this.Value = 0;
}
}
CTablePositionV.prototype.get_RelativeFrom = function ()
{
return this.RelativeFrom;
};
CTablePositionV.prototype.put_RelativeFrom = function (v)
{
this.RelativeFrom = v;
};
CTablePositionV.prototype.get_UseAlign = function ()
{
return this.UseAlign;
};
CTablePositionV.prototype.put_UseAlign = function (v)
{
this.UseAlign = v;
};
CTablePositionV.prototype.get_Align = function ()
{
return this.Align;
};
CTablePositionV.prototype.put_Align = function (v)
{
this.Align = v;
};
CTablePositionV.prototype.get_Value = function ()
{
return this.Value;
};
CTablePositionV.prototype.put_Value = function (v)
{
this.Value = v;
};
window['Asc']['CTablePositionH'] = CTablePositionH;
CTablePositionH.prototype['get_RelativeFrom'] = CTablePositionH.prototype.get_RelativeFrom;
CTablePositionH.prototype['put_RelativeFrom'] = CTablePositionH.prototype.put_RelativeFrom;
CTablePositionH.prototype['get_UseAlign'] = CTablePositionH.prototype.get_UseAlign;
CTablePositionH.prototype['put_UseAlign'] = CTablePositionH.prototype.put_UseAlign;
CTablePositionH.prototype['get_Align'] = CTablePositionH.prototype.get_Align;
CTablePositionH.prototype['put_Align'] = CTablePositionH.prototype.put_Align;
CTablePositionH.prototype['get_Value'] = CTablePositionH.prototype.get_Value;
CTablePositionH.prototype['put_Value'] = CTablePositionH.prototype.put_Value;
window['Asc']['CTablePositionV'] = CTablePositionV;
CTablePositionV.prototype['get_RelativeFrom'] = CTablePositionV.prototype.get_RelativeFrom;
CTablePositionV.prototype['put_RelativeFrom'] = CTablePositionV.prototype.put_RelativeFrom;
CTablePositionV.prototype['get_UseAlign'] = CTablePositionV.prototype.get_UseAlign;
CTablePositionV.prototype['put_UseAlign'] = CTablePositionV.prototype.put_UseAlign;
CTablePositionV.prototype['get_Align'] = CTablePositionV.prototype.get_Align;
CTablePositionV.prototype['put_Align'] = CTablePositionV.prototype.put_Align;
CTablePositionV.prototype['get_Value'] = CTablePositionV.prototype.get_Value;
CTablePositionV.prototype['put_Value'] = CTablePositionV.prototype.put_Value;
// ---------------------------------------------------------------
function CTablePropLook(obj)
{
this.FirstCol = false;
this.FirstRow = false;
this.LastCol = false;
this.LastRow = false;
this.BandHor = false;
this.BandVer = false;
if (obj)
{
this.FirstCol = ( undefined === obj.m_bFirst_Col ? false : obj.m_bFirst_Col );
this.FirstRow = ( undefined === obj.m_bFirst_Row ? false : obj.m_bFirst_Row );
this.LastCol = ( undefined === obj.m_bLast_Col ? false : obj.m_bLast_Col );
this.LastRow = ( undefined === obj.m_bLast_Row ? false : obj.m_bLast_Row );
this.BandHor = ( undefined === obj.m_bBand_Hor ? false : obj.m_bBand_Hor );
this.BandVer = ( undefined === obj.m_bBand_Ver ? false : obj.m_bBand_Ver );
}
}
CTablePropLook.prototype.get_FirstCol = function ()
{
return this.FirstCol;
};
CTablePropLook.prototype.put_FirstCol = function (v)
{
this.FirstCol = v;
};
CTablePropLook.prototype.get_FirstRow = function ()
{
return this.FirstRow;
};
CTablePropLook.prototype.put_FirstRow = function (v)
{
this.FirstRow = v;
};
CTablePropLook.prototype.get_LastCol = function ()
{
return this.LastCol;
};
CTablePropLook.prototype.put_LastCol = function (v)
{
this.LastCol = v;
};
CTablePropLook.prototype.get_LastRow = function ()
{
return this.LastRow;
};
CTablePropLook.prototype.put_LastRow = function (v)
{
this.LastRow = v;
};
CTablePropLook.prototype.get_BandHor = function ()
{
return this.BandHor;
};
CTablePropLook.prototype.put_BandHor = function (v)
{
this.BandHor = v;
};
CTablePropLook.prototype.get_BandVer = function ()
{
return this.BandVer;
};
CTablePropLook.prototype.put_BandVer = function (v)
{
this.BandVer = v;
};
window['Asc']['CTablePropLook'] = window['Asc'].CTablePropLook = CTablePropLook;
CTablePropLook.prototype['get_FirstCol'] = CTablePropLook.prototype.get_FirstCol;
CTablePropLook.prototype['put_FirstCol'] = CTablePropLook.prototype.put_FirstCol;
CTablePropLook.prototype['get_FirstRow'] = CTablePropLook.prototype.get_FirstRow;
CTablePropLook.prototype['put_FirstRow'] = CTablePropLook.prototype.put_FirstRow;
CTablePropLook.prototype['get_LastCol'] = CTablePropLook.prototype.get_LastCol;
CTablePropLook.prototype['put_LastCol'] = CTablePropLook.prototype.put_LastCol;
CTablePropLook.prototype['get_LastRow'] = CTablePropLook.prototype.get_LastRow;
CTablePropLook.prototype['put_LastRow'] = CTablePropLook.prototype.put_LastRow;
CTablePropLook.prototype['get_BandHor'] = CTablePropLook.prototype.get_BandHor;
CTablePropLook.prototype['put_BandHor'] = CTablePropLook.prototype.put_BandHor;
CTablePropLook.prototype['get_BandVer'] = CTablePropLook.prototype.get_BandVer;
CTablePropLook.prototype['put_BandVer'] = CTablePropLook.prototype.put_BandVer;
/*
{
TableWidth : null - галочка убрана, либо заданное значение в мм
TableSpacing : null - галочка убрана, либо заданное значение в мм
TableDefaultMargins : // маргины для всей таблицы(значение по умолчанию)
{
Left : 1.9,
Right : 1.9,
Top : 0,
Bottom : 0
}
CellMargins :
{
Left : 1.9, (null - неопределенное значение)
Right : 1.9, (null - неопределенное значение)
Top : 0, (null - неопределенное значение)
Bottom : 0, (null - неопределенное значение)
Flag : 0 - У всех выделенных ячеек значение берется из TableDefaultMargins
1 - У выделенных ячеек есть ячейки с дефолтовыми значениями, и есть со своими собственными
2 - У всех ячеек свои собственные значения
}
TableAlignment : 0, 1, 2 (слева, по центру, справа)
TableIndent : значение в мм,
TableWrappingStyle : 0, 1 (inline, flow)
TablePaddings:
{
Left : 3.2,
Right : 3.2,
Top : 0,
Bottom : 0
}
TableBorders : // границы таблицы
{
Bottom :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Left :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Right :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Top :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
InsideH :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
InsideV :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
}
}
CellBorders : // границы выделенных ячеек
{
ForSelectedCells : true,
Bottom :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Left :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Right :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
Top :
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
InsideH : // данного элемента может не быть, если у выделенных ячеек
// нет горизонтальных внутренних границ
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
},
InsideV : // данного элемента может не быть, если у выделенных ячеек
// нет вертикальных внутренних границ
{
Color : { r : 0, g : 0, b : 0 },
Value : border_Single,
Size : 0.5 * g_dKoef_pt_to_mm
Space :
}
}
TableBackground :
{
Value : тип заливки(прозрачная или нет),
Color : { r : 0, g : 0, b : 0 }
}
CellsBackground : null если заливка не определена для выделенных ячеек
{
Value : тип заливки(прозрачная или нет),
Color : { r : 0, g : 0, b : 0 }
}
Position:
{
X:0,
Y:0
}
}
*/
function CTableProp(tblProp)
{
if (tblProp)
{
this.CanBeFlow = (undefined != tblProp.CanBeFlow ? tblProp.CanBeFlow : false );
this.CellSelect = (undefined != tblProp.CellSelect ? tblProp.CellSelect : false );
this.CellSelect = (undefined != tblProp.CellSelect) ? tblProp.CellSelect : false;
this.TableWidth = (undefined != tblProp.TableWidth) ? tblProp.TableWidth : null;
this.TableSpacing = (undefined != tblProp.TableSpacing) ? tblProp.TableSpacing : null;
this.TableDefaultMargins = (undefined != tblProp.TableDefaultMargins && null != tblProp.TableDefaultMargins) ? new Asc.asc_CPaddings(tblProp.TableDefaultMargins) : null;
this.CellMargins = (undefined != tblProp.CellMargins && null != tblProp.CellMargins) ? new CMargins(tblProp.CellMargins) : null;
this.TableAlignment = (undefined != tblProp.TableAlignment) ? tblProp.TableAlignment : null;
this.TableIndent = (undefined != tblProp.TableIndent) ? tblProp.TableIndent : null;
this.TableWrappingStyle = (undefined != tblProp.TableWrappingStyle) ? tblProp.TableWrappingStyle : null;
this.TablePaddings = (undefined != tblProp.TablePaddings && null != tblProp.TablePaddings) ? new Asc.asc_CPaddings(tblProp.TablePaddings) : null;
this.TableBorders = (undefined != tblProp.TableBorders && null != tblProp.TableBorders) ? new CBorders(tblProp.TableBorders) : null;
this.CellBorders = (undefined != tblProp.CellBorders && null != tblProp.CellBorders) ? new CBorders(tblProp.CellBorders) : null;
this.TableBackground = (undefined != tblProp.TableBackground && null != tblProp.TableBackground) ? new CBackground(tblProp.TableBackground) : null;
this.CellsBackground = (undefined != tblProp.CellsBackground && null != tblProp.CellsBackground) ? new CBackground(tblProp.CellsBackground) : null;
this.Position = (undefined != tblProp.Position && null != tblProp.Position) ? new Asc.CPosition(tblProp.Position) : null;
this.PositionH = ( undefined != tblProp.PositionH && null != tblProp.PositionH ) ? new CTablePositionH(tblProp.PositionH) : undefined;
this.PositionV = ( undefined != tblProp.PositionV && null != tblProp.PositionV ) ? new CTablePositionV(tblProp.PositionV) : undefined;
this.Internal_Position = ( undefined != tblProp.Internal_Position ) ? tblProp.Internal_Position : undefined;
this.ForSelectedCells = (undefined != tblProp.ForSelectedCells) ? tblProp.ForSelectedCells : true;
this.TableStyle = (undefined != tblProp.TableStyle) ? tblProp.TableStyle : null;
this.TableLook = (undefined != tblProp.TableLook) ? new CTablePropLook(tblProp.TableLook) : null;
this.RowsInHeader = (undefined !== tblProp.RowsInHeader) ? tblProp.RowsInHeader : false;
this.CellsVAlign = (undefined != tblProp.CellsVAlign) ? tblProp.CellsVAlign : c_oAscVertAlignJc.Top;
this.AllowOverlap = (undefined != tblProp.AllowOverlap) ? tblProp.AllowOverlap : undefined;
this.TableLayout = tblProp.TableLayout;
this.CellsTextDirection = tblProp.CellsTextDirection;
this.CellsNoWrap = tblProp.CellsNoWrap;
this.CellsWidth = tblProp.CellsWidth;
this.CellsWidthNotEqual = tblProp.CellsWidthNotEqual;
this.Locked = (undefined != tblProp.Locked) ? tblProp.Locked : false;
this.PercentFullWidth = tblProp.PercentFullWidth;
this.TableDescription = tblProp.TableDescription;
this.TableCaption = tblProp.TableCaption;
this.ColumnWidth = tblProp.ColumnWidth;
this.RowHeight = tblProp.RowHeight;
}
else
{
//Все свойства класса CTableProp должны быть undefined если они не изменялись
//this.CanBeFlow = false;
this.CellSelect = false; //обязательное свойство
/*this.TableWidth = null;
this.TableSpacing = null;
this.TableDefaultMargins = new Asc.asc_CPaddings ();
this.CellMargins = new CMargins ();
this.TableAlignment = 0;
this.TableIndent = 0;
this.TableWrappingStyle = c_oAscWrapStyle.Inline;
this.TablePaddings = new Asc.asc_CPaddings ();
this.TableBorders = new CBorders ();
this.CellBorders = new CBorders ();
this.TableBackground = new CBackground ();
this.CellsBackground = new CBackground ();;
this.Position = new CPosition ();
this.ForSelectedCells = true;*/
this.Locked = false;
}
}
CTableProp.prototype.get_Width = function ()
{
return this.TableWidth;
};
CTableProp.prototype.put_Width = function (v)
{
this.TableWidth = v;
};
CTableProp.prototype.get_Spacing = function ()
{
return this.TableSpacing;
};
CTableProp.prototype.put_Spacing = function (v)
{
this.TableSpacing = v;
};
CTableProp.prototype.get_DefaultMargins = function ()
{
return this.TableDefaultMargins;
};
CTableProp.prototype.put_DefaultMargins = function (v)
{
this.TableDefaultMargins = v;
};
CTableProp.prototype.get_CellMargins = function ()
{
return this.CellMargins;
};
CTableProp.prototype.put_CellMargins = function (v)
{
this.CellMargins = v;
};
CTableProp.prototype.get_TableAlignment = function ()
{
return this.TableAlignment;
};
CTableProp.prototype.put_TableAlignment = function (v)
{
this.TableAlignment = v;
};
CTableProp.prototype.get_TableIndent = function ()
{
return this.TableIndent;
};
CTableProp.prototype.put_TableIndent = function (v)
{
this.TableIndent = v;
};
CTableProp.prototype.get_TableWrap = function ()
{
return this.TableWrappingStyle;
};
CTableProp.prototype.put_TableWrap = function (v)
{
this.TableWrappingStyle = v;
};
CTableProp.prototype.get_TablePaddings = function ()
{
return this.TablePaddings;
};
CTableProp.prototype.put_TablePaddings = function (v)
{
this.TablePaddings = v;
};
CTableProp.prototype.get_TableBorders = function ()
{
return this.TableBorders;
};
CTableProp.prototype.put_TableBorders = function (v)
{
this.TableBorders = v;
};
CTableProp.prototype.get_CellBorders = function ()
{
return this.CellBorders;
};
CTableProp.prototype.put_CellBorders = function (v)
{
this.CellBorders = v;
};
CTableProp.prototype.get_TableBackground = function ()
{
return this.TableBackground;
};
CTableProp.prototype.put_TableBackground = function (v)
{
this.TableBackground = v;
};
CTableProp.prototype.get_CellsBackground = function ()
{
return this.CellsBackground;
};
CTableProp.prototype.put_CellsBackground = function (v)
{
this.CellsBackground = v;
};
CTableProp.prototype.get_Position = function ()
{
return this.Position;
};
CTableProp.prototype.put_Position = function (v)
{
this.Position = v;
};
CTableProp.prototype.get_PositionH = function ()
{
return this.PositionH;
};
CTableProp.prototype.put_PositionH = function (v)
{
this.PositionH = v;
};
CTableProp.prototype.get_PositionV = function ()
{
return this.PositionV;
};
CTableProp.prototype.put_PositionV = function (v)
{
this.PositionV = v;
};
CTableProp.prototype.get_Value_X = function (RelativeFrom)
{
if (undefined != this.Internal_Position) return this.Internal_Position.Calculate_X_Value(RelativeFrom);
return 0;
};
CTableProp.prototype.get_Value_Y = function (RelativeFrom)
{
if (undefined != this.Internal_Position) return this.Internal_Position.Calculate_Y_Value(RelativeFrom);
return 0;
};
CTableProp.prototype.get_ForSelectedCells = function ()
{
return this.ForSelectedCells;
};
CTableProp.prototype.put_ForSelectedCells = function (v)
{
this.ForSelectedCells = v;
};
CTableProp.prototype.put_CellSelect = function (v)
{
this.CellSelect = v;
};
CTableProp.prototype.get_CellSelect = function ()
{
return this.CellSelect
};
CTableProp.prototype.get_CanBeFlow = function ()
{
return this.CanBeFlow;
};
CTableProp.prototype.get_RowsInHeader = function ()
{
return this.RowsInHeader;
};
CTableProp.prototype.put_RowsInHeader = function (v)
{
this.RowsInHeader = v;
};
CTableProp.prototype.get_Locked = function ()
{
return this.Locked;
};
CTableProp.prototype.get_CellsVAlign = function ()
{
return this.CellsVAlign;
};
CTableProp.prototype.put_CellsVAlign = function (v)
{
this.CellsVAlign = v;
};
CTableProp.prototype.get_TableLook = function ()
{
return this.TableLook;
};
CTableProp.prototype.put_TableLook = function (v)
{
this.TableLook = v;
};
CTableProp.prototype.get_TableStyle = function ()
{
return this.TableStyle;
};
CTableProp.prototype.put_TableStyle = function (v)
{
this.TableStyle = v;
};
CTableProp.prototype.get_AllowOverlap = function ()
{
return this.AllowOverlap;
};
CTableProp.prototype.put_AllowOverlap = function (v)
{
this.AllowOverlap = v;
};
CTableProp.prototype.get_TableLayout = function ()
{
return this.TableLayout;
};
CTableProp.prototype.put_TableLayout = function (v)
{
this.TableLayout = v;
};
CTableProp.prototype.get_CellsTextDirection = function ()
{
return this.CellsTextDirection;
};
CTableProp.prototype.put_CellsTextDirection = function (v)
{
this.CellsTextDirection = v;
};
CTableProp.prototype.get_CellsNoWrap = function ()
{
return this.CellsNoWrap;
};
CTableProp.prototype.put_CellsNoWrap = function (v)
{
this.CellsNoWrap = v;
};
CTableProp.prototype.get_CellsWidth = function ()
{
return this.CellsWidth;
};
CTableProp.prototype.put_CellsWidth = function (v)
{
this.CellsWidth = v;
};
CTableProp.prototype.get_PercentFullWidth = function ()
{
return this.PercentFullWidth;
};
CTableProp.prototype.get_CellsWidthNotEqual = function ()
{
return this.CellsWidthNotEqual;
};
CTableProp.prototype.get_TableDescription = function ()
{
return this.TableDescription;
};
CTableProp.prototype.put_TableDescription = function (v)
{
this.TableDescription = v;
};
CTableProp.prototype.get_TableCaption = function ()
{
return this.TableCaption;
};
CTableProp.prototype.put_TableCaption = function (v)
{
this.TableCaption = v;
};
CTableProp.prototype.get_ColumnWidth = function()
{
return this.ColumnWidth;
};
CTableProp.prototype.put_ColumnWidth = function(v)
{
this.ColumnWidth = v;
};
CTableProp.prototype.get_RowHeight = function()
{
return this.RowHeight;
};
CTableProp.prototype.put_RowHeight = function(v)
{
this.RowHeight = v;
};
window['Asc']['CTableProp'] = window['Asc'].CTableProp = CTableProp;
CTableProp.prototype['get_Width'] = CTableProp.prototype.get_Width;
CTableProp.prototype['put_Width'] = CTableProp.prototype.put_Width;
CTableProp.prototype['get_Spacing'] = CTableProp.prototype.get_Spacing;
CTableProp.prototype['put_Spacing'] = CTableProp.prototype.put_Spacing;
CTableProp.prototype['get_DefaultMargins'] = CTableProp.prototype.get_DefaultMargins;
CTableProp.prototype['put_DefaultMargins'] = CTableProp.prototype.put_DefaultMargins;
CTableProp.prototype['get_CellMargins'] = CTableProp.prototype.get_CellMargins;
CTableProp.prototype['put_CellMargins'] = CTableProp.prototype.put_CellMargins;
CTableProp.prototype['get_TableAlignment'] = CTableProp.prototype.get_TableAlignment;
CTableProp.prototype['put_TableAlignment'] = CTableProp.prototype.put_TableAlignment;
CTableProp.prototype['get_TableIndent'] = CTableProp.prototype.get_TableIndent;
CTableProp.prototype['put_TableIndent'] = CTableProp.prototype.put_TableIndent;
CTableProp.prototype['get_TableWrap'] = CTableProp.prototype.get_TableWrap;
CTableProp.prototype['put_TableWrap'] = CTableProp.prototype.put_TableWrap;
CTableProp.prototype['get_TablePaddings'] = CTableProp.prototype.get_TablePaddings;
CTableProp.prototype['put_TablePaddings'] = CTableProp.prototype.put_TablePaddings;
CTableProp.prototype['get_TableBorders'] = CTableProp.prototype.get_TableBorders;
CTableProp.prototype['put_TableBorders'] = CTableProp.prototype.put_TableBorders;
CTableProp.prototype['get_CellBorders'] = CTableProp.prototype.get_CellBorders;
CTableProp.prototype['put_CellBorders'] = CTableProp.prototype.put_CellBorders;
CTableProp.prototype['get_TableBackground'] = CTableProp.prototype.get_TableBackground;
CTableProp.prototype['put_TableBackground'] = CTableProp.prototype.put_TableBackground;
CTableProp.prototype['get_CellsBackground'] = CTableProp.prototype.get_CellsBackground;
CTableProp.prototype['put_CellsBackground'] = CTableProp.prototype.put_CellsBackground;
CTableProp.prototype['get_Position'] = CTableProp.prototype.get_Position;
CTableProp.prototype['put_Position'] = CTableProp.prototype.put_Position;
CTableProp.prototype['get_PositionH'] = CTableProp.prototype.get_PositionH;
CTableProp.prototype['put_PositionH'] = CTableProp.prototype.put_PositionH;
CTableProp.prototype['get_PositionV'] = CTableProp.prototype.get_PositionV;
CTableProp.prototype['put_PositionV'] = CTableProp.prototype.put_PositionV;
CTableProp.prototype['get_Value_X'] = CTableProp.prototype.get_Value_X;
CTableProp.prototype['get_Value_Y'] = CTableProp.prototype.get_Value_Y;
CTableProp.prototype['get_ForSelectedCells'] = CTableProp.prototype.get_ForSelectedCells;
CTableProp.prototype['put_ForSelectedCells'] = CTableProp.prototype.put_ForSelectedCells;
CTableProp.prototype['put_CellSelect'] = CTableProp.prototype.put_CellSelect;
CTableProp.prototype['get_CellSelect'] = CTableProp.prototype.get_CellSelect;
CTableProp.prototype['get_CanBeFlow'] = CTableProp.prototype.get_CanBeFlow;
CTableProp.prototype['get_RowsInHeader'] = CTableProp.prototype.get_RowsInHeader;
CTableProp.prototype['put_RowsInHeader'] = CTableProp.prototype.put_RowsInHeader;
CTableProp.prototype['get_Locked'] = CTableProp.prototype.get_Locked;
CTableProp.prototype['get_CellsVAlign'] = CTableProp.prototype.get_CellsVAlign;
CTableProp.prototype['put_CellsVAlign'] = CTableProp.prototype.put_CellsVAlign;
CTableProp.prototype['get_TableLook'] = CTableProp.prototype.get_TableLook;
CTableProp.prototype['put_TableLook'] = CTableProp.prototype.put_TableLook;
CTableProp.prototype['get_TableStyle'] = CTableProp.prototype.get_TableStyle;
CTableProp.prototype['put_TableStyle'] = CTableProp.prototype.put_TableStyle;
CTableProp.prototype['get_AllowOverlap'] = CTableProp.prototype.get_AllowOverlap;
CTableProp.prototype['put_AllowOverlap'] = CTableProp.prototype.put_AllowOverlap;
CTableProp.prototype['get_TableLayout'] = CTableProp.prototype.get_TableLayout;
CTableProp.prototype['put_TableLayout'] = CTableProp.prototype.put_TableLayout;
CTableProp.prototype['get_CellsTextDirection'] = CTableProp.prototype.get_CellsTextDirection;
CTableProp.prototype['put_CellsTextDirection'] = CTableProp.prototype.put_CellsTextDirection;
CTableProp.prototype['get_CellsNoWrap'] = CTableProp.prototype.get_CellsNoWrap;
CTableProp.prototype['put_CellsNoWrap'] = CTableProp.prototype.put_CellsNoWrap;
CTableProp.prototype['get_CellsWidth'] = CTableProp.prototype.get_CellsWidth;
CTableProp.prototype['put_CellsWidth'] = CTableProp.prototype.put_CellsWidth;
CTableProp.prototype['get_PercentFullWidth'] = CTableProp.prototype.get_PercentFullWidth;
CTableProp.prototype['get_CellsWidthNotEqual'] = CTableProp.prototype.get_CellsWidthNotEqual;
CTableProp.prototype['get_TableDescription'] = CTableProp.prototype.get_TableDescription;
CTableProp.prototype['put_TableDescription'] = CTableProp.prototype.put_TableDescription;
CTableProp.prototype['get_TableCaption'] = CTableProp.prototype.get_TableCaption;
CTableProp.prototype['put_TableCaption'] = CTableProp.prototype.put_TableCaption;
CTableProp.prototype['get_ColumnWidth'] = CTableProp.prototype.get_ColumnWidth;
CTableProp.prototype['put_ColumnWidth'] = CTableProp.prototype.put_ColumnWidth;
CTableProp.prototype['get_RowHeight'] = CTableProp.prototype.get_RowHeight;
CTableProp.prototype['put_RowHeight'] = CTableProp.prototype.put_RowHeight;
// ---------------------------------------------------------------
function CBorders(obj)
{
if (obj)
{
this.Left = (undefined != obj.Left && null != obj.Left) ? new Asc.asc_CTextBorder(obj.Left) : null;
this.Top = (undefined != obj.Top && null != obj.Top) ? new Asc.asc_CTextBorder(obj.Top) : null;
this.Right = (undefined != obj.Right && null != obj.Right) ? new Asc.asc_CTextBorder(obj.Right) : null;
this.Bottom = (undefined != obj.Bottom && null != obj.Bottom) ? new Asc.asc_CTextBorder(obj.Bottom) : null;
this.InsideH = (undefined != obj.InsideH && null != obj.InsideH) ? new Asc.asc_CTextBorder(obj.InsideH) : null;
this.InsideV = (undefined != obj.InsideV && null != obj.InsideV) ? new Asc.asc_CTextBorder(obj.InsideV) : null;
}
//Все свойства класса CBorders должны быть undefined если они не изменялись
/*else
{
this.Left = null;
this.Top = null;
this.Right = null;
this.Bottom = null;
this.InsideH = null;
this.InsideV = null;
}*/
}
CBorders.prototype.get_Left = function ()
{
return this.Left;
};
CBorders.prototype.put_Left = function (v)
{
this.Left = (v) ? new Asc.asc_CTextBorder(v) : null;
};
CBorders.prototype.get_Top = function ()
{
return this.Top;
};
CBorders.prototype.put_Top = function (v)
{
this.Top = (v) ? new Asc.asc_CTextBorder(v) : null;
};
CBorders.prototype.get_Right = function ()
{
return this.Right;
};
CBorders.prototype.put_Right = function (v)
{
this.Right = (v) ? new Asc.asc_CTextBorder(v) : null;
};
CBorders.prototype.get_Bottom = function ()
{
return this.Bottom;
};
CBorders.prototype.put_Bottom = function (v)
{
this.Bottom = (v) ? new Asc.asc_CTextBorder(v) : null;
};
CBorders.prototype.get_InsideH = function ()
{
return this.InsideH;
};
CBorders.prototype.put_InsideH = function (v)
{
this.InsideH = (v) ? new Asc.asc_CTextBorder(v) : null;
};
CBorders.prototype.get_InsideV = function ()
{
return this.InsideV;
};
CBorders.prototype.put_InsideV = function (v)
{
this.InsideV = (v) ? new Asc.asc_CTextBorder(v) : null;
};
function CMargins(obj)
{
if (obj)
{
this.Left = (undefined != obj.Left) ? obj.Left : null;
this.Right = (undefined != obj.Right) ? obj.Right : null;
this.Top = (undefined != obj.Top) ? obj.Top : null;
this.Bottom = (undefined != obj.Bottom) ? obj.Bottom : null;
this.Flag = (undefined != obj.Flag) ? obj.Flag : null;
}
else
{
this.Left = null;
this.Right = null;
this.Top = null;
this.Bottom = null;
this.Flag = null;
}
}
CMargins.prototype.get_Left = function ()
{
return this.Left;
};
CMargins.prototype.put_Left = function (v)
{
this.Left = v;
};
CMargins.prototype.get_Right = function ()
{
return this.Right;
};
CMargins.prototype.put_Right = function (v)
{
this.Right = v;
};
CMargins.prototype.get_Top = function ()
{
return this.Top;
};
CMargins.prototype.put_Top = function (v)
{
this.Top = v;
};
CMargins.prototype.get_Bottom = function ()
{
return this.Bottom;
};
CMargins.prototype.put_Bottom = function (v)
{
this.Bottom = v;
};
CMargins.prototype.get_Flag = function ()
{
return this.Flag;
};
CMargins.prototype.put_Flag = function (v)
{
this.Flag = v;
};
window['Asc']['CBorders'] = window['Asc'].CBorders = CBorders;
CBorders.prototype['get_Left'] = CBorders.prototype.get_Left;
CBorders.prototype['put_Left'] = CBorders.prototype.put_Left;
CBorders.prototype['get_Top'] = CBorders.prototype.get_Top;
CBorders.prototype['put_Top'] = CBorders.prototype.put_Top;
CBorders.prototype['get_Right'] = CBorders.prototype.get_Right;
CBorders.prototype['put_Right'] = CBorders.prototype.put_Right;
CBorders.prototype['get_Bottom'] = CBorders.prototype.get_Bottom;
CBorders.prototype['put_Bottom'] = CBorders.prototype.put_Bottom;
CBorders.prototype['get_InsideH'] = CBorders.prototype.get_InsideH;
CBorders.prototype['put_InsideH'] = CBorders.prototype.put_InsideH;
CBorders.prototype['get_InsideV'] = CBorders.prototype.get_InsideV;
CBorders.prototype['put_InsideV'] = CBorders.prototype.put_InsideV;
window['Asc']['CMargins'] = window['Asc'].CMargins = CMargins;
CMargins.prototype['get_Left'] = CMargins.prototype.get_Left;
CMargins.prototype['put_Left'] = CMargins.prototype.put_Left;
CMargins.prototype['get_Right'] = CMargins.prototype.get_Right;
CMargins.prototype['put_Right'] = CMargins.prototype.put_Right;
CMargins.prototype['get_Top'] = CMargins.prototype.get_Top;
CMargins.prototype['put_Top'] = CMargins.prototype.put_Top;
CMargins.prototype['get_Bottom'] = CMargins.prototype.get_Bottom;
CMargins.prototype['put_Bottom'] = CMargins.prototype.put_Bottom;
CMargins.prototype['get_Flag'] = CMargins.prototype.get_Flag;
CMargins.prototype['put_Flag'] = CMargins.prototype.put_Flag;
// ---------------------------------------------------------------
function CParagraphPropEx(obj)
{
if (obj)
{
this.ContextualSpacing = (undefined != obj.ContextualSpacing) ? obj.ContextualSpacing : null;
this.Ind = (undefined != obj.Ind && null != obj.Ind) ? new Asc.asc_CParagraphInd(obj.Ind) : null;
this.Jc = (undefined != obj.Jc) ? obj.Jc : null;
this.KeepLines = (undefined != obj.KeepLines) ? obj.KeepLines : null;
this.KeepNext = (undefined != obj.KeepNext) ? obj.KeepNext : null;
this.PageBreakBefore = (undefined != obj.PageBreakBefore) ? obj.PageBreakBefore : null;
this.Spacing = (undefined != obj.Spacing && null != obj.Spacing) ? new AscCommon.asc_CParagraphSpacing(obj.Spacing) : null;
this.Shd = (undefined != obj.Shd && null != obj.Shd) ? new Asc.asc_CParagraphShd(obj.Shd) : null;
this.WidowControl = (undefined != obj.WidowControl) ? obj.WidowControl : null; // Запрет висячих строк
this.Tabs = obj.Tabs;
}
else
{
//ContextualSpacing : false, // Удалять ли интервал между параграфами одинакового стиля
//
// Ind :
// {
// Left : 0, // Левый отступ
// Right : 0, // Правый отступ
// FirstLine : 0 // Первая строка
// },
//
// Jc : align_Left, // Прилегание параграфа
//
// KeepLines : false, // переносить параграф на новую страницу,
// // если на текущей он целиком не убирается
// KeepNext : false, // переносить параграф вместе со следующим параграфом
//
// PageBreakBefore : false, // начинать параграф с новой страницы
// Spacing :
// {
// Line : 1.15, // Расстояние между строками внутри абзаца
// LineRule : linerule_Auto, // Тип расстрояния между строками
// Before : 0, // Дополнительное расстояние до абзаца
// After : 10 * g_dKoef_pt_to_mm // Дополнительное расстояние после абзаца
// },
//
// Shd :
// {
// Value : shd_Nil,
// Color :
// {
// r : 255,
// g : 255,
// b : 255
// }
// },
//
// WidowControl : true, // Запрет висячих строк
//
// Tabs : []
this.ContextualSpacing = false;
this.Ind = new Asc.asc_CParagraphInd();
this.Jc = AscCommon.align_Left;
this.KeepLines = false;
this.KeepNext = false;
this.PageBreakBefore = false;
this.Spacing = new AscCommon.asc_CParagraphSpacing();
this.Shd = new Asc.asc_CParagraphShd();
this.WidowControl = true; // Запрет висячих строк
this.Tabs = null;
}
}
CParagraphPropEx.prototype.get_ContextualSpacing = function ()
{
return this.ContextualSpacing;
};
CParagraphPropEx.prototype.get_Ind = function ()
{
return this.Ind;
};
CParagraphPropEx.prototype.get_Jc = function ()
{
return this.Jc;
};
CParagraphPropEx.prototype.get_KeepLines = function ()
{
return this.KeepLines;
};
CParagraphPropEx.prototype.get_KeepNext = function ()
{
return this.KeepNext;
};
CParagraphPropEx.prototype.get_PageBreakBefore = function ()
{
return this.PageBreakBefore;
};
CParagraphPropEx.prototype.get_Spacing = function ()
{
return this.Spacing;
};
CParagraphPropEx.prototype.get_Shd = function ()
{
return this.Shd;
};
CParagraphPropEx.prototype.get_WidowControl = function ()
{
return this.WidowControl;
};
CParagraphPropEx.prototype.get_Tabs = function ()
{
return this.Tabs;
};
function CTextProp(obj)
{
if (obj)
{
this.Bold = (undefined != obj.Bold) ? obj.Bold : null;
this.Italic = (undefined != obj.Italic) ? obj.Italic : null;
this.Underline = (undefined != obj.Underline) ? obj.Underline : null;
this.Strikeout = (undefined != obj.Strikeout) ? obj.Strikeout : null;
this.FontFamily = (undefined != obj.FontFamily && null != obj.FontFamily) ? new AscCommon.asc_CTextFontFamily(obj.FontFamily) : new AscCommon.asc_CTextFontFamily({Name : "", Index : -1});
this.FontSize = (undefined != obj.FontSize) ? obj.FontSize : null;
this.Color = (undefined != obj.Color && null != obj.Color) ? AscCommon.CreateAscColorCustom(obj.Color.r, obj.Color.g, obj.Color.b) : null;
this.VertAlign = (undefined != obj.VertAlign) ? obj.VertAlign : null;
this.HighLight = (undefined != obj.HighLight) ? obj.HighLight == AscCommonWord.highlight_None ? obj.HighLight : new AscCommon.CColor(obj.HighLight.r, obj.HighLight.g, obj.HighLight.b) : null;
this.DStrikeout = (undefined != obj.DStrikeout) ? obj.DStrikeout : null;
this.Spacing = (undefined != obj.Spacing) ? obj.Spacing : null;
this.Caps = (undefined != obj.Caps) ? obj.Caps : null;
this.SmallCaps = (undefined != obj.SmallCaps) ? obj.SmallCaps : null;
}
else
{
// Bold : false,
// Italic : false,
// Underline : false,
// Strikeout : false,
// FontFamily :
// {
// Name : "Times New Roman",
// Index : -1
// },
// FontSize : 12,
// Color :
// {
// r : 0,
// g : 0,
// b : 0
// },
// VertAlign : vertalign_Baseline,
// HighLight : highlight_None
this.Bold = false;
this.Italic = false;
this.Underline = false;
this.Strikeout = false;
this.FontFamily = new AscCommon.asc_CTextFontFamily();
this.FontSize = 12;
this.Color = AscCommon.CreateAscColorCustom(0, 0, 0);
this.VertAlign = AscCommon.vertalign_Baseline;
this.HighLight = AscCommonWord.highlight_None;
this.DStrikeout = false;
this.Spacing = 0;
this.Caps = false;
this.SmallCaps = false;
}
}
CTextProp.prototype.get_Bold = function ()
{
return this.Bold;
};
CTextProp.prototype.get_Italic = function ()
{
return this.Italic;
};
CTextProp.prototype.get_Underline = function ()
{
return this.Underline;
};
CTextProp.prototype.get_Strikeout = function ()
{
return this.Strikeout;
};
CTextProp.prototype.get_FontFamily = function ()
{
return this.FontFamily;
};
CTextProp.prototype.get_FontSize = function ()
{
return this.FontSize;
};
CTextProp.prototype.get_Color = function ()
{
return this.Color;
};
CTextProp.prototype.get_VertAlign = function ()
{
return this.VertAlign;
};
CTextProp.prototype.get_HighLight = function ()
{
return this.HighLight;
};
CTextProp.prototype.get_Spacing = function ()
{
return this.Spacing;
};
CTextProp.prototype.get_DStrikeout = function ()
{
return this.DStrikeout;
};
CTextProp.prototype.get_Caps = function ()
{
return this.Caps;
};
CTextProp.prototype.get_SmallCaps = function ()
{
return this.SmallCaps;
};
CParagraphPropEx.prototype['get_ContextualSpacing'] = CParagraphPropEx.prototype.get_ContextualSpacing;
CParagraphPropEx.prototype['get_Ind'] = CParagraphPropEx.prototype.get_Ind;
CParagraphPropEx.prototype['get_Jc'] = CParagraphPropEx.prototype.get_Jc;
CParagraphPropEx.prototype['get_KeepLines'] = CParagraphPropEx.prototype.get_KeepLines;
CParagraphPropEx.prototype['get_KeepNext'] = CParagraphPropEx.prototype.get_KeepNext;
CParagraphPropEx.prototype['get_PageBreakBefore'] = CParagraphPropEx.prototype.get_PageBreakBefore;
CParagraphPropEx.prototype['get_Spacing'] = CParagraphPropEx.prototype.get_Spacing;
CParagraphPropEx.prototype['get_Shd'] = CParagraphPropEx.prototype.get_Shd;
CParagraphPropEx.prototype['get_WidowControl'] = CParagraphPropEx.prototype.get_WidowControl;
CParagraphPropEx.prototype['get_Tabs'] = CParagraphPropEx.prototype.get_Tabs;
CTextProp.prototype['get_Bold'] = CTextProp.prototype.get_Bold;
CTextProp.prototype['get_Italic'] = CTextProp.prototype.get_Italic;
CTextProp.prototype['get_Underline'] = CTextProp.prototype.get_Underline;
CTextProp.prototype['get_Strikeout'] = CTextProp.prototype.get_Strikeout;
CTextProp.prototype['get_FontFamily'] = CTextProp.prototype.get_FontFamily;
CTextProp.prototype['get_FontSize'] = CTextProp.prototype.get_FontSize;
CTextProp.prototype['get_Color'] = CTextProp.prototype.get_Color;
CTextProp.prototype['get_VertAlign'] = CTextProp.prototype.get_VertAlign;
CTextProp.prototype['get_HighLight'] = CTextProp.prototype.get_HighLight;
CTextProp.prototype['get_Spacing'] = CTextProp.prototype.get_Spacing;
CTextProp.prototype['get_DStrikeout'] = CTextProp.prototype.get_DStrikeout;
CTextProp.prototype['get_Caps'] = CTextProp.prototype.get_Caps;
CTextProp.prototype['get_SmallCaps'] = CTextProp.prototype.get_SmallCaps;
/**
* Paragraph and text properties objects container
* @param paragraphProp
* @param textProp
* @constructor
*/
function CParagraphAndTextProp(paragraphProp, textProp)
{
this.ParaPr = (undefined != paragraphProp && null != paragraphProp) ? new CParagraphPropEx(paragraphProp) : null;
this.TextPr = (undefined != textProp && null != textProp) ? new CTextProp(textProp) : null;
}
/**
* @returns {?CParagraphPropEx}
*/
CParagraphAndTextProp.prototype.get_ParaPr = function ()
{
return this.ParaPr;
};
/**
* @returns {?CTextProp}
*/
CParagraphAndTextProp.prototype.get_TextPr = function ()
{
return this.TextPr;
};
window['Asc']['CParagraphAndTextProp'] = window['Asc'].CParagraphAndTextProp = CParagraphAndTextProp;
CParagraphAndTextProp.prototype['get_ParaPr'] = CParagraphAndTextProp.prototype.get_ParaPr;
CParagraphAndTextProp.prototype['get_TextPr'] = CParagraphAndTextProp.prototype.get_TextPr;
// ---------------------------------------------------------------
function GenerateTableStyles(drawingDoc, logicDoc, tableLook)
{
var _dst_styles = [];
var _styles = logicDoc.Styles.Get_AllTableStyles();
var _styles_len = _styles.length;
if (_styles_len == 0)
return _dst_styles;
var _x_mar = 10;
var _y_mar = 10;
var _r_mar = 10;
var _b_mar = 10;
var _pageW = 297;
var _pageH = 210;
var W = (_pageW - _x_mar - _r_mar);
var H = (_pageH - _y_mar - _b_mar);
var Grid = [];
var Rows = 5;
var Cols = 5;
for (var i = 0; i < Cols; i++)
Grid[i] = W / Cols;
var _canvas = document.createElement('canvas');
if (!this.m_oWordControl.bIsRetinaSupport)
{
_canvas.width = TABLE_STYLE_WIDTH_PIX;
_canvas.height = TABLE_STYLE_HEIGHT_PIX;
}
else
{
_canvas.width = AscCommon.AscBrowser.convertToRetinaValue(TABLE_STYLE_WIDTH_PIX, true);
_canvas.height = AscCommon.AscBrowser.convertToRetinaValue(TABLE_STYLE_HEIGHT_PIX, true);
}
var ctx = _canvas.getContext('2d');
AscCommon.History.TurnOff();
for (var i1 = 0; i1 < _styles_len; i1++)
{
var i = _styles[i1];
var _style = logicDoc.Styles.Style[i];
if (!_style || _style.Type != styletype_Table)
continue;
var table = new CTable(drawingDoc, logicDoc, true, Rows, Cols, Grid);
table.Set_Props({TableStyle: i});
for (var j = 0; j < Rows; j++)
table.Content[j].Set_Height(H / Rows, Asc.linerule_AtLeast);
ctx.fillStyle = "#FFFFFF";
ctx.fillRect(0, 0, _canvas.width, _canvas.height);
var graphics = new AscCommon.CGraphics();
graphics.init(ctx, _canvas.width, _canvas.height, _pageW, _pageH);
graphics.m_oFontManager = AscCommon.g_fontManager;
graphics.transform(1, 0, 0, 1, 0, 0);
table.Reset(_x_mar, _y_mar, 1000, 1000, 0, 0, 1);
table.Recalculate_Page(0);
table.Draw(0, graphics);
var _styleD = new CAscTableStyle();
_styleD.Type = 0;
_styleD.Image = _canvas.toDataURL("image/png");
_styleD.Id = i;
_dst_styles.push(_styleD);
}
AscCommon.History.TurnOn();
return _dst_styles;
}
/*
структура заголовков, предварительно, выглядит так
{
headerText: "Header1",//заголовок
pageNumber: 0, //содержит номер страницы, где находится искомая последовательность
X: 0,//координаты по OX начала последовательности на данной страницы
Y: 0,//координаты по OY начала последовательности на данной страницы
level: 0//уровень заголовка
}
заголовки приходят либо в списке, либо последовательно.
*/
function CHeader(obj)
{
if (obj)
{
this.headerText = (undefined != obj.headerText) ? obj.headerText : null; //заголовок
this.pageNumber = (undefined != obj.pageNumber) ? obj.pageNumber : null; //содержит номер страницы, где находится искомая последовательность
this.X = (undefined != obj.X) ? obj.X : null; //координаты по OX начала последовательности на данной страницы
this.Y = (undefined != obj.Y) ? obj.Y : null; //координаты по OY начала последовательности на данной страницы
this.level = (undefined != obj.level) ? obj.level : null; //позиция заголовка
}
else
{
this.headerText = null; //заголовок
this.pageNumber = null; //содержит номер страницы, где находится искомая последовательность
this.X = null; //координаты по OX начала последовательности на данной страницы
this.Y = null; //координаты по OY начала последовательности на данной страницы
this.level = null; //позиция заголовка
}
}
CHeader.prototype.get_headerText = function ()
{
return this.headerText;
};
CHeader.prototype.get_pageNumber = function ()
{
return this.pageNumber;
};
CHeader.prototype.get_X = function ()
{
return this.X;
};
CHeader.prototype.get_Y = function ()
{
return this.Y;
};
CHeader.prototype.get_Level = function ()
{
return this.level;
};
window['Asc']['CHeader'] = window['Asc'].CHeader = CHeader;
CHeader.prototype['get_headerText'] = CHeader.prototype.get_headerText;
CHeader.prototype['get_pageNumber'] = CHeader.prototype.get_pageNumber;
CHeader.prototype['get_X'] = CHeader.prototype.get_X;
CHeader.prototype['get_Y'] = CHeader.prototype.get_Y;
CHeader.prototype['get_Level'] = CHeader.prototype.get_Level;
/**
* Класс для работы с настройками таблицы содержимого
* @constructor
*/
function CTableOfContentsPr()
{
this.Hyperlink = true;
this.OutlineStart = -1;
this.OutlineEnd = -1;
this.Styles = [];
this.PageNumbers = true;
this.RightTab = true;
// Эти параметры задаются только из интерфейса
this.TabLeader = undefined;
this.StylesType = Asc.c_oAscTOCStylesType.Current;
this.ComplexField = null;
}
CTableOfContentsPr.prototype.InitFromTOCInstruction = function(oComplexField)
{
if (!oComplexField)
return;
var oInstruction = oComplexField.GetInstruction();
if (!oInstruction)
return;
this.Hyperlink = oInstruction.IsHyperlinks();
this.OutlineStart = oInstruction.GetHeadingRangeStart();
this.OutlineEnd = oInstruction.GetHeadingRangeEnd();
this.Styles = oInstruction.GetStylesArray();
this.PageNumbers = !oInstruction.IsSkipPageRefLvl();
this.RightTab = "" === oInstruction.GetSeparator();
var oBeginChar = oComplexField.GetBeginChar();
if (oBeginChar && oBeginChar.GetRun() && oBeginChar.GetRun().GetParagraph())
{
var oTabs = oBeginChar.GetRun().GetParagraph().GetParagraphTabs();
if (oTabs.Tabs.length > 0)
{
this.TabLeader = oTabs.Tabs[oTabs.Tabs.length - 1].Leader;
}
}
this.ComplexField = oComplexField;
};
CTableOfContentsPr.prototype.InitFromSdtTOC = function(oSdtTOC)
{
this.ComplexField = oSdtTOC;
};
CTableOfContentsPr.prototype.CheckStylesType = function(oStyles)
{
if (oStyles)
this.StylesType = oStyles.GetTOCStylesType();
};
CTableOfContentsPr.prototype.get_Hyperlink = function()
{
return this.Hyperlink;
};
CTableOfContentsPr.prototype.put_Hyperlink = function(isHyperlink)
{
this.Hyperlink = isHyperlink;
};
CTableOfContentsPr.prototype.get_OutlineStart = function()
{
return this.OutlineStart;
};
CTableOfContentsPr.prototype.get_OutlineEnd = function()
{
return this.OutlineEnd;
};
CTableOfContentsPr.prototype.put_OutlineRange = function(nStart, nEnd)
{
this.OutlineStart = nStart;
this.OutlineEnd = nEnd;
};
CTableOfContentsPr.prototype.get_StylesCount = function()
{
return this.Styles.length;
};
CTableOfContentsPr.prototype.get_StyleName = function(nIndex)
{
if (nIndex < 0 || nIndex >= this.Styles.length)
return "";
return this.Styles[nIndex].Name;
};
CTableOfContentsPr.prototype.get_StyleLevel = function(nIndex)
{
if (nIndex < 0 || nIndex >= this.Styles.length)
return -1;
return this.Styles[nIndex].Lvl;
};
CTableOfContentsPr.prototype.get_Styles = function()
{
return this.Styles;
};
CTableOfContentsPr.prototype.clear_Styles = function()
{
this.Styles = [];
};
CTableOfContentsPr.prototype.add_Style = function(sName, nLvl)
{
this.Styles.push({Name : sName, Lvl : nLvl});
};
CTableOfContentsPr.prototype.put_ShowPageNumbers = function(isShow)
{
this.PageNumbers = isShow;
};
CTableOfContentsPr.prototype.get_ShowPageNumbers = function()
{
return this.PageNumbers;
};
CTableOfContentsPr.prototype.put_RightAlignTab = function(isRightTab)
{
this.RightTab = isRightTab;
};
CTableOfContentsPr.prototype.get_RightAlignTab = function()
{
return this.RightTab;
};
CTableOfContentsPr.prototype.put_TabLeader = function(nTabLeader)
{
this.TabLeader = nTabLeader;
};
CTableOfContentsPr.prototype.get_TabLeader = function()
{
return this.TabLeader;
};
CTableOfContentsPr.prototype.get_StylesType = function()
{
return this.StylesType;
};
CTableOfContentsPr.prototype.put_StylesType = function(nType)
{
this.StylesType = nType;
};
CTableOfContentsPr.prototype.get_InternalClass = function()
{
return this.ComplexField;
};
window['Asc']['CTableOfContentsPr'] = window['Asc'].CTableOfContentsPr = CTableOfContentsPr;
CTableOfContentsPr.prototype['get_Hyperlink'] = CTableOfContentsPr.prototype.get_Hyperlink;
CTableOfContentsPr.prototype['put_Hyperlink'] = CTableOfContentsPr.prototype.put_Hyperlink;
CTableOfContentsPr.prototype['get_OutlineStart'] = CTableOfContentsPr.prototype.get_OutlineStart;
CTableOfContentsPr.prototype['get_OutlineEnd'] = CTableOfContentsPr.prototype.get_OutlineEnd;
CTableOfContentsPr.prototype['put_OutlineRange'] = CTableOfContentsPr.prototype.put_OutlineRange;
CTableOfContentsPr.prototype['get_StylesCount'] = CTableOfContentsPr.prototype.get_StylesCount;
CTableOfContentsPr.prototype['get_StyleName'] = CTableOfContentsPr.prototype.get_StyleName;
CTableOfContentsPr.prototype['get_StyleLevel'] = CTableOfContentsPr.prototype.get_StyleLevel;
CTableOfContentsPr.prototype['clear_Styles'] = CTableOfContentsPr.prototype.clear_Styles;
CTableOfContentsPr.prototype['add_Style'] = CTableOfContentsPr.prototype.add_Style;
CTableOfContentsPr.prototype['put_ShowPageNumbers'] = CTableOfContentsPr.prototype.put_ShowPageNumbers;
CTableOfContentsPr.prototype['get_ShowPageNumbers'] = CTableOfContentsPr.prototype.get_ShowPageNumbers;
CTableOfContentsPr.prototype['put_RightAlignTab'] = CTableOfContentsPr.prototype.put_RightAlignTab;
CTableOfContentsPr.prototype['get_RightAlignTab'] = CTableOfContentsPr.prototype.get_RightAlignTab;
CTableOfContentsPr.prototype['get_TabLeader'] = CTableOfContentsPr.prototype.get_TabLeader;
CTableOfContentsPr.prototype['put_TabLeader'] = CTableOfContentsPr.prototype.put_TabLeader;
CTableOfContentsPr.prototype['get_StylesType'] = CTableOfContentsPr.prototype.get_StylesType;
CTableOfContentsPr.prototype['put_StylesType'] = CTableOfContentsPr.prototype.put_StylesType;
CTableOfContentsPr.prototype['get_InternalClass'] = CTableOfContentsPr.prototype.get_InternalClass;
/**
* Класс для работы с настройками стиля
* @constructor
*/
function CAscStyle()
{
this.Name = "";
this.Type = Asc.c_oAscStyleType.Paragraph;
this.qFormat = undefined;
this.uiPriority = undefined;
this.StyleId = "";
}
CAscStyle.prototype.get_Name = function()
{
return this.Name;
};
CAscStyle.prototype.put_Name = function(sName)
{
this.Name = sName;
};
CAscStyle.prototype.get_Type = function()
{
return this.Type;
};
CAscStyle.prototype.put_Type = function(nType)
{
this.Type = nType;
};
CAscStyle.prototype.get_QFormat = function()
{
return this.qFormat;
};
CAscStyle.prototype.put_QFormat = function(isQFormat)
{
this.qFormat = isQFormat;
};
CAscStyle.prototype.get_UIPriority = function()
{
return this.uiPriority;
};
CAscStyle.prototype.put_UIPriority = function(nPriority)
{
this.uiPriority = nPriority;
};
CAscStyle.prototype.get_StyleId = function()
{
return this.StyleId;
};
window['Asc']['CAscStyle'] = window['Asc'].CAscStyle = CAscStyle;
CAscStyle.prototype['get_Name'] = CAscStyle.prototype.get_Name;
CAscStyle.prototype['put_Name'] = CAscStyle.prototype.put_Name;
CAscStyle.prototype['get_Type'] = CAscStyle.prototype.get_Type;
CAscStyle.prototype['put_Type'] = CAscStyle.prototype.put_Type;
CAscStyle.prototype['get_QFormat'] = CAscStyle.prototype.get_QFormat;
CAscStyle.prototype['put_QFormat'] = CAscStyle.prototype.put_QFormat;
CAscStyle.prototype['get_UIPriority'] = CAscStyle.prototype.get_UIPriority;
CAscStyle.prototype['put_UIPriority'] = CAscStyle.prototype.put_UIPriority;
CAscStyle.prototype['get_StyleId'] = CAscStyle.prototype.get_StyleId;
/**
* Класс для работы с настройками нумерации
* @constructor
*/
function CAscNumbering()
{
this.NumId = "";
this.Lvl = new Array(9);
for (var nLvl = 0; nLvl < 9; ++nLvl)
{
this.Lvl[nLvl] = new CAscNumberingLvl(nLvl);
}
}
CAscNumbering.prototype.get_InternalId = function()
{
return this.NumId;
};
CAscNumbering.prototype.get_Lvl = function(nLvl)
{
if (nLvl < 0)
return this.Lvl[0];
else if (nLvl > 8)
return this.Lvl[8];
else if (!this.Lvl[nLvl])
return this.Lvl[0];
return this.Lvl[nLvl];
};
window['Asc']['CAscNumbering'] = window['Asc'].CAscNumbering = CAscNumbering;
CAscNumbering.prototype['get_InternalId'] = CAscNumbering.prototype.get_InternalId;
CAscNumbering.prototype['get_Lvl'] = CAscNumbering.prototype.get_Lvl;
/**
* Класс для работы с текстом конкретного уровня нумерации
* @constructor
*/
function CAscNumberingLvlText(Type, Value)
{
this.Type = undefined !== Type ? Type : Asc.c_oAscNumberingLvlTextType.Text;
this.Value = undefined !== Value ? Value : "";
}
CAscNumberingLvlText.prototype.get_Type = function()
{
return this.Type;
};
CAscNumberingLvlText.prototype.put_Type = function(nType)
{
this.Type = nType;
};
CAscNumberingLvlText.prototype.get_Value = function()
{
return this.Value;
};
CAscNumberingLvlText.prototype.put_Value = function(vVal)
{
this.Value = vVal;
};
window['Asc']['CAscNumberingLvlText'] = window['Asc'].CAscNumberingLvlText = CAscNumberingLvlText;
CAscNumberingLvlText.prototype['get_Type'] = CAscNumberingLvlText.prototype.get_Type;
CAscNumberingLvlText.prototype['put_Type'] = CAscNumberingLvlText.prototype.put_Type;
CAscNumberingLvlText.prototype['get_Value'] = CAscNumberingLvlText.prototype.get_Value;
CAscNumberingLvlText.prototype['put_Value'] = CAscNumberingLvlText.prototype.put_Value;
/**
* Класс для работы с настройками конкретного уровня нумерации
* @constructor
*/
function CAscNumberingLvl(nLvlNum)
{
this.LvlNum = nLvlNum;
this.Format = Asc.c_oAscNumberingFormat.Bullet;
this.Text = [];
this.TextPr = new AscCommonWord.CTextPr();
this.ParaPr = new AscCommonWord.CParaPr();
this.Start = 1;
this.Restart = -1;
this.Suff = Asc.c_oAscNumberingSuff.Tab;
this.Align = AscCommon.align_Left;
}
CAscNumberingLvl.prototype.get_LvlNum = function()
{
return this.LvlNum;
};
CAscNumberingLvl.prototype.get_Format = function()
{
return this.Format;
};
CAscNumberingLvl.prototype.put_Format = function(nFormat)
{
this.Format = nFormat;
};
CAscNumberingLvl.prototype.get_Text = function()
{
return this.Text;
};
CAscNumberingLvl.prototype.put_Text = function(arrText)
{
this.Text = arrText;
};
CAscNumberingLvl.prototype.get_TextPr = function()
{
return this.TextPr;
};
CAscNumberingLvl.prototype.get_ParaPr = function()
{
return this.ParaPr;
};
CAscNumberingLvl.prototype.get_Start = function()
{
return this.Start;
};
CAscNumberingLvl.prototype.put_Start = function(nStart)
{
this.Start = nStart;
};
CAscNumberingLvl.prototype.get_Restart = function()
{
return this.Restart;
};
CAscNumberingLvl.prototype.put_Restart = function(nRestart)
{
this.Restart = nRestart;
};
CAscNumberingLvl.prototype.get_Suff = function()
{
return this.Suff;
};
CAscNumberingLvl.prototype.put_Suff = function(nSuff)
{
this.Suff = nSuff;
};
CAscNumberingLvl.prototype.get_Align = function()
{
return this.Align;
};
CAscNumberingLvl.prototype.put_Align = function(nAlign)
{
this.Align = nAlign;
};
window['Asc']['CAscNumberingLvl'] = window['Asc'].CAscNumberingLvl = CAscNumberingLvl;
CAscNumberingLvl.prototype['get_LvlNum'] = CAscNumberingLvl.prototype.get_LvlNum;
CAscNumberingLvl.prototype['get_Format'] = CAscNumberingLvl.prototype.get_Format;
CAscNumberingLvl.prototype['put_Format'] = CAscNumberingLvl.prototype.put_Format;
CAscNumberingLvl.prototype['get_Text'] = CAscNumberingLvl.prototype.get_Text;
CAscNumberingLvl.prototype['put_Text'] = CAscNumberingLvl.prototype.put_Text;
CAscNumberingLvl.prototype['get_TextPr'] = CAscNumberingLvl.prototype.get_TextPr;
CAscNumberingLvl.prototype['get_ParaPr'] = CAscNumberingLvl.prototype.get_ParaPr;
CAscNumberingLvl.prototype['get_Start'] = CAscNumberingLvl.prototype.get_Start;
CAscNumberingLvl.prototype['put_Start'] = CAscNumberingLvl.prototype.put_Start;
CAscNumberingLvl.prototype['get_Restart'] = CAscNumberingLvl.prototype.get_Restart;
CAscNumberingLvl.prototype['put_Restart'] = CAscNumberingLvl.prototype.put_Restart;
CAscNumberingLvl.prototype['get_Suff'] = CAscNumberingLvl.prototype.get_Suff;
CAscNumberingLvl.prototype['put_Suff'] = CAscNumberingLvl.prototype.put_Suff;
CAscNumberingLvl.prototype['get_Align'] = CAscNumberingLvl.prototype.get_Align;
CAscNumberingLvl.prototype['put_Align'] = CAscNumberingLvl.prototype.put_Align;
})(window, undefined);
/*
* (c) Copyright Ascensio System SIA 2010-2018
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
"use strict";
var editor;
(/**
* @param {Window} window
* @param {undefined} undefined
*/
function(window, undefined) {
var asc = window["Asc"];
var prot;
var c_oAscAdvancedOptionsAction = AscCommon.c_oAscAdvancedOptionsAction;
var DownloadType = AscCommon.DownloadType;
var c_oAscLockTypes = AscCommon.c_oAscLockTypes;
var CColor = AscCommon.CColor;
var g_oDocumentUrls = AscCommon.g_oDocumentUrls;
var sendCommand = AscCommon.sendCommand;
var mapAscServerErrorToAscError = AscCommon.mapAscServerErrorToAscError;
var parserHelp = AscCommon.parserHelp;
var g_oIdCounter = AscCommon.g_oIdCounter;
var g_oTableId = AscCommon.g_oTableId;
var c_oAscLockTypeElem = AscCommonExcel.c_oAscLockTypeElem;
var c_oAscError = asc.c_oAscError;
var c_oAscFileType = asc.c_oAscFileType;
var c_oAscAsyncAction = asc.c_oAscAsyncAction;
var c_oAscAdvancedOptionsID = asc.c_oAscAdvancedOptionsID;
var c_oAscAsyncActionType = asc.c_oAscAsyncActionType;
var History = null;
/**
*
* @param config
* @param eventsHandlers
* @constructor
* @returns {spreadsheet_api}
* @extends {AscCommon.baseEditorsApi}
*/
function spreadsheet_api(config) {
AscCommon.baseEditorsApi.call(this, config, AscCommon.c_oEditorId.Spreadsheet);
/************ private!!! **************/
this.topLineEditorName = config['id-input'] || '';
this.topLineEditorElement = null;
this.controller = null;
this.handlers = new AscCommonExcel.asc_CHandlersList();
// Вид печати
this.adjustPrint = null;
this.fontRenderingMode = Asc.c_oAscFontRenderingModeType.hintingAndSubpixeling;
this.wb = null;
this.wbModel = null;
this.tmpLocale = null;
this.tmpLocalization = null;
this.documentFormatSave = c_oAscFileType.XLSX;
// объекты, нужные для отправки в тулбар (шрифты, стили)
this._gui_control_colors = null;
this.GuiControlColorsMap = null;
this.IsSendStandartColors = false;
this.asyncMethodCallback = undefined;
// Переменная отвечает, загрузились ли фонты
this.FontLoadWaitComplete = false;
//текущий обьект куда записываются информация для update, когда принимаются изменения в native редакторе
this.oRedoObjectParamNative = null;
this.collaborativeEditing = null;
// AutoSave
this.autoSaveGapRealTime = 30; // Интервал быстрого автосохранения (когда выставлен флаг realtime) - 30 мс.
// Shapes
this.isStartAddShape = false;
this.shapeElementId = null;
this.textArtElementId = null;
this.isImageChangeUrl = false;
this.isShapeImageChangeUrl = false;
this.isTextArtChangeUrl = false;
this.textureType = null;
// Styles sizes
this.styleThumbnailWidth = 112;
this.styleThumbnailHeight = 38;
this.formulasList = null; // Список всех формул
if (window.editor == undefined) {
window.editor = this;
}
this._init();
return this;
}
spreadsheet_api.prototype = Object.create(AscCommon.baseEditorsApi.prototype);
spreadsheet_api.prototype.constructor = spreadsheet_api;
spreadsheet_api.prototype.sendEvent = function() {
this.handlers.trigger.apply(this.handlers, arguments);
};
spreadsheet_api.prototype._init = function() {
AscCommon.baseEditorsApi.prototype._init.call(this);
this.topLineEditorElement = document.getElementById(this.topLineEditorName);
// ToDo нужно ли это
asc['editor'] = ( asc['editor'] || this );
AscCommon.AscBrowser.checkZoom();
};
spreadsheet_api.prototype.asc_CheckGuiControlColors = function() {
// потом реализовать проверку на то, что нужно ли посылать
var arr_colors = new Array(10);
var _count = arr_colors.length;
for (var i = 0; i < _count; ++i) {
var color = AscCommonExcel.g_oColorManager.getThemeColor(i);
arr_colors[i] = new CColor(color.getR(), color.getG(), color.getB());
}
// теперь проверим
var bIsSend = false;
if (this.GuiControlColorsMap != null) {
for (var i = 0; i < _count; ++i) {
var _color1 = this.GuiControlColorsMap[i];
var _color2 = arr_colors[i];
if ((_color1.r !== _color2.r) || (_color1.g !== _color2.g) || (_color1.b !== _color2.b)) {
bIsSend = true;
break;
}
}
} else {
this.GuiControlColorsMap = new Array(_count);
bIsSend = true;
}
if (bIsSend) {
for (var i = 0; i < _count; ++i) {
this.GuiControlColorsMap[i] = arr_colors[i];
}
this.asc_SendControlColors();
}
};
spreadsheet_api.prototype.asc_SendControlColors = function() {
var standart_colors = null;
if (!this.IsSendStandartColors) {
var standartColors = AscCommon.g_oStandartColors;
var _c_s = standartColors.length;
standart_colors = new Array(_c_s);
for (var i = 0; i < _c_s; ++i) {
standart_colors[i] = new CColor(standartColors[i].R, standartColors[i].G, standartColors[i].B);
}
this.IsSendStandartColors = true;
}
var _count = this.GuiControlColorsMap.length;
var _ret_array = new Array(_count * 6);
var _cur_index = 0;
for (var i = 0; i < _count; ++i) {
var basecolor = AscCommonExcel.g_oColorManager.getThemeColor(i);
var aTints = AscCommonExcel.g_oThemeColorsDefaultModsSpreadsheet[AscCommon.GetDefaultColorModsIndex(basecolor.getR(), basecolor.getG(), basecolor.getB())];
for (var j = 0, length = aTints.length; j < length; ++j) {
var tint = aTints[j];
var color = AscCommonExcel.g_oColorManager.getThemeColor(i, tint);
_ret_array[_cur_index] = new CColor(color.getR(), color.getG(), color.getB());
_cur_index++;
}
}
this.asc_SendThemeColors(_ret_array, standart_colors);
};
spreadsheet_api.prototype.asc_getCurrencySymbols = function () {
var result = {};
for (var key in AscCommon.g_aCultureInfos) {
result[key] = AscCommon.g_aCultureInfos[key].CurrencySymbol;
}
return result;
};
spreadsheet_api.prototype.asc_getLocaleExample = function(format, value, culture) {
var cultureInfo = AscCommon.g_aCultureInfos[culture] || AscCommon.g_oDefaultCultureInfo;
var numFormat = AscCommon.oNumFormatCache.get(format);
var res;
if (null == value) {
var ws = this.wbModel.getActiveWs();
var activeCell = ws.selectionRange.activeCell;
ws._getCellNoEmpty(activeCell.row, activeCell.col, function(cell) {
if (cell) {
res = cell.getValueForExample(numFormat, cultureInfo);
} else {
res = '';
}
});
} else {
res = numFormat.formatToChart(value, undefined, cultureInfo);
}
return res;
};
spreadsheet_api.prototype.asc_getFormatCells = function(info) {
return AscCommon.getFormatCells(info);
};
spreadsheet_api.prototype.asc_getLocaleCurrency = function(val) {
var cultureInfo = AscCommon.g_aCultureInfos[val];
if (!cultureInfo) {
cultureInfo = AscCommon.g_aCultureInfos[1033];
}
return AscCommonExcel.getCurrencyFormat(cultureInfo, 2, true, true);
};
spreadsheet_api.prototype.asc_getCurrentListType = function(){
var ws = this.wb.getWorksheet();
var oParaPr;
if (ws && ws.objectRender && ws.objectRender.controller) {
oParaPr = ws.objectRender.controller.getParagraphParaPr();
}
return new AscCommon.asc_CListType(AscFormat.fGetListTypeFromBullet(oParaPr && oParaPr.Bullet));
};
spreadsheet_api.prototype.asc_setLocale = function(val) {
if (!this.isLoadFullApi) {
this.tmpLocale = val;
return;
}
if (null === val) {
return;
}
if (AscCommon.setCurrentCultureInfo(val)) {
parserHelp.setDigitSeparator(AscCommon.g_oDefaultCultureInfo.NumberDecimalSeparator);
if (this.wbModel) {
AscCommon.oGeneralEditFormatCache.cleanCache();
AscCommon.oNumFormatCache.cleanCache();
this.wbModel.rebuildColors();
if (this.isDocumentLoadComplete) {
AscCommon.checkCultureInfoFontPicker();
this._loadFonts([], function() {
this._onUpdateAfterApplyChanges();
});
}
}
}
};
spreadsheet_api.prototype.asc_getLocale = function() {
return AscCommon.g_oDefaultCultureInfo.LCID;
};
spreadsheet_api.prototype._openDocument = function(data) {
this.wbModel = new AscCommonExcel.Workbook(this.handlers, this);
this.initGlobalObjects(this.wbModel);
AscFonts.IsCheckSymbols = true;
var oBinaryFileReader = new AscCommonExcel.BinaryFileReader();
oBinaryFileReader.Read(data, this.wbModel);
AscFonts.IsCheckSymbols = false;
};
spreadsheet_api.prototype.initGlobalObjects = function(wbModel) {
// History & global counters
History.init(wbModel);
AscCommonExcel.g_oUndoRedoCell = new AscCommonExcel.UndoRedoCell(wbModel);
AscCommonExcel.g_oUndoRedoWorksheet = new AscCommonExcel.UndoRedoWoorksheet(wbModel);
AscCommonExcel.g_oUndoRedoWorkbook = new AscCommonExcel.UndoRedoWorkbook(wbModel);
AscCommonExcel.g_oUndoRedoCol = new AscCommonExcel.UndoRedoRowCol(wbModel, false);
AscCommonExcel.g_oUndoRedoRow = new AscCommonExcel.UndoRedoRowCol(wbModel, true);
AscCommonExcel.g_oUndoRedoComment = new AscCommonExcel.UndoRedoComment(wbModel);
AscCommonExcel.g_oUndoRedoAutoFilters = new AscCommonExcel.UndoRedoAutoFilters(wbModel);
AscCommonExcel.g_oUndoRedoSparklines = new AscCommonExcel.UndoRedoSparklines(wbModel);
AscCommonExcel.g_oUndoRedoPivotTables = new AscCommonExcel.UndoRedoPivotTables(wbModel);
AscCommonExcel.g_DefNameWorksheet = new AscCommonExcel.Worksheet(wbModel, -1);
AscCommonExcel.g_oUndoRedoSharedFormula = new AscCommonExcel.UndoRedoSharedFormula(wbModel);
AscCommonExcel.g_oUndoRedoLayout = new AscCommonExcel.UndoRedoRedoLayout(wbModel);
};
spreadsheet_api.prototype.asc_DownloadAs = function(typeFile, bIsDownloadEvent, adjustPrint) {//передаем число соответствующее своему формату. например c_oAscFileType.XLSX
if (!this.canSave || this.isChartEditor || c_oAscAdvancedOptionsAction.None !== this.advancedOptionsAction) {
return;
}
if (c_oAscFileType.PDF === typeFile || c_oAscFileType.PDFA === typeFile) {
this.adjustPrint = adjustPrint ? adjustPrint : new Asc.asc_CAdjustPrint();
}
this._asc_downloadAs(typeFile, c_oAscAsyncAction.DownloadAs, {downloadType: bIsDownloadEvent ? DownloadType.Download: DownloadType.None});
};
spreadsheet_api.prototype._saveCheck = function() {
return !this.isChartEditor && c_oAscAdvancedOptionsAction.None === this.advancedOptionsAction &&
!this.isLongAction() && !this.asc_getIsTrackShape() && !this.isOpenedChartFrame &&
History.IsEndTransaction();
};
spreadsheet_api.prototype._haveOtherChanges = function () {
return this.collaborativeEditing.haveOtherChanges();
};
spreadsheet_api.prototype._prepareSave = function (isIdle) {
var tmpHandlers;
if (isIdle) {
tmpHandlers = this.wbModel.handlers.handlers['asc_onError'];
this.wbModel.handlers.handlers['asc_onError'] = null;
}
/* Нужно закрыть редактор (до выставления флага canSave, т.к. мы должны успеть отправить
asc_onDocumentModifiedChanged для подписки на сборку) Баг http://bugzilla.onlyoffice.com/show_bug.cgi?id=28331 */
if (!this.asc_closeCellEditor()) {
if (isIdle) {
this.asc_closeCellEditor(true);
} else {
return false;
}
}
if (isIdle) {
this.wbModel.handlers.handlers['asc_onError'] = tmpHandlers;
}
return true;
};
spreadsheet_api.prototype.asc_Print = function(adjustPrint, bIsDownloadEvent) {
if (window["AscDesktopEditor"]) {
window.AscDesktopEditor_PrintData = adjustPrint;
window["AscDesktopEditor"]["Print"]();
return;
}
this.adjustPrint = adjustPrint ? adjustPrint : new Asc.asc_CAdjustPrint();
this._asc_downloadAs(c_oAscFileType.PDF, c_oAscAsyncAction.Print, {downloadType: bIsDownloadEvent ? DownloadType.Print: DownloadType.None});
};
spreadsheet_api.prototype.asc_Copy = function() {
if (window["AscDesktopEditor"])
{
window["asc_desktop_copypaste"](this, "Copy");
return true;
}
return AscCommon.g_clipboardBase.Button_Copy();
};
spreadsheet_api.prototype.asc_Paste = function() {
if (window["AscDesktopEditor"])
{
window["asc_desktop_copypaste"](this, "Paste");
return true;
}
if (!AscCommon.g_clipboardBase.IsWorking()) {
return AscCommon.g_clipboardBase.Button_Paste();
}
return false;
};
spreadsheet_api.prototype.asc_SpecialPaste = function(props) {
return AscCommon.g_specialPasteHelper.Special_Paste(props);
};
spreadsheet_api.prototype.asc_SpecialPasteData = function(props) {
if (this.canEdit()) {
this.wb.specialPasteData(props);
}
};
spreadsheet_api.prototype.asc_ShowSpecialPasteButton = function(props) {
if (this.canEdit()) {
this.wb.showSpecialPasteButton(props);
}
};
spreadsheet_api.prototype.asc_UpdateSpecialPasteButton = function(props) {
if (this.canEdit()) {
this.wb.updateSpecialPasteButton(props);
}
};
spreadsheet_api.prototype.asc_HideSpecialPasteButton = function() {
if (this.canEdit()) {
this.wb.hideSpecialPasteButton();
}
};
spreadsheet_api.prototype.asc_Cut = function() {
if (window["AscDesktopEditor"])
{
window["asc_desktop_copypaste"](this, "Cut");
return true;
}
return AscCommon.g_clipboardBase.Button_Cut();
};
spreadsheet_api.prototype.asc_PasteData = function (_format, data1, data2, text_data) {
if (this.canEdit()) {
this.wb.pasteData(_format, data1, data2, text_data, arguments[5]);
}
};
spreadsheet_api.prototype.asc_CheckCopy = function (_clipboard /* CClipboardData */, _formats) {
return this.wb.checkCopyToClipboard(_clipboard, _formats);
};
spreadsheet_api.prototype.asc_SelectionCut = function () {
if (this.canEdit()) {
this.wb.selectionCut();
}
};
spreadsheet_api.prototype.asc_bIsEmptyClipboard = function() {
var result = this.wb.bIsEmptyClipboard();
this.wb.restoreFocus();
return result;
};
spreadsheet_api.prototype.asc_Undo = function() {
this.wb.undo();
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_Redo = function() {
this.wb.redo();
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_Resize = function () {
AscCommon.AscBrowser.checkZoom();
if (this.wb) {
this.wb.resize();
if (AscCommon.g_inputContext) {
AscCommon.g_inputContext.onResize("ws-canvas-outer");
}
}
};
spreadsheet_api.prototype.asc_addAutoFilter = function(styleName, addFormatTableOptionsObj) {
var ws = this.wb.getWorksheet();
return ws.addAutoFilter(styleName, addFormatTableOptionsObj);
};
spreadsheet_api.prototype.asc_changeAutoFilter = function(tableName, optionType, val) {
var ws = this.wb.getWorksheet();
return ws.changeAutoFilter(tableName, optionType, val);
};
spreadsheet_api.prototype.asc_applyAutoFilter = function(autoFilterObject) {
var ws = this.wb.getWorksheet();
ws.applyAutoFilter(autoFilterObject);
};
spreadsheet_api.prototype.asc_applyAutoFilterByType = function(autoFilterObject) {
var ws = this.wb.getWorksheet();
ws.applyAutoFilterByType(autoFilterObject);
};
spreadsheet_api.prototype.asc_reapplyAutoFilter = function(displayName) {
var ws = this.wb.getWorksheet();
ws.reapplyAutoFilter(displayName);
};
spreadsheet_api.prototype.asc_sortColFilter = function(type, cellId, displayName, color, bIsExpandRange) {
var ws = this.wb.getWorksheet();
ws.sortRange(type, cellId, displayName, color, bIsExpandRange);
};
spreadsheet_api.prototype.asc_getAddFormatTableOptions = function(range) {
var ws = this.wb.getWorksheet();
return ws.getAddFormatTableOptions(range);
};
spreadsheet_api.prototype.asc_clearFilter = function() {
var ws = this.wb.getWorksheet();
return ws.clearFilter();
};
spreadsheet_api.prototype.asc_clearFilterColumn = function(cellId, displayName) {
var ws = this.wb.getWorksheet();
return ws.clearFilterColumn(cellId, displayName);
};
spreadsheet_api.prototype.asc_changeSelectionFormatTable = function(tableName, optionType) {
var ws = this.wb.getWorksheet();
return ws.af_changeSelectionFormatTable(tableName, optionType);
};
spreadsheet_api.prototype.asc_changeFormatTableInfo = function(tableName, optionType, val) {
var ws = this.wb.getWorksheet();
return ws.af_changeFormatTableInfo(tableName, optionType, val);
};
spreadsheet_api.prototype.asc_applyAutoCorrectOptions = function(val) {
this.wb.applyAutoCorrectOptions(val);
};
spreadsheet_api.prototype.asc_insertCellsInTable = function(tableName, optionType) {
var ws = this.wb.getWorksheet();
return ws.af_insertCellsInTable(tableName, optionType);
};
spreadsheet_api.prototype.asc_deleteCellsInTable = function(tableName, optionType) {
var ws = this.wb.getWorksheet();
return ws.af_deleteCellsInTable(tableName, optionType);
};
spreadsheet_api.prototype.asc_changeDisplayNameTable = function(tableName, newName) {
var ws = this.wb.getWorksheet();
return ws.af_changeDisplayNameTable(tableName, newName);
};
spreadsheet_api.prototype.asc_changeTableRange = function(tableName, range) {
var ws = this.wb.getWorksheet();
return ws.af_changeTableRange(tableName, range);
};
spreadsheet_api.prototype.asc_convertTableToRange = function(tableName) {
var ws = this.wb.getWorksheet();
return ws.af_convertTableToRange(tableName);
};
spreadsheet_api.prototype.asc_getTablePictures = function (props, pivot) {
return this.wb.af_getTablePictures(props, pivot);
};
spreadsheet_api.prototype.asc_setViewMode = function (isViewMode) {
this.isViewMode = !!isViewMode;
if (!this.isLoadFullApi) {
return;
}
if (this.collaborativeEditing) {
this.collaborativeEditing.setViewerMode(isViewMode);
}
};
spreadsheet_api.prototype.asc_setFilteringMode = function (mode) {
window['AscCommonExcel'].filteringMode = !!mode;
};
/*
idOption идентификатор дополнительного параметра, пока c_oAscAdvancedOptionsID.CSV.
option - какие свойства применить, пока массив. для CSV объект asc_CCSVAdvancedOptions(codepage, delimiter)
exp: asc_setAdvancedOptions(c_oAscAdvancedOptionsID.CSV, new Asc.asc_CCSVAdvancedOptions(1200, c_oAscCsvDelimiter.Comma) );
*/
spreadsheet_api.prototype.asc_setAdvancedOptions = function(idOption, option) {
var v;
if (AscCommon.EncryptionWorker.asc_setAdvancedOptions(this, idOption, option))
return;
switch (idOption) {
case c_oAscAdvancedOptionsID.CSV:
// Проверяем тип состояния в данный момент
if (this.advancedOptionsAction === c_oAscAdvancedOptionsAction.Open) {
v = {
"id": this.documentId,
"userid": this.documentUserId,
"format": this.documentFormat,
"c": "reopen",
"url": this.documentUrl,
"title": this.documentTitle,
"delimiter": option.asc_getDelimiter(),
"delimiterChar": option.asc_getDelimiterChar(),
"codepage": option.asc_getCodePage(),
"nobase64": true
};
sendCommand(this, null, v);
} else {
var options = {CSVOptions: option, downloadType: this.downloadType};
this.downloadType = DownloadType.None;
this._asc_downloadAs(c_oAscFileType.CSV, c_oAscAsyncAction.DownloadAs, options);
}
break;
case c_oAscAdvancedOptionsID.DRM:
// Проверяем тип состояния в данный момент
if (this.advancedOptionsAction === c_oAscAdvancedOptionsAction.Open) {
v = {
"id": this.documentId,
"userid": this.documentUserId,
"format": this.documentFormat,
"c": "reopen",
"url": this.documentUrl,
"title": this.documentTitle,
"password": option.asc_getPassword(),
"nobase64": true
};
sendCommand(this, null, v);
}
break;
}
};
// Опции страницы (для печати)
spreadsheet_api.prototype.asc_setPageOptions = function(options, index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
this.wb.getWorksheet(sheetIndex).setPageOptions(options);
};
spreadsheet_api.prototype.asc_savePagePrintOptions = function(arrPagesPrint) {
this.wb.savePagePrintOptions(arrPagesPrint);
};
spreadsheet_api.prototype.asc_getPageOptions = function(index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
return this.wbModel.getWorksheet(sheetIndex).PagePrintOptions;
};
spreadsheet_api.prototype.asc_setPageOption = function (func, val, index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
var ws = this.wb.getWorksheet(sheetIndex);
ws.setPageOption(func, val);
};
spreadsheet_api.prototype.asc_changeDocSize = function (width, height, index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
var ws = this.wb.getWorksheet(sheetIndex);
ws.changeDocSize(width, height);
};
spreadsheet_api.prototype.asc_changePageMargins = function (left, right, top, bottom, index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
var ws = this.wb.getWorksheet(sheetIndex);
ws.changePageMargins(left, right, top, bottom);
};
spreadsheet_api.prototype.asc_changePageOrient = function (isPortrait, index) {
var sheetIndex = (undefined !== index && null !== index) ? index : this.wbModel.getActive();
var ws = this.wb.getWorksheet(sheetIndex);
if (isPortrait) {
ws.changePageOrient(Asc.c_oAscPageOrientation.PagePortrait);
} else {
ws.changePageOrient(Asc.c_oAscPageOrientation.PageLandscape);
}
};
spreadsheet_api.prototype._onNeedParams = function(data, opt_isPassword) {
var t = this;
// Проверяем, возможно нам пришли опции для CSV
if (this.documentOpenOptions && !opt_isPassword) {
var codePageCsv = AscCommon.c_oAscEncodingsMap[this.documentOpenOptions["codePage"]] || AscCommon.c_oAscCodePageUtf8, delimiterCsv = this.documentOpenOptions["delimiter"],
delimiterCharCsv = this.documentOpenOptions["delimiterChar"];
if (null != codePageCsv && (null != delimiterCsv || null != delimiterCharCsv)) {
this.asc_setAdvancedOptions(c_oAscAdvancedOptionsID.CSV, new asc.asc_CCSVAdvancedOptions(codePageCsv, delimiterCsv));
return;
}
}
if (opt_isPassword) {
if (t.handlers.hasTrigger("asc_onAdvancedOptions")) {
t.handlers.trigger("asc_onAdvancedOptions", new AscCommon.asc_CAdvancedOptions(c_oAscAdvancedOptionsID.DRM), this.advancedOptionsAction);
} else {
t.handlers.trigger("asc_onError", c_oAscError.ID.ConvertationPassword, c_oAscError.Level.Critical);
}
} else {
if (t.handlers.hasTrigger("asc_onAdvancedOptions")) {
// ToDo разделитель пока только "," http://bugzilla.onlyoffice.com/show_bug.cgi?id=31009
var cp = {
'codepage': AscCommon.c_oAscCodePageUtf8, "delimiter": AscCommon.c_oAscCsvDelimiter.Comma,
'encodings': AscCommon.getEncodingParams()
};
var options;
if (data && typeof Blob !== 'undefined' && typeof FileReader !== 'undefined') {
AscCommon.getJSZipUtils().getBinaryContent(data, function(err, data) {
if (err) {
t.handlers.trigger("asc_onError", c_oAscError.ID.Unknown, c_oAscError.Level.Critical);
} else {
var dataUint = new Uint8Array(data);
var bom = AscCommon.getEncodingByBOM(dataUint);
if (AscCommon.c_oAscCodePageNone !== bom.encoding) {
cp['codepage'] = bom.encoding;
data = dataUint.subarray(bom.size);
}
cp['data'] = data;
options = new AscCommon.asc_CAdvancedOptions(c_oAscAdvancedOptionsID.CSV, cp);
t.handlers.trigger("asc_onAdvancedOptions", options, t.advancedOptionsAction);
}
});
} else {
options = new AscCommon.asc_CAdvancedOptions(c_oAscAdvancedOptionsID.CSV, cp);
t.handlers.trigger("asc_onAdvancedOptions", options, t.advancedOptionsAction);
}
} else {
this.asc_setAdvancedOptions(c_oAscAdvancedOptionsID.CSV, new asc.asc_CCSVAdvancedOptions(AscCommon.c_oAscCodePageUtf8, AscCommon.c_oAscCsvDelimiter.Comma));
}
}
};
spreadsheet_api.prototype._onOpenCommand = function(data) {
var t = this;
AscCommon.openFileCommand(data, this.documentUrlChanges, AscCommon.c_oSerFormat.Signature, function(error, result) {
if (error || !result.bSerFormat) {
var err = error ? c_oAscError.ID.Unknown : c_oAscError.ID.ConvertationOpenError;
var oError = {returnCode: c_oAscError.Level.Critical, val: err};
t.handlers.trigger("asc_onError", oError.val, oError.returnCode);
return;
}
t.onEndLoadFile(result.data);
});
};
spreadsheet_api.prototype._OfflineAppDocumentEndLoad = function() {
this.onEndLoadFile(AscCommonExcel.getEmptyWorkbook());
};
spreadsheet_api.prototype._asc_save2 = function () {
var oBinaryFileWriter = new AscCommonExcel.BinaryFileWriter(this.wbModel);
var dataContainer = {data: null, part: null, index: 0, count: 0};
dataContainer.data = oBinaryFileWriter.Write();
var filetype = 0x1002;
var oAdditionalData = {};
oAdditionalData["c"] = "sfct";
oAdditionalData["id"] = this.documentId;
oAdditionalData["userid"] = this.documentUserId;
oAdditionalData["jwt"] = this.CoAuthoringApi.get_jwt();
oAdditionalData["outputformat"] = filetype;
oAdditionalData["title"] =
AscCommon.changeFileExtention(this.documentTitle, AscCommon.getExtentionByFormat(filetype));
oAdditionalData["savetype"] = AscCommon.c_oAscSaveTypes.CompleteAll;
oAdditionalData["nobase64"] = true;
var t = this;
t.fCurCallback = function (incomeObject) {
if (null != input && "save" == input["type"]) {
if ('ok' == input["status"]) {
var url = input["data"];
if (url) {
t.processSavedFile(url, false);
} else {
t.handlers.trigger("asc_onError", c_oAscError.ID.Unknown, c_oAscError.Level.NoCritical);
}
} else {
t.handlers.trigger("asc_onError",
mapAscServerErrorToAscError(parseInt(input["data"]), AscCommon.c_oAscAdvancedOptionsAction.Save),
c_oAscError.Level.NoCritical);
}
} else {
t.handlers.trigger("asc_onError", c_oAscError.ID.Unknown, c_oAscError.Level.NoCritical);
}
};
AscCommon.saveWithParts(function (fCallback1, oAdditionalData1, dataContainer1) {
sendCommand(t, fCallback1, oAdditionalData1, dataContainer1);
}, t.fCurCallback, null, oAdditionalData, dataContainer);
};
spreadsheet_api.prototype._asc_downloadAs = function(sFormat, actionType, options) { //fCallback({returnCode:"", ...})
var isCloudCrypto = (window["AscDesktopEditor"] && (0 < window["AscDesktopEditor"]["CryptoMode"])) ? true : false;
if (isCloudCrypto)
window.isCloudCryptoDownloadAs = true;
var t = this;
if (!options) {
options = {};
}
if (actionType) {
this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, actionType);
}
var isNoBase64 = (typeof ArrayBuffer !== 'undefined') && !isCloudCrypto;
//sFormat: xlsx, xls, ods, csv, html
var dataContainer = {data: null, part: null, index: 0, count: 0};
var command = "save";
var oAdditionalData = {};
oAdditionalData["c"] = command;
oAdditionalData["id"] = this.documentId;
oAdditionalData["userid"] = this.documentUserId;
oAdditionalData["jwt"] = this.CoAuthoringApi.get_jwt();
oAdditionalData["outputformat"] = sFormat;
oAdditionalData["title"] = AscCommon.changeFileExtention(this.documentTitle, AscCommon.getExtentionByFormat(sFormat), Asc.c_nMaxDownloadTitleLen);
oAdditionalData["nobase64"] = isNoBase64;
if (DownloadType.Print === options.downloadType) {
oAdditionalData["inline"] = 1;
}
if (c_oAscFileType.PDF === sFormat || c_oAscFileType.PDFA === sFormat) {
var printPagesData = this.wb.calcPagesPrint(this.adjustPrint);
var pdfPrinterMemory = this.wb.printSheets(printPagesData).DocumentRenderer.Memory;
dataContainer.data = isNoBase64 ? pdfPrinterMemory.GetData() : pdfPrinterMemory.GetBase64Memory();
} else if (c_oAscFileType.CSV === sFormat && !options.CSVOptions) {
// Мы открывали команду, надо ее закрыть.
if (actionType) {
this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, actionType);
}
var cp = {'delimiter': AscCommon.c_oAscCsvDelimiter.Comma, 'codepage': AscCommon.c_oAscCodePageUtf8, 'encodings': AscCommon.getEncodingParams()};
this.downloadType = options.downloadType;
this.handlers.trigger("asc_onAdvancedOptions", new AscCommon.asc_CAdvancedOptions(c_oAscAdvancedOptionsID.CSV, cp), c_oAscAdvancedOptionsAction.Save);
return;
} else {
var oBinaryFileWriter = new AscCommonExcel.BinaryFileWriter(this.wbModel);
if (c_oAscFileType.CSV === sFormat) {
if (options.CSVOptions instanceof asc.asc_CCSVAdvancedOptions) {
oAdditionalData["codepage"] = options.CSVOptions.asc_getCodePage();
oAdditionalData["delimiter"] = options.CSVOptions.asc_getDelimiter();
oAdditionalData["delimiterChar"] = options.CSVOptions.asc_getDelimiterChar();
}
}
dataContainer.data = oBinaryFileWriter.Write(isNoBase64);
}
// Меняем тип состояния (на сохранение)
this.advancedOptionsAction = c_oAscAdvancedOptionsAction.Save;
if (isCloudCrypto)
{
var sParamXml = ("<m_nCsvTxtEncoding>" + oAdditionalData["codepage"] + "</m_nCsvTxtEncoding>");
sParamXml += ("<m_nCsvDelimiter>" + oAdditionalData["delimiter"] + "</m_nCsvDelimiter>");
window["AscDesktopEditor"]["CryptoDownloadAs"](dataContainer.data, sFormat, sParamXml);
return;
}
var fCallback = function(input) {
var error = c_oAscError.ID.Unknown;
if (null != input && command == input["type"]) {
if ('ok' == input["status"]) {
var url = input["data"];
if (url) {
error = c_oAscError.ID.No;
t.processSavedFile(url, options.downloadType);
}
} else {
error = mapAscServerErrorToAscError(parseInt(input["data"]), AscCommon.c_oAscAdvancedOptionsAction.Save);
}
}
if (c_oAscError.ID.No != error) {
t.handlers.trigger("asc_onError", error, c_oAscError.Level.NoCritical);
}
// Меняем тип состояния (на никакое)
t.advancedOptionsAction = c_oAscAdvancedOptionsAction.None;
if (actionType) {
t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, actionType);
}
};
t.fCurCallback = fCallback;
AscCommon.saveWithParts(function(fCallback1, oAdditionalData1, dataContainer1) {
sendCommand(t, fCallback1, oAdditionalData1, dataContainer1);
}, fCallback, null, oAdditionalData, dataContainer);
};
spreadsheet_api.prototype.asc_isDocumentModified = function() {
if (!this.canSave || this.asc_getCellEditMode()) {
// Пока идет сохранение или редактирование ячейки, мы не закрываем документ
return true;
} else if (History && History.Have_Changes) {
return History.Have_Changes();
}
return false;
};
// Actions and callbacks interface
/*
* asc_onStartAction (type, id)
* asc_onEndAction (type, id)
* asc_onInitEditorFonts (gui_fonts)
* asc_onInitEditorStyles (gui_styles)
* asc_onOpenDocumentProgress (AscCommon.COpenProgress)
* asc_onAdvancedOptions (asc_CAdvancedOptions, ascAdvancedOptionsAction) - эвент на получение дополнительных опций (открытие/сохранение CSV)
* asc_onError (c_oAscError.ID, c_oAscError.Level) - эвент об ошибке
* asc_onEditCell (Asc.c_oAscCellEditorState) - эвент на редактирование ячейки с состоянием (переходами из формулы и обратно)
* asc_onEditorSelectionChanged (asc_CFont) - эвент на смену информации о выделении в редакторе ячейки
* asc_onSelectionChanged (asc_CCellInfo) - эвент на смену информации о выделении
* asc_onSelectionNameChanged (sName) - эвент на смену имени выделения (Id-ячейки, число выделенных столбцов/строк, имя диаграммы и др.)
* asc_onSelection
*
* Changed (asc_CSelectionMathInfo) - эвент на смену математической информации о выделении
* asc_onZoomChanged (zoom)
* asc_onSheetsChanged () - эвент на обновление списка листов
* asc_onActiveSheetChanged (indexActiveSheet) - эвент на обновление активного листа
* asc_onCanUndoChanged (bCanUndo) - эвент на обновление возможности undo
* asc_onCanRedoChanged (bCanRedo) - эвент на обновление возможности redo
* asc_onSaveUrl (sUrl, callback(hasError)) - эвент на сохранение файла на сервер по url
* asc_onDocumentModifiedChanged(bIsModified) - эвент на обновление статуса "изменен ли файл"
* asc_onMouseMove (asc_CMouseMoveData) - эвент на наведение мышкой на гиперлинк или комментарий
* asc_onHyperlinkClick (sUrl) - эвент на нажатие гиперлинка
* asc_onCoAuthoringDisconnect () - эвент об отключении от сервера без попытки reconnect
* asc_onSelectionRangeChanged (selectRange) - эвент о выборе диапазона для диаграммы (после нажатия кнопки выбора)
* asc_onRenameCellTextEnd (countCellsFind, countCellsReplace) - эвент об окончании замены текста в ячейках (мы не можем сразу прислать ответ)
* asc_onWorkbookLocked (result) - эвент залочена ли работа с листами или нет
* asc_onWorksheetLocked (index, result) - эвент залочен ли лист или нет
* asc_onGetEditorPermissions (permission) - эвент о правах редактора
* asc_onStopFormatPainter () - эвент об окончании форматирования по образцу
* asc_onUpdateSheetViewSettings () - эвент об обновлении свойств листа (закрепленная область, показывать сетку/заголовки)
* asc_onUpdateTabColor (index) - эвент об обновлении цвета иконки листа
* asc_onDocumentCanSaveChanged (bIsCanSave) - эвент об обновлении статуса "можно ли сохранять файл"
* asc_onDocumentUpdateVersion (callback) - эвент о том, что файл собрался и не может больше редактироваться
* asc_onContextMenu (event) - эвент на контекстное меню
* asc_onDocumentContentReady () - эвент об окончании загрузки документа
* asc_onFilterInfo (countFilter, countRecords) - send count filtered and all records
* asc_onLockDocumentProps/asc_onUnLockDocumentProps - эвент о том, что залочены опции layout
* asc_onUpdateDocumentProps - эвент о том, что необходимо обновить данные во вкладке layout
*/
spreadsheet_api.prototype.asc_registerCallback = function(name, callback, replaceOldCallback) {
this.handlers.add(name, callback, replaceOldCallback);
return;
/*
Не самая хорошая схема для отправки эвентов:
проверяем, подписан ли кто-то на эвент? Если да, то отправляем и больше ничего не делаем.
Если никто не подписан, то сохраняем у себя переменную и как только кто-то подписывается - отправляем ее
*/
if (null !== this._gui_control_colors && "asc_onSendThemeColors" === name) {
this.handlers.trigger("asc_onSendThemeColors", this._gui_control_colors.Colors, this._gui_control_colors.StandartColors);
this._gui_control_colors = null;
}
};
spreadsheet_api.prototype.asc_unregisterCallback = function(name, callback) {
this.handlers.remove(name, callback);
};
spreadsheet_api.prototype.asc_SetDocumentPlaceChangedEnabled = function(val) {
this.wb.setDocumentPlaceChangedEnabled(val);
};
spreadsheet_api.prototype.asc_SetFastCollaborative = function(bFast) {
if (this.collaborativeEditing) {
AscCommon.CollaborativeEditing.Set_Fast(bFast);
this.collaborativeEditing.setFast(bFast);
}
};
spreadsheet_api.prototype.asc_setThumbnailStylesSizes = function (width, height) {
this.styleThumbnailWidth = width;
this.styleThumbnailHeight = height;
};
// Посылает эвент о том, что обновились листы
spreadsheet_api.prototype.sheetsChanged = function() {
this.handlers.trigger("asc_onSheetsChanged");
};
spreadsheet_api.prototype.asyncFontsDocumentStartLoaded = function() {
this.OpenDocumentProgress.Type = c_oAscAsyncAction.LoadDocumentFonts;
this.OpenDocumentProgress.FontsCount = this.FontLoader.fonts_loading.length;
this.OpenDocumentProgress.CurrentFont = 0;
this.sync_StartAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentFonts);
};
spreadsheet_api.prototype.asyncFontsDocumentEndLoaded = function() {
this.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, c_oAscAsyncAction.LoadDocumentFonts);
if (this.asyncMethodCallback !== undefined) {
this.asyncMethodCallback();
this.asyncMethodCallback = undefined;
} else {
// Шрифты загрузились, возможно стоит подождать совместное редактирование
this.FontLoadWaitComplete = true;
this._openDocumentEndCallback();
}
};
spreadsheet_api.prototype.asyncFontEndLoaded = function(font) {
this.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.LoadFont);
};
spreadsheet_api.prototype._loadFonts = function(fonts, callback) {
if (window["NATIVE_EDITOR_ENJINE"]) {
return callback();
}
this.asyncMethodCallback = callback;
var arrLoadFonts = [];
for (var i in fonts)
arrLoadFonts.push(new AscFonts.CFont(i, 0, "", 0));
AscFonts.FontPickerByCharacter.extendFonts(arrLoadFonts);
this.FontLoader.LoadDocumentFonts2(arrLoadFonts);
};
spreadsheet_api.prototype.openDocument = function(sData) {
var t = this;
this._openDocument(sData);
this.openDocumentFromZip(this.wbModel, AscCommon.g_oDocumentUrls.getUrl('Editor.xlsx')).then(function() {
g_oIdCounter.Set_Load(false);
AscCommon.checkCultureInfoFontPicker();
AscCommonExcel.asc_CStylesPainter.prototype.asc_checkStylesNames(t.wbModel.CellStyles);
t.FontLoader.LoadDocumentFonts(t.wbModel.generateFontMap2());
// Какая-то непонятная заглушка, чтобы не падало в ipad
if (t.isMobileVersion) {
AscCommon.AscBrowser.isSafariMacOs = false;
AscCommon.PasteElementsId.PASTE_ELEMENT_ID = "wrd_pastebin";
AscCommon.PasteElementsId.ELEMENT_DISPAY_STYLE = "none";
}
}).catch(function(err) {
if (window.console && window.console.log) {
window.console.log(err);
}
t.sendEvent('asc_onError', c_oAscError.ID.Unknown, c_oAscError.Level.Critical);
});
};
spreadsheet_api.prototype.openDocumentFromZip = function (wb, opt_url, opt_path) {
var t = this;
return new Promise(function (resolve, reject) {
var openXml = AscCommon.openXml;
//open cache xlsx instead of documentUrl, to support pivot in xls, ods... and don't send jwt signature
if (t.isChartEditor) {
resolve();
return;
}
var processData = function (err, data, path) {
var nextPromise;
if (!err && (data || path)) {
openXml.SaxParserDataTransfer.wb = wb;
var doc = new openXml.OpenXmlPackage();
var wbPart = null;
var wbXml = null;
var pivotCaches = {};
var jsZipWrapper = new AscCommon.JSZipWrapper();
nextPromise = jsZipWrapper.loadAsync(data || path).then(function (zip) {
return doc.openFromZip(zip);
}).then(function () {
wbPart = doc.getPartByRelationshipType(openXml.relationshipTypes.workbook);
return wbPart.getDocumentContent();
}).then(function (contentWorkbook) {
wbXml = new AscCommonExcel.CT_Workbook();
new openXml.SaxParserBase().parse(contentWorkbook, wbXml);
if (wbXml.pivotCaches) {
return wbXml.pivotCaches.reduce(function (prevVal, wbPivotCacheXml) {
var pivotTableCacheDefinitionPart;
var pivotTableCacheDefinition;
return prevVal.then(function () {
if (null !== wbPivotCacheXml.cacheId && null !== wbPivotCacheXml.id) {
pivotTableCacheDefinitionPart = wbPart.getPartById(wbPivotCacheXml.id);
return pivotTableCacheDefinitionPart.getDocumentContent();
}
}).then(function (content) {
if (content) {
pivotTableCacheDefinition = new Asc.CT_PivotCacheDefinition();
new openXml.SaxParserBase().parse(content, pivotTableCacheDefinition);
if (pivotTableCacheDefinition.isValidCacheSource()) {
pivotCaches[wbPivotCacheXml.cacheId] = pivotTableCacheDefinition;
if (pivotTableCacheDefinition.id) {
var partPivotTableCacheRecords = pivotTableCacheDefinitionPart.getPartById(
pivotTableCacheDefinition.id);
return partPivotTableCacheRecords.getDocumentContent();
}
}
}
}).then(function (content) {
if (content) {
var pivotTableCacheRecords = new Asc.CT_PivotCacheRecords();
new openXml.SaxParserBase().parse(content, pivotTableCacheRecords);
pivotTableCacheDefinition.cacheRecords = pivotTableCacheRecords;
}
});
}, Promise.resolve());
}
}).then(function () {
if (wbXml.sheets) {
var wsIndex = 0;
return wbXml.sheets.reduce(function (prevVal, wbSheetXml) {
var wsPart;
return prevVal.then(function () {
if (null !== wbSheetXml.id) {
var actions = [];
wsPart = wbPart.getPartById(wbSheetXml.id);
var pivotParts = wsPart.getPartsByRelationshipType(
openXml.relationshipTypes.pivotTable);
for (var i = 0; i < pivotParts.length; ++i) {
actions.push(pivotParts[i].getDocumentContent());
}
return Promise.all(actions);
}
}).then(function (res) {
if (res) {
var ws = wb.getWorksheet(wsIndex);
for (var i = 0; i < res.length; ++i) {
var pivotTable = new Asc.CT_pivotTableDefinition();
new openXml.SaxParserBase().parse(res[i], pivotTable);
var cacheDefinition = pivotCaches[pivotTable.cacheId];
if (cacheDefinition) {
pivotTable.cacheDefinition = cacheDefinition;
ws.insertPivotTable(pivotTable);
}
}
}
wsIndex++;
});
}, Promise.resolve());
}
}).catch(function (err) {
//don't show error.(case of open xls, ods, csv)
if (window.console && window.console.log) {
window.console.log(err);
}
}).then(function () {
jsZipWrapper.close();
});
} else {
if (err) {
if (window.console && window.console.log) {
window.console.log(err);
}
}
nextPromise = Promise.resolve();
}
nextPromise.then(function (err) {
//clean up
openXml.SaxParserDataTransfer = {};
return Asc.ReadDefTableStyles(wb);
}).then(resolve, reject);
};
if (opt_url) {
AscCommon.getJSZipUtils().getBinaryContent(opt_url, processData);
} else {
processData(undefined, undefined, opt_path);
}
});
};
// Соединились с сервером
spreadsheet_api.prototype.asyncServerIdEndLoaded = function() {
// С сервером соединились, возможно стоит подождать загрузку шрифтов
this.ServerIdWaitComplete = true;
this._openDocumentEndCallback();
};
// Эвент о пришедщих изменениях
spreadsheet_api.prototype.syncCollaborativeChanges = function() {
// Для быстрого сохранения уведомлять не нужно.
if (!this.collaborativeEditing.getFast()) {
this.handlers.trigger("asc_onCollaborativeChanges");
}
};
// Применение изменений документа, пришедших при открытии
// Их нужно применять после того, как мы создали WorkbookView
// т.к. автофильтры, диаграммы, изображения и комментарии завязаны на WorksheetView (ToDo переделать)
spreadsheet_api.prototype._applyFirstLoadChanges = function() {
if (this.isDocumentLoadComplete) {
return;
}
if (this.collaborativeEditing.applyChanges()) {
// Изменений не было
this.onDocumentContentReady();
}
// Пересылаем свои изменения (просто стираем чужие lock-и, т.к. своих изменений нет)
this.collaborativeEditing.sendChanges();
};
/////////////////////////////////////////////////////////////////////////
///////////////////CoAuthoring and Chat api//////////////////////////////
/////////////////////////////////////////////////////////////////////////
spreadsheet_api.prototype._coAuthoringInitEnd = function() {
var t = this;
this.collaborativeEditing = new AscCommonExcel.CCollaborativeEditing(/*handlers*/{
"askLock": function() {
t.CoAuthoringApi.askLock.apply(t.CoAuthoringApi, arguments);
},
"releaseLocks": function() {
t.CoAuthoringApi.releaseLocks.apply(t.CoAuthoringApi, arguments);
},
"sendChanges": function() {
t._onSaveChanges.apply(t, arguments);
},
"applyChanges": function() {
t._onApplyChanges.apply(t, arguments);
},
"updateAfterApplyChanges": function() {
t._onUpdateAfterApplyChanges.apply(t, arguments);
},
"drawSelection": function() {
t._onDrawSelection.apply(t, arguments);
},
"drawFrozenPaneLines": function() {
t._onDrawFrozenPaneLines.apply(t, arguments);
},
"updateAllSheetsLock": function() {
t._onUpdateAllSheetsLock.apply(t, arguments);
},
"showDrawingObjects": function() {
t._onShowDrawingObjects.apply(t, arguments);
},
"showComments": function() {
t._onShowComments.apply(t, arguments);
},
"cleanSelection": function() {
t._onCleanSelection.apply(t, arguments);
},
"updateDocumentCanSave": function() {
t._onUpdateDocumentCanSave();
},
"checkCommentRemoveLock": function(lockElem) {
return t._onCheckCommentRemoveLock(lockElem);
},
"unlockDefName": function() {
t._onUnlockDefName.apply(t, arguments);
},
"checkDefNameLock": function(lockElem) {
return t._onCheckDefNameLock(lockElem);
},
"updateAllLayoutsLock": function() {
t._onUpdateAllLayoutsLock.apply(t, arguments);
}
}, this.getViewMode());
this.CoAuthoringApi.onConnectionStateChanged = function(e) {
t.handlers.trigger("asc_onConnectionStateChanged", e);
};
this.CoAuthoringApi.onLocksAcquired = function(e) {
if (t._coAuthoringCheckEndOpenDocument(t.CoAuthoringApi.onLocksAcquired, e)) {
return;
}
if (2 != e["state"]) {
var elementValue = e["blockValue"];
var lockElem = t.collaborativeEditing.getLockByElem(elementValue, c_oAscLockTypes.kLockTypeOther);
if (null === lockElem) {
lockElem = new AscCommonExcel.CLock(elementValue);
t.collaborativeEditing.addUnlock(lockElem);
}
var drawing, lockType = lockElem.Element["type"];
var oldType = lockElem.getType();
if (c_oAscLockTypes.kLockTypeOther2 === oldType || c_oAscLockTypes.kLockTypeOther3 === oldType) {
lockElem.setType(c_oAscLockTypes.kLockTypeOther3, true);
} else {
lockElem.setType(c_oAscLockTypes.kLockTypeOther, true);
}
// Выставляем ID пользователя, залочившего данный элемент
lockElem.setUserId(e["user"]);
if (lockType === c_oAscLockTypeElem.Object) {
drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]);
if (drawing) {
drawing.lockType = lockElem.Type;
}
}
if (t.wb) {
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно заблокировать toolbar
t.wb._onWSSelectionChanged();
// Шлем update для листов
t._onUpdateSheetsLock(lockElem);
t._onUpdateDefinedNames(lockElem);
//эвент о локе в меню вкладки layout
t._onUpdateLayoutLock(lockElem);
var ws = t.wb.getWorksheet();
var lockSheetId = lockElem.Element["sheetId"];
if (lockSheetId === ws.model.getId()) {
if (lockType === c_oAscLockTypeElem.Object) {
// Нужно ли обновлять закрепление областей
if (t._onUpdateFrozenPane(lockElem)) {
ws.draw();
} else if (drawing && ws.model === drawing.worksheet) {
if (ws.objectRender) {
ws.objectRender.showDrawingObjects(true);
}
}
} else if (lockType === c_oAscLockTypeElem.Range || lockType === c_oAscLockTypeElem.Sheet) {
ws.updateSelection();
}
} else if (-1 !== lockSheetId && 0 === lockSheetId.indexOf(AscCommonExcel.CCellCommentator.sStartCommentId)) {
// Коммментарий
t.handlers.trigger("asc_onLockComment", lockElem.Element["rangeOrObjectId"], e["user"]);
}
}
}
};
this.CoAuthoringApi.onLocksReleased = function(e, bChanges) {
if (t._coAuthoringCheckEndOpenDocument(t.CoAuthoringApi.onLocksReleased, e, bChanges)) {
return;
}
var element = e["block"];
var lockElem = t.collaborativeEditing.getLockByElem(element, c_oAscLockTypes.kLockTypeOther);
if (null != lockElem) {
var curType = lockElem.getType();
var newType = c_oAscLockTypes.kLockTypeNone;
if (curType === c_oAscLockTypes.kLockTypeOther) {
if (true != bChanges) {
newType = c_oAscLockTypes.kLockTypeNone;
} else {
newType = c_oAscLockTypes.kLockTypeOther2;
}
} else if (curType === c_oAscLockTypes.kLockTypeMine) {
// Такого быть не должно
newType = c_oAscLockTypes.kLockTypeMine;
} else if (curType === c_oAscLockTypes.kLockTypeOther2 || curType === c_oAscLockTypes.kLockTypeOther3) {
newType = c_oAscLockTypes.kLockTypeOther2;
}
if (t.wb) {
t.wb.getWorksheet().cleanSelection();
}
var drawing;
if (c_oAscLockTypes.kLockTypeNone !== newType) {
lockElem.setType(newType, true);
} else {
// Удаляем из lock-ов, тот, кто правил ушел и не сохранил
t.collaborativeEditing.removeUnlock(lockElem);
if (!t._onCheckCommentRemoveLock(lockElem.Element)) {
if (lockElem.Element["type"] === c_oAscLockTypeElem.Object) {
drawing = g_oTableId.Get_ById(lockElem.Element["rangeOrObjectId"]);
if (drawing) {
drawing.lockType = c_oAscLockTypes.kLockTypeNone;
}
}
}
}
if (t.wb) {
// Шлем update для листов
t._onUpdateSheetsLock(lockElem);
/*снимаем лок для DefName*/
t.handlers.trigger("asc_onLockDefNameManager",Asc.c_oAscDefinedNameReason.OK);
//эвент о локе в меню вкладки layout
t._onUpdateLayoutLock(lockElem);
}
}
};
this.CoAuthoringApi.onLocksReleasedEnd = function() {
if (!t.isDocumentLoadComplete) {
// Пока документ еще не загружен ничего не делаем
return;
}
if (t.wb) {
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно сбросить блокировку toolbar
t.wb._onWSSelectionChanged();
var worksheet = t.wb.getWorksheet();
worksheet.cleanSelection();
worksheet._drawSelection();
worksheet._drawFrozenPaneLines();
if (worksheet.objectRender) {
worksheet.objectRender.showDrawingObjects(true);
}
}
};
this.CoAuthoringApi.onSaveChanges = function(e, userId, bFirstLoad) {
t.collaborativeEditing.addChanges(e);
if (!bFirstLoad && t.isDocumentLoadComplete) {
t.syncCollaborativeChanges();
}
};
this.CoAuthoringApi.onRecalcLocks = function(excelAdditionalInfo) {
if (!excelAdditionalInfo) {
return;
}
var tmpAdditionalInfo = JSON.parse(excelAdditionalInfo);
// Это мы получили recalcIndexColumns и recalcIndexRows
var oRecalcIndexColumns = t.collaborativeEditing.addRecalcIndex('0', tmpAdditionalInfo['indexCols']);
var oRecalcIndexRows = t.collaborativeEditing.addRecalcIndex('1', tmpAdditionalInfo['indexRows']);
// Теперь нужно пересчитать индексы для lock-элементов
if (null !== oRecalcIndexColumns || null !== oRecalcIndexRows) {
t.collaborativeEditing._recalcLockArray(c_oAscLockTypes.kLockTypeMine, oRecalcIndexColumns, oRecalcIndexRows);
t.collaborativeEditing._recalcLockArray(c_oAscLockTypes.kLockTypeOther, oRecalcIndexColumns, oRecalcIndexRows);
}
};
};
spreadsheet_api.prototype._onSaveChanges = function(recalcIndexColumns, recalcIndexRows, isAfterAskSave) {
if (this.isDocumentLoadComplete) {
var arrChanges = this.wbModel.SerializeHistory();
var deleteIndex = History.GetDeleteIndex();
var excelAdditionalInfo = null;
var bCollaborative = this.collaborativeEditing.getCollaborativeEditing();
if (bCollaborative) {
// Пересчетные индексы добавляем только если мы не одни
if (recalcIndexColumns || recalcIndexRows) {
excelAdditionalInfo = {"indexCols": recalcIndexColumns, "indexRows": recalcIndexRows};
}
}
if (0 < arrChanges.length || null !== deleteIndex || null !== excelAdditionalInfo) {
this.CoAuthoringApi.saveChanges(arrChanges, deleteIndex, excelAdditionalInfo, this.canUnlockDocument2, bCollaborative);
History.CanNotAddChanges = true;
} else {
this.CoAuthoringApi.unLockDocument(!!isAfterAskSave, this.canUnlockDocument2, null, bCollaborative);
}
this.canUnlockDocument2 = false;
}
};
spreadsheet_api.prototype._onApplyChanges = function(changes, fCallback) {
this.wbModel.DeserializeHistory(changes, fCallback);
};
spreadsheet_api.prototype._onUpdateAfterApplyChanges = function() {
if (!this.isDocumentLoadComplete) {
// При открытии после принятия изменений мы должны сбросить пересчетные индексы
this.collaborativeEditing.clearRecalcIndex();
this.onDocumentContentReady();
} else if (this.wb && !window["NATIVE_EDITOR_ENJINE"]) {
// Нужно послать 'обновить свойства' (иначе для удаления данных не обновится строка формул).
// ToDo Возможно стоит обновлять только строку формул
AscCommon.CollaborativeEditing.Load_Images();
this.wb._onWSSelectionChanged();
History.TurnOff();
this.wb.drawWorksheet();
History.TurnOn();
}
};
spreadsheet_api.prototype._onCleanSelection = function() {
if (this.wb) {
this.wb.getWorksheet().cleanSelection();
}
};
spreadsheet_api.prototype._onDrawSelection = function() {
if (this.wb) {
this.wb.getWorksheet()._drawSelection();
}
};
spreadsheet_api.prototype._onDrawFrozenPaneLines = function() {
if (this.wb) {
this.wb.getWorksheet()._drawFrozenPaneLines();
}
};
spreadsheet_api.prototype._onUpdateAllSheetsLock = function () {
if (this.wbModel) {
// Шлем update для листов
this.handlers.trigger("asc_onWorkbookLocked", this.asc_isWorkbookLocked());
var i, length, wsModel, wsIndex;
for (i = 0, length = this.wbModel.getWorksheetCount(); i < length; ++i) {
wsModel = this.wbModel.getWorksheet(i);
wsIndex = wsModel.getIndex();
this.handlers.trigger("asc_onWorksheetLocked", wsIndex, this.asc_isWorksheetLockedOrDeleted(wsIndex));
}
}
};
spreadsheet_api.prototype._onUpdateAllLayoutsLock = function () {
var t = this;
if (t.wbModel) {
var i, length, wsModel, wsIndex;
for (i = 0, length = t.wbModel.getWorksheetCount(); i < length; ++i) {
wsModel = t.wbModel.getWorksheet(i);
wsIndex = wsModel.getIndex();
var isLocked = t.asc_isLayoutLocked(wsIndex);
if (isLocked) {
t.handlers.trigger("asc_onLockDocumentProps", wsIndex);
} else {
t.handlers.trigger("asc_onUnLockDocumentProps", wsIndex);
}
}
}
};
spreadsheet_api.prototype._onUpdateLayoutMenu = function (nSheetId) {
var t = this;
if (t.wbModel) {
var wsModel = t.wbModel.getWorksheetById(nSheetId);
if (wsModel) {
var wsIndex = wsModel.getIndex();
t.handlers.trigger("asc_onUpdateDocumentProps", wsIndex);
}
}
};
spreadsheet_api.prototype._onShowDrawingObjects = function() {
if (this.wb) {
var ws = this.wb.getWorksheet();
if (ws && ws.objectRender) {
ws.objectRender.showDrawingObjects(true);
}
}
};
spreadsheet_api.prototype._onShowComments = function() {
if (this.wb) {
this.wb.getWorksheet().cellCommentator.drawCommentCells();
}
};
spreadsheet_api.prototype._onUpdateSheetsLock = function (lockElem) {
// Шлем update для листов, т.к. нужно залочить лист
if (c_oAscLockTypeElem.Sheet === lockElem.Element["type"]) {
this._onUpdateAllSheetsLock();
} else {
// Шлем update для листа
var wsModel = this.wbModel.getWorksheetById(lockElem.Element["sheetId"]);
if (wsModel) {
var wsIndex = wsModel.getIndex();
this.handlers.trigger("asc_onWorksheetLocked", wsIndex, this.asc_isWorksheetLockedOrDeleted(wsIndex));
}
}
};
spreadsheet_api.prototype._onUpdateLayoutLock = function(lockElem) {
var t = this;
var wsModel = t.wbModel.getWorksheetById(lockElem.Element["sheetId"]);
if (wsModel) {
var wsIndex = wsModel.getIndex();
var isLocked = t.asc_isLayoutLocked(wsIndex);
if(isLocked) {
t.handlers.trigger("asc_onLockDocumentProps", wsIndex);
} else {
t.handlers.trigger("asc_onUnLockDocumentProps", wsIndex);
}
}
};
spreadsheet_api.prototype._onUpdateFrozenPane = function(lockElem) {
return (c_oAscLockTypeElem.Object === lockElem.Element["type"] && lockElem.Element["rangeOrObjectId"] === AscCommonExcel.c_oAscLockNameFrozenPane);
};
spreadsheet_api.prototype._sendWorkbookStyles = function () {
if (this.wbModel) {
if (window["NATIVE_EDITOR_ENJINE"]) {
// Для нативной версии (сборка и приложение) не генерируем стили
return;
}
// Отправка стилей ячеек
this.handlers.trigger("asc_onInitEditorStyles",
this.wb.getCellStyles(this.styleThumbnailWidth, this.styleThumbnailHeight));
}
};
spreadsheet_api.prototype.startCollaborationEditing = function() {
// Начинаем совместное редактирование
this.collaborativeEditing.startCollaborationEditing();
if (this.isDocumentLoadComplete) {
var worksheet = this.wb.getWorksheet();
worksheet.cleanSelection();
worksheet._drawSelection();
worksheet._drawFrozenPaneLines();
if (worksheet.objectRender) {
worksheet.objectRender.showDrawingObjects(true);
}
}
};
spreadsheet_api.prototype.endCollaborationEditing = function() {
// Временно заканчиваем совместное редактирование
this.collaborativeEditing.endCollaborationEditing();
};
// End Load document
spreadsheet_api.prototype._openDocumentEndCallback = function () {
// Не инициализируем дважды
if (this.isDocumentLoadComplete || !this.ServerIdWaitComplete || !this.FontLoadWaitComplete) {
return;
}
if (AscCommon.EncryptionWorker)
{
AscCommon.EncryptionWorker.init();
if (!AscCommon.EncryptionWorker.isChangesHandled)
return AscCommon.EncryptionWorker.handleChanges(this.collaborativeEditing.m_arrChanges, this, this._openDocumentEndCallback);
}
if (0 === this.wbModel.getWorksheetCount()) {
this.sendEvent("asc_onError", c_oAscError.ID.ConvertationOpenError, c_oAscError.Level.Critical);
return;
}
this.wb = new AscCommonExcel.WorkbookView(this.wbModel, this.controller, this.handlers, this.HtmlElement,
this.topLineEditorElement, this, this.collaborativeEditing, this.fontRenderingMode);
if (this.isMobileVersion) {
this.wb.defaults.worksheetView.halfSelection = true;
this.wb.defaults.worksheetView.activeCellBorderColor = new CColor(79, 158, 79);
var _container = document.getElementById(this.HtmlElementName);
if (_container) {
_container.style.overflow = "hidden";
}
this.wb.MobileTouchManager = new AscCommonExcel.CMobileTouchManager({eventsElement: "cell_mobile_element"});
this.wb.MobileTouchManager.Init(this);
// input context must be created!!!
var _areaId = AscCommon.g_inputContext.HtmlArea.id;
var _element = document.getElementById(_areaId);
_element.parentNode.parentNode.style.zIndex = 10;
this.wb.MobileTouchManager.initEvents(AscCommon.g_inputContext.HtmlArea.id);
}
this.asc_CheckGuiControlColors();
this.sendColorThemes(this.wbModel.theme);
this.asc_ApplyColorScheme(false);
this.sendStandartTextures();
this.sendMathToMenu();
this._applyPreOpenLocks();
// Применяем пришедшие при открытии изменения
this._applyFirstLoadChanges();
// Меняем тип состояния (на никакое)
this.advancedOptionsAction = c_oAscAdvancedOptionsAction.None;
// Были ошибки при открытии, посылаем предупреждение
if (0 < this.wbModel.openErrors.length) {
this.sendEvent('asc_onError', c_oAscError.ID.OpenWarning, c_oAscError.Level.NoCritical);
}
//this.asc_Resize(); // Убрал, т.к. сверху приходит resize (http://bugzilla.onlyoffice.com/show_bug.cgi?id=14680)
};
// Переход на диапазон в листе
spreadsheet_api.prototype._asc_setWorksheetRange = function (val) {
// Получаем sheet по имени
var ranges = null, ws;
var sheet = val.asc_getSheet();
if (!sheet) {
ranges = AscCommonExcel.getRangeByRef(val.asc_getLocation(), this.wbModel.getActiveWs(), true);
if (ranges = ranges[0]) {
ws = ranges.worksheet;
}
} else {
ws = this.wbModel.getWorksheetByName(sheet);
}
if (!ws) {
this.handlers.trigger("asc_onHyperlinkClick", null);
return;
} else if (ws.getHidden()) {
return;
}
// Индекс листа
var sheetIndex = ws.getIndex();
// Если не совпали индекс листа и индекс текущего, то нужно сменить
if (this.asc_getActiveWorksheetIndex() !== sheetIndex) {
// Меняем активный лист
this.asc_showWorksheet(sheetIndex);
}
var range;
if (ranges) {
range = ranges.bbox;
} else {
range = ws.getRange2(val.asc_getRange());
if (range) {
range = range.getBBox0();
}
}
this.wb._onSetSelection(range, /*validRange*/ true);
};
spreadsheet_api.prototype._onSaveCallbackInner = function () {
var t = this;
AscCommon.CollaborativeEditing.Clear_CollaborativeMarks();
// Принимаем чужие изменения
this.collaborativeEditing.applyChanges();
this.CoAuthoringApi.onUnSaveLock = function () {
t.CoAuthoringApi.onUnSaveLock = null;
if (t.isForceSaveOnUserSave && t.IsUserSave) {
t.forceSaveButtonContinue = t.forceSave();
}
if (t.collaborativeEditing.getCollaborativeEditing()) {
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно заблокировать toolbar
t.wb._onWSSelectionChanged();
}
t.canSave = true;
t.IsUserSave = false;
t.lastSaveTime = null;
if (!t.forceSaveButtonContinue) {
t.sync_EndAction(c_oAscAsyncActionType.Information, c_oAscAsyncAction.Save);
}
// Обновляем состояние возможности сохранения документа
t.onUpdateDocumentModified(History.Have_Changes());
if (undefined !== window["AscDesktopEditor"]) {
window["AscDesktopEditor"]["OnSave"]();
}
if (t.disconnectOnSave) {
t.CoAuthoringApi.disconnect(t.disconnectOnSave.code, t.disconnectOnSave.reason);
t.disconnectOnSave = null;
}
if (t.canUnlockDocument) {
t._unlockDocument();
}
};
// Пересылаем свои изменения
this.collaborativeEditing.sendChanges(this.IsUserSave, true);
};
// Залочена ли панель для закрепления
spreadsheet_api.prototype._isLockedTabColor = function(index, callback) {
var sheetId = this.wbModel.getWorksheet(index).getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, null, sheetId, AscCommonExcel.c_oAscLockNameTabColor);
this.collaborativeEditing.lock([lockInfo], callback);
};
spreadsheet_api.prototype._isLockedSparkline = function (id, callback) {
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, /*subType*/null,
this.asc_getActiveWorksheetId(), id);
this.collaborativeEditing.lock([lockInfo], callback);
};
spreadsheet_api.prototype._isLockedPivot = function (pivotName, callback) {
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, /*subType*/null,
this.asc_getActiveWorksheetId(), pivotName);
this.collaborativeEditing.lock([lockInfo], callback);
};
spreadsheet_api.prototype._addWorksheet = function (name, i) {
var t = this;
var addWorksheetCallback = function(res) {
if (res) {
t.wbModel.createWorksheet(i, name);
t.wb.spliceWorksheet(i, 0, null);
if (!window["NATIVE_EDITOR_ENJINE"] || window['IS_NATIVE_EDITOR'] || window['DoctRendererMode']) {
t.asc_showWorksheet(i);
// Посылаем callback об изменении списка листов
t.sheetsChanged();
}
}
};
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null,
AscCommonExcel.c_oAscLockAddSheet, AscCommonExcel.c_oAscLockAddSheet);
this.collaborativeEditing.lock([lockInfo], addWorksheetCallback);
};
// Workbook interface
spreadsheet_api.prototype.asc_getWorksheetsCount = function() {
return this.wbModel.getWorksheetCount();
};
spreadsheet_api.prototype.asc_getWorksheetName = function(index) {
return this.wbModel.getWorksheet(index).getName();
};
spreadsheet_api.prototype.asc_getWorksheetTabColor = function(index) {
return this.wbModel.getWorksheet(index).getTabColor();
};
spreadsheet_api.prototype.asc_setWorksheetTabColor = function(index, color) {
var t = this;
var changeTabColorCallback = function(res) {
if (res) {
color = AscCommonExcel.CorrectAscColor(color);
t.wbModel.getWorksheet(index).setTabColor(color);
}
};
this._isLockedTabColor(index, changeTabColorCallback);
};
spreadsheet_api.prototype.asc_getActiveWorksheetIndex = function() {
return this.wbModel.getActive();
};
spreadsheet_api.prototype.asc_getActiveWorksheetId = function() {
var activeIndex = this.wbModel.getActive();
return this.wbModel.getWorksheet(activeIndex).getId();
};
spreadsheet_api.prototype.asc_getWorksheetId = function(index) {
return this.wbModel.getWorksheet(index).getId();
};
spreadsheet_api.prototype.asc_isWorksheetHidden = function(index) {
return this.wbModel.getWorksheet(index).getHidden();
};
spreadsheet_api.prototype.asc_getDefinedNames = function(defNameListId) {
return this.wb.getDefinedNames(defNameListId);
};
spreadsheet_api.prototype.asc_setDefinedNames = function(defName) {
// return this.wb.setDefinedNames(defName);
// Проверка глобального лока
if (this.collaborativeEditing.getGlobalLock()) {
return;
}
return this.wb.editDefinedNames(null, defName);
};
spreadsheet_api.prototype.asc_editDefinedNames = function(oldName, newName) {
// Проверка глобального лока
if (this.collaborativeEditing.getGlobalLock()) {
return;
}
return this.wb.editDefinedNames(oldName, newName);
};
spreadsheet_api.prototype.asc_delDefinedNames = function(oldName) {
// Проверка глобального лока
if (this.collaborativeEditing.getGlobalLock()) {
return;
}
return this.wb.delDefinedNames(oldName);
};
spreadsheet_api.prototype.asc_checkDefinedName = function(checkName, scope) {
return this.wbModel.checkDefName(checkName, scope);
};
spreadsheet_api.prototype.asc_getDefaultDefinedName = function() {
return this.wb.getDefaultDefinedName();
};
spreadsheet_api.prototype._onUpdateDefinedNames = function(lockElem) {
// if( lockElem.Element["subType"] == AscCommonExcel.c_oAscLockTypeElemSubType.DefinedNames ){
if( lockElem.Element["sheetId"] == -1 && lockElem.Element["rangeOrObjectId"] != -1 && !this.collaborativeEditing.getFast() ){
var dN = this.wbModel.dependencyFormulas.getDefNameByNodeId(lockElem.Element["rangeOrObjectId"]);
if (dN) {
dN.isLock = lockElem.UserId;
this.handlers.trigger("asc_onRefreshDefNameList",dN.getAscCDefName());
}
this.handlers.trigger("asc_onLockDefNameManager",Asc.c_oAscDefinedNameReason.LockDefNameManager);
}
};
spreadsheet_api.prototype._onUnlockDefName = function() {
this.wb.unlockDefName();
};
spreadsheet_api.prototype._onCheckDefNameLock = function() {
return this.wb._onCheckDefNameLock();
};
// Залочена ли работа с листом
spreadsheet_api.prototype.asc_isWorksheetLockedOrDeleted = function(index) {
var ws = this.wbModel.getWorksheet(index);
var sheetId = null;
if (null === ws || undefined === ws) {
sheetId = this.asc_getActiveWorksheetId();
} else {
sheetId = ws.getId();
}
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
// Проверим, редактирует ли кто-то лист
return (false !== this.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false));
};
// Залочена ли работа с листами
spreadsheet_api.prototype.asc_isWorkbookLocked = function() {
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, null, null);
// Проверим, редактирует ли кто-то лист
return (false !== this.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false));
};
// Залочена ли работа с листом
spreadsheet_api.prototype.asc_isLayoutLocked = function(index) {
var ws = this.wbModel.getWorksheet(index);
var sheetId = null;
if (null === ws || undefined === ws) {
sheetId = this.asc_getActiveWorksheetId();
} else {
sheetId = ws.getId();
}
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, /*subType*/null, sheetId, "layoutOptions");
// Проверим, редактирует ли кто-то лист
return (false !== this.collaborativeEditing.getLockIntersection(lockInfo, c_oAscLockTypes.kLockTypeOther, /*bCheckOnlyLockAll*/false));
};
spreadsheet_api.prototype.asc_getHiddenWorksheets = function() {
var model = this.wbModel;
var len = model.getWorksheetCount();
var i, ws, res = [];
for (i = 0; i < len; ++i) {
ws = model.getWorksheet(i);
if (ws.getHidden()) {
res.push({"index": i, "name": ws.getName()});
}
}
return res;
};
spreadsheet_api.prototype.asc_showWorksheet = function(index) {
if (typeof index === "number" && undefined !== index && null !== index) {
var t = this;
var ws = this.wbModel.getWorksheet(index);
var isHidden = ws.getHidden();
var showWorksheetCallback = function(res) {
if (res) {
t.wbModel.getWorksheet(index).setHidden(false);
t.wb.showWorksheet(index);
if (isHidden) {
// Посылаем callback об изменении списка листов
t.sheetsChanged();
}
}
};
if (isHidden) {
var sheetId = this.wbModel.getWorksheet(index).getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
this.collaborativeEditing.lock([lockInfo], showWorksheetCallback);
} else {
showWorksheetCallback(true);
}
}
};
spreadsheet_api.prototype.asc_hideWorksheet = function() {
var t = this;
// Колличество листов
var countWorksheets = this.asc_getWorksheetsCount();
// Колличество скрытых листов
var arrHideWorksheets = this.asc_getHiddenWorksheets();
var countHideWorksheets = arrHideWorksheets.length;
// Вдруг остался один лист
if (countWorksheets <= countHideWorksheets + 1) {
return false;
}
var model = this.wbModel;
// Активный лист
var activeWorksheet = model.getActive();
var sheetId = this.wbModel.getWorksheet(activeWorksheet).getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
var hideWorksheetCallback = function(res) {
if (res) {
t.wbModel.getWorksheet(activeWorksheet).setHidden(true);
}
};
this.collaborativeEditing.lock([lockInfo], hideWorksheetCallback);
return true;
};
spreadsheet_api.prototype.asc_renameWorksheet = function(name) {
// Проверка глобального лока
if (this.collaborativeEditing.getGlobalLock()) {
return false;
}
var i = this.wbModel.getActive();
var sheetId = this.wbModel.getWorksheet(i).getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
var t = this;
var renameCallback = function(res) {
if (res) {
t.wbModel.getWorksheet(i).setName(name);
t.sheetsChanged();
} else {
t.handlers.trigger("asc_onError", c_oAscError.ID.LockedWorksheetRename, c_oAscError.Level.NoCritical);
}
};
this.collaborativeEditing.lock([lockInfo], renameCallback);
return true;
};
spreadsheet_api.prototype.asc_addWorksheet = function(name) {
var i = this.wbModel.getActive();
this._addWorksheet(name, i + 1);
};
spreadsheet_api.prototype.asc_insertWorksheet = function(name) {
var i = this.wbModel.getActive();
this._addWorksheet(name, i);
};
// Удаление листа
spreadsheet_api.prototype.asc_deleteWorksheet = function() {
// Проверка глобального лока
if (this.collaborativeEditing.getGlobalLock()) {
return false;
}
var i = this.wbModel.getActive();
var activeSheet = this.wbModel.getWorksheet(i);
var activeName = parserHelp.getEscapeSheetName(activeSheet.sName);
var sheetId = activeSheet.getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
var t = this;
var deleteCallback = function(res) {
if (res) {
History.Create_NewPoint();
History.StartTransaction();
t.wbModel.dependencyFormulas.lockRecal();
// Нужно проверить все диаграммы, ссылающиеся на удаляемый лист
t.wbModel.forEach(function (ws) {
History.TurnOff();
var wsView = t.wb.getWorksheet(ws.index, true);
History.TurnOn();
ws.oDrawingOjectsManager.updateChartReferencesWidthHistory(activeName, parserHelp.getEscapeSheetName(ws.sName));
if (wsView && wsView.objectRender && wsView.objectRender.controller) {
wsView.objectRender.controller.recalculate2(true);
}
});
// Удаляем Worksheet и получаем новый активный индекс (-1 означает, что ничего не удалилось)
var activeNow = t.wbModel.removeWorksheet(i);
if (-1 !== activeNow) {
t.wb.removeWorksheet(i);
t.asc_showWorksheet(activeNow);
// Посылаем callback об изменении списка листов
t.sheetsChanged();
}
t.wbModel.dependencyFormulas.unlockRecal();
History.EndTransaction();
}
};
this.collaborativeEditing.lock([lockInfo], deleteCallback);
return true;
};
spreadsheet_api.prototype.asc_moveWorksheet = function(where) {
var i = this.wbModel.getActive();
var d = i < where ? +1 : -1;
// Мы должны поместить слева от заданного значения, поэтому если идем вправо, то вычтем 1
if (1 === d) {
where -= 1;
}
History.Create_NewPoint();
this.wb.replaceWorksheet(i, where);
this.wbModel.replaceWorksheet(i, where);
// Обновим текущий номер
this.asc_showWorksheet(where);
// Посылаем callback об изменении списка листов
this.sheetsChanged();
};
spreadsheet_api.prototype.asc_copyWorksheet = function(where, newName) {
var scale = this.asc_getZoom();
var i = this.wbModel.getActive();
// ToDo уйти от lock для листа при копировании
var sheetId = this.wbModel.getWorksheet(i).getId();
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Sheet, /*subType*/null, sheetId, sheetId);
var t = this;
var copyWorksheet = function(res) {
if (res) {
// ToDo перейти от wsViews на wsViewsId (сейчас вызываем раньше, чем в модели, т.к. там будет sortDependency
// и cleanCellCache, который создаст уже скопированный лист(и splice сработает неправильно))
History.Create_NewPoint();
t.wb.copyWorksheet(i, where);
t.wbModel.copyWorksheet(i, where, newName);
// Делаем активным скопированный
t.asc_showWorksheet(where);
t.asc_setZoom(scale);
// Посылаем callback об изменении списка листов
t.sheetsChanged();
}
};
this.collaborativeEditing.lock([lockInfo], copyWorksheet);
};
spreadsheet_api.prototype.asc_cleanSelection = function() {
this.wb.getWorksheet().cleanSelection();
};
spreadsheet_api.prototype.asc_getZoom = function() {
return this.wb.getZoom();
};
spreadsheet_api.prototype.asc_setZoom = function(scale) {
this.wb.changeZoom(scale);
};
spreadsheet_api.prototype.asc_enableKeyEvents = function(isEnabled, isFromInput) {
if (!this.isLoadFullApi) {
this.tmpFocus = isEnabled;
return;
}
if (this.wb) {
this.wb.enableKeyEventsHandler(isEnabled);
}
if (isFromInput !== true && AscCommon.g_inputContext)
AscCommon.g_inputContext.setInterfaceEnableKeyEvents(isEnabled);
};
spreadsheet_api.prototype.asc_IsFocus = function(bIsNaturalFocus) {
var res = true;
if(this.wb.cellEditor.isTopLineActive)
{
res = false;
}
else if (this.wb)
{
res = this.wb.getEnableKeyEventsHandler(bIsNaturalFocus);
}
return res;
};
spreadsheet_api.prototype.asc_searchEnabled = function(bIsEnabled) {
};
spreadsheet_api.prototype.asc_findText = function(options) {
if (window["NATIVE_EDITOR_ENJINE"]) {
if (this.wb.findCellText(options)) {
var ws = this.wb.getWorksheet();
var activeCell = this.wbModel.getActiveWs().selectionRange.activeCell;
return [ws.getCellLeftRelative(activeCell.col, 0), ws.getCellTopRelative(activeCell.row, 0)];
}
return null;
}
var d = this.wb.findCellText(options);
this.controller.scroll(d);
return !!d;
};
spreadsheet_api.prototype.asc_replaceText = function(options) {
options.lookIn = Asc.c_oAscFindLookIn.Formulas; // При замене поиск только в формулах
this.wb.replaceCellText(options);
};
spreadsheet_api.prototype.asc_endFindText = function() {
// Нужно очистить поиск
this.wb._cleanFindResults();
};
/**
* Делает активной указанную ячейку
* @param {String} reference Ссылка на ячейку вида A1 или R1C1
*/
spreadsheet_api.prototype.asc_findCell = function (reference) {
if (this.asc_getCellEditMode()) {
return;
}
var ws = this.wb.getWorksheet();
var d = ws.findCell(reference);
if (0 === d.length) {
return;
}
// Получаем sheet по имени
ws = d[0].getWorksheet();
if (!ws || ws.getHidden()) {
return;
}
// Индекс листа
var sheetIndex = ws.getIndex();
// Если не совпали индекс листа и индекс текущего, то нужно сменить
if (this.asc_getActiveWorksheetIndex() !== sheetIndex) {
// Меняем активный лист
this.asc_showWorksheet(sheetIndex);
}
ws = this.wb.getWorksheet();
ws.setSelection(d[0].getBBox0());
};
spreadsheet_api.prototype.asc_closeCellEditor = function (cancel) {
var result = true;
if (this.wb) {
result = this.wb.closeCellEditor(cancel);
}
return result;
};
spreadsheet_api.prototype.asc_setR1C1Mode = function (value) {
AscCommonExcel.g_R1C1Mode = value;
if (this.wbModel) {
this._onUpdateAfterApplyChanges();
this.wb._onUpdateSelectionName(true);
}
};
// Spreadsheet interface
spreadsheet_api.prototype.asc_getColumnWidth = function() {
var ws = this.wb.getWorksheet();
return ws.getSelectedColumnWidthInSymbols();
};
spreadsheet_api.prototype.asc_setColumnWidth = function(width) {
this.wb.getWorksheet().changeWorksheet("colWidth", width);
};
spreadsheet_api.prototype.asc_showColumns = function() {
this.wb.getWorksheet().changeWorksheet("showCols");
};
spreadsheet_api.prototype.asc_hideColumns = function() {
this.wb.getWorksheet().changeWorksheet("hideCols");
};
spreadsheet_api.prototype.asc_autoFitColumnWidth = function() {
this.wb.getWorksheet().autoFitColumnsWidth(null);
};
spreadsheet_api.prototype.asc_getRowHeight = function() {
var ws = this.wb.getWorksheet();
return ws.getSelectedRowHeight();
};
spreadsheet_api.prototype.asc_setRowHeight = function(height) {
this.wb.getWorksheet().changeWorksheet("rowHeight", height);
};
spreadsheet_api.prototype.asc_autoFitRowHeight = function() {
this.wb.getWorksheet().autoFitRowHeight(null);
};
spreadsheet_api.prototype.asc_showRows = function() {
this.wb.getWorksheet().changeWorksheet("showRows");
};
spreadsheet_api.prototype.asc_hideRows = function() {
this.wb.getWorksheet().changeWorksheet("hideRows");
};
spreadsheet_api.prototype.asc_insertCells = function(options) {
this.wb.getWorksheet().changeWorksheet("insCell", options);
};
spreadsheet_api.prototype.asc_deleteCells = function(options) {
this.wb.getWorksheet().changeWorksheet("delCell", options);
};
spreadsheet_api.prototype.asc_mergeCells = function(options) {
this.wb.getWorksheet().setSelectionInfo("merge", options);
};
spreadsheet_api.prototype.asc_sortCells = function(options) {
this.wb.getWorksheet().setSelectionInfo("sort", options);
};
spreadsheet_api.prototype.asc_emptyCells = function(options) {
this.wb.emptyCells(options);
};
spreadsheet_api.prototype.asc_drawDepCells = function(se) {
/* ToDo
if( se != AscCommonExcel.c_oAscDrawDepOptions.Clear )
this.wb.getWorksheet().prepareDepCells(se);
else
this.wb.getWorksheet().cleanDepCells();*/
};
// Потеряем ли мы что-то при merge ячеек
spreadsheet_api.prototype.asc_mergeCellsDataLost = function(options) {
return this.wb.getWorksheet().getSelectionMergeInfo(options);
};
//нужно ли спрашивать пользователя о расширении диапазона
spreadsheet_api.prototype.asc_sortCellsRangeExpand = function() {
return this.wb.getWorksheet().getSelectionSortInfo();
};
spreadsheet_api.prototype.asc_getSheetViewSettings = function() {
return this.wb.getWorksheet().getSheetViewSettings();
};
spreadsheet_api.prototype.asc_setDisplayGridlines = function (value) {
this.wb.getWorksheet()
.changeWorksheet("sheetViewSettings", {type: AscCH.historyitem_Worksheet_SetDisplayGridlines, value: value});
};
spreadsheet_api.prototype.asc_setDisplayHeadings = function (value) {
this.wb.getWorksheet()
.changeWorksheet("sheetViewSettings", {type: AscCH.historyitem_Worksheet_SetDisplayHeadings, value: value});
};
// Images & Charts
spreadsheet_api.prototype.asc_drawingObjectsExist = function() {
for (var i = 0; i < this.wb.model.aWorksheets.length; i++) {
if (this.wb.model.aWorksheets[i].Drawings && this.wb.model.aWorksheets[i].Drawings.length) {
return true;
}
}
return false;
};
spreadsheet_api.prototype.asc_getChartObject = function(bNoLock) { // Return new or existing chart. For image return null
this.asc_onOpenChartFrame();
var ws = this.wb.getWorksheet();
return ws.objectRender.getAscChartObject(bNoLock);
};
spreadsheet_api.prototype.asc_addChartDrawingObject = function(chart) {
var ws = this.wb.getWorksheet();
AscFonts.IsCheckSymbols = true;
var ret = ws.objectRender.addChartDrawingObject(chart);
AscFonts.IsCheckSymbols = false;
this.asc_onCloseChartFrame();
return ret;
};
spreadsheet_api.prototype.asc_editChartDrawingObject = function(chart) {
var ws = this.wb.getWorksheet();
var ret = ws.objectRender.editChartDrawingObject(chart);
this.asc_onCloseChartFrame();
return ret;
};
spreadsheet_api.prototype.asc_addImageDrawingObject = function (imageUrl) {
var t = this;
AscCommon.sendImgUrls(this, [imageUrl], function(data) {
if (data && data[0])
{
var ws = t.wb.getWorksheet();
ws.objectRender.addImageDrawingObject([data[0].url], null);
}
}, true);
};
spreadsheet_api.prototype.asc_AddMath = function(Type)
{
var t = this, fonts = {};
fonts["Cambria Math"] = 1;
t._loadFonts(fonts, function() {t.asc_AddMath2(Type);});
};
spreadsheet_api.prototype.asc_AddMath2 = function(Type)
{
var ws = this.wb.getWorksheet();
ws.objectRender.addMath(Type);
};
spreadsheet_api.prototype.asc_SetMathProps = function(MathProps)
{
var ws = this.wb.getWorksheet();
ws.objectRender.setMathProps(MathProps);
};
spreadsheet_api.prototype.asc_showImageFileDialog = function() {
// ToDo заменить на общую функцию для всех
this.asc_addImage();
};
// CRYPTPAD
// This method is necessary to add the loaded images to the list of loaded images
spreadsheet_api.prototype.asc_addImageCallback = function(res)
{
g_oDocumentUrls.addImageUrl(res.name, res.url)
};
spreadsheet_api.prototype.asyncImageEndLoadedBackground = function(_image)
{
};
spreadsheet_api.prototype._addImageUrl = function(urls) {
var ws = this.wb.getWorksheet();
if (ws) {
if (this.isImageChangeUrl || this.isShapeImageChangeUrl || this.isTextArtChangeUrl) {
ws.objectRender.editImageDrawingObject(urls[0]);
} else {
ws.objectRender.addImageDrawingObject(urls, null);
}
}
};
// signatures
spreadsheet_api.prototype.asc_addSignatureLine = function (sGuid, sSigner, sSigner2, sEmail, Width, Height, sImgUrl) {
var ws = this.wb.getWorksheet();
if(ws && ws.objectRender){
ws.objectRender.addSignatureLine(sGuid, sSigner, sSigner2, sEmail, Width, Height, sImgUrl);
}
};
spreadsheet_api.prototype.asc_getAllSignatures = function(){
var ret = [];
var aSpTree = [];
this.wbModel.forEach(function (ws) {
for (var j = 0; j < ws.Drawings.length; ++j) {
aSpTree.push(ws.Drawings[j].graphicObject);
}
});
AscFormat.DrawingObjectsController.prototype.getAllSignatures2(ret, aSpTree);
return ret;
};
spreadsheet_api.prototype.asc_CallSignatureDblClickEvent = function(sGuid){
var allSpr = this.asc_getAllSignatures();
for(i = 0; i < allSpr.length; ++i){
if(allSpr[i].signatureLine && allSpr[i].signatureLine.id === sGuid){
this.sendEvent("asc_onSignatureDblClick", sGuid, allSpr[i].extX, allSpr[i].extY);
}
}
};
//-------------------------------------------------------
spreadsheet_api.prototype.asc_setSelectedDrawingObjectLayer = function(layerType) {
var ws = this.wb.getWorksheet();
return ws.objectRender.setGraphicObjectLayer(layerType);
};
spreadsheet_api.prototype.asc_setSelectedDrawingObjectAlign = function(alignType) {
var ws = this.wb.getWorksheet();
return ws.objectRender.setGraphicObjectAlign(alignType);
};
spreadsheet_api.prototype.asc_addTextArt = function(nStyle) {
var ws = this.wb.getWorksheet();
return ws.objectRender.addTextArt(nStyle);
};
spreadsheet_api.prototype.asc_checkDataRange = function(dialogType, dataRange, fullCheck, isRows, chartType) {
return parserHelp.checkDataRange(this.wbModel, this.wb, dialogType, dataRange, fullCheck, isRows, chartType);
};
// Для вставки диаграмм в Word
spreadsheet_api.prototype.asc_getBinaryFileWriter = function() {
return new AscCommonExcel.BinaryFileWriter(this.wbModel);
};
spreadsheet_api.prototype.asc_getWordChartObject = function() {
var ws = this.wb.getWorksheet();
return ws.objectRender.getWordChartObject();
};
spreadsheet_api.prototype.asc_cleanWorksheet = function() {
var ws = this.wb.getWorksheet(); // Для удаления данных листа и диаграмм
if (ws.objectRender) {
ws.objectRender.cleanWorksheet();
}
};
// Выставление данных (пока используется только для MailMerge)
spreadsheet_api.prototype.asc_setData = function(oData) {
this.wb.getWorksheet().setData(oData);
};
// Получение данных
spreadsheet_api.prototype.asc_getData = function() {
this.asc_closeCellEditor();
return this.wb.getWorksheet().getData();
};
// Cell comment interface
spreadsheet_api.prototype.asc_addComment = function(oComment) {
};
spreadsheet_api.prototype.asc_changeComment = function(id, oComment) {
if (oComment.bDocument) {
this.wb.cellCommentator.changeComment(id, oComment);
} else {
var ws = this.wb.getWorksheet();
ws.cellCommentator.changeComment(id, oComment);
}
};
spreadsheet_api.prototype.asc_selectComment = function(id) {
var ws = this.wb.getWorksheet();
ws.cellCommentator.selectComment(id, /*bMove*/true);
};
spreadsheet_api.prototype.asc_showComment = function(id, bNew) {
var ws = this.wb.getWorksheet();
ws.cellCommentator.showCommentById(id, bNew);
};
spreadsheet_api.prototype.asc_findComment = function(id) {
var ws = this.wb.getWorksheet();
return ws.cellCommentator.findComment(id);
};
spreadsheet_api.prototype.asc_removeComment = function(id) {
var ws = this.wb.getWorksheet();
ws.cellCommentator.removeComment(id);
this.wb.cellCommentator.removeComment(id);
};
spreadsheet_api.prototype.asc_showComments = function (isShowSolved) {
this.wb.showComments(true, isShowSolved);
};
spreadsheet_api.prototype.asc_hideComments = function () {
this.wb.showComments(false, false);
};
// Shapes
spreadsheet_api.prototype.setStartPointHistory = function() {
this.noCreatePoint = true;
this.exucuteHistory = true;
this.asc_stopSaving();
};
spreadsheet_api.prototype.setEndPointHistory = function() {
this.noCreatePoint = false;
this.exucuteHistoryEnd = true;
this.asc_continueSaving();
};
spreadsheet_api.prototype.asc_startAddShape = function(sPreset) {
this.isStartAddShape = this.controller.isShapeAction = true;
var ws = this.wb.getWorksheet();
ws.objectRender.controller.startTrackNewShape(sPreset);
};
spreadsheet_api.prototype.asc_endAddShape = function() {
this.isStartAddShape = false;
this.handlers.trigger("asc_onEndAddShape");
};
spreadsheet_api.prototype.asc_addShapeOnSheet = function(sPreset) {
if(this.wb){
var ws = this.wb.getWorksheet();
if(ws && ws.objectRender){
ws.objectRender.addShapeOnSheet(sPreset);
}
}
};
spreadsheet_api.prototype.asc_addOleObjectAction = function(sLocalUrl, sData, sApplicationId, fWidth, fHeight, nWidthPix, nHeightPix)
{
var _image = this.ImageLoader.LoadImage(AscCommon.getFullImageSrc2(sLocalUrl), 1);
if (null != _image){
var ws = this.wb.getWorksheet();
if(ws.objectRender){
ws.objectRender.addOleObject(fWidth, fHeight, nWidthPix, nHeightPix, sLocalUrl, sData, sApplicationId);
}
}
};
spreadsheet_api.prototype.asc_editOleObjectAction = function(bResize, oOleObject, sImageUrl, sData, nPixWidth, nPixHeight)
{
if (oOleObject)
{
var ws = this.wb.getWorksheet();
if(ws.objectRender){
ws.objectRender.editOleObject(oOleObject, sData, sImageUrl, nPixWidth, nPixHeight, bResize);
}
}
};
spreadsheet_api.prototype.asc_startEditCurrentOleObject = function(){
var ws = this.wb.getWorksheet();
if(ws && ws.objectRender){
ws.objectRender.startEditCurrentOleObject();
}
};
spreadsheet_api.prototype.asc_isAddAutoshape = function() {
return this.isStartAddShape;
};
spreadsheet_api.prototype.asc_canAddShapeHyperlink = function() {
var ws = this.wb.getWorksheet();
return ws.objectRender.controller.canAddHyperlink();
};
spreadsheet_api.prototype.asc_canGroupGraphicsObjects = function() {
var ws = this.wb.getWorksheet();
return ws.objectRender.controller.canGroup();
};
spreadsheet_api.prototype.asc_groupGraphicsObjects = function() {
var ws = this.wb.getWorksheet();
ws.objectRender.groupGraphicObjects();
};
spreadsheet_api.prototype.asc_canUnGroupGraphicsObjects = function() {
var ws = this.wb.getWorksheet();
return ws.objectRender.controller.canUnGroup();
};
spreadsheet_api.prototype.asc_unGroupGraphicsObjects = function() {
var ws = this.wb.getWorksheet();
ws.objectRender.unGroupGraphicObjects();
};
spreadsheet_api.prototype.asc_changeShapeType = function(value) {
this.asc_setGraphicObjectProps(new Asc.asc_CImgProperty({ShapeProperties: {type: value}}));
};
spreadsheet_api.prototype.asc_getGraphicObjectProps = function() {
var ws = this.wb.getWorksheet();
if (ws && ws.objectRender && ws.objectRender.controller) {
return ws.objectRender.controller.getGraphicObjectProps();
}
return null;
};
spreadsheet_api.prototype.asc_setGraphicObjectProps = function(props) {
var ws = this.wb.getWorksheet();
var fReplaceCallback = null, sImageUrl = null;
if(!AscCommon.isNullOrEmptyString(props.ImageUrl)){
if(!g_oDocumentUrls.getImageLocal(props.ImageUrl)){
sImageUrl = props.ImageUrl;
fReplaceCallback = function(sLocalUrl){
props.ImageUrl = sLocalUrl;
}
}
}
else if(props.ShapeProperties && props.ShapeProperties.fill && props.ShapeProperties.fill.fill &&
!AscCommon.isNullOrEmptyString(props.ShapeProperties.fill.fill.url)){
if(!g_oDocumentUrls.getImageLocal(props.ShapeProperties.fill.fill.url)){
sImageUrl = props.ShapeProperties.fill.fill.url;
fReplaceCallback = function(sLocalUrl){
props.ShapeProperties.fill.fill.url = sLocalUrl;
}
}
}
if(fReplaceCallback) {
if (window["AscDesktopEditor"]) {
var firstUrl = window["AscDesktopEditor"]["LocalFileGetImageUrl"](sImageUrl);
firstUrl = g_oDocumentUrls.getImageUrl(firstUrl);
fReplaceCallback(firstUrl);
ws.objectRender.setGraphicObjectProps(props);
return;
}
AscCommon.sendImgUrls(this, [sImageUrl], function (data) {
if (data && data[0]) {
fReplaceCallback(data[0].url);
ws.objectRender.setGraphicObjectProps(props);
}
}, true);
}
else{
ws.objectRender.setGraphicObjectProps(props);
}
};
spreadsheet_api.prototype.asc_getOriginalImageSize = function() {
var ws = this.wb.getWorksheet();
return ws.objectRender.getOriginalImageSize();
};
spreadsheet_api.prototype.asc_setInterfaceDrawImagePlaceTextArt = function(elementId) {
this.textArtElementId = elementId;
};
spreadsheet_api.prototype.asc_changeImageFromFile = function() {
this.isImageChangeUrl = true;
this.asc_addImage();
};
spreadsheet_api.prototype.asc_changeShapeImageFromFile = function(type) {
this.isShapeImageChangeUrl = true;
this.textureType = type;
this.asc_addImage();
};
spreadsheet_api.prototype.asc_changeArtImageFromFile = function(type) {
this.isTextArtChangeUrl = true;
this.textureType = type;
this.asc_addImage();
};
spreadsheet_api.prototype.asc_putPrLineSpacing = function(type, value) {
var ws = this.wb.getWorksheet();
ws.objectRender.controller.putPrLineSpacing(type, value);
};
spreadsheet_api.prototype.asc_putLineSpacingBeforeAfter = function(type, value) { // "type == 0" means "Before", "type == 1" means "After"
var ws = this.wb.getWorksheet();
ws.objectRender.controller.putLineSpacingBeforeAfter(type, value);
};
spreadsheet_api.prototype.asc_setDrawImagePlaceParagraph = function(element_id, props) {
var ws = this.wb.getWorksheet();
ws.objectRender.setDrawImagePlaceParagraph(element_id, props);
};
spreadsheet_api.prototype.asc_replaceLoadImageCallback = function(fCallback){
if(this.wb){
var ws = this.wb.getWorksheet();
if(ws.objectRender){
ws.objectRender.asyncImageEndLoaded = fCallback;
}
}
};
spreadsheet_api.prototype.asyncImageEndLoaded = function(_image) {
if (this.wb) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.asyncImageEndLoaded) {
ws.objectRender.asyncImageEndLoaded(_image);
}
}
};
spreadsheet_api.prototype.asyncImagesDocumentEndLoaded = function() {
if (c_oAscAdvancedOptionsAction.None === this.advancedOptionsAction && this.wb && !window["NATIVE_EDITOR_ENJINE"]) {
var ws = this.wb.getWorksheet();
ws.objectRender.showDrawingObjects(true);
ws.objectRender.controller.getGraphicObjectProps();
}
};
spreadsheet_api.prototype.asyncImageEndLoadedBackground = function() {
var worksheet = this.wb.getWorksheet();
if (worksheet && worksheet.objectRender) {
var drawing_area = worksheet.objectRender.drawingArea;
if (drawing_area) {
for (var i = 0; i < drawing_area.frozenPlaces.length; ++i) {
worksheet.objectRender.showDrawingObjects(true);
worksheet.objectRender.controller && worksheet.objectRender.controller.getGraphicObjectProps();
}
}
}
};
// Frozen pane
spreadsheet_api.prototype.asc_freezePane = function () {
this.wb.getWorksheet().freezePane();
};
spreadsheet_api.prototype.asc_setSparklineGroup = function (id, oSparklineGroup) {
var t = this;
var changeSparkline = function (res) {
if (res) {
var changedSparkline = g_oTableId.Get_ById(id);
if (changedSparkline) {
History.Create_NewPoint();
History.StartTransaction();
changedSparkline.set(oSparklineGroup);
History.EndTransaction();
t.wb._onWSSelectionChanged();
t.wb.getWorksheet().draw();
}
}
};
this._isLockedSparkline(id, changeSparkline);
};
spreadsheet_api.prototype.asc_setListType = function (type, subtype) {
var t = this;
var sNeedFont = AscFormat.fGetFontByNumInfo(type, subtype);
if(typeof sNeedFont === "string" && sNeedFont.length > 0){
var t = this, fonts = {};
fonts[sNeedFont] = 1;
t._loadFonts(fonts, function() {t.asc_setListType2(type, subtype);});
}
else{
t.asc_setListType2(type, subtype);
}
};
spreadsheet_api.prototype.asc_setListType2 = function (type, subtype) {
var oWorksheet = this.wb.getWorksheet();
if(oWorksheet){
if(oWorksheet.isSelectOnShape){
return oWorksheet.objectRender.setListType(type, subtype);
}
}
};
// Cell interface
spreadsheet_api.prototype.asc_getCellInfo = function() {
return this.wb.getSelectionInfo();
};
// Получить координаты активной ячейки
spreadsheet_api.prototype.asc_getActiveCellCoord = function() {
var oWorksheet = this.wb.getWorksheet();
if(oWorksheet){
if(oWorksheet.isSelectOnShape){
return oWorksheet.objectRender.getContextMenuPosition();
}
else{
return oWorksheet.getActiveCellCoord();
}
}
};
// Получить координаты для каких-либо действий (для общей схемы)
spreadsheet_api.prototype.asc_getAnchorPosition = function() {
return this.asc_getActiveCellCoord();
};
// Получаем свойство: редактируем мы сейчас или нет
spreadsheet_api.prototype.asc_getCellEditMode = function() {
return this.wb ? this.wb.getCellEditMode() : false;
};
spreadsheet_api.prototype.asc_getIsTrackShape = function() {
return this.wb ? this.wb.getIsTrackShape() : false;
};
spreadsheet_api.prototype.asc_setCellFontName = function(fontName) {
var t = this, fonts = {};
fonts[fontName] = 1;
t._loadFonts(fonts, function() {
var ws = t.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellFontName) {
ws.objectRender.controller.setCellFontName(fontName);
} else {
t.wb.setFontAttributes("fn", fontName);
t.wb.restoreFocus();
}
});
};
spreadsheet_api.prototype.asc_setCellFontSize = function(fontSize) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellFontSize) {
ws.objectRender.controller.setCellFontSize(fontSize);
} else {
this.wb.setFontAttributes("fs", fontSize);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellBold = function(isBold) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellBold) {
ws.objectRender.controller.setCellBold(isBold);
} else {
this.wb.setFontAttributes("b", isBold);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellItalic = function(isItalic) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellItalic) {
ws.objectRender.controller.setCellItalic(isItalic);
} else {
this.wb.setFontAttributes("i", isItalic);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellUnderline = function(isUnderline) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellUnderline) {
ws.objectRender.controller.setCellUnderline(isUnderline);
} else {
this.wb.setFontAttributes("u", isUnderline ? Asc.EUnderline.underlineSingle : Asc.EUnderline.underlineNone);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellStrikeout = function(isStrikeout) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellStrikeout) {
ws.objectRender.controller.setCellStrikeout(isStrikeout);
} else {
this.wb.setFontAttributes("s", isStrikeout);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellSubscript = function(isSubscript) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellSubscript) {
ws.objectRender.controller.setCellSubscript(isSubscript);
} else {
this.wb.setFontAttributes("fa", isSubscript ? AscCommon.vertalign_SubScript : null);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellSuperscript = function(isSuperscript) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellSuperscript) {
ws.objectRender.controller.setCellSuperscript(isSuperscript);
} else {
this.wb.setFontAttributes("fa", isSuperscript ? AscCommon.vertalign_SuperScript : null);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellAlign = function(align) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellAlign) {
ws.objectRender.controller.setCellAlign(align);
} else {
this.wb.getWorksheet().setSelectionInfo("a", align);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellVertAlign = function(align) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellVertAlign) {
ws.objectRender.controller.setCellVertAlign(align);
} else {
this.wb.getWorksheet().setSelectionInfo("va", align);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellTextWrap = function(isWrapped) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellTextWrap) {
ws.objectRender.controller.setCellTextWrap(isWrapped);
} else {
this.wb.getWorksheet().setSelectionInfo("wrap", isWrapped);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellTextShrink = function(isShrinked) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellTextShrink) {
ws.objectRender.controller.setCellTextShrink(isShrinked);
} else {
this.wb.getWorksheet().setSelectionInfo("shrink", isShrinked);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellTextColor = function(color) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellTextColor) {
ws.objectRender.controller.setCellTextColor(color);
} else {
if (color instanceof Asc.asc_CColor) {
color = AscCommonExcel.CorrectAscColor(color);
this.wb.setFontAttributes("c", color);
this.wb.restoreFocus();
}
}
};
spreadsheet_api.prototype.asc_setCellBackgroundColor = function(color) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellBackgroundColor) {
ws.objectRender.controller.setCellBackgroundColor(color);
} else {
if (color instanceof Asc.asc_CColor || null == color) {
if (null != color) {
color = AscCommonExcel.CorrectAscColor(color);
}
this.wb.getWorksheet().setSelectionInfo("bc", color);
this.wb.restoreFocus();
}
}
};
spreadsheet_api.prototype.asc_setCellBorders = function(borders) {
this.wb.getWorksheet().setSelectionInfo("border", borders);
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_setCellFormat = function(format) {
this.wb.setCellFormat(format);
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_setCellAngle = function(angle) {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.setCellAngle) {
ws.objectRender.controller.setCellAngle(angle);
} else {
this.wb.getWorksheet().setSelectionInfo("angle", angle);
this.wb.restoreFocus();
}
};
spreadsheet_api.prototype.asc_setCellStyle = function(name) {
this.wb.getWorksheet().setSelectionInfo("style", name);
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_increaseCellDigitNumbers = function() {
this.wb.getWorksheet().setSelectionInfo("changeDigNum", +1);
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_decreaseCellDigitNumbers = function() {
this.wb.getWorksheet().setSelectionInfo("changeDigNum", -1);
this.wb.restoreFocus();
};
// Увеличение размера шрифта
spreadsheet_api.prototype.asc_increaseFontSize = function() {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.increaseFontSize) {
ws.objectRender.controller.increaseFontSize();
} else {
this.wb.changeFontSize("changeFontSize", true);
this.wb.restoreFocus();
}
};
// Уменьшение размера шрифта
spreadsheet_api.prototype.asc_decreaseFontSize = function() {
var ws = this.wb.getWorksheet();
if (ws.objectRender.selectedGraphicObjectsExists() && ws.objectRender.controller.decreaseFontSize) {
ws.objectRender.controller.decreaseFontSize();
} else {
this.wb.changeFontSize("changeFontSize", false);
this.wb.restoreFocus();
}
};
// Формат по образцу
spreadsheet_api.prototype.asc_formatPainter = function(stateFormatPainter) {
if (this.wb) {
this.wb.formatPainter(stateFormatPainter);
}
};
spreadsheet_api.prototype.asc_showAutoComplete = function() {
this.wb.showAutoComplete();
};
spreadsheet_api.prototype.asc_onMouseUp = function(event, x, y) {
if (this.wb) {
this.wb._onWindowMouseUpExternal(event, x, y);
}
};
//
spreadsheet_api.prototype.asc_selectFunction = function() {
};
spreadsheet_api.prototype.asc_insertHyperlink = function (options) {
AscFonts.FontPickerByCharacter.checkText(options.text, this, function () {
this.wb.insertHyperlink(options);
});
};
spreadsheet_api.prototype.asc_removeHyperlink = function() {
this.wb.removeHyperlink();
};
spreadsheet_api.prototype.asc_insertFormula = function(functionName, type, autoComplete) {
this.wb.insertFormulaInEditor(functionName, type, autoComplete);
this.wb.restoreFocus();
};
spreadsheet_api.prototype.asc_getFormulasInfo = function() {
return this.formulasList;
};
spreadsheet_api.prototype.asc_getFormulaLocaleName = function(name) {
return AscCommonExcel.cFormulaFunctionToLocale ? AscCommonExcel.cFormulaFunctionToLocale[name] : name;
};
spreadsheet_api.prototype.asc_recalc = function(isRecalcWB) {
this.wbModel.recalcWB(isRecalcWB);
};
spreadsheet_api.prototype.asc_setFontRenderingMode = function(mode) {
if (mode !== this.fontRenderingMode) {
this.fontRenderingMode = mode;
if (this.wb) {
this.wb.setFontRenderingMode(mode, /*isInit*/false);
}
}
};
/**
* Режим выбора диапазона
* @param {Asc.c_oAscSelectionDialogType} selectionDialogType
* @param selectRange
*/
spreadsheet_api.prototype.asc_setSelectionDialogMode = function(selectionDialogType, selectRange) {
this.controller.setSelectionDialogMode(Asc.c_oAscSelectionDialogType.None !== selectionDialogType);
if (this.wb) {
this.wb._onStopFormatPainter();
this.wb.setSelectionDialogMode(selectionDialogType, selectRange);
}
};
spreadsheet_api.prototype.asc_SendThemeColors = function(colors, standart_colors) {
this._gui_control_colors = { Colors: colors, StandartColors: standart_colors };
var ret = this.handlers.trigger("asc_onSendThemeColors", colors, standart_colors);
if (false !== ret) {
this._gui_control_colors = null;
}
};
spreadsheet_api.prototype.asc_ChangeColorScheme = function (index) {
var t = this;
var onChangeColorScheme = function (res) {
if (res) {
if (t.wbModel.changeColorScheme(index)) {
t.asc_AfterChangeColorScheme();
}
}
};
// ToDo поправить заглушку, сделать новый тип lock element-а
var sheetId = -1; // Делаем не существующий лист и не существующий объект
var lockInfo = this.collaborativeEditing.getLockInfo(c_oAscLockTypeElem.Object, /*subType*/null, sheetId,
sheetId);
this.collaborativeEditing.lock([lockInfo], onChangeColorScheme);
};
spreadsheet_api.prototype.asc_AfterChangeColorScheme = function() {
this.asc_CheckGuiControlColors();
this.asc_ApplyColorScheme(true);
};
spreadsheet_api.prototype.asc_ApplyColorScheme = function(bRedraw) {
if (window['IS_NATIVE_EDITOR'] || !window["NATIVE_EDITOR_ENJINE"]) {
var wsViews = Asc["editor"].wb.wsViews;
History.Get_RecalcData();
for (var i = 0; i < wsViews.length; ++i) {
if (wsViews[i] && wsViews[i].objectRender && wsViews[i].objectRender.controller) {
wsViews[i].objectRender.controller.startRecalculate(false);
}
}
this.chartPreviewManager.clearPreviews();
this.textArtPreviewManager.clear();
}
// На view-режиме не нужно отправлять стили
if (this.canEdit()) {
// Отправка стилей
this._sendWorkbookStyles();
}
if (bRedraw) {
this.handlers.trigger("asc_onUpdateChartStyles");
this.handlers.trigger("asc_onSelectionChanged", this.asc_getCellInfo());
this.wb.drawWS();
}
};
/////////////////////////////////////////////////////////////////////////
////////////////////////////AutoSave api/////////////////////////////////
/////////////////////////////////////////////////////////////////////////
spreadsheet_api.prototype._autoSaveInner = function () {
if (this.asc_getCellEditMode() || this.asc_getIsTrackShape()) {
return;
}
if (!History.Have_Changes(true) && !(this.collaborativeEditing.getCollaborativeEditing() &&
0 !== this.collaborativeEditing.getOwnLocksLength())) {
if (this.collaborativeEditing.getFast() && this.collaborativeEditing.haveOtherChanges()) {
AscCommon.CollaborativeEditing.Clear_CollaborativeMarks();
// Принимаем чужие изменения
this.collaborativeEditing.applyChanges();
// Пересылаем свои изменения (просто стираем чужие lock-и, т.к. своих изменений нет)
this.collaborativeEditing.sendChanges();
// Шлем update для toolbar-а, т.к. когда select в lock ячейке нужно заблокировать toolbar
this.wb._onWSSelectionChanged();
}
return;
}
if (null === this.lastSaveTime) {
this.lastSaveTime = new Date();
return;
}
var saveGap = this.collaborativeEditing.getFast() ? this.autoSaveGapRealTime :
(this.collaborativeEditing.getCollaborativeEditing() ? this.autoSaveGapSlow : this.autoSaveGapFast);
var gap = new Date() - this.lastSaveTime - saveGap;
if (0 <= gap) {
this.asc_Save(true);
}
};
spreadsheet_api.prototype._onUpdateDocumentCanSave = function () {
// Можно модифицировать это условие на более быстрое (менять самим состояние в аргументах, а не запрашивать каждый раз)
var tmp = History.Have_Changes() || (this.collaborativeEditing.getCollaborativeEditing() &&
0 !== this.collaborativeEditing.getOwnLocksLength()) || this.asc_getCellEditMode();
if (tmp !== this.isDocumentCanSave) {
this.isDocumentCanSave = tmp;
this.handlers.trigger('asc_onDocumentCanSaveChanged', this.isDocumentCanSave);
}
};
spreadsheet_api.prototype._onUpdateDocumentCanUndoRedo = function () {
AscCommon.History._sendCanUndoRedo();
};
spreadsheet_api.prototype._onCheckCommentRemoveLock = function(lockElem) {
var res = false;
var sheetId = lockElem["sheetId"];
if (-1 !== sheetId && 0 === sheetId.indexOf(AscCommonExcel.CCellCommentator.sStartCommentId)) {
// Коммментарий
res = true;
this.handlers.trigger("asc_onUnLockComment", lockElem["rangeOrObjectId"]);
}
return res;
};
spreadsheet_api.prototype.onUpdateDocumentModified = function(bIsModified) {
// Обновляем только после окончания сохранения
if (this.canSave) {
this.handlers.trigger("asc_onDocumentModifiedChanged", bIsModified);
this._onUpdateDocumentCanSave();
if (undefined !== window["AscDesktopEditor"]) {
window["AscDesktopEditor"]["onDocumentModifiedChanged"](bIsModified);
}
}
};
// Выставление локали
spreadsheet_api.prototype.asc_setLocalization = function (oLocalizedData) {
if (!this.isLoadFullApi) {
this.tmpLocalization = oLocalizedData;
return;
}
if (null == oLocalizedData) {
AscCommonExcel.cFormulaFunctionLocalized = null;
AscCommonExcel.cFormulaFunctionToLocale = null;
} else {
AscCommonExcel.cFormulaFunctionLocalized = {};
AscCommonExcel.cFormulaFunctionToLocale = {};
var localName;
for (var i in AscCommonExcel.cFormulaFunction) {
localName = oLocalizedData[i] ? oLocalizedData[i] : null;
localName = localName ? localName : i;
AscCommonExcel.cFormulaFunctionLocalized[localName] = AscCommonExcel.cFormulaFunction[i];
AscCommonExcel.cFormulaFunctionToLocale[i] = localName;
}
}
AscCommon.build_local_rx(oLocalizedData ? oLocalizedData["LocalFormulaOperands"] : null);
if (this.wb) {
this.wb.initFormulasList();
}
if (this.wbModel) {
this.wbModel.rebuildColors();
}
};
spreadsheet_api.prototype.asc_nativeOpenFile = function(base64File, version, isUser, xlsxPath) {
var t = this;
asc["editor"] = this;
this.SpellCheckUrl = '';
if (undefined == isUser) {
this.User = new AscCommon.asc_CUser();
this.User.setId("TM");
this.User.setUserName("native");
}
if (undefined !== version) {
AscCommon.CurFileVersion = version;
}
this._openDocument(base64File);
var thenCallback = function() {
g_oIdCounter.Set_Load(false);
AscCommon.checkCultureInfoFontPicker();
AscCommonExcel.asc_CStylesPainter.prototype.asc_checkStylesNames(t.wbModel.CellStyles);
t._coAuthoringInit();
t.wb = new AscCommonExcel.WorkbookView(t.wbModel, t.controller, t.handlers, window["_null_object"], window["_null_object"], t, t.collaborativeEditing, t.fontRenderingMode);
};
return this.openDocumentFromZip(this.wbModel, undefined, xlsxPath).then(thenCallback, thenCallback);
};
spreadsheet_api.prototype.asc_nativeCalculateFile = function() {
window['DoctRendererMode'] = true;
this.wb._nativeCalculate();
};
spreadsheet_api.prototype.asc_nativeApplyChanges = function(changes) {
for (var i = 0, l = changes.length; i < l; ++i) {
this.CoAuthoringApi.onSaveChanges(changes[i], null, true);
}
this.collaborativeEditing.applyChanges();
};
spreadsheet_api.prototype.asc_nativeApplyChanges2 = function(data, isFull) {
if (null != this.wbModel) {
this.oRedoObjectParamNative = this.wbModel.DeserializeHistoryNative(this.oRedoObjectParamNative, data, isFull);
}
if (isFull) {
this._onUpdateAfterApplyChanges();
}
};
spreadsheet_api.prototype.asc_nativeGetFile = function() {
var oBinaryFileWriter = new AscCommonExcel.BinaryFileWriter(this.wbModel);
return oBinaryFileWriter.Write();
};
spreadsheet_api.prototype.asc_nativeGetFile3 = function()
{
var oBinaryFileWriter = new AscCommonExcel.BinaryFileWriter(this.wbModel);
oBinaryFileWriter.Write(true, true);
return { data: oBinaryFileWriter.Write(true, true), header: oBinaryFileWriter.WriteFileHeader(oBinaryFileWriter.Memory.GetCurPosition(), Asc.c_nVersionNoBase64) };
};
spreadsheet_api.prototype.asc_nativeGetFileData = function() {
var oBinaryFileWriter = new AscCommonExcel.BinaryFileWriter(this.wbModel);
oBinaryFileWriter.Write(true);
var _header = oBinaryFileWriter.WriteFileHeader(oBinaryFileWriter.Memory.GetCurPosition(), Asc.c_nVersionNoBase64);
window["native"]["Save_End"](_header, oBinaryFileWriter.Memory.GetCurPosition());
return oBinaryFileWriter.Memory.ImData.data;
};
spreadsheet_api.prototype.asc_nativeCalculate = function() {
};
spreadsheet_api.prototype.asc_nativePrint = function (_printer, _page, _param) {
var _adjustPrint = window.AscDesktopEditor_PrintData || new Asc.asc_CAdjustPrint();
window.AscDesktopEditor_PrintData = undefined;
var isOnePage = ((_param & 0x0100) == 0x0100);
_param &= 0xFF;
if (1 == _param) {
_adjustPrint.asc_setPrintType(Asc.c_oAscPrintType.EntireWorkbook);
var pageSetup;
var countWorksheets = this.wbModel.getWorksheetCount();
for (var j = 0; j < countWorksheets; ++j) {
pageSetup = this.wbModel.getWorksheet(j).PagePrintOptions.asc_getPageSetup();
pageSetup.asc_setFitToWidth(true);
pageSetup.asc_setFitToHeight(true);
}
}
var _printPagesData = this.wb.calcPagesPrint(_adjustPrint);
if (undefined === _printer && _page === undefined) {
_printer = this.wb.printSheets(_printPagesData).DocumentRenderer;
if (undefined !== window["AscDesktopEditor"]) {
var pagescount = _printer.m_lPagesCount;
window["AscDesktopEditor"]["Print_Start"](this.documentId + "/", pagescount, "", -1);
for (var i = 0; i < pagescount; i++) {
var _start = _printer.m_arrayPages[i].StartOffset;
var _end = _printer.Memory.pos;
if (i != (pagescount - 1)) {
_end = _printer.m_arrayPages[i + 1].StartOffset;
}
window["AscDesktopEditor"]["Print_Page"](
_printer.Memory.GetBase64Memory2(_start, _end - _start),
_printer.m_arrayPages[i].Width, _printer.m_arrayPages[i].Height);
}
window["AscDesktopEditor"]["Print_End"]();
}
} else {
this.wb.printSheets(_printPagesData, _printer);
}
return _printer.Memory;
};
spreadsheet_api.prototype.asc_nativePrintPagesCount = function() {
return 1;
};
spreadsheet_api.prototype.asc_nativeGetPDF = function(_param) {
var _ret = this.asc_nativePrint(undefined, undefined, _param);
window["native"]["Save_End"]("", _ret.GetCurPosition());
return _ret.data;
};
spreadsheet_api.prototype.asc_canPaste = function () {
History.Create_NewPoint();
History.StartTransaction();
return true;
};
spreadsheet_api.prototype.asc_endPaste = function () {
History.EndTransaction();
};
spreadsheet_api.prototype.asc_Recalculate = function () {
History.EndTransaction();
this._onUpdateAfterApplyChanges();
};
spreadsheet_api.prototype.pre_Paste = function(_fonts, _images, callback)
{
AscFonts.FontPickerByCharacter.extendFonts(_fonts);
var oFontMap = {};
for(var i = 0; i < _fonts.length; ++i){
oFontMap[_fonts[i].name] = 1;
}
this._loadFonts(oFontMap, function() {
var aImages = [];
for(var key in _images){
if(_images.hasOwnProperty(key)){
aImages.push(_images[key])
}
}
if(aImages.length > 0) {
window["Asc"]["editor"].ImageLoader.LoadDocumentImages(aImages, null);
}
callback();
});
};
spreadsheet_api.prototype.getDefaultFontFamily = function () {
return this.wbModel.getDefaultFont();
};
spreadsheet_api.prototype.getDefaultFontSize = function () {
return this.wbModel.getDefaultSize();
};
spreadsheet_api.prototype._onEndLoadSdk = function () {
AscCommon.baseEditorsApi.prototype._onEndLoadSdk.call(this);
History = AscCommon.History;
this.controller = new AscCommonExcel.asc_CEventsController();
this.formulasList = AscCommonExcel.getFormulasInfo();
this.asc_setLocale(this.tmpLocale);
this.asc_setLocalization(this.tmpLocalization);
this.asc_setViewMode(this.isViewMode);
if (this.openFileCryptBinary)
{
window.openFileCryptCallback(this.openFileCryptBinary);
this.openFileCryptBinary = null;
}
};
spreadsheet_api.prototype.asc_OnShowContextMenu = function() {
this.asc_closeCellEditor();
};
spreadsheet_api.prototype._changePivotStyle = function (pivot, callback) {
var t = this;
var changePivotStyle = function (res) {
var ws, wsModel, pivotRange, pos, i;
if (res) {
wsModel = t.wbModel.getActiveWs();
pivotRange = pivot.getRange().clone();
for (i = 0; i < pivot.pageFieldsPositions.length; ++i) {
pos = pivot.pageFieldsPositions[i];
pivotRange.union3(pos.col + 1, pos.row);
}
History.Create_NewPoint();
History.StartTransaction();
callback(wsModel);
History.EndTransaction();
pivotRange.union2(pivot.getRange());
// ToDo update ranges, not big range
for (i = 0; i < pivot.pageFieldsPositions.length; ++i) {
pos = pivot.pageFieldsPositions[i];
pivotRange.union3(pos.col + 1, pos.row);
}
wsModel.updatePivotTablesStyle(pivotRange);
ws = t.wb.getWorksheet();
ws._onUpdateFormatTable(pivotRange);
t.wb._onWSSelectionChanged();
ws.draw();
}
};
this._isLockedPivot(pivot.asc_getName(), changePivotStyle);
};
spreadsheet_api.prototype._selectSearchingResults = function () {
var ws = this.wbModel.getActiveWs();
if (ws && ws.lastFindOptions) {
this.wb.drawWS();
}
};
/*
* Export
* -----------------------------------------------------------------------------
*/
asc["spreadsheet_api"] = spreadsheet_api;
prot = spreadsheet_api.prototype;
prot["asc_GetFontThumbnailsPath"] = prot.asc_GetFontThumbnailsPath;
prot["asc_setDocInfo"] = prot.asc_setDocInfo;
prot['asc_getCurrencySymbols'] = prot.asc_getCurrencySymbols;
prot['asc_getLocaleExample'] = prot.asc_getLocaleExample;
prot['asc_getFormatCells'] = prot.asc_getFormatCells;
prot["asc_getLocaleCurrency"] = prot.asc_getLocaleCurrency;
prot["asc_setLocale"] = prot.asc_setLocale;
prot["asc_getLocale"] = prot.asc_getLocale;
prot["asc_getEditorPermissions"] = prot.asc_getEditorPermissions;
prot["asc_LoadDocument"] = prot.asc_LoadDocument;
prot["asc_DownloadAs"] = prot.asc_DownloadAs;
prot["asc_Save"] = prot.asc_Save;
prot["forceSave"] = prot.forceSave;
prot["asc_setIsForceSaveOnUserSave"] = prot.asc_setIsForceSaveOnUserSave;
prot["asc_Print"] = prot.asc_Print;
prot["asc_Resize"] = prot.asc_Resize;
prot["asc_Copy"] = prot.asc_Copy;
prot["asc_Paste"] = prot.asc_Paste;
prot["asc_SpecialPaste"] = prot.asc_SpecialPaste;
prot["asc_Cut"] = prot.asc_Cut;
prot["asc_Undo"] = prot.asc_Undo;
prot["asc_Redo"] = prot.asc_Redo;
prot["asc_getDocumentName"] = prot.asc_getDocumentName;
prot["asc_isDocumentModified"] = prot.asc_isDocumentModified;
prot["asc_isDocumentCanSave"] = prot.asc_isDocumentCanSave;
prot["asc_getCanUndo"] = prot.asc_getCanUndo;
prot["asc_getCanRedo"] = prot.asc_getCanRedo;
prot["asc_setAutoSaveGap"] = prot.asc_setAutoSaveGap;
prot["asc_setViewMode"] = prot.asc_setViewMode;
prot["asc_setFilteringMode"] = prot.asc_setFilteringMode;
prot["asc_setRestriction"] = prot.asc_setRestriction;
prot["asc_setAdvancedOptions"] = prot.asc_setAdvancedOptions;
prot["asc_setPageOptions"] = prot.asc_setPageOptions;
prot["asc_savePagePrintOptions"] = prot.asc_savePagePrintOptions;
prot["asc_getPageOptions"] = prot.asc_getPageOptions;
prot["asc_changeDocSize"] = prot.asc_changeDocSize;
prot["asc_changePageMargins"] = prot.asc_changePageMargins;
prot["asc_setPageOption"] = prot.asc_setPageOption;
prot["asc_changePageOrient"] = prot.asc_changePageOrient;
prot["asc_decodeBuffer"] = prot.asc_decodeBuffer;
prot["asc_registerCallback"] = prot.asc_registerCallback;
prot["asc_unregisterCallback"] = prot.asc_unregisterCallback;
prot["asc_changeArtImageFromFile"] = prot.asc_changeArtImageFromFile;
prot["asc_SetDocumentPlaceChangedEnabled"] = prot.asc_SetDocumentPlaceChangedEnabled;
prot["asc_SetFastCollaborative"] = prot.asc_SetFastCollaborative;
prot["asc_setThumbnailStylesSizes"] = prot.asc_setThumbnailStylesSizes;
// Workbook interface
prot["asc_getWorksheetsCount"] = prot.asc_getWorksheetsCount;
prot["asc_getWorksheetName"] = prot.asc_getWorksheetName;
prot["asc_getWorksheetTabColor"] = prot.asc_getWorksheetTabColor;
prot["asc_setWorksheetTabColor"] = prot.asc_setWorksheetTabColor;
prot["asc_getActiveWorksheetIndex"] = prot.asc_getActiveWorksheetIndex;
prot["asc_getActiveWorksheetId"] = prot.asc_getActiveWorksheetId;
prot["asc_getWorksheetId"] = prot.asc_getWorksheetId;
prot["asc_isWorksheetHidden"] = prot.asc_isWorksheetHidden;
prot["asc_isWorksheetLockedOrDeleted"] = prot.asc_isWorksheetLockedOrDeleted;
prot["asc_isWorkbookLocked"] = prot.asc_isWorkbookLocked;
prot["asc_isLayoutLocked"] = prot.asc_isLayoutLocked;
prot["asc_getHiddenWorksheets"] = prot.asc_getHiddenWorksheets;
prot["asc_showWorksheet"] = prot.asc_showWorksheet;
prot["asc_hideWorksheet"] = prot.asc_hideWorksheet;
prot["asc_renameWorksheet"] = prot.asc_renameWorksheet;
prot["asc_addWorksheet"] = prot.asc_addWorksheet;
prot["asc_insertWorksheet"] = prot.asc_insertWorksheet;
prot["asc_deleteWorksheet"] = prot.asc_deleteWorksheet;
prot["asc_moveWorksheet"] = prot.asc_moveWorksheet;
prot["asc_copyWorksheet"] = prot.asc_copyWorksheet;
prot["asc_cleanSelection"] = prot.asc_cleanSelection;
prot["asc_getZoom"] = prot.asc_getZoom;
prot["asc_setZoom"] = prot.asc_setZoom;
prot["asc_enableKeyEvents"] = prot.asc_enableKeyEvents;
prot["asc_searchEnabled"] = prot.asc_searchEnabled;
prot["asc_findText"] = prot.asc_findText;
prot["asc_replaceText"] = prot.asc_replaceText;
prot["asc_endFindText"] = prot.asc_endFindText;
prot["asc_findCell"] = prot.asc_findCell;
prot["asc_closeCellEditor"] = prot.asc_closeCellEditor;
prot["asc_setR1C1Mode"] = prot.asc_setR1C1Mode;
// Spreadsheet interface
prot["asc_getColumnWidth"] = prot.asc_getColumnWidth;
prot["asc_setColumnWidth"] = prot.asc_setColumnWidth;
prot["asc_showColumns"] = prot.asc_showColumns;
prot["asc_hideColumns"] = prot.asc_hideColumns;
prot["asc_autoFitColumnWidth"] = prot.asc_autoFitColumnWidth;
prot["asc_getRowHeight"] = prot.asc_getRowHeight;
prot["asc_setRowHeight"] = prot.asc_setRowHeight;
prot["asc_autoFitRowHeight"] = prot.asc_autoFitRowHeight;
prot["asc_showRows"] = prot.asc_showRows;
prot["asc_hideRows"] = prot.asc_hideRows;
prot["asc_insertCells"] = prot.asc_insertCells;
prot["asc_deleteCells"] = prot.asc_deleteCells;
prot["asc_mergeCells"] = prot.asc_mergeCells;
prot["asc_sortCells"] = prot.asc_sortCells;
prot["asc_emptyCells"] = prot.asc_emptyCells;
prot["asc_mergeCellsDataLost"] = prot.asc_mergeCellsDataLost;
prot["asc_sortCellsRangeExpand"] = prot.asc_sortCellsRangeExpand;
prot["asc_getSheetViewSettings"] = prot.asc_getSheetViewSettings;
prot["asc_setDisplayGridlines"] = prot.asc_setDisplayGridlines;
prot["asc_setDisplayHeadings"] = prot.asc_setDisplayHeadings;
// Defined Names
prot["asc_getDefinedNames"] = prot.asc_getDefinedNames;
prot["asc_setDefinedNames"] = prot.asc_setDefinedNames;
prot["asc_editDefinedNames"] = prot.asc_editDefinedNames;
prot["asc_delDefinedNames"] = prot.asc_delDefinedNames;
prot["asc_getDefaultDefinedName"] = prot.asc_getDefaultDefinedName;
prot["asc_checkDefinedName"] = prot.asc_checkDefinedName;
// Auto filters interface + format as table
prot["asc_addAutoFilter"] = prot.asc_addAutoFilter;
prot["asc_changeAutoFilter"] = prot.asc_changeAutoFilter;
prot["asc_applyAutoFilter"] = prot.asc_applyAutoFilter;
prot["asc_applyAutoFilterByType"] = prot.asc_applyAutoFilterByType;
prot["asc_reapplyAutoFilter"] = prot.asc_reapplyAutoFilter;
prot["asc_sortColFilter"] = prot.asc_sortColFilter;
prot["asc_getAddFormatTableOptions"] = prot.asc_getAddFormatTableOptions;
prot["asc_clearFilter"] = prot.asc_clearFilter;
prot["asc_clearFilterColumn"] = prot.asc_clearFilterColumn;
prot["asc_changeSelectionFormatTable"] = prot.asc_changeSelectionFormatTable;
prot["asc_changeFormatTableInfo"] = prot.asc_changeFormatTableInfo;
prot["asc_insertCellsInTable"] = prot.asc_insertCellsInTable;
prot["asc_deleteCellsInTable"] = prot.asc_deleteCellsInTable;
prot["asc_changeDisplayNameTable"] = prot.asc_changeDisplayNameTable;
prot["asc_changeTableRange"] = prot.asc_changeTableRange;
prot["asc_convertTableToRange"] = prot.asc_convertTableToRange;
prot["asc_getTablePictures"] = prot.asc_getTablePictures;
prot["asc_applyAutoCorrectOptions"] = prot.asc_applyAutoCorrectOptions;
// Drawing objects interface
prot["asc_showDrawingObjects"] = prot.asc_showDrawingObjects;
prot["asc_drawingObjectsExist"] = prot.asc_drawingObjectsExist;
prot["asc_getChartObject"] = prot.asc_getChartObject;
prot["asc_addChartDrawingObject"] = prot.asc_addChartDrawingObject;
prot["asc_editChartDrawingObject"] = prot.asc_editChartDrawingObject;
prot["asc_addImageDrawingObject"] = prot.asc_addImageDrawingObject;
prot["asc_setSelectedDrawingObjectLayer"] = prot.asc_setSelectedDrawingObjectLayer;
prot["asc_setSelectedDrawingObjectAlign"] = prot.asc_setSelectedDrawingObjectAlign;
prot["asc_getChartPreviews"] = prot.asc_getChartPreviews;
prot["asc_getTextArtPreviews"] = prot.asc_getTextArtPreviews;
prot['asc_getPropertyEditorShapes'] = prot.asc_getPropertyEditorShapes;
prot['asc_getPropertyEditorTextArts'] = prot.asc_getPropertyEditorTextArts;
prot["asc_checkDataRange"] = prot.asc_checkDataRange;
prot["asc_getBinaryFileWriter"] = prot.asc_getBinaryFileWriter;
prot["asc_getWordChartObject"] = prot.asc_getWordChartObject;
prot["asc_cleanWorksheet"] = prot.asc_cleanWorksheet;
prot["asc_showImageFileDialog"] = prot.asc_showImageFileDialog;
prot["asc_addImage"] = prot.asc_addImage;
prot["asc_setData"] = prot.asc_setData;
prot["asc_getData"] = prot.asc_getData;
prot["asc_onCloseChartFrame"] = prot.asc_onCloseChartFrame;
// Cell comment interface
prot["asc_addComment"] = prot.asc_addComment;
prot["asc_changeComment"] = prot.asc_changeComment;
prot["asc_findComment"] = prot.asc_findComment;
prot["asc_removeComment"] = prot.asc_removeComment;
prot["asc_showComment"] = prot.asc_showComment;
prot["asc_selectComment"] = prot.asc_selectComment;
prot["asc_showComments"] = prot.asc_showComments;
prot["asc_hideComments"] = prot.asc_hideComments;
// Shapes
prot["setStartPointHistory"] = prot.setStartPointHistory;
prot["setEndPointHistory"] = prot.setEndPointHistory;
prot["asc_startAddShape"] = prot.asc_startAddShape;
prot["asc_endAddShape"] = prot.asc_endAddShape;
prot["asc_addShapeOnSheet"] = prot.asc_addShapeOnSheet;
prot["asc_isAddAutoshape"] = prot.asc_isAddAutoshape;
prot["asc_canAddShapeHyperlink"] = prot.asc_canAddShapeHyperlink;
prot["asc_canGroupGraphicsObjects"] = prot.asc_canGroupGraphicsObjects;
prot["asc_groupGraphicsObjects"] = prot.asc_groupGraphicsObjects;
prot["asc_canUnGroupGraphicsObjects"] = prot.asc_canUnGroupGraphicsObjects;
prot["asc_unGroupGraphicsObjects"] = prot.asc_unGroupGraphicsObjects;
prot["asc_getGraphicObjectProps"] = prot.asc_getGraphicObjectProps;
prot["asc_setGraphicObjectProps"] = prot.asc_setGraphicObjectProps;
prot["asc_getOriginalImageSize"] = prot.asc_getOriginalImageSize;
prot["asc_changeShapeType"] = prot.asc_changeShapeType;
prot["asc_setInterfaceDrawImagePlaceShape"] = prot.asc_setInterfaceDrawImagePlaceShape;
prot["asc_setInterfaceDrawImagePlaceTextArt"] = prot.asc_setInterfaceDrawImagePlaceTextArt;
prot["asc_changeImageFromFile"] = prot.asc_changeImageFromFile;
prot["asc_putPrLineSpacing"] = prot.asc_putPrLineSpacing;
prot["asc_addTextArt"] = prot.asc_addTextArt;
prot["asc_putLineSpacingBeforeAfter"] = prot.asc_putLineSpacingBeforeAfter;
prot["asc_setDrawImagePlaceParagraph"] = prot.asc_setDrawImagePlaceParagraph;
prot["asc_changeShapeImageFromFile"] = prot.asc_changeShapeImageFromFile;
prot["asc_AddMath"] = prot.asc_AddMath;
prot["asc_SetMathProps"] = prot.asc_SetMathProps;
//----------------------------------------------------------------------------------------------------------------------
// Frozen pane
prot["asc_freezePane"] = prot.asc_freezePane;
// Sparklines
prot["asc_setSparklineGroup"] = prot.asc_setSparklineGroup;
// Cell interface
prot["asc_getCellInfo"] = prot.asc_getCellInfo;
prot["asc_getActiveCellCoord"] = prot.asc_getActiveCellCoord;
prot["asc_getAnchorPosition"] = prot.asc_getAnchorPosition;
prot["asc_setCellFontName"] = prot.asc_setCellFontName;
prot["asc_setCellFontSize"] = prot.asc_setCellFontSize;
prot["asc_setCellBold"] = prot.asc_setCellBold;
prot["asc_setCellItalic"] = prot.asc_setCellItalic;
prot["asc_setCellUnderline"] = prot.asc_setCellUnderline;
prot["asc_setCellStrikeout"] = prot.asc_setCellStrikeout;
prot["asc_setCellSubscript"] = prot.asc_setCellSubscript;
prot["asc_setCellSuperscript"] = prot.asc_setCellSuperscript;
prot["asc_setCellAlign"] = prot.asc_setCellAlign;
prot["asc_setCellVertAlign"] = prot.asc_setCellVertAlign;
prot["asc_setCellTextWrap"] = prot.asc_setCellTextWrap;
prot["asc_setCellTextShrink"] = prot.asc_setCellTextShrink;
prot["asc_setCellTextColor"] = prot.asc_setCellTextColor;
prot["asc_setCellBackgroundColor"] = prot.asc_setCellBackgroundColor;
prot["asc_setCellBorders"] = prot.asc_setCellBorders;
prot["asc_setCellFormat"] = prot.asc_setCellFormat;
prot["asc_setCellAngle"] = prot.asc_setCellAngle;
prot["asc_setCellStyle"] = prot.asc_setCellStyle;
prot["asc_increaseCellDigitNumbers"] = prot.asc_increaseCellDigitNumbers;
prot["asc_decreaseCellDigitNumbers"] = prot.asc_decreaseCellDigitNumbers;
prot["asc_increaseFontSize"] = prot.asc_increaseFontSize;
prot["asc_decreaseFontSize"] = prot.asc_decreaseFontSize;
prot["asc_formatPainter"] = prot.asc_formatPainter;
prot["asc_showAutoComplete"] = prot.asc_showAutoComplete;
prot["asc_onMouseUp"] = prot.asc_onMouseUp;
prot["asc_selectFunction"] = prot.asc_selectFunction;
prot["asc_insertHyperlink"] = prot.asc_insertHyperlink;
prot["asc_removeHyperlink"] = prot.asc_removeHyperlink;
prot["asc_insertFormula"] = prot.asc_insertFormula;
prot["asc_getFormulasInfo"] = prot.asc_getFormulasInfo;
prot["asc_getFormulaLocaleName"] = prot.asc_getFormulaLocaleName;
prot["asc_setFontRenderingMode"] = prot.asc_setFontRenderingMode;
prot["asc_setSelectionDialogMode"] = prot.asc_setSelectionDialogMode;
prot["asc_ChangeColorScheme"] = prot.asc_ChangeColorScheme;
prot["asc_setListType"] = prot.asc_setListType;
prot["asc_getCurrentListType"] = prot.asc_getCurrentListType;
/////////////////////////////////////////////////////////////////////////
///////////////////CoAuthoring and Chat api//////////////////////////////
/////////////////////////////////////////////////////////////////////////
prot["asc_coAuthoringChatSendMessage"] = prot.asc_coAuthoringChatSendMessage;
prot["asc_coAuthoringGetUsers"] = prot.asc_coAuthoringGetUsers;
prot["asc_coAuthoringChatGetMessages"] = prot.asc_coAuthoringChatGetMessages;
prot["asc_coAuthoringDisconnect"] = prot.asc_coAuthoringDisconnect;
// other
prot["asc_stopSaving"] = prot.asc_stopSaving;
prot["asc_continueSaving"] = prot.asc_continueSaving;
// Version History
prot["asc_undoAllChanges"] = prot.asc_undoAllChanges;
prot["asc_setLocalization"] = prot.asc_setLocalization;
// native
prot["asc_nativeOpenFile"] = prot.asc_nativeOpenFile;
prot["asc_nativeCalculateFile"] = prot.asc_nativeCalculateFile;
prot["asc_nativeApplyChanges"] = prot.asc_nativeApplyChanges;
prot["asc_nativeApplyChanges2"] = prot.asc_nativeApplyChanges2;
prot["asc_nativeGetFile"] = prot.asc_nativeGetFile;
prot["asc_nativeGetFileData"] = prot.asc_nativeGetFileData;
prot["asc_nativeCalculate"] = prot.asc_nativeCalculate;
prot["asc_nativePrint"] = prot.asc_nativePrint;
prot["asc_nativePrintPagesCount"] = prot.asc_nativePrintPagesCount;
prot["asc_nativeGetPDF"] = prot.asc_nativeGetPDF;
prot['asc_isOffline'] = prot.asc_isOffline;
prot['asc_getUrlType'] = prot.asc_getUrlType;
prot['asc_getSessionToken'] = prot.asc_getSessionToken;
// Builder
prot['asc_nativeInitBuilder'] = prot.asc_nativeInitBuilder;
prot['asc_SetSilentMode'] = prot.asc_SetSilentMode;
// plugins
prot["asc_pluginsRegister"] = prot.asc_pluginsRegister;
prot["asc_pluginRun"] = prot.asc_pluginRun;
prot["asc_pluginResize"] = prot.asc_pluginResize;
prot["asc_pluginButtonClick"] = prot.asc_pluginButtonClick;
prot["asc_addOleObject"] = prot.asc_addOleObject;
prot["asc_editOleObject"] = prot.asc_editOleObject;
prot["asc_startEditCurrentOleObject"] = prot.asc_startEditCurrentOleObject;
prot["asc_pluginEnableMouseEvents"] = prot.asc_pluginEnableMouseEvents;
// system input
prot["SetTextBoxInputMode"] = prot.SetTextBoxInputMode;
prot["GetTextBoxInputMode"] = prot.GetTextBoxInputMode;
prot["asc_InputClearKeyboardElement"] = prot.asc_InputClearKeyboardElement;
prot["asc_OnHideContextMenu"] = prot.asc_OnHideContextMenu;
prot["asc_OnShowContextMenu"] = prot.asc_OnShowContextMenu;
// signatures
prot["asc_addSignatureLine"] = prot.asc_addSignatureLine;
prot["asc_CallSignatureDblClickEvent"] = prot.asc_CallSignatureDblClickEvent;
prot["asc_getRequestSignatures"] = prot.asc_getRequestSignatures;
prot["asc_AddSignatureLine2"] = prot.asc_AddSignatureLine2;
prot["asc_Sign"] = prot.asc_Sign;
prot["asc_RequestSign"] = prot.asc_RequestSign;
prot["asc_ViewCertificate"] = prot.asc_ViewCertificate;
prot["asc_SelectCertificate"] = prot.asc_SelectCertificate;
prot["asc_GetDefaultCertificate"] = prot.asc_GetDefaultCertificate;
prot["asc_getSignatures"] = prot.asc_getSignatures;
prot["asc_isSignaturesSupport"] = prot.asc_isSignaturesSupport;
prot["asc_isProtectionSupport"] = prot.asc_isProtectionSupport;
prot["asc_RemoveSignature"] = prot.asc_RemoveSignature;
prot["asc_RemoveAllSignatures"] = prot.asc_RemoveAllSignatures;
prot["asc_gotoSignature"] = prot.asc_gotoSignature;
prot["asc_getSignatureSetup"] = prot.asc_getSignatureSetup;
// password
prot["asc_setCurrentPassword"] = prot.asc_setCurrentPassword;
prot["asc_resetPassword"] = prot.asc_resetPassword;
// mobile
prot["asc_Remove"] = prot.asc_Remove;
})(window);