forked from zombieFox/nightTab
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathedge.js
More file actions
86 lines (81 loc) · 2.35 KB
/
Copy pathedge.js
File metadata and controls
86 lines (81 loc) · 2.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
var edge = (function() {
var _timer = null;
var _currentEdge = null;
var destroy = function() {
var allEdge = helper.eA(".edge");
if (allEdge[0]) {
for (var i = 0; i < allEdge.length; i++) {
allEdge[i].destroy();
};
};
};
var render = function(override) {
var options = {
element: null,
delay: null
};
if (override) {
options = helper.applyOptions(options, override);
};
var _resize = function() {
var rect = options.element.getBoundingClientRect();
_currentEdge.style.width = rect.width + "px";
_currentEdge.style.height = rect.height + "px";
_currentEdge.style.top = rect.top + "px";
_currentEdge.style.left = rect.left + "px";
};
var _makeEdge = function() {
helper.setObject({
object: state.get(),
path: "edge",
newValue: true
});
var html = helper.e("html");
var body = helper.e("body");
var edgeElement = helper.node("div|class:edge is-transparent");
edgeElement.destroy = function() {
if (edgeElement.classList.contains("is-opaque")) {
helper.removeClass(edgeElement, "is-opaque");
helper.addClass(edgeElement, "is-transparent");
} else {
edgeElement.remove();
};
_currentEdge = null;
helper.setObject({
object: state.get(),
path: "edge",
newValue: false
});
};
edgeElement.addEventListener("transitionend", function(event, elapsed) {
if (event.propertyName === "opacity" && getComputedStyle(this).opacity == 0) {
this.parentElement.removeChild(this);
helper.removeClass(html, "is-edge");
};
}, false);
if (options.delay) {
clearTimeout(_timer);
_timer = setTimeout(edgeElement.destroy, options.delay);
};
helper.addClass(html, "is-edge");
body.appendChild(edgeElement);
getComputedStyle(edgeElement).opacity;
helper.removeClass(edgeElement, "is-transparent");
helper.addClass(edgeElement, "is-opaque");
_currentEdge = edgeElement;
};
if (options.element != null) {
if (_currentEdge == null) {
_makeEdge();
_resize();
} else {
_resize();
};
};
};
// exposed methods
return {
render: render,
destroy: destroy
};
})();