@desynova-digital/player 4.0.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/utils/dom.js +94 -0
package/package.json
CHANGED
package/utils/dom.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.blurNode = blurNode;
|
|
7
|
+
exports.findElPosition = findElPosition;
|
|
8
|
+
exports.getPointerPosition = getPointerPosition;
|
|
9
|
+
exports.hasClass = hasClass;
|
|
10
|
+
var _reactDom = require("react-dom");
|
|
11
|
+
/**
|
|
12
|
+
* Offset Left
|
|
13
|
+
* getBoundingClientRect technique from
|
|
14
|
+
* John Resig http://ejohn.org/blog/getboundingclientrect-is-awesome/
|
|
15
|
+
*
|
|
16
|
+
* @function findElPosition
|
|
17
|
+
* @param {Element} el Element from which to get offset
|
|
18
|
+
* @return {Object}
|
|
19
|
+
*/
|
|
20
|
+
function findElPosition(el) {
|
|
21
|
+
var box;
|
|
22
|
+
if (el.getBoundingClientRect && el.parentNode) {
|
|
23
|
+
box = el.getBoundingClientRect();
|
|
24
|
+
}
|
|
25
|
+
if (!box) {
|
|
26
|
+
return {
|
|
27
|
+
left: 0,
|
|
28
|
+
top: 0
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
var docEl = document.documentElement;
|
|
32
|
+
var _document = document,
|
|
33
|
+
body = _document.body;
|
|
34
|
+
var clientLeft = docEl.clientLeft || body.clientLeft || 0;
|
|
35
|
+
var scrollLeft = window.pageXOffset || body.scrollLeft;
|
|
36
|
+
var left = box.left + scrollLeft - clientLeft;
|
|
37
|
+
var clientTop = docEl.clientTop || body.clientTop || 0;
|
|
38
|
+
var scrollTop = window.pageYOffset || body.scrollTop;
|
|
39
|
+
var top = box.top + scrollTop - clientTop;
|
|
40
|
+
|
|
41
|
+
// Android sometimes returns slightly off decimal values, so need to round
|
|
42
|
+
return {
|
|
43
|
+
left: Math.round(left),
|
|
44
|
+
top: Math.round(top)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Get pointer position in element
|
|
50
|
+
* Returns an object with x and y coordinates.
|
|
51
|
+
* The base on the coordinates are the bottom left of the element.
|
|
52
|
+
*
|
|
53
|
+
* @function getPointerPosition
|
|
54
|
+
* @param {Element} el Element on which to get the pointer position on
|
|
55
|
+
* @param {Event} event Event object
|
|
56
|
+
* @return {Object} This object will have x and y
|
|
57
|
+
* coordinates corresponding to the mouse position
|
|
58
|
+
*/
|
|
59
|
+
function getPointerPosition(el, event) {
|
|
60
|
+
var position = {};
|
|
61
|
+
var box = findElPosition(el);
|
|
62
|
+
var boxW = el.offsetWidth;
|
|
63
|
+
var boxH = el.offsetHeight;
|
|
64
|
+
var boxY = box.top;
|
|
65
|
+
var boxX = box.left;
|
|
66
|
+
var pageY = event.pageY;
|
|
67
|
+
var pageX = event.pageX;
|
|
68
|
+
if (event.changedTouches) {
|
|
69
|
+
pageX = event.changedTouches[0].pageX;
|
|
70
|
+
pageY = event.changedTouches[0].pageY;
|
|
71
|
+
}
|
|
72
|
+
position.y = Math.max(0, Math.min(1, (boxY - pageY + boxH) / boxH));
|
|
73
|
+
position.x = Math.max(0, Math.min(1, (pageX - boxX) / boxW));
|
|
74
|
+
return position;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// blur an element
|
|
78
|
+
function blurNode(reactNode) {
|
|
79
|
+
var domNode = (0, _reactDom.findDOMNode)(reactNode);
|
|
80
|
+
if (domNode && domNode.blur) {
|
|
81
|
+
domNode.blur();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// check if an element has a class name
|
|
86
|
+
function hasClass(elm, cls) {
|
|
87
|
+
var classes = elm.className.split(' ');
|
|
88
|
+
for (var i = 0; i < classes.length; i++) {
|
|
89
|
+
if (classes[i].toLowerCase() === cls.toLowerCase()) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
}
|