@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.
Files changed (137) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/lib/cjs/BaseTable.js +136 -189
  3. package/lib/cjs/ColGroupContent.js +5 -28
  4. package/lib/cjs/SettingDrawer.js +76 -127
  5. package/lib/cjs/Table.js +107 -171
  6. package/lib/cjs/TableAdvancedFilter.js +49 -85
  7. package/lib/cjs/TableBody.js +33 -69
  8. package/lib/cjs/TableCell.js +56 -102
  9. package/lib/cjs/TableColumnMenu.js +39 -77
  10. package/lib/cjs/TableEmbedRow.js +11 -38
  11. package/lib/cjs/TableHeader.js +8 -33
  12. package/lib/cjs/TableRow.js +48 -88
  13. package/lib/cjs/TableSettingMenu.js +48 -94
  14. package/lib/cjs/TbodyContent.js +28 -56
  15. package/lib/cjs/TheadContent.js +20 -49
  16. package/lib/cjs/_virtual/index.js +0 -3
  17. package/lib/cjs/_virtual/index2.js +0 -3
  18. package/lib/cjs/_virtual/react-is.development.js +0 -3
  19. package/lib/cjs/_virtual/react-is.production.min.js +0 -3
  20. package/lib/cjs/context.js +0 -9
  21. package/lib/cjs/hooks/use-async-switch.js +13 -51
  22. package/lib/cjs/hooks/use-check.js +47 -77
  23. package/lib/cjs/hooks/use-col-hidden.js +16 -28
  24. package/lib/cjs/hooks/use-col-set.js +5 -18
  25. package/lib/cjs/hooks/use-col-sorter.js +18 -32
  26. package/lib/cjs/hooks/use-col-width.js +21 -57
  27. package/lib/cjs/hooks/use-colgroup.js +63 -85
  28. package/lib/cjs/hooks/use-drag.js +10 -31
  29. package/lib/cjs/hooks/use-embed-expand.js +23 -68
  30. package/lib/cjs/hooks/use-expand.js +32 -64
  31. package/lib/cjs/hooks/use-pagination.js +19 -50
  32. package/lib/cjs/hooks/use-queue.js +2 -14
  33. package/lib/cjs/icons/index.js +4 -21
  34. package/lib/cjs/index.js +0 -4
  35. package/lib/cjs/node_modules/classnames/index.js +2 -11
  36. package/lib/cjs/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -227
  37. package/lib/cjs/node_modules/rc-resize-observer/es/index.js +10 -68
  38. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +1 -17
  39. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
  40. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +1 -25
  41. package/lib/cjs/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +1 -5
  42. package/lib/cjs/node_modules/rc-util/es/Dom/canUseDom.js +0 -2
  43. package/lib/cjs/node_modules/rc-util/es/Dom/findDOMNode.js +1 -14
  44. package/lib/cjs/node_modules/rc-util/es/hooks/useLayoutEffect.js +2 -9
  45. package/lib/cjs/node_modules/rc-util/es/raf.js +0 -11
  46. package/lib/cjs/node_modules/rc-virtual-list/es/Filler.js +6 -25
  47. package/lib/cjs/node_modules/rc-virtual-list/es/Item.js +3 -14
  48. package/lib/cjs/node_modules/rc-virtual-list/es/List.js +103 -194
  49. package/lib/cjs/node_modules/rc-virtual-list/es/ScrollBar.js +16 -96
  50. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useChildren.js +2 -11
  51. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +8 -34
  52. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -10
  53. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useHeights.js +6 -39
  54. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -16
  55. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -9
  56. package/lib/cjs/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +3 -28
  57. package/lib/cjs/node_modules/rc-virtual-list/es/index.js +0 -2
  58. package/lib/cjs/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -9
  59. package/lib/cjs/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +0 -15
  60. package/lib/cjs/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -2
  61. package/lib/cjs/node_modules/react-is/cjs/react-is.development.js +3 -29
  62. package/lib/cjs/node_modules/react-is/cjs/react-is.production.min.js +19 -45
  63. package/lib/cjs/node_modules/react-is/index.js +0 -5
  64. package/lib/cjs/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +83 -248
  65. package/lib/cjs/packages/hooks/use-merge-refs/lib/esm/index.js +3 -14
  66. package/lib/cjs/packages/ui/scrollbar/lib/esm/Scrollbar.js +48 -86
  67. package/lib/cjs/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -15
  68. package/lib/cjs/packages/ui/scrollbar/lib/esm/utils/index.js +0 -13
  69. package/lib/cjs/styles/index.scss.js +1 -4
  70. package/lib/cjs/use-table.js +268 -355
  71. package/lib/cjs/utils/index.js +11 -45
  72. package/lib/esm/BaseTable.js +117 -138
  73. package/lib/esm/ColGroupContent.js +3 -9
  74. package/lib/esm/SettingDrawer.js +64 -83
  75. package/lib/esm/Table.js +97 -124
  76. package/lib/esm/TableAdvancedFilter.js +37 -47
  77. package/lib/esm/TableBody.js +24 -34
  78. package/lib/esm/TableCell.js +48 -72
  79. package/lib/esm/TableColumnMenu.js +24 -38
  80. package/lib/esm/TableEmbedRow.js +8 -15
  81. package/lib/esm/TableHeader.js +5 -11
  82. package/lib/esm/TableRow.js +36 -51
  83. package/lib/esm/TableSettingMenu.js +33 -49
  84. package/lib/esm/TbodyContent.js +20 -27
  85. package/lib/esm/TheadContent.js +14 -21
  86. package/lib/esm/context.js +0 -4
  87. package/lib/esm/hooks/use-async-switch.js +9 -28
  88. package/lib/esm/hooks/use-check.js +42 -55
  89. package/lib/esm/hooks/use-col-hidden.js +16 -21
  90. package/lib/esm/hooks/use-col-set.js +5 -13
  91. package/lib/esm/hooks/use-col-sorter.js +18 -23
  92. package/lib/esm/hooks/use-col-width.js +14 -34
  93. package/lib/esm/hooks/use-colgroup.js +60 -66
  94. package/lib/esm/hooks/use-drag.js +9 -13
  95. package/lib/esm/hooks/use-embed-expand.js +20 -42
  96. package/lib/esm/hooks/use-expand.js +32 -56
  97. package/lib/esm/hooks/use-pagination.js +13 -25
  98. package/lib/esm/hooks/use-queue.js +2 -10
  99. package/lib/esm/node_modules/classnames/index.js +2 -9
  100. package/lib/esm/node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js +31 -228
  101. package/lib/esm/node_modules/rc-resize-observer/es/index.js +3 -26
  102. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Children/toArray.js +0 -3
  103. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
  104. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/ref.js +0 -8
  105. package/lib/esm/node_modules/rc-resize-observer/node_modules/rc-util/es/warning.js +0 -5
  106. package/lib/esm/node_modules/rc-util/es/Dom/canUseDom.js +0 -1
  107. package/lib/esm/node_modules/rc-util/es/Dom/findDOMNode.js +1 -2
  108. package/lib/esm/node_modules/rc-util/es/hooks/useLayoutEffect.js +1 -0
  109. package/lib/esm/node_modules/rc-util/es/raf.js +0 -10
  110. package/lib/esm/node_modules/rc-virtual-list/es/Filler.js +4 -15
  111. package/lib/esm/node_modules/rc-virtual-list/es/Item.js +1 -3
  112. package/lib/esm/node_modules/rc-virtual-list/es/List.js +101 -174
  113. package/lib/esm/node_modules/rc-virtual-list/es/ScrollBar.js +14 -86
  114. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useChildren.js +0 -2
  115. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useDiffItem.js +6 -25
  116. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useFrameWheel.js +0 -6
  117. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useHeights.js +4 -28
  118. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useMobileTouchMove.js +0 -13
  119. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useOriginScroll.js +4 -8
  120. package/lib/esm/node_modules/rc-virtual-list/es/hooks/useScrollTo.js +1 -19
  121. package/lib/esm/node_modules/rc-virtual-list/es/index.js +1 -1
  122. package/lib/esm/node_modules/rc-virtual-list/es/utils/CacheMap.js +2 -8
  123. package/lib/esm/node_modules/rc-virtual-list/es/utils/algorithmUtil.js +1 -12
  124. package/lib/esm/node_modules/rc-virtual-list/es/utils/isFirefox.js +0 -1
  125. package/lib/esm/node_modules/react-is/cjs/react-is.development.js +4 -27
  126. package/lib/esm/node_modules/react-is/cjs/react-is.production.min.js +20 -44
  127. package/lib/esm/node_modules/react-is/index.js +0 -1
  128. package/lib/esm/node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js +82 -248
  129. package/lib/esm/packages/hooks/use-merge-refs/lib/esm/index.js +3 -9
  130. package/lib/esm/packages/ui/scrollbar/lib/esm/Scrollbar.js +47 -64
  131. package/lib/esm/packages/ui/scrollbar/lib/esm/styles/index.scss.js +1 -3
  132. package/lib/esm/packages/ui/scrollbar/lib/esm/utils/index.js +0 -10
  133. package/lib/esm/styles/index.scss.js +1 -3
  134. package/lib/esm/use-table.js +261 -318
  135. package/lib/esm/utils/index.js +11 -41
  136. package/lib/types/BaseTable.d.ts +2 -2
  137. 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; // reset reach
217
+ var element = i.element;
257
218
 
258
- i.reach[y] = null; // 1 for subpixel rounding
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
- } // 1 for subpixel rounding
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; // pick axis with primary direction
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
- var style = get(cursor); // if deltaY && vertical scrollable
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
- } // if deltaX && horizontal scrollable
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
- var style = get(cursor); // if deltaY && vertical scrollable
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
- } // if deltaX && horizontal scrollable
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
- this.railBorderXWidth = toInt(railXStyle.borderLeftWidth) + toInt(railXStyle.borderRightWidth); // Set rail to display:block to calculate margins
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
- } // Recalcuate negative scrollLeft adjustment
1218
-
1024
+ }
1219
1025
 
1220
- this.negativeScrollAdjustment = this.isNegativeScroll ? this.element.scrollWidth - this.element.clientWidth : 0; // Recalculate rail margins
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); // Hide scrollbars not to affect scrollWidth and scrollHeight
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(); // unset elements
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;