UNPKG

3.81 kBJavaScriptView Raw
1/**
2 * @param {?} docEle
3 * @return {?}
4 */
5export function getCss(docEle) {
6 var /** @type {?} */ css = {};
7 // transform
8 var /** @type {?} */ i;
9 var /** @type {?} */ keys = ['webkitTransform', '-webkit-transform', 'webkit-transform', 'transform'];
10 for (i = 0; i < keys.length; i++) {
11 if (((docEle.style))[keys[i]] !== undefined) {
12 css.transform = keys[i];
13 break;
14 }
15 }
16 // transition
17 keys = ['webkitTransition', 'transition'];
18 for (i = 0; i < keys.length; i++) {
19 if (((docEle.style))[keys[i]] !== undefined) {
20 css.transition = keys[i];
21 break;
22 }
23 }
24 // The only prefix we care about is webkit for transitions.
25 var /** @type {?} */ isWebkit = css.transition.indexOf('webkit') > -1;
26 // transition duration
27 css.transitionDuration = (isWebkit ? '-webkit-' : '') + 'transition-duration';
28 // transition timing function
29 css.transitionTimingFn = (isWebkit ? '-webkit-' : '') + 'transition-timing-function';
30 // transition delay
31 css.transitionDelay = (isWebkit ? '-webkit-' : '') + 'transition-delay';
32 // To be sure transitionend works everywhere, include *both* the webkit and non-webkit events
33 css.transitionEnd = (isWebkit ? 'webkitTransitionEnd ' : '') + 'transitionend';
34 // transform origin
35 css.transformOrigin = (isWebkit ? '-webkit-' : '') + 'transform-origin';
36 // animation delay
37 css.animationDelay = (isWebkit ? 'webkitAnimationDelay' : 'animationDelay');
38 return css;
39}
40/**
41 * @param {?} ev
42 * @return {?}
43 */
44export function pointerCoord(ev) {
45 // get coordinates for either a mouse click
46 // or a touch depending on the given event
47 if (ev) {
48 var /** @type {?} */ changedTouches = ev.changedTouches;
49 if (changedTouches && changedTouches.length > 0) {
50 var /** @type {?} */ touch = changedTouches[0];
51 return { x: touch.clientX, y: touch.clientY };
52 }
53 var /** @type {?} */ pageX = ev.pageX;
54 if (pageX !== undefined) {
55 return { x: pageX, y: ev.pageY };
56 }
57 }
58 return { x: 0, y: 0 };
59}
60/**
61 * @param {?} threshold
62 * @param {?} startCoord
63 * @param {?} endCoord
64 * @return {?}
65 */
66export function hasPointerMoved(threshold, startCoord, endCoord) {
67 if (startCoord && endCoord) {
68 var /** @type {?} */ deltaX = (startCoord.x - endCoord.x);
69 var /** @type {?} */ deltaY = (startCoord.y - endCoord.y);
70 var /** @type {?} */ distance = deltaX * deltaX + deltaY * deltaY;
71 return distance > (threshold * threshold);
72 }
73 return false;
74}
75/**
76 * @param {?} ele
77 * @return {?}
78 */
79export function isTextInput(ele) {
80 return !!ele &&
81 (ele.tagName === 'TEXTAREA' ||
82 ele.contentEditable === 'true' ||
83 (ele.tagName === 'INPUT' && !(NON_TEXT_INPUT_REGEX.test(ele.type))));
84}
85export var /** @type {?} */ NON_TEXT_INPUT_REGEX = /^(radio|checkbox|range|file|submit|reset|color|image|button)$/i;
86var /** @type {?} */ SKIP_INPUT_ATTR = ['value', 'checked', 'disabled', 'readonly', 'placeholder', 'type', 'class', 'style', 'id', 'autofocus', 'autocomplete', 'autocorrect'];
87/**
88 * @param {?} srcElement
89 * @param {?} destElement
90 * @return {?}
91 */
92export function copyInputAttributes(srcElement, destElement) {
93 // copy attributes from one element to another
94 // however, skip over a few of them as they're already
95 // handled in the angular world
96 var /** @type {?} */ attrs = srcElement.attributes;
97 for (var /** @type {?} */ i = 0; i < attrs.length; i++) {
98 var /** @type {?} */ attr = attrs[i];
99 if (SKIP_INPUT_ATTR.indexOf(attr.name) === -1) {
100 destElement.setAttribute(attr.name, attr.value);
101 }
102 }
103}
104//# sourceMappingURL=dom.js.map
\No newline at end of file