]> git.proxmox.com Git - extjs.git/blame - extjs/examples/classic/aria/sass/example/slicer.js
add extjs 6.0.1 sources
[extjs.git] / extjs / examples / classic / aria / sass / example / slicer.js
CommitLineData
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
5if (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
14var slicerManifest;\r
15\r
16function 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