UNPKG

3.61 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.dataToArray = dataToArray;
7exports.addEventListener = addEventListener;
8exports.removeEventListener = removeEventListener;
9exports.transformArguments = transformArguments;
10exports.getTouchParentScroll = exports.windowIsUndefined = exports.isNumeric = exports.transitionEnd = exports.transitionStr = void 0;
11
12function dataToArray(vars) {
13 if (Array.isArray(vars)) {
14 return vars;
15 }
16
17 return [vars];
18}
19
20var transitionEndObject = {
21 transition: 'transitionend',
22 WebkitTransition: 'webkitTransitionEnd',
23 MozTransition: 'transitionend',
24 OTransition: 'oTransitionEnd otransitionend'
25};
26var transitionStr = Object.keys(transitionEndObject).filter(function (key) {
27 if (typeof document === 'undefined') {
28 return false;
29 }
30
31 var html = document.getElementsByTagName('html')[0];
32 return key in (html ? html.style : {});
33})[0];
34exports.transitionStr = transitionStr;
35var transitionEnd = transitionEndObject[transitionStr];
36exports.transitionEnd = transitionEnd;
37
38function addEventListener(target, eventType, callback, options) {
39 if (target.addEventListener) {
40 target.addEventListener(eventType, callback, options);
41 } else if (target.attachEvent) {
42 // tslint:disable-line
43 target.attachEvent("on".concat(eventType), callback); // tslint:disable-line
44 }
45}
46
47function removeEventListener(target, eventType, callback, options) {
48 if (target.removeEventListener) {
49 target.removeEventListener(eventType, callback, options);
50 } else if (target.attachEvent) {
51 // tslint:disable-line
52 target.detachEvent("on".concat(eventType), callback); // tslint:disable-line
53 }
54}
55
56function transformArguments(arg, cb) {
57 var result = typeof arg === 'function' ? arg(cb) : arg;
58
59 if (Array.isArray(result)) {
60 if (result.length === 2) {
61 return result;
62 }
63
64 return [result[0], result[1]];
65 }
66
67 return [result];
68}
69
70var isNumeric = function isNumeric(value) {
71 return !isNaN(parseFloat(value)) && isFinite(value);
72};
73
74exports.isNumeric = isNumeric;
75var windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);
76exports.windowIsUndefined = windowIsUndefined;
77
78var getTouchParentScroll = function getTouchParentScroll(root, currentTarget, differX, differY) {
79 if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {
80 return false;
81 } // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;
82
83
84 if (currentTarget === root.parentNode) {
85 return true;
86 }
87
88 var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);
89 var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);
90 var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;
91 var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;
92 var style = document.defaultView.getComputedStyle(currentTarget);
93 var overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';
94 var overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';
95 var y = scrollY && overflowY;
96 var x = scrollX && overflowX;
97
98 if (isY && (!y || y && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!x || x && (currentTarget.scrollLeft >= scrollX && differX < 0 || currentTarget.scrollLeft <= 0 && differX > 0))) {
99 return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);
100 }
101
102 return false;
103};
104
105exports.getTouchParentScroll = getTouchParentScroll;
\No newline at end of file