@hi-ui/table 4.3.1 → 4.3.2
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/CHANGELOG.md +40 -0
- package/lib/cjs/BaseTable.js +136 -189
- package/lib/cjs/ColGroupContent.js +5 -28
- package/lib/cjs/SettingDrawer.js +76 -127
- package/lib/cjs/Table.js +107 -171
- package/lib/cjs/TableAdvancedFilter.js +49 -85
- package/lib/cjs/TableBody.js +33 -69
- package/lib/cjs/TableCell.js +56 -102
- package/lib/cjs/TableColumnMenu.js +39 -77
- package/lib/cjs/TableEmbedRow.js +11 -38
- package/lib/cjs/TableHeader.js +8 -33
- package/lib/cjs/TableRow.js +48 -88
- package/lib/cjs/TableSettingMenu.js +48 -94
- package/lib/cjs/TbodyContent.js +28 -56
- package/lib/cjs/TheadContent.js +20 -49
- package/lib/cjs/_virtual/index.js +0 -3
- package/lib/cjs/_virtual/index2.js +0 -3
- package/lib/cjs/_virtual/react-is.development.js +0 -3
- package/lib/cjs/_virtual/react-is.production.min.js +0 -3
- package/lib/cjs/context.js +0 -9
- package/lib/cjs/hooks/use-async-switch.js +13 -51
- package/lib/cjs/hooks/use-check.js +47 -77
- package/lib/cjs/hooks/use-col-hidden.js +16 -28
- package/lib/cjs/hooks/use-col-set.js +5 -18
- package/lib/cjs/hooks/use-col-sorter.js +18 -32
- package/lib/cjs/hooks/use-col-width.js +21 -57
- package/lib/cjs/hooks/use-colgroup.js +63 -85
- package/lib/cjs/hooks/use-drag.js +10 -31
- package/lib/cjs/hooks/use-embed-expand.js +23 -68
- package/lib/cjs/hooks/use-expand.js +32 -64
- package/lib/cjs/hooks/use-pagination.js +19 -50
- package/lib/cjs/hooks/use-queue.js +2 -14
- package/lib/cjs/icons/index.js +4 -21
- package/lib/cjs/index.js +0 -4
- package/lib/cjs/node_modules/classnames/index.js +2 -11
- package/lib/cjs/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -227
- package/lib/cjs/node_modules/rc-resize-observer/es/index.js +10 -68
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -17
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -25
- package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +1 -5
- package/lib/cjs/node_modules/rc-util/es/Dom/canUseDom.js +0 -2
- package/lib/cjs/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
- package/lib/cjs/node_modules/rc-util/es/hooks/useLayoutEffect.js +2 -9
- package/lib/cjs/node_modules/rc-util/es/raf.js +0 -11
- package/lib/cjs/node_modules/rc-virtual-list/es/Filler.js +6 -25
- package/lib/cjs/node_modules/rc-virtual-list/es/Item.js +3 -14
- package/lib/cjs/node_modules/rc-virtual-list/es/List.js +103 -194
- package/lib/cjs/node_modules/rc-virtual-list/es/ScrollBar.js +16 -96
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useChildren.js +2 -11
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +8 -34
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -10
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useHeights.js +6 -39
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -16
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -9
- package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +3 -28
- package/lib/cjs/node_modules/rc-virtual-list/es/index.js +0 -2
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -9
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +0 -15
- package/lib/cjs/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -2
- package/lib/cjs/node_modules/react-is/cjs/react-is.development.js +3 -29
- package/lib/cjs/node_modules/react-is/cjs/react-is.production.min.js +19 -45
- package/lib/cjs/node_modules/react-is/index.js +0 -5
- package/lib/cjs/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +83 -248
- package/lib/cjs/packages/hooks/use-merge-refs/lib/esm/index.js +3 -14
- package/lib/cjs/packages/ui/scrollbar/lib/esm/Scrollbar.js +48 -86
- package/lib/cjs/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -15
- package/lib/cjs/packages/ui/scrollbar/lib/esm/utils/index.js +0 -13
- package/lib/cjs/styles/index.scss.js +1 -4
- package/lib/cjs/use-table.js +268 -355
- package/lib/cjs/utils/index.js +11 -45
- package/lib/esm/BaseTable.js +117 -138
- package/lib/esm/ColGroupContent.js +3 -9
- package/lib/esm/SettingDrawer.js +64 -83
- package/lib/esm/Table.js +97 -124
- package/lib/esm/TableAdvancedFilter.js +37 -47
- package/lib/esm/TableBody.js +24 -34
- package/lib/esm/TableCell.js +48 -72
- package/lib/esm/TableColumnMenu.js +24 -38
- package/lib/esm/TableEmbedRow.js +8 -15
- package/lib/esm/TableHeader.js +5 -11
- package/lib/esm/TableRow.js +36 -51
- package/lib/esm/TableSettingMenu.js +33 -49
- package/lib/esm/TbodyContent.js +20 -27
- package/lib/esm/TheadContent.js +14 -21
- package/lib/esm/context.js +0 -4
- package/lib/esm/hooks/use-async-switch.js +9 -28
- package/lib/esm/hooks/use-check.js +42 -55
- package/lib/esm/hooks/use-col-hidden.js +16 -21
- package/lib/esm/hooks/use-col-set.js +5 -13
- package/lib/esm/hooks/use-col-sorter.js +18 -23
- package/lib/esm/hooks/use-col-width.js +14 -34
- package/lib/esm/hooks/use-colgroup.js +60 -66
- package/lib/esm/hooks/use-drag.js +9 -13
- package/lib/esm/hooks/use-embed-expand.js +20 -42
- package/lib/esm/hooks/use-expand.js +32 -56
- package/lib/esm/hooks/use-pagination.js +13 -25
- package/lib/esm/hooks/use-queue.js +2 -10
- package/lib/esm/node_modules/classnames/index.js +2 -9
- package/lib/esm/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -228
- package/lib/esm/node_modules/rc-resize-observer/es/index.js +3 -26
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +0 -3
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +0 -8
- package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +0 -5
- package/lib/esm/node_modules/rc-util/es/Dom/canUseDom.js +0 -1
- package/lib/esm/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
- package/lib/esm/node_modules/rc-util/es/hooks/useLayoutEffect.js +1 -0
- package/lib/esm/node_modules/rc-util/es/raf.js +0 -10
- package/lib/esm/node_modules/rc-virtual-list/es/Filler.js +4 -15
- package/lib/esm/node_modules/rc-virtual-list/es/Item.js +1 -3
- package/lib/esm/node_modules/rc-virtual-list/es/List.js +101 -174
- package/lib/esm/node_modules/rc-virtual-list/es/ScrollBar.js +14 -86
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useChildren.js +0 -2
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +6 -25
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -6
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useHeights.js +4 -28
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -13
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -8
- package/lib/esm/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +1 -19
- package/lib/esm/node_modules/rc-virtual-list/es/index.js +1 -1
- package/lib/esm/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -8
- package/lib/esm/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +1 -12
- package/lib/esm/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -1
- package/lib/esm/node_modules/react-is/cjs/react-is.development.js +4 -27
- package/lib/esm/node_modules/react-is/cjs/react-is.production.min.js +20 -44
- package/lib/esm/node_modules/react-is/index.js +0 -1
- package/lib/esm/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +82 -248
- package/lib/esm/packages/hooks/use-merge-refs/lib/esm/index.js +3 -9
- package/lib/esm/packages/ui/scrollbar/lib/esm/Scrollbar.js +47 -64
- package/lib/esm/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/packages/ui/scrollbar/lib/esm/utils/index.js +0 -10
- package/lib/esm/styles/index.scss.js +1 -3
- package/lib/esm/use-table.js +261 -318
- package/lib/esm/utils/index.js +11 -41
- package/lib/types/BaseTable.d.ts +2 -2
- package/package.json +33 -33
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
Object.defineProperty(exports, '__esModule', {
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
|
+
|
|
15
16
|
/*!
|
|
16
17
|
* perfect-scrollbar v1.5.3
|
|
17
18
|
* Copyright 2021 Hyunje Jun, MDBootstrap and Contributors
|
|
@@ -21,37 +22,28 @@ Object.defineProperty(exports, '__esModule', {
|
|
|
21
22
|
function get(element) {
|
|
22
23
|
return getComputedStyle(element);
|
|
23
24
|
}
|
|
24
|
-
|
|
25
25
|
function set(element, obj) {
|
|
26
26
|
for (var key in obj) {
|
|
27
27
|
var val = obj[key];
|
|
28
|
-
|
|
29
28
|
if (typeof val === 'number') {
|
|
30
29
|
val = val + "px";
|
|
31
30
|
}
|
|
32
|
-
|
|
33
31
|
element.style[key] = val;
|
|
34
32
|
}
|
|
35
|
-
|
|
36
33
|
return element;
|
|
37
34
|
}
|
|
38
|
-
|
|
39
35
|
function div(className) {
|
|
40
36
|
var div = document.createElement('div');
|
|
41
37
|
div.className = className;
|
|
42
38
|
return div;
|
|
43
39
|
}
|
|
44
|
-
|
|
45
40
|
var elMatches = typeof Element !== 'undefined' && (Element.prototype.matches || Element.prototype.webkitMatchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector);
|
|
46
|
-
|
|
47
41
|
function matches(element, query) {
|
|
48
42
|
if (!elMatches) {
|
|
49
43
|
throw new Error('No element matching method supported');
|
|
50
44
|
}
|
|
51
|
-
|
|
52
45
|
return elMatches.call(element, query);
|
|
53
46
|
}
|
|
54
|
-
|
|
55
47
|
function remove(element) {
|
|
56
48
|
if (element.remove) {
|
|
57
49
|
element.remove();
|
|
@@ -61,13 +53,11 @@ function remove(element) {
|
|
|
61
53
|
}
|
|
62
54
|
}
|
|
63
55
|
}
|
|
64
|
-
|
|
65
56
|
function queryChildren(element, selector) {
|
|
66
57
|
return Array.prototype.filter.call(element.children, function (child) {
|
|
67
58
|
return matches(child, selector);
|
|
68
59
|
});
|
|
69
60
|
}
|
|
70
|
-
|
|
71
61
|
var cls = {
|
|
72
62
|
main: 'ps',
|
|
73
63
|
rtl: 'ps__rtl',
|
|
@@ -91,133 +81,108 @@ var cls = {
|
|
|
91
81
|
}
|
|
92
82
|
}
|
|
93
83
|
};
|
|
84
|
+
|
|
94
85
|
/*
|
|
95
86
|
* Helper methods
|
|
96
87
|
*/
|
|
97
|
-
|
|
98
88
|
var scrollingClassTimeout = {
|
|
99
89
|
x: null,
|
|
100
90
|
y: null
|
|
101
91
|
};
|
|
102
|
-
|
|
103
92
|
function addScrollingClass(i, x) {
|
|
104
93
|
var classList = i.element.classList;
|
|
105
94
|
var className = cls.state.scrolling(x);
|
|
106
|
-
|
|
107
95
|
if (classList.contains(className)) {
|
|
108
96
|
clearTimeout(scrollingClassTimeout[x]);
|
|
109
97
|
} else {
|
|
110
98
|
classList.add(className);
|
|
111
99
|
}
|
|
112
100
|
}
|
|
113
|
-
|
|
114
101
|
function removeScrollingClass(i, x) {
|
|
115
102
|
scrollingClassTimeout[x] = setTimeout(function () {
|
|
116
103
|
return i.isAlive && i.element.classList.remove(cls.state.scrolling(x));
|
|
117
104
|
}, i.settings.scrollingThreshold);
|
|
118
105
|
}
|
|
119
|
-
|
|
120
106
|
function setScrollingClassInstantly(i, x) {
|
|
121
107
|
addScrollingClass(i, x);
|
|
122
108
|
removeScrollingClass(i, x);
|
|
123
109
|
}
|
|
124
|
-
|
|
125
110
|
var EventElement = function EventElement(element) {
|
|
126
111
|
this.element = element;
|
|
127
112
|
this.handlers = {};
|
|
128
113
|
};
|
|
129
|
-
|
|
130
114
|
var prototypeAccessors = {
|
|
131
115
|
isEmpty: {
|
|
132
116
|
configurable: true
|
|
133
117
|
}
|
|
134
118
|
};
|
|
135
|
-
|
|
136
119
|
EventElement.prototype.bind = function bind(eventName, handler) {
|
|
137
120
|
if (typeof this.handlers[eventName] === 'undefined') {
|
|
138
121
|
this.handlers[eventName] = [];
|
|
139
122
|
}
|
|
140
|
-
|
|
141
123
|
this.handlers[eventName].push(handler);
|
|
142
124
|
this.element.addEventListener(eventName, handler, false);
|
|
143
125
|
};
|
|
144
|
-
|
|
145
126
|
EventElement.prototype.unbind = function unbind(eventName, target) {
|
|
146
127
|
var this$1$1 = this;
|
|
147
128
|
this.handlers[eventName] = this.handlers[eventName].filter(function (handler) {
|
|
148
129
|
if (target && handler !== target) {
|
|
149
130
|
return true;
|
|
150
131
|
}
|
|
151
|
-
|
|
152
132
|
this$1$1.element.removeEventListener(eventName, handler, false);
|
|
153
133
|
return false;
|
|
154
134
|
});
|
|
155
135
|
};
|
|
156
|
-
|
|
157
136
|
EventElement.prototype.unbindAll = function unbindAll() {
|
|
158
137
|
for (var name in this.handlers) {
|
|
159
138
|
this.unbind(name);
|
|
160
139
|
}
|
|
161
140
|
};
|
|
162
|
-
|
|
163
141
|
prototypeAccessors.isEmpty.get = function () {
|
|
164
142
|
var this$1$1 = this;
|
|
165
143
|
return Object.keys(this.handlers).every(function (key) {
|
|
166
144
|
return this$1$1.handlers[key].length === 0;
|
|
167
145
|
});
|
|
168
146
|
};
|
|
169
|
-
|
|
170
147
|
Object.defineProperties(EventElement.prototype, prototypeAccessors);
|
|
171
|
-
|
|
172
148
|
var EventManager = function EventManager() {
|
|
173
149
|
this.eventElements = [];
|
|
174
150
|
};
|
|
175
|
-
|
|
176
151
|
EventManager.prototype.eventElement = function eventElement(element) {
|
|
177
152
|
var ee = this.eventElements.filter(function (ee) {
|
|
178
153
|
return ee.element === element;
|
|
179
154
|
})[0];
|
|
180
|
-
|
|
181
155
|
if (!ee) {
|
|
182
156
|
ee = new EventElement(element);
|
|
183
157
|
this.eventElements.push(ee);
|
|
184
158
|
}
|
|
185
|
-
|
|
186
159
|
return ee;
|
|
187
160
|
};
|
|
188
|
-
|
|
189
161
|
EventManager.prototype.bind = function bind(element, eventName, handler) {
|
|
190
162
|
this.eventElement(element).bind(eventName, handler);
|
|
191
163
|
};
|
|
192
|
-
|
|
193
164
|
EventManager.prototype.unbind = function unbind(element, eventName, handler) {
|
|
194
165
|
var ee = this.eventElement(element);
|
|
195
166
|
ee.unbind(eventName, handler);
|
|
196
|
-
|
|
197
167
|
if (ee.isEmpty) {
|
|
198
168
|
// remove
|
|
199
169
|
this.eventElements.splice(this.eventElements.indexOf(ee), 1);
|
|
200
170
|
}
|
|
201
171
|
};
|
|
202
|
-
|
|
203
172
|
EventManager.prototype.unbindAll = function unbindAll() {
|
|
204
173
|
this.eventElements.forEach(function (e) {
|
|
205
174
|
return e.unbindAll();
|
|
206
175
|
});
|
|
207
176
|
this.eventElements = [];
|
|
208
177
|
};
|
|
209
|
-
|
|
210
178
|
EventManager.prototype.once = function once(element, eventName, handler) {
|
|
211
179
|
var ee = this.eventElement(element);
|
|
212
|
-
|
|
213
180
|
var onceHandler = function onceHandler(evt) {
|
|
214
181
|
ee.unbind(eventName, onceHandler);
|
|
215
182
|
handler(evt);
|
|
216
183
|
};
|
|
217
|
-
|
|
218
184
|
ee.bind(eventName, onceHandler);
|
|
219
185
|
};
|
|
220
|
-
|
|
221
186
|
function createEvent(name) {
|
|
222
187
|
if (typeof window.CustomEvent === 'function') {
|
|
223
188
|
return new CustomEvent(name);
|
|
@@ -227,12 +192,10 @@ function createEvent(name) {
|
|
|
227
192
|
return evt;
|
|
228
193
|
}
|
|
229
194
|
}
|
|
230
|
-
|
|
231
195
|
function processScrollDiff(i, axis, diff, useScrollingClass, forceFireReachEvent) {
|
|
232
196
|
if (useScrollingClass === void 0) useScrollingClass = true;
|
|
233
197
|
if (forceFireReachEvent === void 0) forceFireReachEvent = false;
|
|
234
198
|
var fields;
|
|
235
|
-
|
|
236
199
|
if (axis === 'top') {
|
|
237
200
|
fields = ['contentHeight', 'containerHeight', 'scrollTop', 'y', 'up', 'down'];
|
|
238
201
|
} else if (axis === 'left') {
|
|
@@ -240,10 +203,8 @@ function processScrollDiff(i, axis, diff, useScrollingClass, forceFireReachEvent
|
|
|
240
203
|
} else {
|
|
241
204
|
throw new Error('A proper axis should be provided');
|
|
242
205
|
}
|
|
243
|
-
|
|
244
206
|
processScrollDiff$1(i, diff, fields, useScrollingClass, forceFireReachEvent);
|
|
245
207
|
}
|
|
246
|
-
|
|
247
208
|
function processScrollDiff$1(i, diff, ref, useScrollingClass, forceFireReachEvent) {
|
|
248
209
|
var contentHeight = ref[0];
|
|
249
210
|
var containerHeight = ref[1];
|
|
@@ -253,58 +214,51 @@ function processScrollDiff$1(i, diff, ref, useScrollingClass, forceFireReachEven
|
|
|
253
214
|
var down = ref[5];
|
|
254
215
|
if (useScrollingClass === void 0) useScrollingClass = true;
|
|
255
216
|
if (forceFireReachEvent === void 0) forceFireReachEvent = false;
|
|
256
|
-
var element = i.element;
|
|
217
|
+
var element = i.element;
|
|
257
218
|
|
|
258
|
-
|
|
219
|
+
// reset reach
|
|
220
|
+
i.reach[y] = null;
|
|
259
221
|
|
|
222
|
+
// 1 for subpixel rounding
|
|
260
223
|
if (element[scrollTop] < 1) {
|
|
261
224
|
i.reach[y] = 'start';
|
|
262
|
-
}
|
|
263
|
-
|
|
225
|
+
}
|
|
264
226
|
|
|
227
|
+
// 1 for subpixel rounding
|
|
265
228
|
if (element[scrollTop] > i[contentHeight] - i[containerHeight] - 1) {
|
|
266
229
|
i.reach[y] = 'end';
|
|
267
230
|
}
|
|
268
|
-
|
|
269
231
|
if (diff) {
|
|
270
232
|
element.dispatchEvent(createEvent("ps-scroll-" + y));
|
|
271
|
-
|
|
272
233
|
if (diff < 0) {
|
|
273
234
|
element.dispatchEvent(createEvent("ps-scroll-" + up));
|
|
274
235
|
} else if (diff > 0) {
|
|
275
236
|
element.dispatchEvent(createEvent("ps-scroll-" + down));
|
|
276
237
|
}
|
|
277
|
-
|
|
278
238
|
if (useScrollingClass) {
|
|
279
239
|
setScrollingClassInstantly(i, y);
|
|
280
240
|
}
|
|
281
241
|
}
|
|
282
|
-
|
|
283
242
|
if (i.reach[y] && (diff || forceFireReachEvent)) {
|
|
284
243
|
element.dispatchEvent(createEvent("ps-" + y + "-reach-" + i.reach[y]));
|
|
285
244
|
}
|
|
286
245
|
}
|
|
287
|
-
|
|
288
246
|
function toInt(x) {
|
|
289
247
|
return parseInt(x, 10) || 0;
|
|
290
248
|
}
|
|
291
|
-
|
|
292
249
|
function isEditable(el) {
|
|
293
250
|
return matches(el, 'input,[contenteditable]') || matches(el, 'select,[contenteditable]') || matches(el, 'textarea,[contenteditable]') || matches(el, 'button,[contenteditable]');
|
|
294
251
|
}
|
|
295
|
-
|
|
296
252
|
function outerWidth(element) {
|
|
297
253
|
var styles = get(element);
|
|
298
254
|
return toInt(styles.width) + toInt(styles.paddingLeft) + toInt(styles.paddingRight) + toInt(styles.borderLeftWidth) + toInt(styles.borderRightWidth);
|
|
299
255
|
}
|
|
300
|
-
|
|
301
256
|
var env = {
|
|
302
257
|
isWebKit: typeof document !== 'undefined' && 'WebkitAppearance' in document.documentElement.style,
|
|
303
258
|
supportsTouch: typeof window !== 'undefined' && ('ontouchstart' in window || 'maxTouchPoints' in window.navigator && window.navigator.maxTouchPoints > 0 || window.DocumentTouch && document instanceof window.DocumentTouch),
|
|
304
259
|
supportsIePointer: typeof navigator !== 'undefined' && navigator.msMaxTouchPoints,
|
|
305
260
|
isChrome: typeof navigator !== 'undefined' && /Chrome/i.test(navigator && navigator.userAgent)
|
|
306
261
|
};
|
|
307
|
-
|
|
308
262
|
function updateGeometry(i) {
|
|
309
263
|
var element = i.element;
|
|
310
264
|
var roundedScrollTop = Math.floor(element.scrollTop);
|
|
@@ -313,7 +267,6 @@ function updateGeometry(i) {
|
|
|
313
267
|
i.containerHeight = Math.round(rect.height);
|
|
314
268
|
i.contentWidth = element.scrollWidth;
|
|
315
269
|
i.contentHeight = element.scrollHeight;
|
|
316
|
-
|
|
317
270
|
if (!element.contains(i.scrollbarXRail)) {
|
|
318
271
|
// clean up and append
|
|
319
272
|
queryChildren(element, cls.element.rail('x')).forEach(function (el) {
|
|
@@ -321,7 +274,6 @@ function updateGeometry(i) {
|
|
|
321
274
|
});
|
|
322
275
|
element.appendChild(i.scrollbarXRail);
|
|
323
276
|
}
|
|
324
|
-
|
|
325
277
|
if (!element.contains(i.scrollbarYRail)) {
|
|
326
278
|
// clean up and append
|
|
327
279
|
queryChildren(element, cls.element.rail('y')).forEach(function (el) {
|
|
@@ -329,7 +281,6 @@ function updateGeometry(i) {
|
|
|
329
281
|
});
|
|
330
282
|
element.appendChild(i.scrollbarYRail);
|
|
331
283
|
}
|
|
332
|
-
|
|
333
284
|
if (!i.settings.suppressScrollX && i.containerWidth + i.settings.scrollXMarginOffset < i.contentWidth) {
|
|
334
285
|
i.scrollbarXActive = true;
|
|
335
286
|
i.railXWidth = i.containerWidth - i.railXMarginWidth;
|
|
@@ -339,7 +290,6 @@ function updateGeometry(i) {
|
|
|
339
290
|
} else {
|
|
340
291
|
i.scrollbarXActive = false;
|
|
341
292
|
}
|
|
342
|
-
|
|
343
293
|
if (!i.settings.suppressScrollY && i.containerHeight + i.settings.scrollYMarginOffset < i.contentHeight) {
|
|
344
294
|
i.scrollbarYActive = true;
|
|
345
295
|
i.railYHeight = i.containerHeight - i.railYMarginHeight;
|
|
@@ -349,17 +299,13 @@ function updateGeometry(i) {
|
|
|
349
299
|
} else {
|
|
350
300
|
i.scrollbarYActive = false;
|
|
351
301
|
}
|
|
352
|
-
|
|
353
302
|
if (i.scrollbarXLeft >= i.railXWidth - i.scrollbarXWidth) {
|
|
354
303
|
i.scrollbarXLeft = i.railXWidth - i.scrollbarXWidth;
|
|
355
304
|
}
|
|
356
|
-
|
|
357
305
|
if (i.scrollbarYTop >= i.railYHeight - i.scrollbarYHeight) {
|
|
358
306
|
i.scrollbarYTop = i.railYHeight - i.scrollbarYHeight;
|
|
359
307
|
}
|
|
360
|
-
|
|
361
308
|
updateCss(element, i);
|
|
362
|
-
|
|
363
309
|
if (i.scrollbarXActive) {
|
|
364
310
|
element.classList.add(cls.state.active('x'));
|
|
365
311
|
} else {
|
|
@@ -368,7 +314,6 @@ function updateGeometry(i) {
|
|
|
368
314
|
i.scrollbarXLeft = 0;
|
|
369
315
|
element.scrollLeft = i.isRtl === true ? i.contentWidth : 0;
|
|
370
316
|
}
|
|
371
|
-
|
|
372
317
|
if (i.scrollbarYActive) {
|
|
373
318
|
element.classList.add(cls.state.active('y'));
|
|
374
319
|
} else {
|
|
@@ -378,43 +323,35 @@ function updateGeometry(i) {
|
|
|
378
323
|
element.scrollTop = 0;
|
|
379
324
|
}
|
|
380
325
|
}
|
|
381
|
-
|
|
382
326
|
function getThumbSize(i, thumbSize) {
|
|
383
327
|
if (i.settings.minScrollbarLength) {
|
|
384
328
|
thumbSize = Math.max(thumbSize, i.settings.minScrollbarLength);
|
|
385
329
|
}
|
|
386
|
-
|
|
387
330
|
if (i.settings.maxScrollbarLength) {
|
|
388
331
|
thumbSize = Math.min(thumbSize, i.settings.maxScrollbarLength);
|
|
389
332
|
}
|
|
390
|
-
|
|
391
333
|
return thumbSize;
|
|
392
334
|
}
|
|
393
|
-
|
|
394
335
|
function updateCss(element, i) {
|
|
395
336
|
var xRailOffset = {
|
|
396
337
|
width: i.railXWidth
|
|
397
338
|
};
|
|
398
339
|
var roundedScrollTop = Math.floor(element.scrollTop);
|
|
399
|
-
|
|
400
340
|
if (i.isRtl) {
|
|
401
341
|
xRailOffset.left = i.negativeScrollAdjustment + element.scrollLeft + i.containerWidth - i.contentWidth;
|
|
402
342
|
} else {
|
|
403
343
|
xRailOffset.left = element.scrollLeft;
|
|
404
344
|
}
|
|
405
|
-
|
|
406
345
|
if (i.isScrollbarXUsingBottom) {
|
|
407
346
|
xRailOffset.bottom = i.scrollbarXBottom - roundedScrollTop;
|
|
408
347
|
} else {
|
|
409
348
|
xRailOffset.top = i.scrollbarXTop + roundedScrollTop;
|
|
410
349
|
}
|
|
411
|
-
|
|
412
350
|
set(i.scrollbarXRail, xRailOffset);
|
|
413
351
|
var yRailOffset = {
|
|
414
352
|
top: roundedScrollTop,
|
|
415
353
|
height: i.railYHeight
|
|
416
354
|
};
|
|
417
|
-
|
|
418
355
|
if (i.isScrollbarYUsingRight) {
|
|
419
356
|
if (i.isRtl) {
|
|
420
357
|
yRailOffset.right = i.contentWidth - (i.negativeScrollAdjustment + element.scrollLeft) - i.scrollbarYRight - i.scrollbarYOuterWidth - 9;
|
|
@@ -428,7 +365,6 @@ function updateCss(element, i) {
|
|
|
428
365
|
yRailOffset.left = i.scrollbarYLeft + element.scrollLeft;
|
|
429
366
|
}
|
|
430
367
|
}
|
|
431
|
-
|
|
432
368
|
set(i.scrollbarYRail, yRailOffset);
|
|
433
369
|
set(i.scrollbarX, {
|
|
434
370
|
left: i.scrollbarXLeft,
|
|
@@ -439,7 +375,6 @@ function updateCss(element, i) {
|
|
|
439
375
|
height: i.scrollbarYHeight - i.railBorderYWidth
|
|
440
376
|
});
|
|
441
377
|
}
|
|
442
|
-
|
|
443
378
|
function clickRail(i) {
|
|
444
379
|
i.event.bind(i.scrollbarY, 'mousedown', function (e) {
|
|
445
380
|
return e.stopPropagation();
|
|
@@ -462,12 +397,10 @@ function clickRail(i) {
|
|
|
462
397
|
e.stopPropagation();
|
|
463
398
|
});
|
|
464
399
|
}
|
|
465
|
-
|
|
466
400
|
function dragThumb(i) {
|
|
467
401
|
bindMouseScrollHandler(i, ['containerWidth', 'contentWidth', 'pageX', 'railXWidth', 'scrollbarX', 'scrollbarXWidth', 'scrollLeft', 'x', 'scrollbarXRail']);
|
|
468
402
|
bindMouseScrollHandler(i, ['containerHeight', 'contentHeight', 'pageY', 'railYHeight', 'scrollbarY', 'scrollbarYHeight', 'scrollTop', 'y', 'scrollbarYRail']);
|
|
469
403
|
}
|
|
470
|
-
|
|
471
404
|
function bindMouseScrollHandler(i, ref) {
|
|
472
405
|
var containerHeight = ref[0];
|
|
473
406
|
var contentHeight = ref[1];
|
|
@@ -482,38 +415,30 @@ function bindMouseScrollHandler(i, ref) {
|
|
|
482
415
|
var startingScrollTop = null;
|
|
483
416
|
var startingMousePageY = null;
|
|
484
417
|
var scrollBy = null;
|
|
485
|
-
|
|
486
418
|
function mouseMoveHandler(e) {
|
|
487
419
|
if (e.touches && e.touches[0]) {
|
|
488
420
|
e[pageY] = e.touches[0].pageY;
|
|
489
421
|
}
|
|
490
|
-
|
|
491
422
|
element[scrollTop] = startingScrollTop + scrollBy * (e[pageY] - startingMousePageY);
|
|
492
423
|
addScrollingClass(i, y);
|
|
493
424
|
updateGeometry(i);
|
|
494
425
|
e.stopPropagation();
|
|
495
|
-
|
|
496
426
|
if (e.type.startsWith('touch') && e.changedTouches.length > 1) {
|
|
497
427
|
e.preventDefault();
|
|
498
428
|
}
|
|
499
429
|
}
|
|
500
|
-
|
|
501
430
|
function mouseUpHandler() {
|
|
502
431
|
removeScrollingClass(i, y);
|
|
503
432
|
i[scrollbarYRail].classList.remove(cls.state.clicking);
|
|
504
433
|
i.event.unbind(i.ownerDocument, 'mousemove', mouseMoveHandler);
|
|
505
434
|
}
|
|
506
|
-
|
|
507
435
|
function bindMoves(e, touchMode) {
|
|
508
436
|
startingScrollTop = element[scrollTop];
|
|
509
|
-
|
|
510
437
|
if (touchMode && e.touches) {
|
|
511
438
|
e[pageY] = e.touches[0].pageY;
|
|
512
439
|
}
|
|
513
|
-
|
|
514
440
|
startingMousePageY = e[pageY];
|
|
515
441
|
scrollBy = (i[contentHeight] - i[containerHeight]) / (i[railYHeight] - i[scrollbarYHeight]);
|
|
516
|
-
|
|
517
442
|
if (!touchMode) {
|
|
518
443
|
i.event.bind(i.ownerDocument, 'mousemove', mouseMoveHandler);
|
|
519
444
|
i.event.once(i.ownerDocument, 'mouseup', mouseUpHandler);
|
|
@@ -521,11 +446,9 @@ function bindMouseScrollHandler(i, ref) {
|
|
|
521
446
|
} else {
|
|
522
447
|
i.event.bind(i.ownerDocument, 'touchmove', mouseMoveHandler);
|
|
523
448
|
}
|
|
524
|
-
|
|
525
449
|
i[scrollbarYRail].classList.add(cls.state.clicking);
|
|
526
450
|
e.stopPropagation();
|
|
527
451
|
}
|
|
528
|
-
|
|
529
452
|
i.event.bind(i[scrollbarY], 'mousedown', function (e) {
|
|
530
453
|
bindMoves(e);
|
|
531
454
|
});
|
|
@@ -533,57 +456,43 @@ function bindMouseScrollHandler(i, ref) {
|
|
|
533
456
|
bindMoves(e, true);
|
|
534
457
|
});
|
|
535
458
|
}
|
|
536
|
-
|
|
537
459
|
function keyboard(i) {
|
|
538
460
|
var element = i.element;
|
|
539
|
-
|
|
540
461
|
var elementHovered = function elementHovered() {
|
|
541
462
|
return matches(element, ':hover');
|
|
542
463
|
};
|
|
543
|
-
|
|
544
464
|
var scrollbarFocused = function scrollbarFocused() {
|
|
545
465
|
return matches(i.scrollbarX, ':focus') || matches(i.scrollbarY, ':focus');
|
|
546
466
|
};
|
|
547
|
-
|
|
548
467
|
function shouldPreventDefault(deltaX, deltaY) {
|
|
549
468
|
var scrollTop = Math.floor(element.scrollTop);
|
|
550
|
-
|
|
551
469
|
if (deltaX === 0) {
|
|
552
470
|
if (!i.scrollbarYActive) {
|
|
553
471
|
return false;
|
|
554
472
|
}
|
|
555
|
-
|
|
556
473
|
if (scrollTop === 0 && deltaY > 0 || scrollTop >= i.contentHeight - i.containerHeight && deltaY < 0) {
|
|
557
474
|
return !i.settings.wheelPropagation;
|
|
558
475
|
}
|
|
559
476
|
}
|
|
560
|
-
|
|
561
477
|
var scrollLeft = element.scrollLeft;
|
|
562
|
-
|
|
563
478
|
if (deltaY === 0) {
|
|
564
479
|
if (!i.scrollbarXActive) {
|
|
565
480
|
return false;
|
|
566
481
|
}
|
|
567
|
-
|
|
568
482
|
if (scrollLeft === 0 && deltaX < 0 || scrollLeft >= i.contentWidth - i.containerWidth && deltaX > 0) {
|
|
569
483
|
return !i.settings.wheelPropagation;
|
|
570
484
|
}
|
|
571
485
|
}
|
|
572
|
-
|
|
573
486
|
return true;
|
|
574
487
|
}
|
|
575
|
-
|
|
576
488
|
i.event.bind(i.ownerDocument, 'keydown', function (e) {
|
|
577
489
|
if (e.isDefaultPrevented && e.isDefaultPrevented() || e.defaultPrevented) {
|
|
578
490
|
return;
|
|
579
491
|
}
|
|
580
|
-
|
|
581
492
|
if (!elementHovered() && !scrollbarFocused()) {
|
|
582
493
|
return;
|
|
583
494
|
}
|
|
584
|
-
|
|
585
495
|
var activeElement = document.activeElement ? document.activeElement : i.ownerDocument.activeElement;
|
|
586
|
-
|
|
587
496
|
if (activeElement) {
|
|
588
497
|
if (activeElement.tagName === 'IFRAME') {
|
|
589
498
|
activeElement = activeElement.contentDocument.activeElement;
|
|
@@ -593,15 +502,12 @@ function keyboard(i) {
|
|
|
593
502
|
activeElement = activeElement.shadowRoot.activeElement;
|
|
594
503
|
}
|
|
595
504
|
}
|
|
596
|
-
|
|
597
505
|
if (isEditable(activeElement)) {
|
|
598
506
|
return;
|
|
599
507
|
}
|
|
600
508
|
}
|
|
601
|
-
|
|
602
509
|
var deltaX = 0;
|
|
603
510
|
var deltaY = 0;
|
|
604
|
-
|
|
605
511
|
switch (e.which) {
|
|
606
512
|
case 37:
|
|
607
513
|
// left
|
|
@@ -612,9 +518,7 @@ function keyboard(i) {
|
|
|
612
518
|
} else {
|
|
613
519
|
deltaX = -30;
|
|
614
520
|
}
|
|
615
|
-
|
|
616
521
|
break;
|
|
617
|
-
|
|
618
522
|
case 38:
|
|
619
523
|
// up
|
|
620
524
|
if (e.metaKey) {
|
|
@@ -624,9 +528,7 @@ function keyboard(i) {
|
|
|
624
528
|
} else {
|
|
625
529
|
deltaY = 30;
|
|
626
530
|
}
|
|
627
|
-
|
|
628
531
|
break;
|
|
629
|
-
|
|
630
532
|
case 39:
|
|
631
533
|
// right
|
|
632
534
|
if (e.metaKey) {
|
|
@@ -636,9 +538,7 @@ function keyboard(i) {
|
|
|
636
538
|
} else {
|
|
637
539
|
deltaX = 30;
|
|
638
540
|
}
|
|
639
|
-
|
|
640
541
|
break;
|
|
641
|
-
|
|
642
542
|
case 40:
|
|
643
543
|
// down
|
|
644
544
|
if (e.metaKey) {
|
|
@@ -648,9 +548,7 @@ function keyboard(i) {
|
|
|
648
548
|
} else {
|
|
649
549
|
deltaY = -30;
|
|
650
550
|
}
|
|
651
|
-
|
|
652
551
|
break;
|
|
653
|
-
|
|
654
552
|
case 32:
|
|
655
553
|
// space bar
|
|
656
554
|
if (e.shiftKey) {
|
|
@@ -658,160 +556,127 @@ function keyboard(i) {
|
|
|
658
556
|
} else {
|
|
659
557
|
deltaY = -i.containerHeight;
|
|
660
558
|
}
|
|
661
|
-
|
|
662
559
|
break;
|
|
663
|
-
|
|
664
560
|
case 33:
|
|
665
561
|
// page up
|
|
666
562
|
deltaY = i.containerHeight;
|
|
667
563
|
break;
|
|
668
|
-
|
|
669
564
|
case 34:
|
|
670
565
|
// page down
|
|
671
566
|
deltaY = -i.containerHeight;
|
|
672
567
|
break;
|
|
673
|
-
|
|
674
568
|
case 36:
|
|
675
569
|
// home
|
|
676
570
|
deltaY = i.contentHeight;
|
|
677
571
|
break;
|
|
678
|
-
|
|
679
572
|
case 35:
|
|
680
573
|
// end
|
|
681
574
|
deltaY = -i.contentHeight;
|
|
682
575
|
break;
|
|
683
|
-
|
|
684
576
|
default:
|
|
685
577
|
return;
|
|
686
578
|
}
|
|
687
|
-
|
|
688
579
|
if (i.settings.suppressScrollX && deltaX !== 0) {
|
|
689
580
|
return;
|
|
690
581
|
}
|
|
691
|
-
|
|
692
582
|
if (i.settings.suppressScrollY && deltaY !== 0) {
|
|
693
583
|
return;
|
|
694
584
|
}
|
|
695
|
-
|
|
696
585
|
element.scrollTop -= deltaY;
|
|
697
586
|
element.scrollLeft += deltaX;
|
|
698
587
|
updateGeometry(i);
|
|
699
|
-
|
|
700
588
|
if (shouldPreventDefault(deltaX, deltaY)) {
|
|
701
589
|
e.preventDefault();
|
|
702
590
|
}
|
|
703
591
|
});
|
|
704
592
|
}
|
|
705
|
-
|
|
706
593
|
function wheel(i) {
|
|
707
594
|
var element = i.element;
|
|
708
|
-
|
|
709
595
|
function shouldPreventDefault(deltaX, deltaY) {
|
|
710
596
|
var roundedScrollTop = Math.floor(element.scrollTop);
|
|
711
597
|
var isTop = element.scrollTop === 0;
|
|
712
598
|
var isBottom = roundedScrollTop + element.offsetHeight === element.scrollHeight;
|
|
713
599
|
var isLeft = element.scrollLeft === 0;
|
|
714
600
|
var isRight = element.scrollLeft + element.offsetWidth === element.scrollWidth;
|
|
715
|
-
var hitsBound;
|
|
601
|
+
var hitsBound;
|
|
716
602
|
|
|
603
|
+
// pick axis with primary direction
|
|
717
604
|
if (Math.abs(deltaY) > Math.abs(deltaX)) {
|
|
718
605
|
hitsBound = isTop || isBottom;
|
|
719
606
|
} else {
|
|
720
607
|
hitsBound = isLeft || isRight;
|
|
721
608
|
}
|
|
722
|
-
|
|
723
609
|
return hitsBound ? !i.settings.wheelPropagation : true;
|
|
724
610
|
}
|
|
725
|
-
|
|
726
611
|
function getDeltaFromEvent(e) {
|
|
727
612
|
var deltaX = e.deltaX;
|
|
728
613
|
var deltaY = -1 * e.deltaY;
|
|
729
|
-
|
|
730
614
|
if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') {
|
|
731
615
|
// OS X Safari
|
|
732
616
|
deltaX = -1 * e.wheelDeltaX / 6;
|
|
733
617
|
deltaY = e.wheelDeltaY / 6;
|
|
734
618
|
}
|
|
735
|
-
|
|
736
619
|
if (e.deltaMode && e.deltaMode === 1) {
|
|
737
620
|
// Firefox in deltaMode 1: Line scrolling
|
|
738
621
|
deltaX *= 10;
|
|
739
622
|
deltaY *= 10;
|
|
740
623
|
}
|
|
741
|
-
|
|
742
|
-
if (deltaX !== deltaX && deltaY !== deltaY
|
|
743
|
-
/* NaN checks */
|
|
744
|
-
) {
|
|
624
|
+
if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */) {
|
|
745
625
|
// IE in some mouse drivers
|
|
746
626
|
deltaX = 0;
|
|
747
627
|
deltaY = e.wheelDelta;
|
|
748
628
|
}
|
|
749
|
-
|
|
750
629
|
if (e.shiftKey) {
|
|
751
630
|
// reverse axis with shift key
|
|
752
631
|
return [-deltaY, -deltaX];
|
|
753
632
|
}
|
|
754
|
-
|
|
755
633
|
return [deltaX, deltaY];
|
|
756
634
|
}
|
|
757
|
-
|
|
758
635
|
function shouldBeConsumedByChild(target, deltaX, deltaY) {
|
|
759
636
|
// FIXME: this is a workaround for <select> issue in FF and IE #571
|
|
760
637
|
if (!env.isWebKit && element.querySelector('select:focus')) {
|
|
761
638
|
return true;
|
|
762
639
|
}
|
|
763
|
-
|
|
764
640
|
if (!element.contains(target)) {
|
|
765
641
|
return false;
|
|
766
642
|
}
|
|
767
|
-
|
|
768
643
|
var cursor = target;
|
|
769
|
-
|
|
770
644
|
while (cursor && cursor !== element) {
|
|
771
645
|
if (cursor.classList.contains(cls.element.consuming)) {
|
|
772
646
|
return true;
|
|
773
647
|
}
|
|
648
|
+
var style = get(cursor);
|
|
774
649
|
|
|
775
|
-
|
|
776
|
-
|
|
650
|
+
// if deltaY && vertical scrollable
|
|
777
651
|
if (deltaY && style.overflowY.match(/(scroll|auto)/)) {
|
|
778
652
|
var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;
|
|
779
|
-
|
|
780
653
|
if (maxScrollTop > 0) {
|
|
781
654
|
if (cursor.scrollTop > 0 && deltaY < 0 || cursor.scrollTop < maxScrollTop && deltaY > 0) {
|
|
782
655
|
return true;
|
|
783
656
|
}
|
|
784
657
|
}
|
|
785
|
-
}
|
|
786
|
-
|
|
787
|
-
|
|
658
|
+
}
|
|
659
|
+
// if deltaX && horizontal scrollable
|
|
788
660
|
if (deltaX && style.overflowX.match(/(scroll|auto)/)) {
|
|
789
661
|
var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;
|
|
790
|
-
|
|
791
662
|
if (maxScrollLeft > 0) {
|
|
792
663
|
if (cursor.scrollLeft > 0 && deltaX < 0 || cursor.scrollLeft < maxScrollLeft && deltaX > 0) {
|
|
793
664
|
return true;
|
|
794
665
|
}
|
|
795
666
|
}
|
|
796
667
|
}
|
|
797
|
-
|
|
798
668
|
cursor = cursor.parentNode;
|
|
799
669
|
}
|
|
800
|
-
|
|
801
670
|
return false;
|
|
802
671
|
}
|
|
803
|
-
|
|
804
672
|
function mousewheelHandler(e) {
|
|
805
673
|
var ref = getDeltaFromEvent(e);
|
|
806
674
|
var deltaX = ref[0];
|
|
807
675
|
var deltaY = ref[1];
|
|
808
|
-
|
|
809
676
|
if (shouldBeConsumedByChild(e.target, deltaX, deltaY)) {
|
|
810
677
|
return;
|
|
811
678
|
}
|
|
812
|
-
|
|
813
679
|
var shouldPrevent = false;
|
|
814
|
-
|
|
815
680
|
if (!i.settings.useBothWheelAxes) {
|
|
816
681
|
// deltaX will only be used for horizontal scrolling and deltaY will
|
|
817
682
|
// only be used for vertical scrolling - this is the default
|
|
@@ -825,7 +690,6 @@ function wheel(i) {
|
|
|
825
690
|
} else {
|
|
826
691
|
element.scrollTop += deltaX * i.settings.wheelSpeed;
|
|
827
692
|
}
|
|
828
|
-
|
|
829
693
|
shouldPrevent = true;
|
|
830
694
|
} else if (i.scrollbarXActive && !i.scrollbarYActive) {
|
|
831
695
|
// useBothWheelAxes and only horizontal bar is active, so use both
|
|
@@ -835,66 +699,56 @@ function wheel(i) {
|
|
|
835
699
|
} else {
|
|
836
700
|
element.scrollLeft -= deltaY * i.settings.wheelSpeed;
|
|
837
701
|
}
|
|
838
|
-
|
|
839
702
|
shouldPrevent = true;
|
|
840
703
|
}
|
|
841
|
-
|
|
842
704
|
updateGeometry(i);
|
|
843
705
|
shouldPrevent = shouldPrevent || shouldPreventDefault(deltaX, deltaY);
|
|
844
|
-
|
|
845
706
|
if (shouldPrevent && !e.ctrlKey) {
|
|
846
707
|
e.stopPropagation();
|
|
847
708
|
e.preventDefault();
|
|
848
709
|
}
|
|
849
710
|
}
|
|
850
|
-
|
|
851
711
|
if (typeof window.onwheel !== 'undefined') {
|
|
852
712
|
i.event.bind(element, 'wheel', mousewheelHandler);
|
|
853
713
|
} else if (typeof window.onmousewheel !== 'undefined') {
|
|
854
714
|
i.event.bind(element, 'mousewheel', mousewheelHandler);
|
|
855
715
|
}
|
|
856
716
|
}
|
|
857
|
-
|
|
858
717
|
function touch(i) {
|
|
859
718
|
if (!env.supportsTouch && !env.supportsIePointer) {
|
|
860
719
|
return;
|
|
861
720
|
}
|
|
862
|
-
|
|
863
721
|
var element = i.element;
|
|
864
|
-
|
|
865
722
|
function shouldPrevent(deltaX, deltaY) {
|
|
866
723
|
var scrollTop = Math.floor(element.scrollTop);
|
|
867
724
|
var scrollLeft = element.scrollLeft;
|
|
868
725
|
var magnitudeX = Math.abs(deltaX);
|
|
869
726
|
var magnitudeY = Math.abs(deltaY);
|
|
870
|
-
|
|
871
727
|
if (magnitudeY > magnitudeX) {
|
|
872
728
|
// user is perhaps trying to swipe up/down the page
|
|
729
|
+
|
|
873
730
|
if (deltaY < 0 && scrollTop === i.contentHeight - i.containerHeight || deltaY > 0 && scrollTop === 0) {
|
|
874
731
|
// set prevent for mobile Chrome refresh
|
|
875
732
|
return window.scrollY === 0 && deltaY > 0 && env.isChrome;
|
|
876
733
|
}
|
|
877
734
|
} else if (magnitudeX > magnitudeY) {
|
|
878
735
|
// user is perhaps trying to swipe left/right across the page
|
|
736
|
+
|
|
879
737
|
if (deltaX < 0 && scrollLeft === i.contentWidth - i.containerWidth || deltaX > 0 && scrollLeft === 0) {
|
|
880
738
|
return true;
|
|
881
739
|
}
|
|
882
740
|
}
|
|
883
|
-
|
|
884
741
|
return true;
|
|
885
742
|
}
|
|
886
|
-
|
|
887
743
|
function applyTouchMove(differenceX, differenceY) {
|
|
888
744
|
element.scrollTop -= differenceY;
|
|
889
745
|
element.scrollLeft -= differenceX;
|
|
890
746
|
updateGeometry(i);
|
|
891
747
|
}
|
|
892
|
-
|
|
893
748
|
var startOffset = {};
|
|
894
749
|
var startTime = 0;
|
|
895
750
|
var speed = {};
|
|
896
751
|
var easingLoop = null;
|
|
897
|
-
|
|
898
752
|
function getTouch(e) {
|
|
899
753
|
if (e.targetTouches) {
|
|
900
754
|
return e.targetTouches[0];
|
|
@@ -903,79 +757,63 @@ function touch(i) {
|
|
|
903
757
|
return e;
|
|
904
758
|
}
|
|
905
759
|
}
|
|
906
|
-
|
|
907
760
|
function shouldHandle(e) {
|
|
908
761
|
if (e.pointerType && e.pointerType === 'pen' && e.buttons === 0) {
|
|
909
762
|
return false;
|
|
910
763
|
}
|
|
911
|
-
|
|
912
764
|
if (e.targetTouches && e.targetTouches.length === 1) {
|
|
913
765
|
return true;
|
|
914
766
|
}
|
|
915
|
-
|
|
916
767
|
if (e.pointerType && e.pointerType !== 'mouse' && e.pointerType !== e.MSPOINTER_TYPE_MOUSE) {
|
|
917
768
|
return true;
|
|
918
769
|
}
|
|
919
|
-
|
|
920
770
|
return false;
|
|
921
771
|
}
|
|
922
|
-
|
|
923
772
|
function touchStart(e) {
|
|
924
773
|
if (!shouldHandle(e)) {
|
|
925
774
|
return;
|
|
926
775
|
}
|
|
927
|
-
|
|
928
776
|
var touch = getTouch(e);
|
|
929
777
|
startOffset.pageX = touch.pageX;
|
|
930
778
|
startOffset.pageY = touch.pageY;
|
|
931
779
|
startTime = new Date().getTime();
|
|
932
|
-
|
|
933
780
|
if (easingLoop !== null) {
|
|
934
781
|
clearInterval(easingLoop);
|
|
935
782
|
}
|
|
936
783
|
}
|
|
937
|
-
|
|
938
784
|
function shouldBeConsumedByChild(target, deltaX, deltaY) {
|
|
939
785
|
if (!element.contains(target)) {
|
|
940
786
|
return false;
|
|
941
787
|
}
|
|
942
|
-
|
|
943
788
|
var cursor = target;
|
|
944
|
-
|
|
945
789
|
while (cursor && cursor !== element) {
|
|
946
790
|
if (cursor.classList.contains(cls.element.consuming)) {
|
|
947
791
|
return true;
|
|
948
792
|
}
|
|
793
|
+
var style = get(cursor);
|
|
949
794
|
|
|
950
|
-
|
|
951
|
-
|
|
795
|
+
// if deltaY && vertical scrollable
|
|
952
796
|
if (deltaY && style.overflowY.match(/(scroll|auto)/)) {
|
|
953
797
|
var maxScrollTop = cursor.scrollHeight - cursor.clientHeight;
|
|
954
|
-
|
|
955
798
|
if (maxScrollTop > 0) {
|
|
956
799
|
if (cursor.scrollTop > 0 && deltaY < 0 || cursor.scrollTop < maxScrollTop && deltaY > 0) {
|
|
957
800
|
return true;
|
|
958
801
|
}
|
|
959
802
|
}
|
|
960
|
-
}
|
|
961
|
-
|
|
962
|
-
|
|
803
|
+
}
|
|
804
|
+
// if deltaX && horizontal scrollable
|
|
963
805
|
if (deltaX && style.overflowX.match(/(scroll|auto)/)) {
|
|
964
806
|
var maxScrollLeft = cursor.scrollWidth - cursor.clientWidth;
|
|
965
|
-
|
|
966
807
|
if (maxScrollLeft > 0) {
|
|
967
808
|
if (cursor.scrollLeft > 0 && deltaX < 0 || cursor.scrollLeft < maxScrollLeft && deltaX > 0) {
|
|
968
809
|
return true;
|
|
969
810
|
}
|
|
970
811
|
}
|
|
971
812
|
}
|
|
972
|
-
|
|
973
813
|
cursor = cursor.parentNode;
|
|
974
814
|
}
|
|
975
|
-
|
|
976
815
|
return false;
|
|
977
816
|
}
|
|
978
|
-
|
|
979
817
|
function touchMove(e) {
|
|
980
818
|
if (shouldHandle(e)) {
|
|
981
819
|
var touch = getTouch(e);
|
|
@@ -985,28 +823,23 @@ function touch(i) {
|
|
|
985
823
|
};
|
|
986
824
|
var differenceX = currentOffset.pageX - startOffset.pageX;
|
|
987
825
|
var differenceY = currentOffset.pageY - startOffset.pageY;
|
|
988
|
-
|
|
989
826
|
if (shouldBeConsumedByChild(e.target, differenceX, differenceY)) {
|
|
990
827
|
return;
|
|
991
828
|
}
|
|
992
|
-
|
|
993
829
|
applyTouchMove(differenceX, differenceY);
|
|
994
830
|
startOffset = currentOffset;
|
|
995
831
|
var currentTime = new Date().getTime();
|
|
996
832
|
var timeGap = currentTime - startTime;
|
|
997
|
-
|
|
998
833
|
if (timeGap > 0) {
|
|
999
834
|
speed.x = differenceX / timeGap;
|
|
1000
835
|
speed.y = differenceY / timeGap;
|
|
1001
836
|
startTime = currentTime;
|
|
1002
837
|
}
|
|
1003
|
-
|
|
1004
838
|
if (shouldPrevent(differenceX, differenceY)) {
|
|
1005
839
|
e.preventDefault();
|
|
1006
840
|
}
|
|
1007
841
|
}
|
|
1008
842
|
}
|
|
1009
|
-
|
|
1010
843
|
function touchEnd() {
|
|
1011
844
|
if (i.settings.swipeEasing) {
|
|
1012
845
|
clearInterval(easingLoop);
|
|
@@ -1015,29 +848,24 @@ function touch(i) {
|
|
|
1015
848
|
clearInterval(easingLoop);
|
|
1016
849
|
return;
|
|
1017
850
|
}
|
|
1018
|
-
|
|
1019
851
|
if (!speed.x && !speed.y) {
|
|
1020
852
|
clearInterval(easingLoop);
|
|
1021
853
|
return;
|
|
1022
854
|
}
|
|
1023
|
-
|
|
1024
855
|
if (Math.abs(speed.x) < 0.01 && Math.abs(speed.y) < 0.01) {
|
|
1025
856
|
clearInterval(easingLoop);
|
|
1026
857
|
return;
|
|
1027
858
|
}
|
|
1028
|
-
|
|
1029
859
|
if (!i.element) {
|
|
1030
860
|
clearInterval(easingLoop);
|
|
1031
861
|
return;
|
|
1032
862
|
}
|
|
1033
|
-
|
|
1034
863
|
applyTouchMove(speed.x * 30, speed.y * 30);
|
|
1035
864
|
speed.x *= 0.8;
|
|
1036
865
|
speed.y *= 0.8;
|
|
1037
866
|
}, 10);
|
|
1038
867
|
}
|
|
1039
868
|
}
|
|
1040
|
-
|
|
1041
869
|
if (env.supportsTouch) {
|
|
1042
870
|
i.event.bind(element, 'touchstart', touchStart);
|
|
1043
871
|
i.event.bind(element, 'touchmove', touchMove);
|
|
@@ -1054,7 +882,6 @@ function touch(i) {
|
|
|
1054
882
|
}
|
|
1055
883
|
}
|
|
1056
884
|
}
|
|
1057
|
-
|
|
1058
885
|
var defaultSettings = function defaultSettings() {
|
|
1059
886
|
return {
|
|
1060
887
|
handlers: ['click-rail', 'drag-thumb', 'keyboard', 'wheel', 'touch'],
|
|
@@ -1071,7 +898,6 @@ var defaultSettings = function defaultSettings() {
|
|
|
1071
898
|
wheelSpeed: 1
|
|
1072
899
|
};
|
|
1073
900
|
};
|
|
1074
|
-
|
|
1075
901
|
var handlers = {
|
|
1076
902
|
'click-rail': clickRail,
|
|
1077
903
|
'drag-thumb': dragThumb,
|
|
@@ -1079,46 +905,35 @@ var handlers = {
|
|
|
1079
905
|
wheel: wheel,
|
|
1080
906
|
touch: touch
|
|
1081
907
|
};
|
|
1082
|
-
|
|
1083
908
|
var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
|
|
1084
909
|
var this$1$1 = this;
|
|
1085
910
|
if (userSettings === void 0) userSettings = {};
|
|
1086
|
-
|
|
1087
911
|
if (typeof element === 'string') {
|
|
1088
912
|
element = document.querySelector(element);
|
|
1089
913
|
}
|
|
1090
|
-
|
|
1091
914
|
if (!element || !element.nodeName) {
|
|
1092
915
|
throw new Error('no element is specified to initialize PerfectScrollbar');
|
|
1093
916
|
}
|
|
1094
|
-
|
|
1095
917
|
this.element = element;
|
|
1096
918
|
element.classList.add(cls.main);
|
|
1097
919
|
this.settings = defaultSettings();
|
|
1098
|
-
|
|
1099
920
|
for (var key in userSettings) {
|
|
1100
921
|
this.settings[key] = userSettings[key];
|
|
1101
922
|
}
|
|
1102
|
-
|
|
1103
923
|
this.containerWidth = null;
|
|
1104
924
|
this.containerHeight = null;
|
|
1105
925
|
this.contentWidth = null;
|
|
1106
926
|
this.contentHeight = null;
|
|
1107
|
-
|
|
1108
927
|
var focus = function focus() {
|
|
1109
928
|
return element.classList.add(cls.state.focus);
|
|
1110
929
|
};
|
|
1111
|
-
|
|
1112
930
|
var blur = function blur() {
|
|
1113
931
|
return element.classList.remove(cls.state.focus);
|
|
1114
932
|
};
|
|
1115
|
-
|
|
1116
933
|
this.isRtl = get(element).direction === 'rtl';
|
|
1117
|
-
|
|
1118
934
|
if (this.isRtl === true) {
|
|
1119
935
|
element.classList.add(cls.rtl);
|
|
1120
936
|
}
|
|
1121
|
-
|
|
1122
937
|
this.isNegativeScroll = function () {
|
|
1123
938
|
var originalScrollLeft = element.scrollLeft;
|
|
1124
939
|
var result = null;
|
|
@@ -1127,7 +942,6 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
|
|
|
1127
942
|
element.scrollLeft = originalScrollLeft;
|
|
1128
943
|
return result;
|
|
1129
944
|
}();
|
|
1130
|
-
|
|
1131
945
|
this.negativeScrollAdjustment = this.isNegativeScroll ? element.scrollWidth - element.clientWidth : 0;
|
|
1132
946
|
this.event = new EventManager();
|
|
1133
947
|
this.ownerDocument = element.ownerDocument || document;
|
|
@@ -1143,16 +957,14 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
|
|
|
1143
957
|
this.scrollbarXLeft = null;
|
|
1144
958
|
var railXStyle = get(this.scrollbarXRail);
|
|
1145
959
|
this.scrollbarXBottom = parseInt(railXStyle.bottom, 10);
|
|
1146
|
-
|
|
1147
960
|
if (isNaN(this.scrollbarXBottom)) {
|
|
1148
961
|
this.isScrollbarXUsingBottom = false;
|
|
1149
962
|
this.scrollbarXTop = toInt(railXStyle.top);
|
|
1150
963
|
} else {
|
|
1151
964
|
this.isScrollbarXUsingBottom = true;
|
|
1152
965
|
}
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
966
|
+
this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth);
|
|
967
|
+
// Set rail to display:block to calculate margins
|
|
1156
968
|
set(this.scrollbarXRail, {
|
|
1157
969
|
display: 'block'
|
|
1158
970
|
});
|
|
@@ -1174,14 +986,12 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
|
|
|
1174
986
|
this.scrollbarYTop = null;
|
|
1175
987
|
var railYStyle = get(this.scrollbarYRail);
|
|
1176
988
|
this.scrollbarYRight = parseInt(railYStyle.right, 10);
|
|
1177
|
-
|
|
1178
989
|
if (isNaN(this.scrollbarYRight)) {
|
|
1179
990
|
this.isScrollbarYUsingRight = false;
|
|
1180
991
|
this.scrollbarYLeft = toInt(railYStyle.left);
|
|
1181
992
|
} else {
|
|
1182
993
|
this.isScrollbarYUsingRight = true;
|
|
1183
994
|
}
|
|
1184
|
-
|
|
1185
995
|
this.scrollbarYOuterWidth = this.isRtl ? outerWidth(this.scrollbarY) : null;
|
|
1186
996
|
this.railBorderYWidth = toInt(railYStyle.borderTopWidth) + toInt(railYStyle.borderBottomWidth);
|
|
1187
997
|
set(this.scrollbarYRail, {
|
|
@@ -1202,23 +1012,21 @@ var PerfectScrollbar = function PerfectScrollbar(element, userSettings) {
|
|
|
1202
1012
|
return handlers[handlerName](this$1$1);
|
|
1203
1013
|
});
|
|
1204
1014
|
this.lastScrollTop = Math.floor(element.scrollTop); // for onScroll only
|
|
1205
|
-
|
|
1206
1015
|
this.lastScrollLeft = element.scrollLeft; // for onScroll only
|
|
1207
|
-
|
|
1208
1016
|
this.event.bind(this.element, 'scroll', function (e) {
|
|
1209
1017
|
return this$1$1.onScroll(e);
|
|
1210
1018
|
});
|
|
1211
1019
|
updateGeometry(this);
|
|
1212
1020
|
};
|
|
1213
|
-
|
|
1214
1021
|
PerfectScrollbar.prototype.update = function update() {
|
|
1215
1022
|
if (!this.isAlive) {
|
|
1216
1023
|
return;
|
|
1217
|
-
}
|
|
1218
|
-
|
|
1024
|
+
}
|
|
1219
1025
|
|
|
1220
|
-
|
|
1026
|
+
// Recalcuate negative scrollLeft adjustment
|
|
1027
|
+
this.negativeScrollAdjustment = this.isNegativeScroll ? this.element.scrollWidth - this.element.clientWidth : 0;
|
|
1221
1028
|
|
|
1029
|
+
// Recalculate rail margins
|
|
1222
1030
|
set(this.scrollbarXRail, {
|
|
1223
1031
|
display: 'block'
|
|
1224
1032
|
});
|
|
@@ -1226,8 +1034,9 @@ PerfectScrollbar.prototype.update = function update() {
|
|
|
1226
1034
|
display: 'block'
|
|
1227
1035
|
});
|
|
1228
1036
|
this.railXMarginWidth = toInt(get(this.scrollbarXRail).marginLeft) + toInt(get(this.scrollbarXRail).marginRight);
|
|
1229
|
-
this.railYMarginHeight = toInt(get(this.scrollbarYRail).marginTop) + toInt(get(this.scrollbarYRail).marginBottom);
|
|
1037
|
+
this.railYMarginHeight = toInt(get(this.scrollbarYRail).marginTop) + toInt(get(this.scrollbarYRail).marginBottom);
|
|
1230
1038
|
|
|
1039
|
+
// Hide scrollbars not to affect scrollWidth and scrollHeight
|
|
1231
1040
|
set(this.scrollbarXRail, {
|
|
1232
1041
|
display: 'none'
|
|
1233
1042
|
});
|
|
@@ -1244,31 +1053,28 @@ PerfectScrollbar.prototype.update = function update() {
|
|
|
1244
1053
|
display: ''
|
|
1245
1054
|
});
|
|
1246
1055
|
};
|
|
1247
|
-
|
|
1248
1056
|
PerfectScrollbar.prototype.onScroll = function onScroll(e) {
|
|
1249
1057
|
if (!this.isAlive) {
|
|
1250
1058
|
return;
|
|
1251
1059
|
}
|
|
1252
|
-
|
|
1253
1060
|
updateGeometry(this);
|
|
1254
1061
|
processScrollDiff(this, 'top', this.element.scrollTop - this.lastScrollTop);
|
|
1255
1062
|
processScrollDiff(this, 'left', this.element.scrollLeft - this.lastScrollLeft);
|
|
1256
1063
|
this.lastScrollTop = Math.floor(this.element.scrollTop);
|
|
1257
1064
|
this.lastScrollLeft = this.element.scrollLeft;
|
|
1258
1065
|
};
|
|
1259
|
-
|
|
1260
1066
|
PerfectScrollbar.prototype.destroy = function destroy() {
|
|
1261
1067
|
if (!this.isAlive) {
|
|
1262
1068
|
return;
|
|
1263
1069
|
}
|
|
1264
|
-
|
|
1265
1070
|
this.event.unbindAll();
|
|
1266
1071
|
remove(this.scrollbarX);
|
|
1267
1072
|
remove(this.scrollbarY);
|
|
1268
1073
|
remove(this.scrollbarXRail);
|
|
1269
1074
|
remove(this.scrollbarYRail);
|
|
1270
|
-
this.removePsClasses();
|
|
1075
|
+
this.removePsClasses();
|
|
1271
1076
|
|
|
1077
|
+
// unset elements
|
|
1272
1078
|
this.element = null;
|
|
1273
1079
|
this.scrollbarX = null;
|
|
1274
1080
|
this.scrollbarY = null;
|
|
@@ -1276,11 +1082,9 @@ PerfectScrollbar.prototype.destroy = function destroy() {
|
|
|
1276
1082
|
this.scrollbarYRail = null;
|
|
1277
1083
|
this.isAlive = false;
|
|
1278
1084
|
};
|
|
1279
|
-
|
|
1280
1085
|
PerfectScrollbar.prototype.removePsClasses = function removePsClasses() {
|
|
1281
1086
|
this.element.className = this.element.className.split(' ').filter(function (name) {
|
|
1282
1087
|
return !name.match(/^ps([-_].+|)$/);
|
|
1283
1088
|
}).join(' ');
|
|
1284
1089
|
};
|
|
1285
|
-
|
|
1286
1090
|
exports["default"] = PerfectScrollbar;
|