/* * (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 = "
\
\ \ \
\
\
\
\
\
\ \ \
\
\ \
\
\ \ \
\
\
\
\
\
\
\
\
\
\
\
\
\
"; if (true) { _innerHTML += "
\
\ \ \
\
\
\
\
\
\ \
\
\ \
\
\
\
\
\ \
\
\
\
"; } 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);