178 lines
6.2 KiB
JavaScript
178 lines
6.2 KiB
JavaScript
/*
|
|
* (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
|
|
*
|
|
*/
|
|
+function ($) {
|
|
"use strict";
|
|
let api = new Asc.VisioEditorApi({'id-view' : 'editor_sdk'});
|
|
|
|
var holder = document.getElementById("editor_sdk");
|
|
holder.ondragover = holderOnDradOver;
|
|
holder.ondrop = holderOnDrop;
|
|
window.onload = windowOnLoad;
|
|
|
|
// enable native scrolls
|
|
var id_main_view = document.getElementById("id_main_view");
|
|
id_main_view.style.overflow = "auto";
|
|
|
|
let Zoom = 100;
|
|
|
|
// Cross browser support unchecked!
|
|
// May slow down scrolling! Because handler will wait until its job is finished and will fire mouse wheel only
|
|
// after it (because it now can call prevent default - prevent scroll during handlers
|
|
// work because of { passive: false })
|
|
window.addEventListener('mousewheel', onWindowMouseWheel, { passive: false });
|
|
let aZooms = [40, 50, 60, 70, 80, 90, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290, 300, 320, 340, 360, 380, 400, 425, 450, 475, 500];
|
|
function onWindowMouseWheel(e) {
|
|
if (e.ctrlKey === true)
|
|
{
|
|
e.preventDefault(); // case described above
|
|
let Zoom_ = Zoom;
|
|
if (e.deltaY > 0) {
|
|
Zoom_ = aZooms[0]
|
|
for(let nIdx = aZooms.length - 1; nIdx > -1; --nIdx) {
|
|
if(aZooms[nIdx] < Zoom) {
|
|
Zoom_ = aZooms[nIdx];
|
|
break;
|
|
}
|
|
}
|
|
|
|
} else {
|
|
// console.log('Up');
|
|
Zoom_ = aZooms[aZooms.length - 1]
|
|
for(let nIdx = 0; nIdx < aZooms.length; ++nIdx) {
|
|
if(aZooms[nIdx] > Zoom) {
|
|
Zoom_ = aZooms[nIdx];
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
Zoom = Zoom_;
|
|
let droppedTestFileArrayBuffer = AscCommon.Base64.decode(localStorage.droppedTestFile);
|
|
drawFile(droppedTestFileArrayBuffer);
|
|
console.log('draw using Zoom ', Zoom);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
api.asc_getLocale = function() {
|
|
return "en";
|
|
};
|
|
function drawFile(data){
|
|
api.asc_CloseFile();
|
|
|
|
api.isOpenOOXInBrowser = api["asc_isSupportFeature"]("ooxml") && AscCommon.checkOOXMLSignature(data);
|
|
api.OpenDocumentFromZip(data);
|
|
AscCommon.g_oIdCounter.Set_Load(false);
|
|
|
|
api.Document.zoom = Zoom;
|
|
AscCommon.pptx_content_loader.CheckImagesNeeds(api.WordControl.m_oLogicDocument);
|
|
api.Document.loadFonts();
|
|
}
|
|
|
|
function holderOnDradOver(e)
|
|
{
|
|
var isFile = false;
|
|
if (e.dataTransfer.types)
|
|
{
|
|
for (var i = 0, length = e.dataTransfer.types.length; i < length; ++i)
|
|
{
|
|
var type = e.dataTransfer.types[i].toLowerCase();
|
|
if (type == "files" && e.dataTransfer.items && e.dataTransfer.items.length == 1)
|
|
{
|
|
var item = e.dataTransfer.items[0];
|
|
if (item.kind && "file" == item.kind.toLowerCase())
|
|
{
|
|
isFile = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
e.dataTransfer.dropEffect = isFile ? "copy" : "none";
|
|
e.preventDefault();
|
|
return false;
|
|
}
|
|
|
|
function holderOnDrop(e)
|
|
{
|
|
var file = e.dataTransfer.files ? e.dataTransfer.files[0] : null;
|
|
if (!file)
|
|
{
|
|
e.preventDefault();
|
|
return false;
|
|
}
|
|
|
|
var reader = new FileReader();
|
|
reader.onload = function(e) {
|
|
let arrayBuffer = e.target.result;
|
|
let uInt8Array = new Uint8Array(arrayBuffer);
|
|
console.log('saving file for testing');
|
|
localStorage.droppedTestFile = AscCommon.Base64.encode(uInt8Array);
|
|
|
|
drawFile(uInt8Array);
|
|
};
|
|
reader.readAsArrayBuffer(file);
|
|
|
|
return false;
|
|
}
|
|
|
|
function windowOnLoad() {
|
|
// code doesnt work on page autoreload without timeout (e.g. when I change code page reloads and nothing paints
|
|
// because of error)
|
|
setTimeout(function () {
|
|
// let testFileRectangle = AscCommon.Base64.decode(Asc.rectangle);
|
|
// let testFileTriangle = AscCommon.Base64.decode(Asc.triangle);
|
|
// let testFileLineShapes = AscCommon.Base64.decode(Asc.lineShapes);
|
|
// let testFileCircle = AscCommon.Base64.decode(Asc.circle);
|
|
// let rectAndCircle = AscCommon.Base64.decode(Asc.rectAndCircle);
|
|
// let basicShapesBstart = AscCommon.Base64.decode(Asc.basic_ShapesB_start);
|
|
// let rotatedEllipticalArc = AscCommon.Base64.decode(Asc.rotatedEllipticalArc);
|
|
// let rotatedEllipticalArc30 = AscCommon.Base64.decode(Asc.rotatedEllipticalArc30);
|
|
// let rotatedEllipticalArc30NoBBCross = AscCommon.Base64.decode(Asc.rotatedEllipticalArc30NoBBCross);
|
|
// let antiClockwiseEllipticalArc = AscCommon.Base64.decode(Asc.antiClockwiseEllipticalArc);
|
|
// let rotatedEllipticalArc2_45 = AscCommon.Base64.decode(Asc.rotatedEllipticalArc2_45);
|
|
// let rotatedEllipticalArcMod = AscCommon.Base64.decode(Asc.rotatedEllipticalArcMod);
|
|
// let basic_ShapesC_start = AscCommon.Base64.decode(Asc.basic_ShapesC_start);
|
|
let sizeAndPositionStart = AscCommon.Base64.decode(Asc.sizeAndPositionStart);
|
|
|
|
if (localStorage.droppedTestFile) {
|
|
console.log('There is saved test file in local storage');
|
|
let droppedTestFileArrayBuffer = AscCommon.Base64.decode(localStorage.droppedTestFile);
|
|
drawFile(droppedTestFileArrayBuffer);
|
|
} else {
|
|
drawFile(sizeAndPositionStart);
|
|
}
|
|
}, 3000);
|
|
}
|
|
}();
|