]>
Commit | Line | Data |
---|---|---|
6527f429 DM |
1 | /*\r |
2 | * This file is generated by Sencha Cmd and should NOT be edited. It will be replaced by\r | |
3 | * "sencha package upgrade".\r | |
4 | */\r | |
5 | if (document.addEventListener) {\r | |
6 | document.addEventListener('DOMContentLoaded', function () {\r | |
7 | // This is very important for getting transparency on corners.\r | |
8 | document.body.style.backgroundColor = 'transparent';\r | |
9 | });\r | |
10 | }\r | |
11 | \r | |
12 | // This variable is watched by the Slicer. Once it is set, the data is saved with the\r | |
13 | // screenshot.\r | |
14 | var slicerManifest;\r | |
15 | \r | |
16 | function generateSlicerManifest () {\r | |
17 | var elements = document.body.querySelectorAll('.x-slicer-target');\r | |
18 | var widgets = [];\r | |
19 | var slicesRe = /^'x-slicer\:(.+)'$/;\r | |
20 | \r | |
21 | function getData (el) {\r | |
22 | var data = el.getAttribute('data-slicer');\r | |
23 | if (data) {\r | |
24 | return JSON.parse(data);\r | |
25 | }\r | |
26 | return null;\r | |
27 | }\r | |
28 | \r | |
29 | function getSlices (slices, src) {\r | |
30 | var content = src && src.content;\r | |
31 | if (content) {\r | |
32 | var m = slicesRe.exec(content);\r | |
33 | if (m && m[1]) {\r | |
34 | slices.push(m[1]);\r | |
35 | }\r | |
36 | }\r | |
37 | }\r | |
38 | \r | |
39 | function forEach (it, fn) {\r | |
40 | for (var i = 0; i < it.length; ++i) {\r | |
41 | fn(it[i]);\r | |
42 | }\r | |
43 | }\r | |
44 | \r | |
45 | forEach(elements, function (el) {\r | |
46 | var view = el.ownerDocument.defaultView;\r | |
47 | var style = view.getComputedStyle(el, null);\r | |
48 | var bg = style['background-image'];\r | |
49 | var box = el.getBoundingClientRect();\r | |
50 | \r | |
51 | var entry = {\r | |
52 | box: {\r | |
53 | x: window.scrollX + box.left,\r | |
54 | y: window.scrollY + box.top,\r | |
55 | w: box.right - box.left,\r | |
56 | h: box.bottom - box.top\r | |
57 | },\r | |
58 | radius: {\r | |
59 | tl: parseInt(style['border-top-left-radius'], 10) || 0,\r | |
60 | tr: parseInt(style['border-top-right-radius'], 10) || 0,\r | |
61 | br: parseInt(style['border-bottom-right-radius'], 10) || 0,\r | |
62 | bl: parseInt(style['border-bottom-left-radius'], 10) || 0\r | |
63 | },\r | |
64 | border: {\r | |
65 | t: parseInt(style['border-top-width'], 10) || 0,\r | |
66 | r: parseInt(style['border-right-width'], 10) || 0,\r | |
67 | b: parseInt(style['border-bottom-width'], 10) || 0,\r | |
68 | l: parseInt(style['border-left-width'], 10) || 0\r | |
69 | }\r | |
70 | };\r | |
71 | \r | |
72 | if (el.id) {\r | |
73 | entry.id = el.id;\r | |
74 | }\r | |
75 | \r | |
76 | if (bg.indexOf('-gradient') !== -1) {\r | |
77 | if (bg.indexOf('50% 0') !== -1 || bg.indexOf('top') !== -1 ||\r | |
78 | bg.indexOf('bottom') !== -1) {\r | |
79 | entry.gradient = 'top';\r | |
80 | } else {\r | |
81 | entry.gradient = 'left';\r | |
82 | }\r | |
83 | }\r | |
84 | \r | |
85 | var slices = [];\r | |
86 | getSlices(slices, view.getComputedStyle(el, ':before'));\r | |
87 | getSlices(slices, view.getComputedStyle(el, ':after'));\r | |
88 | \r | |
89 | if (slices.length) {\r | |
90 | entry.slices = slices.join(', ').split(', ');\r | |
91 | }\r | |
92 | var extra = getData(el);\r | |
93 | if (extra) {\r | |
94 | entry.extra = extra;\r | |
95 | }\r | |
96 | \r | |
97 | widgets.push(entry);\r | |
98 | });\r | |
99 | \r | |
100 | slicerManifest = getData(document.body) || {};\r | |
101 | slicerManifest.widgets = widgets;\r | |
102 | if (!slicerManifest.format) {\r | |
103 | // legacy support sets format to "1.0"\r | |
104 | slicerManifest.format = '2.0';\r | |
105 | }\r | |
106 | }\r |