DocSpace-buildtools/common/ASC.Thumbnails/app/webshot/options.js
2020-06-17 14:36:09 +03:00

116 lines
3.4 KiB
JavaScript

/*
*
* (c) Copyright Ascensio System Limited 2010-2020
*
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
* In accordance with Section 7(a) of the GNU GPL 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 more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
*
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
*
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
*
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
* relevant author attributions when distributing the software. If the display of the logo in its graphic
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
* in every copy of the program you distribute.
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
*
*/
// Options for the phantom script
exports.phantom = {
windowSize: {
width: 1024
, height: 768
}
, shotSize: {
width: 'window'
, height: 'window'
}
, shotOffset: {
left: 0
, right: 0
, top: 0
, bottom: 0
}
, defaultWhiteBackground: false
, customCSS: ''
, takeShotOnCallback: false
, streamType: 'png'
, siteType: 'url'
, renderDelay: 0
, quality: 75
, errorIfStatusIsNot200: false
, errorIfJSException: false
, cookies: []
, captureSelector: false
, zoomFactor: 1
};
// Options that are just passed to the phantom page object
exports.phantomPage = ['paperSize', 'customHeaders', 'settings', 'zoomFactor'];
// Options that are callbacks for various phantom events
exports.phantomCallback = ['onAlert', 'onCallback', 'onClosing', 'onConfirm',
'onConsoleMessage', 'onError', 'onFilePicker', 'onInitialized',
'onLoadFinished', 'onLoadStarted', 'onNavigationRequested', 'onPageCreated',
'onPrompt', 'onResourceRequested', 'onResourceReceived',
'onResourceTimeout', 'onResourceError', 'onUrlChanged'];
// Options that are used in the calling node script
exports.caller = {
phantomPath: 'phantomjs'
, phantomConfig: ''
, timeout: 0
};
/*
* Merge the two objects, using the value from `a` when the objects conflict
*
* @param (Object) a
* @param (Object) b
* @return (Object)
*/
exports.mergeObjects = function mergeObjects(a, b) {
var merged = {};
Object.keys(a).forEach(function(key) {
merged[key] = toString.call(a[key]) === '[object Object]'
? mergeObjects(a[key], b[key] || {})
: a[key] || b[key];
});
Object.keys(b).forEach(function(key) {
if (merged.hasOwnProperty(key)) return;
merged[key] = b[key];
});
return merged;
};
/*
* Filter the object `obj` to contain only the given keys
*
* @param (Object) obj
* @param (Array) keys
* @return (Object)
*/
exports.filterObject = function filterObject(obj, keys) {
var filtered = {};
keys.forEach(function(key) {
if (obj[key]) filtered[key] = obj[key];
});
return filtered;
};