32649 lines
1.2 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) Ascensio System SIA 2012-2019. 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-\u309F\u30A1-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u321C\u3220-\u3229\u3231-\u3232\u3239\u3260-\u327B\u327F\u32A3-\u32A8\u3303\u330D\u3314\u3318\u3322-\u3323\u3326-\u3327\u332B\u3336\u333B\u3349-\u334A\u334D\u3351\u3357\u337B-\u337E\u3380-\u3384\u3388-\u33CA\u33CD-\u33D3\u33D5-\u33D6\u33D8\u33DB-\u33DD\u3400-\u4DB5\u4E00-\u9FC3\uA000-\uA48C\uA500-\uA60C\uA610-\uA61F\uA62A-\uA62B\uA640-\uA65F\uA662-\uA66E\uA680-\uA697\uA722-\uA787\uA78B-\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA90A-\uA925\uA930-\uA946\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAC00-\uD7A3\uE000-\uF848\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE31\uFE33-\uFE44\uFE49-\uFE52\uFE54-\uFE57\uFE59-\uFE66\uFE68-\uFE6B\uFE70-\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6]",
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-\uA87F\uA8C5-\uA8CF\uA8DA-\uA8FF\uA92F\uA954-\uA9FF\uAA37-\uAA3F\uAA4E-\uAA4F\uAA5A-\uABFF\uD7A4-\uD7FF\uFA2E-\uFA2F\uFA6B-\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90-\uFD91\uFDC8-\uFDEF\uFDFE-\uFDFF\uFE10-\uFE1F\uFE27-\uFE2F\uFE32\uFE45-\uFE48\uFE53\uFE58\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFEFE\uFF00\uFF5F-\uFF60\uFFBF-\uFFC1\uFFC8-\uFFC9\uFFD0-\uFFD1\uFFD8-\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE-\uFFFF",
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)
{
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\u309B-\u309F\u30A1-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31B7\u31F0-\u321C\u3220-\u3229\u3231-\u3232\u3239\u3260-\u327B\u327F\u32A3-\u32A8\u3303\u330D\u3314\u3318\u3322-\u3323\u3326-\u3327\u332B\u3336\u333B\u3349-\u334A\u334D\u3351\u3357\u337B-\u337E\u3380-\u3384\u3388-\u33CA\u33CD-\u33D3\u33D5-\u33D6\u33D8\u33DB-\u33DD\u3400-\u4DB5\u4E00-\u9FC3\uA000-\uA48C\uA500-\uA60C\uA610-\uA61F\uA62A-\uA62B\uA640-\uA65F\uA662-\uA66E\uA680-\uA697\uA722-\uA787\uA78B-\uA78C\uA7FB-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA90A-\uA925\uA930-\uA946\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAC00-\uD7A3\uE000-\uF848\uF900-\uFA2D\uFA30-\uFA6A\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40-\uFB41\uFB43-\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE30-\uFE31\uFE33-\uFE44\uFE49-\uFE52\uFE54-\uFE57\uFE59-\uFE66\uFE68-\uFE6B\uFE70-\uFE74\uFE76-\uFEFC\uFF01-\uFF5E\uFF61-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC\uFFE0-\uFFE6",
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-\uA87F\uA8C5-\uA8CF\uA8DA-\uA8FF\uA92F\uA954-\uA9FF\uAA37-\uAA3F\uAA4E-\uAA4F\uAA5A-\uABFF\uD7A4-\uD7FF\uFA2E-\uFA2F\uFA6B-\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90-\uFD91\uFDC8-\uFDEF\uFDFE-\uFDFF\uFE10-\uFE1F\uFE27-\uFE2F\uFE32\uFE45-\uFE48\uFE53\uFE58\uFE67\uFE6C-\uFE6F\uFE75\uFEFD-\uFEFE\uFF00\uFF5F-\uFF60\uFFBF-\uFFC1\uFFC8-\uFFC9\uFFD0-\uFFD1\uFFD8-\uFFD9\uFFDD-\uFFDF\uFFE7\uFFEF-\uFFF8\uFFFE-\uFFFF",
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-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA697\uA69F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA827\uA840-\uA873\uA880-\uA8C3\uA8F2-\uA8F7\uA8FB\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A\uAA80-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
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()
{
};
baseEditorsApi.prototype.asc_addImage = function()
{
var t = this;
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();
};
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);