linuxwindowsinboxwhatsappicloudtweetdeckhipchattelegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacos
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.2 KiB
107 lines
3.2 KiB
9 years ago
|
/*
|
||
|
* This file is generated by Sencha Cmd and should NOT be edited. It will be replaced by
|
||
|
* "sencha package upgrade".
|
||
|
*/
|
||
|
if (document.addEventListener) {
|
||
|
document.addEventListener('DOMContentLoaded', function () {
|
||
|
// This is very important for getting transparency on corners.
|
||
|
document.body.style.backgroundColor = 'transparent';
|
||
|
});
|
||
|
}
|
||
|
|
||
|
// This variable is watched by the Slicer. Once it is set, the data is saved with the
|
||
|
// screenshot.
|
||
|
var slicerManifest;
|
||
|
|
||
|
function generateSlicerManifest () {
|
||
|
var elements = document.body.querySelectorAll('.x-slicer-target');
|
||
|
var widgets = [];
|
||
|
var slicesRe = /^'x-slicer\:(.+)'$/;
|
||
|
|
||
|
function getData (el) {
|
||
|
var data = el.getAttribute('data-slicer');
|
||
|
if (data) {
|
||
|
return JSON.parse(data);
|
||
|
}
|
||
|
return null;
|
||
|
}
|
||
|
|
||
|
function getSlices (slices, src) {
|
||
|
var content = src && src.content;
|
||
|
if (content) {
|
||
|
var m = slicesRe.exec(content);
|
||
|
if (m && m[1]) {
|
||
|
slices.push(m[1]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function forEach (it, fn) {
|
||
|
for (var i = 0; i < it.length; ++i) {
|
||
|
fn(it[i]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
forEach(elements, function (el) {
|
||
|
var view = el.ownerDocument.defaultView;
|
||
|
var style = view.getComputedStyle(el, null);
|
||
|
var bg = style['background-image'];
|
||
|
var box = el.getBoundingClientRect();
|
||
|
|
||
|
var entry = {
|
||
|
box: {
|
||
|
x: window.scrollX + box.left,
|
||
|
y: window.scrollY + box.top,
|
||
|
w: box.right - box.left,
|
||
|
h: box.bottom - box.top
|
||
|
},
|
||
|
radius: {
|
||
|
tl: parseInt(style['border-top-left-radius'], 10) || 0,
|
||
|
tr: parseInt(style['border-top-right-radius'], 10) || 0,
|
||
|
br: parseInt(style['border-bottom-right-radius'], 10) || 0,
|
||
|
bl: parseInt(style['border-bottom-left-radius'], 10) || 0
|
||
|
},
|
||
|
border: {
|
||
|
t: parseInt(style['border-top-width'], 10) || 0,
|
||
|
r: parseInt(style['border-right-width'], 10) || 0,
|
||
|
b: parseInt(style['border-bottom-width'], 10) || 0,
|
||
|
l: parseInt(style['border-left-width'], 10) || 0
|
||
|
}
|
||
|
};
|
||
|
|
||
|
if (el.id) {
|
||
|
entry.id = el.id;
|
||
|
}
|
||
|
|
||
|
if (bg.indexOf('-gradient') !== -1) {
|
||
|
if (bg.indexOf('50% 0') !== -1 || bg.indexOf('top') !== -1 ||
|
||
|
bg.indexOf('bottom') !== -1) {
|
||
|
entry.gradient = 'top';
|
||
|
} else {
|
||
|
entry.gradient = 'left';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var slices = [];
|
||
|
getSlices(slices, view.getComputedStyle(el, ':before'));
|
||
|
getSlices(slices, view.getComputedStyle(el, ':after'));
|
||
|
|
||
|
if (slices.length) {
|
||
|
entry.slices = slices.join(', ').split(', ');
|
||
|
}
|
||
|
var extra = getData(el);
|
||
|
if (extra) {
|
||
|
entry.extra = extra;
|
||
|
}
|
||
|
|
||
|
widgets.push(entry);
|
||
|
});
|
||
|
|
||
|
slicerManifest = getData(document.body) || {};
|
||
|
slicerManifest.widgets = widgets;
|
||
|
if (!slicerManifest.format) {
|
||
|
// legacy support sets format to "1.0"
|
||
|
slicerManifest.format = '2.0';
|
||
|
}
|
||
|
}
|