355 lines
9.9 KiB
JavaScript
355 lines
9.9 KiB
JavaScript
/*
|
|
* (c) Copyright Ascensio System SIA 2010-2024
|
|
*
|
|
* 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
|
|
*
|
|
*/
|
|
|
|
var editor = undefined;
|
|
var navigator = {};
|
|
navigator.userAgent = "chrome";
|
|
|
|
window.location = {};
|
|
|
|
window.location.protocol = "";
|
|
window.location.host = "";
|
|
window.location.href = "";
|
|
window.location.pathname = "";
|
|
|
|
window.XMLHttpRequest = function () {};
|
|
|
|
window.NATIVE_EDITOR_ENJINE = true;
|
|
window.NATIVE_EDITOR_ENJINE_SYNC_RECALC = true;
|
|
|
|
var document = {};
|
|
|
|
var Asc = {};
|
|
var AscFonts = {};
|
|
var AscCommon = {};
|
|
var AscFormat = {};
|
|
var AscDFH = {};
|
|
var AscCH = {};
|
|
var AscCommonExcel = {};
|
|
var AscCommonWord = {};
|
|
var AscMath = {};
|
|
var AscCommonSlide = {};
|
|
var AscBuilder = {};
|
|
var AscWord = {};
|
|
var AscJsonConverter = {};
|
|
var AscBidi = {};
|
|
|
|
function Image()
|
|
{
|
|
this.src = "";
|
|
this.onload = function () {};
|
|
this.onerror = function () {};
|
|
}
|
|
|
|
function _image_data()
|
|
{
|
|
this.data = null;
|
|
this.length = 0;
|
|
}
|
|
|
|
function native_pattern_fill()
|
|
{
|
|
}
|
|
native_pattern_fill.prototype =
|
|
{
|
|
setTransform: function (transform) {}
|
|
};
|
|
|
|
function native_gradient_fill() {}
|
|
native_gradient_fill.prototype =
|
|
{
|
|
addColorStop: function (offset, color) {}
|
|
};
|
|
|
|
function native_context2d(parent)
|
|
{
|
|
this.canvas = parent;
|
|
|
|
this.globalAlpha = 0;
|
|
this.globalCompositeOperation = "";
|
|
this.fillStyle = "#000000";
|
|
this.strokeStyle = "#000000";
|
|
|
|
this.lineWidth = 0;
|
|
this.lineCap = 0;
|
|
this.lineJoin = 0;
|
|
this.miterLimit = 0;
|
|
this.shadowOffsetX = 0;
|
|
this.shadowOffsetY = 0;
|
|
this.shadowBlur = 0;
|
|
this.shadowColor = 0;
|
|
this.font = "";
|
|
this.textAlign = 0;
|
|
this.textBaseline = 0;
|
|
}
|
|
native_context2d.prototype =
|
|
{
|
|
save: function () {},
|
|
restore: function () {},
|
|
|
|
scale: function (x, y) {},
|
|
rotate: function (angle) {},
|
|
translate: function (x, y) {},
|
|
transform: function (m11, m12, m21, m22, dx, dy) {},
|
|
setTransform: function (m11, m12, m21, m22, dx, dy) {},
|
|
|
|
createLinearGradient: function (x0, y0, x1, y1) {},
|
|
createRadialGradient: function (x0, y0, r0, x1, y1, r1) {},
|
|
createPattern: function (image, repetition) {},
|
|
|
|
clearRect: function (x, y, w, h) {},
|
|
fillRect: function (x, y, w, h) {},
|
|
strokeRect: function (x, y, w, h) {},
|
|
|
|
beginPath: function () {},
|
|
closePath: function () {},
|
|
moveTo: function (x, y) {},
|
|
lineTo: function (x, y) {},
|
|
quadraticCurveTo: function (cpx, cpy, x, y) {},
|
|
bezierCurveTo: function (cp1x, cp1y, cp2x, cp2y, x, y) {},
|
|
arcTo: function (x1, y1, x2, y2, radius) {},
|
|
rect: function (x, y, w, h) {},
|
|
arc: function (x, y, radius, startAngle, endAngle, anticlockwise) {},
|
|
|
|
fill: function () {},
|
|
stroke: function () {},
|
|
clip: function () {},
|
|
isPointInPath: function (x, y) {},
|
|
drawFocusRing: function (element, xCaret, yCaret, canDrawCustom) {},
|
|
|
|
fillText: function (text, x, y, maxWidth) {},
|
|
strokeText: function (text, x, y, maxWidth) {},
|
|
measureText: function (text) {},
|
|
|
|
drawImage: function (img_elem, dx_or_sx, dy_or_sy, dw_or_sw, dh_or_sh, dx, dy, dw, dh) {},
|
|
|
|
createImageData: function (imagedata_or_sw, sh)
|
|
{
|
|
var _data = new _image_data();
|
|
_data.length = imagedata_or_sw * sh * 4;
|
|
_data.data = (typeof(Uint8Array) != 'undefined') ? new Uint8Array(_data.length) : new Array(_data.length);
|
|
return _data;
|
|
},
|
|
getImageData: function (sx, sy, sw, sh) {},
|
|
putImageData: function (image_data, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight) {}
|
|
};
|
|
|
|
function native_canvas()
|
|
{
|
|
this.id = "";
|
|
this.width = 300;
|
|
this.height = 150;
|
|
|
|
this.nodeType = 1;
|
|
}
|
|
native_canvas.prototype =
|
|
{
|
|
getContext: function (type) { return (type == "2d") ? new native_context2d(this) : null; },
|
|
toDataUrl: function (type) { return ""; },
|
|
addEventListener: function () {},
|
|
attr: function () {}
|
|
};
|
|
|
|
var _null_object = {};
|
|
_null_object.length = 0;
|
|
_null_object.nodeType = 1;
|
|
_null_object.offsetWidth = 1;
|
|
_null_object.offsetHeight = 1;
|
|
_null_object.clientWidth = 1;
|
|
_null_object.clientHeight = 1;
|
|
_null_object.scrollWidth = 1;
|
|
_null_object.scrollHeight = 1;
|
|
_null_object.style = {};
|
|
_null_object.documentElement = _null_object;
|
|
_null_object.body = _null_object;
|
|
_null_object.ownerDocument = _null_object;
|
|
_null_object.defaultView = _null_object;
|
|
|
|
_null_object.addEventListener = function () {};
|
|
_null_object.setAttribute = function () {};
|
|
_null_object.getElementsByTagName = function () { return []; };
|
|
_null_object.appendChild = function () {};
|
|
_null_object.removeChild = function () {};
|
|
_null_object.insertBefore = function () {};
|
|
_null_object.childNodes = [];
|
|
_null_object.parent = _null_object;
|
|
_null_object.parentNode = _null_object;
|
|
_null_object.find = function () { return this; };
|
|
_null_object.appendTo = function () { return this; };
|
|
_null_object.css = function () { return this; };
|
|
_null_object.width = function () { return 0; };
|
|
_null_object.height = function () { return 0; };
|
|
_null_object.attr = function () { return this; };
|
|
_null_object.prop = function () { return this; };
|
|
_null_object.val = function () { return this; };
|
|
_null_object.remove = function () {};
|
|
_null_object.getComputedStyle = function () { return null; };
|
|
_null_object.getContext = function (type) { return (type == "2d") ? new native_context2d(this) : null; };
|
|
_null_object.getBoundingClientRect = function() { return { left : 0, top : 0, right : 0, bottom : 0 }; };
|
|
|
|
document.createElement = function (type)
|
|
{
|
|
if (type && type.toLowerCase)
|
|
{
|
|
if (type.toLowerCase() == "canvas")
|
|
return new native_canvas();
|
|
}
|
|
|
|
return _null_object;
|
|
};
|
|
|
|
function _return_empty_html_element() { return _null_object; }
|
|
|
|
document.createDocumentFragment = _return_empty_html_element;
|
|
document.getElementsByTagName = function (tag) { return ("head" == tag) ? [_null_object] : []; };
|
|
document.insertBefore = function () {};
|
|
document.appendChild = function () {};
|
|
document.removeChild = function () {};
|
|
document.getElementById = function () { return _null_object; };
|
|
document.createComment = function () { return undefined; };
|
|
|
|
document.documentElement = _null_object;
|
|
document.body = _null_object;
|
|
|
|
// NATIVE OBJECT
|
|
function GetNativeEngine() { return window.native; }
|
|
|
|
var Api = null; // main builder object
|
|
window.devicePixelRatio = 1;
|
|
|
|
window.InitNativeObject = function()
|
|
{
|
|
window.native = native;
|
|
window.devicePixelRatio = 1;
|
|
if (window.native && window.native.GetDevicePixelRatio)
|
|
window.devicePixelRatio = window.native.GetDevicePixelRatio();
|
|
};
|
|
|
|
if (undefined !== native)
|
|
window.InitNativeObject();
|
|
|
|
// OPEN
|
|
function NativeCreateApi(options)
|
|
{
|
|
window.NATIVE_DOCUMENT_TYPE = window.native.GetEditorType();
|
|
Api = null;
|
|
|
|
var configApi = {};
|
|
if (options && undefined !== options["translate"])
|
|
configApi["translate"] = options["translate"];
|
|
|
|
switch (window.NATIVE_DOCUMENT_TYPE)
|
|
{
|
|
case "document":
|
|
case "presentation":
|
|
{
|
|
Api = new window["Asc"]["asc_docs_api"](configApi);
|
|
if (options && options["documentLayout"] && undefined !== options["documentLayout"]["openedAt"])
|
|
Api.setOpenedAt(options["documentLayout"]["openedAt"]);
|
|
if (options && options["documentLayout"] && options["documentLayout"]["headingsColor"])
|
|
{
|
|
if (window["AscWord"] && window["AscWord"]["setDefaultHeadingColorStr"])
|
|
window["AscWord"]["setDefaultHeadingColorStr"](options["documentLayout"]["headingsColor"]);
|
|
}
|
|
break;
|
|
}
|
|
case "spreadsheet":
|
|
{
|
|
Api = new window["Asc"]["spreadsheet_api"](configApi);
|
|
break;
|
|
}
|
|
case "pdf":
|
|
{
|
|
Api = new window["Asc"]["PDFEditorApi"](configApi);
|
|
break;
|
|
}
|
|
case "visio":
|
|
{
|
|
Api = new window["Asc"]["VisioEditorApi"](configApi);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (options && undefined !== options["locale"])
|
|
Api.asc_setLocale(options["locale"]);
|
|
}
|
|
|
|
function NativeOpenFileData(data, version, xlsx_file_path, options)
|
|
{
|
|
NativeCreateApi(options);
|
|
|
|
switch (window.NATIVE_DOCUMENT_TYPE)
|
|
{
|
|
case "visio":
|
|
case "document":
|
|
case "presentation":
|
|
{
|
|
Api.asc_nativeOpenFile(data, version);
|
|
break;
|
|
}
|
|
case "spreadsheet":
|
|
{
|
|
Api.asc_nativeOpenFile(data, version, undefined, xlsx_file_path);
|
|
break;
|
|
}
|
|
case "pdf":
|
|
{
|
|
Api.asc_nativeOpenFile(data, version);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
var clearTimeout = window.clearTimeout = function() {};
|
|
var setTimeout = window.setTimeout = function() {};
|
|
var clearInterval = window.clearInterval = function() {};
|
|
var setInterval = window.setInterval = function() {};
|
|
|
|
var console = {
|
|
log: function (param) { window.native && window.native.ConsoleLog(param); },
|
|
time: function (param) {},
|
|
timeEnd: function (param) {},
|
|
warn: function() {},
|
|
error: function() { window.native && window.native.ConsoleLog("[error]: " + param); }
|
|
};
|
|
|
|
var performance = window.performance = (function(){
|
|
var basePerformanceOffset = Date.now();
|
|
return {
|
|
now : function() { return Date.now() - basePerformanceOffset; }
|
|
};
|
|
})();
|