Files
Yajbir Singh f1b860b25c
Some checks failed
check / markdownlint (push) Has been cancelled
check / spellchecker (push) Has been cancelled
updated
2025-12-11 19:03:17 +05:30

1226 lines
44 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

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.

/*
* (c) Copyright Ascensio System SIA 2010-2023
*
* 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 20A-6 Ernesta Birznieka-Upish
* street, Riga, Latvia, EU, LV-1050.
*
* 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, document)
{
const c_oAscError = Asc.c_oAscError;
const c_oAscFileType = Asc.c_oAscFileType;
const c_oAscAsyncAction = Asc.c_oAscAsyncAction;
const c_oAscAsyncActionType = Asc.c_oAscAsyncActionType;
const c_oAscFontRenderingModeType = Asc.c_oAscFontRenderingModeType;
/**
*
* @param config
* @constructor
* @extends {AscCommon.baseEditorsApi}
*/
function VisioEditorApi(config)
{
AscCommon.baseEditorsApi.call(this, config, AscCommon.c_oEditorId.Visio);
this.WordControl = null;
this.documentFormatSave = c_oAscFileType.VSDX;
this.tmpIsFreeze = null;
this.tmpZoomType = null;
this.tmpDocumentUnits = null;
this.tmpFontRenderingMode = null;
/**
*
* @type {CVisioDocument}
*/
this.Document = null;
/** * @type {HTMLDivElement} */
this.HtmlElement = null;
/** * @type {HTMLCanvasElement} */
this.canvas = null;
/** * @type {HTMLCanvasElement} */
this.thumbnailsCanvas = null;
this.locale = null;
this.bInit_word_control = false;
if (window.editor == undefined)
{
window.editor = this;
window['editor'] = window.editor;
Asc['editor'] = Asc.editor = this;
if (window["NATIVE_EDITOR_ENJINE"])
editor = window.editor;
}
this.reporterWindow = null;
this.reporterWindowCounter = 0;
this.reporterStartObject = null;
this.isReporterMode = false;
this.disableReporterEvents = false;
this.thumbnailsPosition = AscCommon.thumbnailsPositionMap.left;
if(config["thumbnails-position"] === "bottom") {
this.thumbnailsPosition = AscCommon.thumbnailsPositionMap.bottom;
}
else if(config["thumbnails-position"] === "right") {
this.thumbnailsPosition = AscCommon.thumbnailsPositionMap.right;
}
this._init();
return this;
}
VisioEditorApi.prototype = Object.create(AscCommon.baseEditorsApi.prototype);
VisioEditorApi.prototype.constructor = VisioEditorApi;
VisioEditorApi.prototype.initDefaultShortcuts = function()
{
// [[ActionType, KeyCode, Ctrl, Shift, Alt]]
var aShortcuts =
[
[Asc.c_oAscDiagramShortcutType.Print, 80, true, false, false]
];
this.initShortcuts(aShortcuts, false)
};
VisioEditorApi.prototype.InitEditor = function(){
this.Document = new AscVisio.CVisioDocument(this, this.WordControl.m_oDrawingDocument);
this.WordControl.m_oLogicDocument = this.Document;
this.WordControl.m_oDrawingDocument.m_oLogicDocument = this.WordControl.m_oLogicDocument;
};
VisioEditorApi.prototype._onEndLoadSdk = function()
{
AscCommon.baseEditorsApi.prototype._onEndLoadSdk.call(this);
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._loadSdkImages();
this.WordControl = new AscVisio.CEditorPage(this);
this.WordControl.Name = this.HtmlElementName;
this.CreateComponents();
this.WordControl.Init();
if (AscCommon.g_oTextMeasurer.SetParams)
{
AscCommon.g_oTextMeasurer.SetParams({ mode : "slide" });
}
if (this.tmpFontRenderingMode)
{
this.SetFontRenderingMode(this.tmpFontRenderingMode);
}
if (null !== this.tmpIsFreeze)
{
this.SetDrawingFreeze(this.tmpIsFreeze);
}
if (null !== this.tmpZoomType)
{
switch (this.tmpZoomType)
{
case AscCommon.c_oZoomType.FitToPage:
this.zoomFitToPage();
break;
case AscCommon.c_oZoomType.FitToWidth:
this.zoomFitToWidth();
break;
case AscCommon.c_oZoomType.CustomMode:
this.zoomCustomMode();
break;
}
}
if (null != this.tmpDocumentUnits)
{
this.asc_SetDocumentUnits(this.tmpDocumentUnits);
this.tmpDocumentUnits = null;
}
this.asc_setViewMode(this.isViewMode);
};
VisioEditorApi.prototype.initCollaborativeEditing = function()
{
if (AscCommon.CollaborativeEditing)
return;
//todo VisioCollaborativeEditing
AscCommon.CollaborativeEditing = new AscCommon.SlideCollaborativeEditing();
};
VisioEditorApi.prototype.CreateCSS = function()
{
var _head = document.getElementsByTagName('head')[0];
var style0 = document.createElement('style');
style0.type = 'text/css';
style0.innerHTML = ".block_elem { position:absolute;padding:0;margin:0; }";
_head.appendChild(style0);
};
VisioEditorApi.prototype.CreateComponents = function()
{
this.asc_setSkin(this.skinObject);
delete this.skinObject;
this.CreateCSS();
//stubs for html page
window.CLayoutThumbnailDrawer = function () {};
window.CMasterThumbnailDrawer = function () {};
var _innerHTML = "<div id=\"id_panel_thumbnails\" class=\"block_elem\" style=\"touch-action:none;-webkit-touch-callout:none;background-color:" + AscCommon.GlobalSkin.BackgroundColorThumbnails + ";\">\
<div id=\"id_panel_thumbnails_split\" class=\"block_elem\" style=\"pointer-events:none;background-color:" + AscCommon.GlobalSkin.BackgroundColorThumbnails + ";\"></div>\
<canvas id=\"id_thumbnails_background\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;z-index:1\"></canvas>\
<canvas id=\"id_thumbnails\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;z-index:2\"></canvas>\
<div id=\"id_vertical_scroll_thmbnl\" style=\"left:0;top:0;width:1px;overflow:hidden;position:absolute;\">\
</div>\
</div>\
<div id=\"id_main_parent\" class=\"block_elem\" style=\"touch-action:none;-ms-touch-action: none;-moz-user-select:none;-khtml-user-select:none;user-select:none;overflow:hidden;border-left-width: 1px;border-left-color:" + AscCommon.GlobalSkin.BorderSplitterColor + "; border-left-style: solid;\" UNSELECTABLE=\"on\">\
<div id=\"id_main\" class=\"block_elem\" style=\"z-index:5;-ms-touch-action: none;-moz-user-select:none;-khtml-user-select:none;user-select:none;background-color:" + AscCommon.GlobalSkin.BackgroundColor + ";overflow:hidden;\" UNSELECTABLE=\"on\">\
<div id=\"id_panel_left\" class=\"block_elem\">\
<canvas id=\"id_buttonTabs\" class=\"block_elem\"></canvas>\
<canvas id=\"id_vert_ruler\" class=\"block_elem\"></canvas>\
</div>\
<div id=\"id_panel_top\" class=\"block_elem\">\
<canvas id=\"id_hor_ruler\" class=\"block_elem\"></canvas>\
</div>\
<div id=\"id_main_view\" class=\"block_elem\" style=\"overflow:hidden\">\
<canvas id=\"id_viewer\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;background-color:" + AscCommon.GlobalSkin.BackgroundColor + ";z-index:6\"></canvas>\
<canvas id=\"id_viewer_overlay\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;z-index:7\"></canvas>\
<div id=\"id_target_cursor\" class=\"block_elem\" width=\"1\" height=\"1\" style=\"-ms-touch-action: none;-webkit-user-select: none;width:2px;height:13px;display:none;z-index:9;\"></div>\
</div>\
<div id=\"id_panel_right\" class=\"block_elem\" style=\"margin-right:1px;background-color:" + AscCommon.GlobalSkin.BackgroundColor + ";z-index:0;\">\
<div id=\"id_buttonRulers\" class=\"block_elem buttonRuler\"></div>\
<div id=\"id_vertical_scroll\" style=\"left:0;top:0;width:14px;overflow:hidden;position:absolute;\">\
</div>\
<div id=\"id_buttonPrevPage\" class=\"block_elem buttonPrevPage\"></div>\
<div id=\"id_buttonNextPage\" class=\"block_elem buttonNextPage\"></div>\
</div>\
<div id=\"id_horscrollpanel\" class=\"block_elem\" style=\"margin-bottom:1px;background-color:" + AscCommon.GlobalSkin.BackgroundColor + ";z-index:0;\">\
<div id=\"id_horizontal_scroll\" style=\"left:0;top:0;height:14px;overflow:hidden;position:absolute;width:100%;\">\
</div>\
</div>\
</div>";
if (true)
{
_innerHTML += "<div id=\"id_bottom_pannels_container\" class=\"block_elem\" style=\"-ms-touch-action: none;-moz-user-select:none;-khtml-user-select:none;user-select:none;overflow:hidden;background-color:" + AscCommon.GlobalSkin.BackgroundColorNotes + ";\">\
<div id=\"id_panel_notes\" class=\"block_elem\" style=\"-ms-touch-action: none;-moz-user-select:none;-khtml-user-select:none;user-select:none;overflow:hidden;background-color:" + AscCommon.GlobalSkin.BackgroundColorNotes + ";\">\
<canvas id=\"id_notes\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;background-color:" + AscCommon.GlobalSkin.BackgroundColorNotes + ";z-index:6\"></canvas>\
<canvas id=\"id_notes_overlay\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;z-index:7\"></canvas>\
<div id=\"id_vertical_scroll_notes\" style=\"left:0;top:0;width:16px;overflow:hidden;position:absolute;\">\
<div id=\"panel_right_scroll_notes\" class=\"block_elem\" style=\"left:0;top:0;width:1px;height:1px;\"></div>\
</div>\
</div>\
<div id=\"id_panel_animation\" class=\"block_elem\" style=\"-ms-touch-action: none;-moz-user-select:none;-khtml-user-select:none;user-select:none;overflow:hidden;background-color:" + AscCommon.GlobalSkin.BackgroundColor + ";\">\
<div id=\"id_anim_header\" class=\"block_elem\">\
<canvas id=\"id_anim_header_canvas\" class=\"block_elem\" style=\"-ms-touch-action: none;-webkit-user-select: none;background-color:" + AscCommon.GlobalSkin.BackgroundColorNotes + ";z-index:8\"></canvas>\
</div>\
<div id=\"id_anim_list_container\" class=\"block_elem\">\
<canvas id=\"id_anim_list_canvas\" class=\"block_elem\"></canvas>\
<div id=\"id_anim_list_scroll\" style=\"left:0;top:0;width:16px;overflow:hidden;position:absolute;\">\
<div id=\"id_pane_anim_list_scroll\" class=\"block_elem\" style=\"left:0;top:0;width:1px;height:1px;\"></div>\
</div>\
</div>\
<div id=\"id_anim_timeline_container\" class=\"block_elem\">\
<canvas id=\"id_anim_timeline_canvas\" class=\"block_elem\"></canvas>\
</div>\
</div>\
</div>\
</div>";
}
if (this.HtmlElement)
_innerHTML += this.HtmlElement.innerHTML;
if (this.HtmlElement != null)
{
this.HtmlElement.style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor;
this.HtmlElement.innerHTML = _innerHTML;
}
this.canvas = document.getElementById("id_viewer");
};
// работа с шрифтами
VisioEditorApi.prototype.asyncFontsDocumentStartLoaded = function(blockType)
{
this.sync_StartAction(undefined === blockType ? Asc.c_oAscAsyncActionType.BlockInteraction : blockType, Asc.c_oAscAsyncAction.LoadDocumentFonts);
var _progress = this.OpenDocumentProgress;
_progress.Type = Asc.c_oAscAsyncAction.LoadDocumentFonts;
_progress.FontsCount = this.FontLoader.fonts_loading.length;
_progress.CurrentFont = 0;
var _loader_object = this.WordControl.m_oLogicDocument;
var _count = 0;
if (_loader_object !== undefined && _loader_object != null)
{
for (var i in _loader_object.ImageMap)
{
++_count;
}
}
_progress.ImagesCount = _count;
_progress.CurrentImage = 0;
};
VisioEditorApi.prototype.asyncFontsDocumentEndLoaded = function(blockType) {
this.sync_EndAction(undefined === blockType ? Asc.c_oAscAsyncActionType.BlockInteraction : blockType, Asc.c_oAscAsyncAction.LoadDocumentFonts);
this.EndActionLoadImages = 0;
if (null != this.WordControl.m_oLogicDocument)
{
//this.WordControl.m_oDrawingDocument.CheckGuiControlColors();
// this.sendColorThemes(this.WordControl.m_oLogicDocument.themes[0]);
}
// открытие после загрузки документа
var _loader_object = this.WordControl.m_oLogicDocument;
if (null == _loader_object)
_loader_object = this.WordControl.m_oDrawingDocument.m_oDocumentRenderer;
var _count = 0;
for (var i in _loader_object.ImageMap)
++_count;
if (_count > 0)
{
this.EndActionLoadImages = 1;
this.sync_StartAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadDocumentImages);
}
this.ImageLoader.bIsLoadDocumentFirst = true;
this.ImageLoader.LoadDocumentImages(_loader_object.ImageMap);
};
VisioEditorApi.prototype.asyncImagesDocumentEndLoaded = function()
{
this.ImageLoader.bIsLoadDocumentFirst = false;
// на методе _openDocumentEndCallback может поменяться this.EndActionLoadImages
if (this.EndActionLoadImages == 1)
{
this.sync_EndAction(Asc.c_oAscAsyncActionType.BlockInteraction, Asc.c_oAscAsyncAction.LoadDocumentImages);
}
this.EndActionLoadImages = 0;
this.ServerImagesWaitComplete = true;
this._openDocumentEndCallback();
};
VisioEditorApi.prototype._openDocumentEndCallback = function()
{
if (this.isDocumentLoadComplete || !this.ServerImagesWaitComplete || !this.ServerIdWaitComplete || !this.WordControl || !this.WordControl.m_oLogicDocument)
return;
if (this.isViewMode)
this.asc_setViewMode(true);
this.WordControl.m_oLogicDocument.toCShapes();
this.WordControl.m_oLogicDocument.Recalculate({Drawings : {All : true, Map : {}}});
AscCommon.History.private_ClearRecalcData();
this.WordControl.m_oLogicDocument.DrawingDocument.OnEndRecalculate();
this.WordControl.GoToPage(0);
this.LoadedObject = null;
this.bInit_word_control = true;
this.onDocumentContentReady();
this.WordControl.InitControl();
if (this.isViewMode)
this.asc_setViewMode(true);
// Меняем тип состояния (на никакое)
this.advancedOptionsAction = AscCommon.c_oAscAdvancedOptionsAction.None;
this.WordControl.GoToPage(this.Document.getCurrentPage());
};
VisioEditorApi.prototype._coAuthoringInitEnd = function()
{
//todo other events
var t = this;
this.CoAuthoringApi.onConnectionStateChanged = function(e)
{
// if (true === AscCommon.CollaborativeEditing.Is_Fast() && false === e['state'])
// {
// editor.WordControl.m_oLogicDocument.Remove_ForeignCursor(e['id']);
// }
t.sendEvent("asc_onConnectionStateChanged", e);
};
};
function BeforeOpenDocument()
{
this.InitEditor();
this.DocumentType = 2;
AscCommon.g_oIdCounter.Set_Load(true);
AscFonts.IsCheckSymbols = true;
};
function AfterOpenDocument(data, size)
{
this.WordControl.m_oLogicDocument.AfterOpenDocument();
this.WordControl.m_oLogicDocument.Set_FastCollaborativeEditing(true);
this.LoadedObject = 1;
AscFonts.IsCheckSymbols = false;
AscCommon.g_oIdCounter.Set_Load(false);
this.Document.loadFonts();
if (this.isMobileVersion)
{
AscCommon.AscBrowser.isSafariMacOs = false;
AscCommon.PasteElementsId.PASTE_ELEMENT_ID = "wrd_pastebin";
AscCommon.PasteElementsId.ELEMENT_DISPAY_STYLE = "none";
}
if (AscCommon.AscBrowser.isSafariMacOs)
setInterval(AscCommon.SafariIntervalFocus, 10);
};
VisioEditorApi.prototype.OpenDocumentFromBinNoInit = function(gObject)
{
AscFonts.IsCheckSymbols = true;
let loader = new AscVisio.BinaryVSDYLoader();
loader.Api = this;
loader.Load(gObject, this.WordControl.m_oLogicDocument);
AscFonts.IsCheckSymbols = false;
};
VisioEditorApi.prototype.OpenDocumentFromBin = function(url, gObject)
{
BeforeOpenDocument.call(this);
this.OpenDocumentFromBinNoInit(gObject);
AfterOpenDocument.call(this, 0, 0);
};
VisioEditorApi.prototype.OpenDocumentFromZip = function(data)
{
BeforeOpenDocument.call(this);
let res = this.OpenDocumentFromZipNoInit(data);
AfterOpenDocument.call(this, data, data.length);
return res;
};
VisioEditorApi.prototype.OpenDocumentFromZipNoInit = function(data)
{
if (!data) {
return false;
}
let xmlParserContext = new AscCommon.XmlParserContext();
let jsZlib = new AscCommon.ZLib();
if (!jsZlib.open(data)) {
return false;
}
this.InitEditor();
this.Document.fromZip(jsZlib, xmlParserContext);
// var context = reader.context;
// this.WordControl.m_oLogicDocument.ImageMap = context.loadDataLinks();
AscCommon.pptx_content_loader.Reader.ImageMapChecker = AscCommon.pptx_content_loader.ImageMapChecker;
this.Document.ImageMap = xmlParserContext.loadDataLinks();
this.ServerIdWaitComplete = true;
jsZlib.close();
return true;
};
VisioEditorApi.prototype.asc_CloseFile = function()
{
AscCommon.History.Clear();
AscCommon.g_oTableId.Clear();
AscCommon.g_oIdCounter.Clear();
this.isApplyChangesOnOpenEnabled = true;
this.isDocumentLoadComplete = false;
this.turnOffSpecialModes();
AscCommon.pptx_content_loader.ImageMapChecker = {};
};
VisioEditorApi.prototype.asc_getAppProps = function()
{
return this.WordControl && this.WordControl.m_oLogicDocument && this.WordControl.m_oLogicDocument.app || null;
};
VisioEditorApi.prototype.getInternalCoreProps = function()
{
return this.WordControl && this.WordControl.m_oLogicDocument && this.WordControl.m_oLogicDocument.core;
};
VisioEditorApi.prototype.asc_CheckCopy = function()
{
//todo
return;
};
VisioEditorApi.prototype.asc_PasteData = function(_format, data1, data2, text_data, useCurrentPoint, callback, checkLocks) {
if (!this.canEdit())
return;
//todo
return;
}
VisioEditorApi.prototype.onKeyDown = function(e)
{
return this.WordControl.onKeyDown(e);
};
VisioEditorApi.prototype.executeShortcut = function(type)
{
let logicDocument = this.private_GetLogicDocument();
if (!logicDocument)
return false;
return logicDocument.executeShortcut(type);
};
window["VisioEditorApi"] = VisioEditorApi;
window["VisioEditorApi"].prototype["asc_nativeOpenFile"] = function(base64File, version)
{
// this.SpellCheckUrl = '';
this.User = new AscCommon.asc_CUser();
this.User.setId("TM");
this.User.setUserName("native");
this.InitEditor();
AscCommon.g_oIdCounter.Set_Load(true);
this.InitEditor();
this.isOpenOOXInBrowser = this["asc_isSupportFeature"]("ooxml") && AscCommon.checkOOXMLSignature(base64File);
if (this.isOpenOOXInBrowser) {
//slice because array contains garbage after end of function
this.openOOXInBrowserZip = base64File.slice();
this.OpenDocumentFromZipNoInit(base64File);
} else {
this.OpenDocumentFromBinNoInit(base64File);
}
this.LoadedObject = 1;
AscCommon.g_oIdCounter.Set_Load(false);
};
window["VisioEditorApi"].prototype["asc_nativeCalculateFile"] = function()
{
if (!this.WordControl)
return;
this.WordControl.m_oLogicDocument.AfterOpenDocument();
this.WordControl.m_oLogicDocument.toCShapes();
this.WordControl.m_oLogicDocument.Recalculate({Drawings : {All : true, Map : {}}});
};
window["VisioEditorApi"].prototype["asc_nativeApplyChanges"] = function(changes)
{
//todo
};
window["VisioEditorApi"].prototype["asc_nativeApplyChanges2"] = function(data, isFull)
{
//todo
};
window["VisioEditorApi"].prototype["asc_nativeGetFile"] = function()
{
//todo
};
window["VisioEditorApi"].prototype.asc_nativeGetFile3 = function()
{
//todo
};
window["VisioEditorApi"].prototype["asc_nativeGetFileData"] = function()
{
if (this.isOpenOOXInBrowser && this.saveDocumentToZip) {
let res;
this.saveDocumentToZip(this.Document, this.editorId, function (data) {
res = data;
});
if (res) {
window["native"] && window["native"]["Save_End"] && window["native"]["Save_End"](";v10;", res.length);
return res;
}
return new Uint8Array(0);
}
};
window["VisioEditorApi"].prototype["asc_nativeCalculate"] = function()
{
};
window["VisioEditorApi"].prototype["asc_nativePrint"] = function(_printer, _page, _options)
{
if (undefined === _printer && _page === undefined)
{
if (undefined !== window["AscDesktopEditor"])
{
var isSelection = (_options && _options["printOptions"] && _options["printOptions"]["selection"]) ? true : false;
var _drawing_document = this.WordControl.m_oDrawingDocument;
var pagescount = _drawing_document.GetSlidesCount();
if (isSelection)
pagescount = this.WordControl.Thumbnails.GetSelectedArray().length;
window["AscDesktopEditor"]["Print_Start"](this.DocumentUrl, pagescount, "", this.Document.getCurrentPage());
var oDocRenderer = new AscCommon.CDocumentRenderer();
oDocRenderer.InitPicker(AscCommon.g_oTextMeasurer.m_oManager);
oDocRenderer.VectorMemoryForPrint = new AscCommon.CMemory();
var bOldShowMarks = this.ShowParaMarks;
this.ShowParaMarks = false;
oDocRenderer.IsNoDrawingEmptyPlaceholder = true;
pagescount = _drawing_document.GetSlidesCount();
for (var i = 0; i < pagescount; i++)
{
if (isSelection && !this.WordControl.Thumbnails.isSelectedPage(i))
continue;
oDocRenderer.Memory.Seek(0);
oDocRenderer.VectorMemoryForPrint.ClearNoAttack();
oDocRenderer.BeginPage(_drawing_document.m_oLogicDocument.GetWidthMM(), _drawing_document.m_oLogicDocument.GetHeightMM());
this.WordControl.m_oLogicDocument.DrawPage(i, oDocRenderer);
oDocRenderer.EndPage();
window["AscDesktopEditor"]["Print_Page"](oDocRenderer.Memory.GetBase64Memory(), _drawing_document.m_oLogicDocument.GetWidthMM(), _drawing_document.m_oLogicDocument.GetHeightMM());
}
if (0 == pagescount)
{
oDocRenderer.BeginPage(_drawing_document.m_oLogicDocument.GetWidthMM(), _drawing_document.m_oLogicDocument.GetHeightMM());
oDocRenderer.EndPage();
window["AscDesktopEditor"]["Print_Page"](oDocRenderer.Memory.GetBase64Memory());
}
this.ShowParaMarks = bOldShowMarks;
window["AscDesktopEditor"]["Print_End"]();
}
return;
}
let _logic_doc = this.WordControl.m_oLogicDocument;
let pageW = _logic_doc.GetWidthMM();
let pageH = _logic_doc.GetHeightMM();
_printer.BeginPage(pageW, pageH);
_logic_doc.DrawPage(_page, _printer);
if (this.watermarkDraw)
this.watermarkDraw.DrawOnRenderer(_printer, pageW, pageH);
_printer.EndPage();
};
window["VisioEditorApi"].prototype["asc_nativePrintPagesCount"] = function()
{
return this.WordControl.GetSlidesCount();
};
window["VisioEditorApi"].prototype["asc_nativeGetPDF"] = function(options)
{
if (options && options["watermark"])
{
this.watermarkDraw = new AscCommon.CWatermarkOnDraw(options["watermark"], this);
this.watermarkDraw.generateNative();
}
else
{
this.watermarkDraw = null;
}
var pagescount = this["asc_nativePrintPagesCount"]();
if (options && options["printOptions"] && options["printOptions"]["onlyFirstPage"])
pagescount = 1;
var _renderer = new AscCommon.CDocumentRenderer();
_renderer.InitPicker(AscCommon.g_oTextMeasurer.m_oManager);
_renderer.VectorMemoryForPrint = new AscCommon.CMemory();
_renderer.DocInfo(this.asc_getCoreProps());
var _bOldShowMarks = this.ShowParaMarks;
this.ShowParaMarks = false;
_renderer.IsNoDrawingEmptyPlaceholder = true;
let nativeOptions = options ? options["nativeOptions"] : undefined;
let pages = nativeOptions ? AscCommon.getNativePrintRanges(nativeOptions["pages"], nativeOptions["currentPage"], pagescount) : undefined;
for (var i = 0; i < pagescount; i++)
{
if (pages !== undefined && !pages[i])
continue;
this["asc_nativePrint"](_renderer, i, options);
}
this.ShowParaMarks = _bOldShowMarks;
window["native"]["Save_End"]("", _renderer.Memory.GetCurPosition());
return _renderer.Memory.data;
};
VisioEditorApi.prototype.openDocument = function(file)
{
let perfStart = performance.now();
// if (file.changes && this.VersionHistory)
// {
// this.VersionHistory.changes = file.changes;
// this.VersionHistory.applyChanges(this);
// }
this.isOpenOOXInBrowser = this["asc_isSupportFeature"]("ooxml") && AscCommon.checkOOXMLSignature(file.data);
if (this.isOpenOOXInBrowser) {
this.openOOXInBrowserZip = file.data;
this.OpenDocumentFromZip(file.data);
} else {
this.OpenDocumentFromBin(file.url, file.data);
}
let perfEnd = performance.now();
AscCommon.sendClientLog("debug", AscCommon.getClientInfoString("onOpenDocument", perfEnd - perfStart), this);
};
VisioEditorApi.prototype.isDocumentModified = function()
{
return false;
if (!this.canSave)
{
// Пока идет сохранение, мы не закрываем документ
return true;
}
return this.isDocumentModify;
};
VisioEditorApi.prototype.SetDrawingFreeze = function(bIsFreeze)
{
if (!this.isLoadFullApi)
{
this.tmpIsFreeze = bIsFreeze;
return;
}
this.WordControl.DrawingFreeze = bIsFreeze;
var elem = document.getElementById("id_main");
if (elem)
{
if (bIsFreeze)
{
elem.style.display = "none";
}
else
{
elem.style.display = "block";
}
}
if (!bIsFreeze)
this.WordControl.OnScroll();
};
VisioEditorApi.prototype.asc_setSpellCheck = function(isOn)
{
};
VisioEditorApi.prototype.asc_setSpellCheckSettings = function(oSettings)
{
};
VisioEditorApi.prototype.zoomIn = function()
{
this.WordControl.zoom_In();
};
VisioEditorApi.prototype.zoomOut = function()
{
this.WordControl.zoom_Out();
};
VisioEditorApi.prototype.zoomFitToPage = function()
{
if (!this.isLoadFullApi)
{
this.tmpZoomType = AscCommon.c_oZoomType.FitToPage;
return;
}
this.WordControl.zoom_FitToPage();
};
VisioEditorApi.prototype.zoomFitToWidth = function()
{
if (!this.isLoadFullApi)
{
this.tmpZoomType = AscCommon.c_oZoomType.FitToWidth;
return;
}
this.WordControl.zoom_FitToWidth();
};
VisioEditorApi.prototype.zoomCustomMode = function()
{
if (!this.isLoadFullApi)
{
this.tmpZoomType = AscCommon.c_oZoomType.CustomMode;
return;
}
this.WordControl.m_nZoomType = 0;
this.WordControl.zoom_Fire();
};
VisioEditorApi.prototype.zoom100 = function()
{
this.WordControl.m_nZoomValue = 100;
this.WordControl.zoom_Fire();
};
VisioEditorApi.prototype.zoom = function(percent)
{
this.WordControl.m_nZoomValue = percent;
this.WordControl.zoom_Fire(0);
};
VisioEditorApi.prototype.goToPage = function(number)
{
this.WordControl.GoToPage(number);
};
VisioEditorApi.prototype.SetFontRenderingMode = function(mode)
{
if (!this.isLoadFullApi)
{
this.tmpFontRenderingMode = mode;
return;
}
if (c_oAscFontRenderingModeType.noHinting === mode)
AscCommon.g_fontManager.SetHintsProps(false, false);
else if (c_oAscFontRenderingModeType.hinting === mode)
AscCommon.g_fontManager.SetHintsProps(true, false);
else if (c_oAscFontRenderingModeType.hintingAndSubpixeling === mode)
AscCommon.g_fontManager.SetHintsProps(true, true);
if (AscCommon.g_fontManager2 !== undefined && AscCommon.g_fontManager2 !== null)
AscCommon.g_fontManager2.ClearFontsRasterCache();
// this.WordControl.m_oDrawingDocument.ClearCachePages();
//
// if (this.bInit_word_control)
// this.WordControl.OnScroll();
}
VisioEditorApi.prototype.asc_setLocale = function(val)
{
this.locale = val;
};
VisioEditorApi.prototype.asc_getLocale = function()
{
return this.locale;
};
VisioEditorApi.prototype.asc_SetDocumentUnits = function(_units)
{
//todo
this.tmpDocumentUnits = _units;
};
VisioEditorApi.prototype.updateSkin = function()
{
var baseElem = document.getElementById(this.HtmlElementName);
if (baseElem)
baseElem.style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor;
var obj_id_main = document.getElementById("id_main");
if (obj_id_main)
{
obj_id_main.style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor;
document.getElementById("id_panel_thumbnails").style.backgroundColor = AscCommon.GlobalSkin.BackgroundColorThumbnails;
document.getElementById("id_panel_thumbnails_split").style.backgroundColor = AscCommon.GlobalSkin.BackgroundColorThumbnails;
document.getElementById("id_main_parent").style.borderLeftColor = AscCommon.GlobalSkin.BorderSplitterColor;
document.getElementById("id_viewer").style.backgroundColor = AscCommon.GlobalSkin.BackgroundColor;
document.getElementById("id_panel_right").style.backgroundColor = AscCommon.GlobalSkin.ScrollBackgroundColor;
document.getElementById("id_horscrollpanel").style.backgroundColor = AscCommon.GlobalSkin.ScrollBackgroundColor;
}
if (this.WordControl && this.WordControl.m_oBody)
this.WordControl.OnResize(true);
};
VisioEditorApi.prototype.Resize = function() {
if (false === this.bInit_word_control)
return;
this.WordControl.OnResize(false);
};
VisioEditorApi.prototype.sendEvent = function()
{
this.sendInternalEvent.apply(this, arguments);
var name = arguments[0];
if (_callbacks.hasOwnProperty(name))
{
for (var i = 0; i < _callbacks[name].length; ++i)
{
_callbacks[name][i].apply(this || window, Array.prototype.slice.call(arguments, 1));
}
return true;
}
return false;
};
var _callbacks = {};
VisioEditorApi.prototype.asc_registerCallback = function(name, callback)
{
if (!_callbacks.hasOwnProperty(name))
_callbacks[name] = [];
_callbacks[name].push(callback);
};
VisioEditorApi.prototype.asc_unregisterCallback = function(name, callback)
{
if (_callbacks.hasOwnProperty(name))
{
for (var i = _callbacks[name].length - 1; i >= 0; --i)
{
if (_callbacks[name][i] == callback)
_callbacks[name].splice(i, 1);
}
}
};
VisioEditorApi.prototype.asc_checkNeedCallback = function(name)
{
if (_callbacks.hasOwnProperty(name))
{
return true;
}
return false;
};
VisioEditorApi.prototype.asc_SetFastCollaborative = function(isOn)
{
};
VisioEditorApi.prototype.getCountPages = function()
{
return this.WordControl && this.WordControl.m_oLogicDocument && this.WordControl.m_oLogicDocument.getCountPages() || 0
};
VisioEditorApi.prototype.GetCurrentVisiblePage = function()
{
return this.WordControl.m_oDrawingDocument.SlideCurrent;
};
VisioEditorApi.prototype.ShowThumbnails = function(bIsShow)
{
const savedSplitterPosition = this.WordControl.splitters[0].savedPosition;
bIsShow
? this.WordControl.splitters[0].setPosition(savedSplitterPosition <= 0 ? 70 : savedSplitterPosition, true)
: this.WordControl.splitters[0].setPosition(0, false, true);
this.WordControl.onSplitterResize();
}
VisioEditorApi.prototype["asc_setViewerTargetType"] = VisioEditorApi.prototype.asc_setViewerTargetType = function(type) {
this.isHandMode = ("hand" === type);
// this.WordControl.checkMouseHandMode();
// this.WordControl.onMouseMove();
this.sendEvent("asc_onChangeViewerTargetType", this.isHandMode);
};
VisioEditorApi.prototype.getLogicDocument = VisioEditorApi.prototype.private_GetLogicDocument = function() {
return this.WordControl && this.WordControl.m_oLogicDocument || null;
};
VisioEditorApi.prototype.asc_DownloadAs = function(options)
{
if (this.isLongAction()) {
return;
}
this.downloadAs(Asc.c_oAscAsyncAction.DownloadAs, options);
};
VisioEditorApi.prototype._downloadAs = function(actionType, options, oAdditionalData, dataContainer, downloadType)
{
var t = this;
var fileType = options.fileType;
if (this.isCloudSaveAsLocalToDrawingFormat(actionType, fileType))
{
this.localSaveToDrawingFormat(this.WordControl.m_oDrawingDocument.ToRendererPart(false, options.isPdfPrint), fileType);
return true;
}
if (c_oAscFileType.PDF === fileType || c_oAscFileType.PDFA === fileType)
{
var isSelection = false;
if (options.advancedOptions && options.advancedOptions && (Asc.c_oAscPrintType.Selection === options.advancedOptions.asc_getPrintType()))
isSelection = true;
var dd = this.WordControl.m_oDrawingDocument;
dataContainer.data = dd.ToRendererPart(oAdditionalData["nobase64"], isSelection);
}
else if(this.isOpenOOXInBrowser && this["asc_isSupportFeature"]("ooxml"))
{
var title = this.documentTitle;
this.saveLogicDocumentToZip(undefined, undefined,
function(data) {
if (data) {
if (c_oAscFileType.VSDX === fileType && !window.isCloudCryptoDownloadAs) {
AscCommon.DownloadFileFromBytes(data, title, AscCommon.openXml.GetMimeType("vsdx"));
} else {
dataContainer.data = data;
if (window.isCloudCryptoDownloadAs)
{
window["AscDesktopEditor"]["CryptoDownloadAs"](dataContainer.data, fileType);
return true;
}
t._downloadAsUsingServer(actionType, options, oAdditionalData, dataContainer, downloadType);
return;
}
} else {
t.sendEvent("asc_onError", Asc.c_oAscError.ID.Unknown, Asc.c_oAscError.Level.NoCritical);
}
if (actionType)
{
t.sync_EndAction(c_oAscAsyncActionType.BlockInteraction, actionType);
}
});
return true;
}
else
{
dataContainer.data = this.WordControl.SaveDocument(oAdditionalData["nobase64"]);
}
if (window.isCloudCryptoDownloadAs)
{
window["AscDesktopEditor"]["CryptoDownloadAs"](dataContainer.data, fileType);
return true;
}
};
VisioEditorApi.prototype.asc_getPageName = function(index)
{
if (this.Document && this.Document.pages && index < this.Document.pages.page.length) {
return this.Document.pages.page[index].name;
}
return "";
};
// print-preview
VisioEditorApi.prototype.asc_initPrintPreview = function(containerId, options)
{
if (this.printPreview)
return;
this.printPreview = new AscCommon.CPrintPreview(this, containerId);
};
VisioEditorApi.prototype.asc_drawPrintPreview = function(index, paperSize)
{
if (this.printPreview)
{
this.printPreview.page = index;
this.printPreview.update(paperSize);
}
};
VisioEditorApi.prototype.asc_closePrintPreview = function()
{
if (this.printPreview)
{
this.printPreview.close();
delete this.printPreview;
}
};
VisioEditorApi.prototype.asc_getHeaderFooterProperties = function()
{
//todo
return null;
};
VisioEditorApi.prototype.asc_setHeaderFooterProperties = function(oProps, bAll)
{
};
VisioEditorApi.prototype.asc_getDefaultLanguage = function()
{
return 1033;
};
/*callbacks*/
VisioEditorApi.prototype.sync_zoomChangeCallback = function(percent, type)
{ //c_oAscZoomType.Current, c_oAscZoomType.FitWidth, c_oAscZoomType.FitPage
this.sendEvent("asc_onZoomChange", percent, type);
};
VisioEditorApi.prototype.sync_countPagesCallback = function(count)
{
this.sendEvent("asc_onCountPages", count);
};
VisioEditorApi.prototype.sync_currentPageCallback = function(number)
{
this.sendEvent("asc_onCurrentPage", number);
};
VisioEditorApi.prototype.sync_ContextMenuCallback = function(Data)
{
this.sendEvent("asc_onContextMenu", Data);
};
VisioEditorApi.prototype.sync_EndAddShape = function()
{
editor.sendEvent("asc_onEndAddShape");
if (this.WordControl.m_oDrawingDocument.m_sLockedCursorType == "crosshair")
{
this.WordControl.m_oDrawingDocument.UnlockCursorType();
}
if(this.WordControl.m_oLogicDocument.TurnOffInterfaceEvents) {
this.WordControl.m_oLogicDocument.TurnOn_InterfaceEvents(false);
}
};
VisioEditorApi.prototype.syncOnThumbnailsShow = function()
{
var bIsShow = true;
if (0 == this.WordControl.splitters[0].position)
bIsShow = false;
this.sendEvent("asc_onThumbnailsShow", bIsShow);
};
VisioEditorApi.prototype.OnMouseUp = function(x, y)
{
var _e = AscCommon.CreateMouseUpEventObject(x, y);
AscCommon.Window_OnMouseUp(_e);
//this.WordControl.onMouseUpExternal(x, y);
};
//temp stubs
VisioEditorApi.prototype.EndDemonstration = function()
{
};
VisioEditorApi.prototype.getCountSlides = function()
{
return this.Document.getCountPages();
};
VisioEditorApi.prototype.getCurrentPage = function()
{
return this.Document.getCurrentPage();
};
VisioEditorApi.prototype._printDesktop = function (options)
{
let desktopOptions = {};
if (options && options.advancedOptions)
desktopOptions["nativeOptions"] = options.advancedOptions.asc_getNativeOptions();
window["AscDesktopEditor"]["Print"](JSON.stringify(desktopOptions));
return true;
};
VisioEditorApi.prototype.asc_SetThumbnailsPosition = function (pos) {
this.thumbnailsPosition = pos;
};
VisioEditorApi.prototype.getThumbnailsPosition = function () {
if(!this.isRtlInterface) {
return this.thumbnailsPosition;
}
if(this.thumbnailsPosition === AscCommon.thumbnailsPositionMap.left) {
return AscCommon.thumbnailsPositionMap.right;
}
return this.thumbnailsPosition;
};
VisioEditorApi.prototype.onUpdateThumbnailsPosition = function () {
};
VisioEditorApi.prototype.onChangeRTLInterface = function () {
this.onUpdateThumbnailsPosition();
};
//-------------------------------------------------------------export---------------------------------------------------
window['Asc'] = window['Asc'] || {};
window['Asc']['VisioEditorApi'] = VisioEditorApi;
let prot = VisioEditorApi.prototype;
//todo apiBase
prot['asc_GetFontThumbnailsPath'] = prot.asc_GetFontThumbnailsPath;
prot["asc_coAuthoringDisconnect"] = prot.asc_coAuthoringDisconnect;
prot["asc_coAuthoringChatSendMessage"] = prot.asc_coAuthoringChatSendMessage;
prot["asc_coAuthoringChatGetMessages"] = prot.asc_coAuthoringChatGetMessages;
prot["asc_coAuthoringGetUsers"] = prot.asc_coAuthoringGetUsers;
prot["asc_isDocumentCanSave"] = prot.asc_isDocumentCanSave;
prot["asc_getCanUndo"] = prot.asc_getCanUndo;
prot["asc_getCanRedo"] = prot.asc_getCanRedo;
prot["asc_getEditorPermissions"] = prot.asc_getEditorPermissions;
prot['asc_setDocInfo'] = prot.asc_setDocInfo;
prot['asc_changeDocInfo'] = prot.asc_changeDocInfo;
prot["asc_LoadDocument"] = prot.asc_LoadDocument;
prot["asc_getDocumentName"] = prot.asc_getDocumentName;
prot["asc_getCoreProps"] = prot.asc_getCoreProps;
prot["asc_Save"] = prot.asc_Save;
prot["forceSave"] = prot.forceSave;
prot["asc_setIsForceSaveOnUserSave"] = prot.asc_setIsForceSaveOnUserSave;
prot["asc_setAutoSaveGap"] = prot.asc_setAutoSaveGap;
prot["asc_decodeBuffer"] = prot.asc_decodeBuffer;
prot["asc_isOffline"] = prot.asc_isOffline;
prot["asc_getUrlType"] = prot.asc_getUrlType;
prot["asc_prepareUrl"] = prot.asc_prepareUrl;
prot["asc_getSessionToken"] = prot.asc_getSessionToken;
prot["asc_setInterfaceDrawImagePlaceShape"] = prot.asc_setInterfaceDrawImagePlaceShape;
prot["asc_nativeInitBuilder"] = prot.asc_nativeInitBuilder;
prot["asc_pluginsRegister"] = prot.asc_pluginsRegister;
prot["asc_pluginRun"] = prot.asc_pluginRun;
prot["asc_pluginStop"] = prot.asc_pluginStop;
prot["asc_pluginResize"] = prot.asc_pluginResize;
prot["asc_pluginButtonClick"] = prot.asc_pluginButtonClick;
prot["asc_pluginEnableMouseEvents"] = prot.asc_pluginEnableMouseEvents;
prot['asc_setViewMode'] = prot.asc_setViewMode;
prot['asc_enableKeyEvents'] = prot.asc_enableKeyEvents;
// 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_isAnonymousSupport"] = prot.asc_isAnonymousSupport;
prot["asc_RemoveSignature"] = prot.asc_RemoveSignature;
prot["asc_RemoveAllSignatures"] = prot.asc_RemoveAllSignatures;
prot["asc_gotoSignature"] = prot.asc_gotoSignature;
prot["asc_getSignatureSetup"] = prot.asc_getSignatureSetup
prot['asc_CloseFile'] = prot.asc_CloseFile;
prot['asc_getAppProps'] = prot.asc_getAppProps;
prot['asc_CheckCopy'] = prot.asc_CheckCopy;
prot['asc_PasteData'] = prot.asc_PasteData;
prot['asc_setSpellCheck'] = prot.asc_setSpellCheck;
prot['asc_setSpellCheckSettings'] = prot.asc_setSpellCheckSettings;
prot['asc_setLocale'] = prot.asc_setLocale;
prot['asc_getLocale'] = prot.asc_getLocale;
prot['asc_SetDocumentUnits'] = prot.asc_SetDocumentUnits;
prot['asc_registerCallback'] = prot.asc_registerCallback;
prot['asc_unregisterCallback'] = prot.asc_unregisterCallback;
prot['asc_checkNeedCallback'] = prot.asc_checkNeedCallback;
prot['asc_SetFastCollaborative'] = prot.asc_SetFastCollaborative;
prot['asc_DownloadAs'] = prot.asc_DownloadAs;
prot['asc_getPageName'] = prot.asc_getPageName;
prot['asc_initPrintPreview'] = prot.asc_initPrintPreview;
prot['asc_drawPrintPreview'] = prot.asc_drawPrintPreview;
prot['asc_closePrintPreview'] = prot.asc_closePrintPreview;
prot['asc_getHeaderFooterProperties'] = prot.asc_getHeaderFooterProperties;
prot['asc_setHeaderFooterProperties'] = prot.asc_setHeaderFooterProperties;
prot['asc_getDefaultLanguage'] = prot.asc_getDefaultLanguage;
prot['asc_SetThumbnailsPosition'] = prot.asc_SetThumbnailsPosition;
prot['InitEditor'] = prot.InitEditor;
prot['isDocumentModified'] = prot.isDocumentModified;
prot['SetDrawingFreeze'] = prot.SetDrawingFreeze;
prot['zoomIn'] = prot.zoomIn;
prot['zoomOut'] = prot.zoomOut;
prot['zoomFitToPage'] = prot.zoomFitToPage;
prot['zoomFitToWidth'] = prot.zoomFitToWidth;
prot['zoomCustomMode'] = prot.zoomCustomMode;
prot['zoom100'] = prot.zoom100;
prot['zoom'] = prot.zoom;
prot['goToPage'] = prot.goToPage;
prot['SetFontRenderingMode'] = prot.SetFontRenderingMode;
prot['Resize'] = prot.Resize;
prot['sendEvent'] = prot.sendEvent;
prot['getCountPages'] = prot.getCountPages;
prot['getCurrentPage'] = prot.getCurrentPage;
prot['GetCurrentVisiblePage'] = prot.GetCurrentVisiblePage;
prot['ShowThumbnails'] = prot.ShowThumbnails;
prot['EndDemonstration'] = prot.EndDemonstration;
})(window, window.document);