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

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);
}
}();