Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemath
GitHub Repository: sagemath/sagecell
Path: blob/master/static/colorpicker/js/utils.js
447 views
1
/**
2
*
3
* Utilities
4
* Author: Stefan Petre www.eyecon.ro
5
*
6
*/
7
(function($) {
8
EYE.extend({
9
getPosition : function(e, forceIt)
10
{
11
var x = 0;
12
var y = 0;
13
var es = e.style;
14
var restoreStyles = false;
15
if (forceIt && jQuery.curCSS(e,'display') == 'none') {
16
var oldVisibility = es.visibility;
17
var oldPosition = es.position;
18
restoreStyles = true;
19
es.visibility = 'hidden';
20
es.display = 'block';
21
es.position = 'absolute';
22
}
23
var el = e;
24
if (el.getBoundingClientRect) { // IE
25
var box = el.getBoundingClientRect();
26
x = box.left + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft) - 2;
27
y = box.top + Math.max(document.documentElement.scrollTop, document.body.scrollTop) - 2;
28
} else {
29
x = el.offsetLeft;
30
y = el.offsetTop;
31
el = el.offsetParent;
32
if (e != el) {
33
while (el) {
34
x += el.offsetLeft;
35
y += el.offsetTop;
36
el = el.offsetParent;
37
}
38
}
39
if (jQuery.browser.safari && jQuery.curCSS(e, 'position') == 'absolute' ) {
40
x -= document.body.offsetLeft;
41
y -= document.body.offsetTop;
42
}
43
el = e.parentNode;
44
while (el && el.tagName.toUpperCase() != 'BODY' && el.tagName.toUpperCase() != 'HTML')
45
{
46
if (jQuery.curCSS(el, 'display') != 'inline') {
47
x -= el.scrollLeft;
48
y -= el.scrollTop;
49
}
50
el = el.parentNode;
51
}
52
}
53
if (restoreStyles == true) {
54
es.display = 'none';
55
es.position = oldPosition;
56
es.visibility = oldVisibility;
57
}
58
return {x:x, y:y};
59
},
60
getSize : function(e)
61
{
62
var w = parseInt(jQuery.curCSS(e,'width'), 10);
63
var h = parseInt(jQuery.curCSS(e,'height'), 10);
64
var wb = 0;
65
var hb = 0;
66
if (jQuery.curCSS(e, 'display') != 'none') {
67
wb = e.offsetWidth;
68
hb = e.offsetHeight;
69
} else {
70
var es = e.style;
71
var oldVisibility = es.visibility;
72
var oldPosition = es.position;
73
es.visibility = 'hidden';
74
es.display = 'block';
75
es.position = 'absolute';
76
wb = e.offsetWidth;
77
hb = e.offsetHeight;
78
es.display = 'none';
79
es.position = oldPosition;
80
es.visibility = oldVisibility;
81
}
82
return {w:w, h:h, wb:wb, hb:hb};
83
},
84
getClient : function(e)
85
{
86
var h, w;
87
if (e) {
88
w = e.clientWidth;
89
h = e.clientHeight;
90
} else {
91
var de = document.documentElement;
92
w = window.innerWidth || self.innerWidth || (de&&de.clientWidth) || document.body.clientWidth;
93
h = window.innerHeight || self.innerHeight || (de&&de.clientHeight) || document.body.clientHeight;
94
}
95
return {w:w,h:h};
96
},
97
getScroll : function (e)
98
{
99
var t=0, l=0, w=0, h=0, iw=0, ih=0;
100
if (e && e.nodeName.toLowerCase() != 'body') {
101
t = e.scrollTop;
102
l = e.scrollLeft;
103
w = e.scrollWidth;
104
h = e.scrollHeight;
105
} else {
106
if (document.documentElement) {
107
t = document.documentElement.scrollTop;
108
l = document.documentElement.scrollLeft;
109
w = document.documentElement.scrollWidth;
110
h = document.documentElement.scrollHeight;
111
} else if (document.body) {
112
t = document.body.scrollTop;
113
l = document.body.scrollLeft;
114
w = document.body.scrollWidth;
115
h = document.body.scrollHeight;
116
}
117
if (typeof pageYOffset != 'undefined') {
118
t = pageYOffset;
119
l = pageXOffset;
120
}
121
iw = self.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0;
122
ih = self.innerHeight||document.documentElement.clientHeight||document.body.clientHeight||0;
123
}
124
return { t: t, l: l, w: w, h: h, iw: iw, ih: ih };
125
},
126
getMargins : function(e, toInteger)
127
{
128
var t = jQuery.curCSS(e,'marginTop') || '';
129
var r = jQuery.curCSS(e,'marginRight') || '';
130
var b = jQuery.curCSS(e,'marginBottom') || '';
131
var l = jQuery.curCSS(e,'marginLeft') || '';
132
if (toInteger)
133
return {
134
t: parseInt(t, 10)||0,
135
r: parseInt(r, 10)||0,
136
b: parseInt(b, 10)||0,
137
l: parseInt(l, 10)
138
};
139
else
140
return {t: t, r: r, b: b, l: l};
141
},
142
getPadding : function(e, toInteger)
143
{
144
var t = jQuery.curCSS(e,'paddingTop') || '';
145
var r = jQuery.curCSS(e,'paddingRight') || '';
146
var b = jQuery.curCSS(e,'paddingBottom') || '';
147
var l = jQuery.curCSS(e,'paddingLeft') || '';
148
if (toInteger)
149
return {
150
t: parseInt(t, 10)||0,
151
r: parseInt(r, 10)||0,
152
b: parseInt(b, 10)||0,
153
l: parseInt(l, 10)
154
};
155
else
156
return {t: t, r: r, b: b, l: l};
157
},
158
getBorder : function(e, toInteger)
159
{
160
var t = jQuery.curCSS(e,'borderTopWidth') || '';
161
var r = jQuery.curCSS(e,'borderRightWidth') || '';
162
var b = jQuery.curCSS(e,'borderBottomWidth') || '';
163
var l = jQuery.curCSS(e,'borderLeftWidth') || '';
164
if (toInteger)
165
return {
166
t: parseInt(t, 10)||0,
167
r: parseInt(r, 10)||0,
168
b: parseInt(b, 10)||0,
169
l: parseInt(l, 10)||0
170
};
171
else
172
return {t: t, r: r, b: b, l: l};
173
},
174
traverseDOM : function(nodeEl, func)
175
{
176
func(nodeEl);
177
nodeEl = nodeEl.firstChild;
178
while(nodeEl){
179
EYE.traverseDOM(nodeEl, func);
180
nodeEl = nodeEl.nextSibling;
181
}
182
},
183
getInnerWidth : function(el, scroll) {
184
var offsetW = el.offsetWidth;
185
return scroll ? Math.max(el.scrollWidth,offsetW) - offsetW + el.clientWidth:el.clientWidth;
186
},
187
getInnerHeight : function(el, scroll) {
188
var offsetH = el.offsetHeight;
189
return scroll ? Math.max(el.scrollHeight,offsetH) - offsetH + el.clientHeight:el.clientHeight;
190
},
191
getExtraWidth : function(el) {
192
if($.boxModel)
193
return (parseInt($.curCSS(el, 'paddingLeft'))||0)
194
+ (parseInt($.curCSS(el, 'paddingRight'))||0)
195
+ (parseInt($.curCSS(el, 'borderLeftWidth'))||0)
196
+ (parseInt($.curCSS(el, 'borderRightWidth'))||0);
197
return 0;
198
},
199
getExtraHeight : function(el) {
200
if($.boxModel)
201
return (parseInt($.curCSS(el, 'paddingTop'))||0)
202
+ (parseInt($.curCSS(el, 'paddingBottom'))||0)
203
+ (parseInt($.curCSS(el, 'borderTopWidth'))||0)
204
+ (parseInt($.curCSS(el, 'borderBottomWidth'))||0);
205
return 0;
206
},
207
isChildOf: function(parentEl, el, container) {
208
if (parentEl == el) {
209
return true;
210
}
211
if (!el || !el.nodeType || el.nodeType != 1) {
212
return false;
213
}
214
if (parentEl.contains && !$.browser.safari) {
215
return parentEl.contains(el);
216
}
217
if ( parentEl.compareDocumentPosition ) {
218
return !!(parentEl.compareDocumentPosition(el) & 16);
219
}
220
var prEl = el.parentNode;
221
while(prEl && prEl != container) {
222
if (prEl == parentEl)
223
return true;
224
prEl = prEl.parentNode;
225
}
226
return false;
227
},
228
centerEl : function(el, axis)
229
{
230
var clientScroll = EYE.getScroll();
231
var size = EYE.getSize(el);
232
if (!axis || axis == 'vertically')
233
$(el).css(
234
{
235
top: clientScroll.t + ((Math.min(clientScroll.h,clientScroll.ih) - size.hb)/2) + 'px'
236
}
237
);
238
if (!axis || axis == 'horizontally')
239
$(el).css(
240
{
241
left: clientScroll.l + ((Math.min(clientScroll.w,clientScroll.iw) - size.wb)/2) + 'px'
242
}
243
);
244
}
245
});
246
if (!$.easing.easeout) {
247
$.easing.easeout = function(p, n, firstNum, delta, duration) {
248
return -delta * ((n=n/duration-1)*n*n*n - 1) + firstNum;
249
};
250
}
251
252
})(jQuery);
253