jqtree 1.6.1 → 1.6.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 (84) hide show
  1. package/.eslintrc +1 -0
  2. package/_config.yml +1 -1
  3. package/_entries/10_changelog.md +5 -0
  4. package/_layouts/base.html +0 -22
  5. package/babel.config.json +11 -0
  6. package/babel.coverage.config.json +4 -0
  7. package/bower.json +1 -1
  8. package/jest-browser.config.js +0 -3
  9. package/jest-jsdom.config.js +1 -2
  10. package/jqtree.css +4 -1
  11. package/jqtree.postcss +3 -0
  12. package/lib/dataLoader.js +146 -98
  13. package/lib/dragAndDropHandler.js +668 -472
  14. package/lib/elementsRenderer.js +282 -197
  15. package/lib/jqtreeOptions.js +1 -2
  16. package/lib/keyHandler.js +134 -87
  17. package/lib/mouse.widget.js +285 -186
  18. package/lib/node.js +691 -505
  19. package/lib/nodeElement.js +329 -207
  20. package/lib/playwright/playwright.test.js +216 -189
  21. package/lib/playwright/testUtil.js +429 -193
  22. package/lib/playwright/visualRegression.js +182 -117
  23. package/lib/saveStateHandler.js +311 -204
  24. package/lib/scrollHandler.js +293 -199
  25. package/lib/selectNodeHandler.js +140 -100
  26. package/lib/simple.widget.js +184 -109
  27. package/lib/test/global.d.js +3 -0
  28. package/lib/test/jqTree/create.test.js +44 -40
  29. package/lib/test/jqTree/events.test.js +185 -138
  30. package/lib/test/jqTree/keyboard.test.js +216 -199
  31. package/lib/test/jqTree/loadOnDemand.test.js +233 -157
  32. package/lib/test/jqTree/methods.test.js +1269 -1019
  33. package/lib/test/jqTree/options.test.js +467 -398
  34. package/lib/test/node.test.js +1036 -873
  35. package/lib/test/nodeUtil.test.js +21 -20
  36. package/lib/test/support/exampleData.js +35 -23
  37. package/lib/test/support/jqTreeMatchers.js +72 -54
  38. package/lib/test/support/matchers.d.js +1 -0
  39. package/lib/test/support/setupTests.js +9 -3
  40. package/lib/test/support/testUtil.js +35 -15
  41. package/lib/test/support/treeStructure.js +41 -32
  42. package/lib/test/util.test.js +21 -20
  43. package/lib/tree.jquery.d.js +1 -0
  44. package/lib/tree.jquery.js +1264 -892
  45. package/lib/types.js +1 -2
  46. package/lib/typings.d.js +2 -0
  47. package/lib/util.js +19 -8
  48. package/lib/version.js +8 -3
  49. package/package.json +42 -34
  50. package/production +4 -4
  51. package/rollup.config.js +16 -11
  52. package/src/dataLoader.ts +6 -6
  53. package/src/dragAndDropHandler.ts +0 -4
  54. package/src/elementsRenderer.ts +4 -0
  55. package/src/jqtreeOptions.ts +1 -1
  56. package/src/mouse.widget.ts +19 -15
  57. package/src/node.ts +27 -41
  58. package/src/nodeElement.ts +17 -9
  59. package/src/playwright/.eslintrc +5 -0
  60. package/src/playwright/playwright.test.ts +29 -29
  61. package/src/saveStateHandler.ts +11 -6
  62. package/src/selectNodeHandler.ts +1 -1
  63. package/src/simple.widget.ts +1 -1
  64. package/src/test/.eslintrc +4 -0
  65. package/src/test/jqTree/create.test.ts +0 -1
  66. package/src/test/jqTree/events.test.ts +0 -1
  67. package/src/test/jqTree/keyboard.test.ts +0 -1
  68. package/src/test/jqTree/loadOnDemand.test.ts +46 -1
  69. package/src/test/jqTree/methods.test.ts +35 -10
  70. package/src/test/jqTree/options.test.ts +4 -5
  71. package/src/test/node.test.ts +2 -2
  72. package/src/test/support/jqTreeMatchers.ts +8 -9
  73. package/src/test/support/matchers.d.ts +2 -4
  74. package/src/test/support/setupTests.ts +2 -1
  75. package/src/tree.jquery.d.ts +18 -12
  76. package/src/tree.jquery.ts +25 -21
  77. package/src/version.ts +1 -1
  78. package/static/example.postcss +13 -0
  79. package/static/example_data.js +33 -36
  80. package/tree.jquery.debug.js +4806 -3325
  81. package/tree.jquery.debug.js.map +1 -1
  82. package/tree.jquery.js +2 -2
  83. package/tree.jquery.js.map +1 -1
  84. package/tsconfig.json +1 -0
@@ -1,209 +1,303 @@
1
1
  "use strict";
2
- exports.__esModule = true;
3
- var ScrollHandler = /** @class */ (function () {
4
- function ScrollHandler(treeWidget) {
5
- this.treeWidget = treeWidget;
6
- this.previousTop = -1;
7
- this.isInitialized = false;
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
9
+
10
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
11
+
12
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
13
+
14
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
+
16
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
17
+
18
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
19
+
20
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
21
+
22
+ var ScrollHandler = /*#__PURE__*/function () {
23
+ function ScrollHandler(treeWidget) {
24
+ _classCallCheck(this, ScrollHandler);
25
+
26
+ _defineProperty(this, "treeWidget", void 0);
27
+
28
+ _defineProperty(this, "previousTop", void 0);
29
+
30
+ _defineProperty(this, "isInitialized", void 0);
31
+
32
+ _defineProperty(this, "$scrollParent", void 0);
33
+
34
+ _defineProperty(this, "scrollParentTop", void 0);
35
+
36
+ this.treeWidget = treeWidget;
37
+ this.previousTop = -1;
38
+ this.isInitialized = false;
39
+ }
40
+
41
+ _createClass(ScrollHandler, [{
42
+ key: "checkScrolling",
43
+ value: function checkScrolling() {
44
+ this.ensureInit();
45
+ this.checkVerticalScrolling();
46
+ this.checkHorizontalScrolling();
8
47
  }
9
- ScrollHandler.prototype.checkScrolling = function () {
10
- this.ensureInit();
11
- this.checkVerticalScrolling();
12
- this.checkHorizontalScrolling();
13
- };
14
- ScrollHandler.prototype.scrollToY = function (top) {
15
- this.ensureInit();
16
- if (this.$scrollParent) {
17
- this.$scrollParent[0].scrollTop = top;
18
- }
19
- else {
20
- var offset = this.treeWidget.$el.offset();
21
- var treeTop = offset ? offset.top : 0;
22
- jQuery(document).scrollTop(top + treeTop);
23
- }
24
- };
25
- ScrollHandler.prototype.isScrolledIntoView = function ($element) {
26
- this.ensureInit();
27
- var elementBottom;
28
- var viewBottom;
29
- var elementTop;
30
- var viewTop;
31
- var elHeight = $element.height() || 0;
32
- if (this.$scrollParent) {
33
- viewTop = 0;
34
- viewBottom = this.$scrollParent.height() || 0;
35
- var offset = $element.offset();
36
- var originalTop = offset ? offset.top : 0;
37
- elementTop = originalTop - this.scrollParentTop;
38
- elementBottom = elementTop + elHeight;
39
- }
40
- else {
41
- viewTop = jQuery(window).scrollTop() || 0;
42
- var windowHeight = jQuery(window).height() || 0;
43
- viewBottom = viewTop + windowHeight;
44
- var offset = $element.offset();
45
- elementTop = offset ? offset.top : 0;
46
- elementBottom = elementTop + elHeight;
47
- }
48
- return elementBottom <= viewBottom && elementTop >= viewTop;
49
- };
50
- ScrollHandler.prototype.getScrollLeft = function () {
51
- if (!this.$scrollParent) {
52
- return 0;
53
- }
54
- else {
55
- return this.$scrollParent.scrollLeft() || 0;
56
- }
57
- };
58
- ScrollHandler.prototype.initScrollParent = function () {
59
- var _this = this;
60
- var getParentWithOverflow = function () {
61
- var cssAttributes = ["overflow", "overflow-y"];
62
- var hasOverFlow = function ($el) {
63
- for (var _i = 0, cssAttributes_1 = cssAttributes; _i < cssAttributes_1.length; _i++) {
64
- var attr = cssAttributes_1[_i];
65
- var overflowValue = $el.css(attr);
66
- if (overflowValue === "auto" ||
67
- overflowValue === "scroll") {
68
- return true;
69
- }
70
- }
71
- return false;
72
- };
73
- if (hasOverFlow(_this.treeWidget.$el)) {
74
- return _this.treeWidget.$el;
75
- }
76
- for (var _i = 0, _a = _this.treeWidget.$el.parents().get(); _i < _a.length; _i++) {
77
- var el = _a[_i];
78
- var $el = jQuery(el);
79
- if (hasOverFlow($el)) {
80
- return $el;
81
- }
48
+ }, {
49
+ key: "scrollToY",
50
+ value: function scrollToY(top) {
51
+ this.ensureInit();
52
+
53
+ if (this.$scrollParent) {
54
+ this.$scrollParent[0].scrollTop = top;
55
+ } else {
56
+ var offset = this.treeWidget.$el.offset();
57
+ var treeTop = offset ? offset.top : 0;
58
+ jQuery(document).scrollTop(top + treeTop);
59
+ }
60
+ }
61
+ }, {
62
+ key: "isScrolledIntoView",
63
+ value: function isScrolledIntoView($element) {
64
+ this.ensureInit();
65
+ var elementBottom;
66
+ var viewBottom;
67
+ var elementTop;
68
+ var viewTop;
69
+ var elHeight = $element.height() || 0;
70
+
71
+ if (this.$scrollParent) {
72
+ viewTop = 0;
73
+ viewBottom = this.$scrollParent.height() || 0;
74
+ var offset = $element.offset();
75
+ var originalTop = offset ? offset.top : 0;
76
+ elementTop = originalTop - this.scrollParentTop;
77
+ elementBottom = elementTop + elHeight;
78
+ } else {
79
+ viewTop = jQuery(window).scrollTop() || 0;
80
+ var windowHeight = jQuery(window).height() || 0;
81
+ viewBottom = viewTop + windowHeight;
82
+
83
+ var _offset = $element.offset();
84
+
85
+ elementTop = _offset ? _offset.top : 0;
86
+ elementBottom = elementTop + elHeight;
87
+ }
88
+
89
+ return elementBottom <= viewBottom && elementTop >= viewTop;
90
+ }
91
+ }, {
92
+ key: "getScrollLeft",
93
+ value: function getScrollLeft() {
94
+ if (!this.$scrollParent) {
95
+ return 0;
96
+ } else {
97
+ return this.$scrollParent.scrollLeft() || 0;
98
+ }
99
+ }
100
+ }, {
101
+ key: "initScrollParent",
102
+ value: function initScrollParent() {
103
+ var _this = this;
104
+
105
+ var getParentWithOverflow = function getParentWithOverflow() {
106
+ var cssAttributes = ["overflow", "overflow-y"];
107
+
108
+ var hasOverFlow = function hasOverFlow($el) {
109
+ var _iterator = _createForOfIteratorHelper(cssAttributes),
110
+ _step;
111
+
112
+ try {
113
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
114
+ var attr = _step.value;
115
+ var overflowValue = $el.css(attr);
116
+
117
+ if (overflowValue === "auto" || overflowValue === "scroll") {
118
+ return true;
119
+ }
82
120
  }
83
- return null;
84
- };
85
- var setDocumentAsScrollParent = function () {
86
- _this.scrollParentTop = 0;
87
- _this.$scrollParent = null;
121
+ } catch (err) {
122
+ _iterator.e(err);
123
+ } finally {
124
+ _iterator.f();
125
+ }
126
+
127
+ return false;
88
128
  };
89
- if (this.treeWidget.$el.css("position") === "fixed") {
90
- setDocumentAsScrollParent();
91
- }
92
- var $scrollParent = getParentWithOverflow();
93
- if ($scrollParent &&
94
- $scrollParent.length &&
95
- $scrollParent[0].tagName !== "HTML") {
96
- this.$scrollParent = $scrollParent;
97
- var offset = this.$scrollParent.offset();
98
- this.scrollParentTop = offset ? offset.top : 0;
99
- }
100
- else {
101
- setDocumentAsScrollParent();
102
- }
103
- this.isInitialized = true;
104
- };
105
- ScrollHandler.prototype.ensureInit = function () {
106
- if (!this.isInitialized) {
107
- this.initScrollParent();
108
- }
109
- };
110
- ScrollHandler.prototype.handleVerticalScrollingWithScrollParent = function (area) {
111
- var scrollParent = this.$scrollParent && this.$scrollParent[0];
112
- if (!scrollParent) {
113
- return;
114
- }
115
- var distanceBottom = this.scrollParentTop + scrollParent.offsetHeight - area.bottom;
116
- if (distanceBottom < 20) {
117
- scrollParent.scrollTop += 20;
118
- this.treeWidget.refreshHitAreas();
119
- this.previousTop = -1;
120
- }
121
- else if (area.top - this.scrollParentTop < 20) {
122
- scrollParent.scrollTop -= 20;
123
- this.treeWidget.refreshHitAreas();
124
- this.previousTop = -1;
125
- }
126
- };
127
- ScrollHandler.prototype.handleVerticalScrollingWithDocument = function (area) {
128
- var scrollTop = jQuery(document).scrollTop() || 0;
129
- var distanceTop = area.top - scrollTop;
130
- if (distanceTop < 20) {
131
- jQuery(document).scrollTop(scrollTop - 20);
129
+
130
+ if (hasOverFlow(_this.treeWidget.$el)) {
131
+ return _this.treeWidget.$el;
132
132
  }
133
- else {
134
- var windowHeight = jQuery(window).height() || 0;
135
- if (windowHeight - (area.bottom - scrollTop) < 20) {
136
- jQuery(document).scrollTop(scrollTop + 20);
133
+
134
+ var _iterator2 = _createForOfIteratorHelper(_this.treeWidget.$el.parents().get()),
135
+ _step2;
136
+
137
+ try {
138
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
139
+ var el = _step2.value;
140
+ var $el = jQuery(el);
141
+
142
+ if (hasOverFlow($el)) {
143
+ return $el;
137
144
  }
145
+ }
146
+ } catch (err) {
147
+ _iterator2.e(err);
148
+ } finally {
149
+ _iterator2.f();
138
150
  }
139
- };
140
- ScrollHandler.prototype.checkVerticalScrolling = function () {
141
- var hoveredArea = this.treeWidget.dndHandler.hoveredArea;
142
- if (hoveredArea && hoveredArea.top !== this.previousTop) {
143
- this.previousTop = hoveredArea.top;
144
- if (this.$scrollParent) {
145
- this.handleVerticalScrollingWithScrollParent(hoveredArea);
146
- }
147
- else {
148
- this.handleVerticalScrollingWithDocument(hoveredArea);
149
- }
150
- }
151
- };
152
- ScrollHandler.prototype.checkHorizontalScrolling = function () {
153
- var positionInfo = this.treeWidget.dndHandler.positionInfo;
154
- if (!positionInfo) {
155
- return;
151
+
152
+ return null;
153
+ };
154
+
155
+ var setDocumentAsScrollParent = function setDocumentAsScrollParent() {
156
+ _this.scrollParentTop = 0;
157
+ _this.$scrollParent = null;
158
+ };
159
+
160
+ if (this.treeWidget.$el.css("position") === "fixed") {
161
+ setDocumentAsScrollParent();
162
+ }
163
+
164
+ var $scrollParent = getParentWithOverflow();
165
+
166
+ if ($scrollParent && $scrollParent.length && $scrollParent[0].tagName !== "HTML") {
167
+ this.$scrollParent = $scrollParent;
168
+ var offset = this.$scrollParent.offset();
169
+ this.scrollParentTop = offset ? offset.top : 0;
170
+ } else {
171
+ setDocumentAsScrollParent();
172
+ }
173
+
174
+ this.isInitialized = true;
175
+ }
176
+ }, {
177
+ key: "ensureInit",
178
+ value: function ensureInit() {
179
+ if (!this.isInitialized) {
180
+ this.initScrollParent();
181
+ }
182
+ }
183
+ }, {
184
+ key: "handleVerticalScrollingWithScrollParent",
185
+ value: function handleVerticalScrollingWithScrollParent(area) {
186
+ var scrollParent = this.$scrollParent && this.$scrollParent[0];
187
+
188
+ if (!scrollParent) {
189
+ return;
190
+ }
191
+
192
+ var distanceBottom = this.scrollParentTop + scrollParent.offsetHeight - area.bottom;
193
+
194
+ if (distanceBottom < 20) {
195
+ scrollParent.scrollTop += 20;
196
+ this.treeWidget.refreshHitAreas();
197
+ this.previousTop = -1;
198
+ } else if (area.top - this.scrollParentTop < 20) {
199
+ scrollParent.scrollTop -= 20;
200
+ this.treeWidget.refreshHitAreas();
201
+ this.previousTop = -1;
202
+ }
203
+ }
204
+ }, {
205
+ key: "handleVerticalScrollingWithDocument",
206
+ value: function handleVerticalScrollingWithDocument(area) {
207
+ var scrollTop = jQuery(document).scrollTop() || 0;
208
+ var distanceTop = area.top - scrollTop;
209
+
210
+ if (distanceTop < 20) {
211
+ jQuery(document).scrollTop(scrollTop - 20);
212
+ } else {
213
+ var windowHeight = jQuery(window).height() || 0;
214
+
215
+ if (windowHeight - (area.bottom - scrollTop) < 20) {
216
+ jQuery(document).scrollTop(scrollTop + 20);
156
217
  }
218
+ }
219
+ }
220
+ }, {
221
+ key: "checkVerticalScrolling",
222
+ value: function checkVerticalScrolling() {
223
+ var hoveredArea = this.treeWidget.dndHandler.hoveredArea;
224
+
225
+ if (hoveredArea && hoveredArea.top !== this.previousTop) {
226
+ this.previousTop = hoveredArea.top;
227
+
157
228
  if (this.$scrollParent) {
158
- this.handleHorizontalScrollingWithParent(positionInfo);
159
- }
160
- else {
161
- this.handleHorizontalScrollingWithDocument(positionInfo);
162
- }
163
- };
164
- ScrollHandler.prototype.handleHorizontalScrollingWithParent = function (positionInfo) {
165
- if (positionInfo.pageX === undefined ||
166
- positionInfo.pageY === undefined) {
167
- return;
229
+ this.handleVerticalScrollingWithScrollParent(hoveredArea);
230
+ } else {
231
+ this.handleVerticalScrollingWithDocument(hoveredArea);
168
232
  }
169
- var $scrollParent = this.$scrollParent;
170
- var scrollParentOffset = $scrollParent && $scrollParent.offset();
171
- if (!($scrollParent && scrollParentOffset)) {
172
- return;
173
- }
174
- var scrollParent = $scrollParent[0];
175
- var canScrollRight = scrollParent.scrollLeft + scrollParent.clientWidth <
176
- scrollParent.scrollWidth;
177
- var canScrollLeft = scrollParent.scrollLeft > 0;
178
- var rightEdge = scrollParentOffset.left + scrollParent.clientWidth;
179
- var leftEdge = scrollParentOffset.left;
180
- var isNearRightEdge = positionInfo.pageX > rightEdge - 20;
181
- var isNearLeftEdge = positionInfo.pageX < leftEdge + 20;
182
- if (isNearRightEdge && canScrollRight) {
183
- scrollParent.scrollLeft = Math.min(scrollParent.scrollLeft + 20, scrollParent.scrollWidth);
184
- }
185
- else if (isNearLeftEdge && canScrollLeft) {
186
- scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);
187
- }
188
- };
189
- ScrollHandler.prototype.handleHorizontalScrollingWithDocument = function (positionInfo) {
190
- if (positionInfo.pageX === undefined ||
191
- positionInfo.pageY === undefined) {
192
- return;
193
- }
194
- var $document = jQuery(document);
195
- var scrollLeft = $document.scrollLeft() || 0;
196
- var windowWidth = jQuery(window).width() || 0;
197
- var canScrollLeft = scrollLeft > 0;
198
- var isNearRightEdge = positionInfo.pageX > windowWidth - 20;
199
- var isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;
200
- if (isNearRightEdge) {
201
- $document.scrollLeft(scrollLeft + 20);
202
- }
203
- else if (isNearLeftEdge && canScrollLeft) {
204
- $document.scrollLeft(Math.max(scrollLeft - 20, 0));
205
- }
206
- };
207
- return ScrollHandler;
208
- }());
209
- exports["default"] = ScrollHandler;
233
+ }
234
+ }
235
+ }, {
236
+ key: "checkHorizontalScrolling",
237
+ value: function checkHorizontalScrolling() {
238
+ var positionInfo = this.treeWidget.dndHandler.positionInfo;
239
+
240
+ if (!positionInfo) {
241
+ return;
242
+ }
243
+
244
+ if (this.$scrollParent) {
245
+ this.handleHorizontalScrollingWithParent(positionInfo);
246
+ } else {
247
+ this.handleHorizontalScrollingWithDocument(positionInfo);
248
+ }
249
+ }
250
+ }, {
251
+ key: "handleHorizontalScrollingWithParent",
252
+ value: function handleHorizontalScrollingWithParent(positionInfo) {
253
+ if (positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
254
+ return;
255
+ }
256
+
257
+ var $scrollParent = this.$scrollParent;
258
+ var scrollParentOffset = $scrollParent && $scrollParent.offset();
259
+
260
+ if (!($scrollParent && scrollParentOffset)) {
261
+ return;
262
+ }
263
+
264
+ var scrollParent = $scrollParent[0];
265
+ var canScrollRight = scrollParent.scrollLeft + scrollParent.clientWidth < scrollParent.scrollWidth;
266
+ var canScrollLeft = scrollParent.scrollLeft > 0;
267
+ var rightEdge = scrollParentOffset.left + scrollParent.clientWidth;
268
+ var leftEdge = scrollParentOffset.left;
269
+ var isNearRightEdge = positionInfo.pageX > rightEdge - 20;
270
+ var isNearLeftEdge = positionInfo.pageX < leftEdge + 20;
271
+
272
+ if (isNearRightEdge && canScrollRight) {
273
+ scrollParent.scrollLeft = Math.min(scrollParent.scrollLeft + 20, scrollParent.scrollWidth);
274
+ } else if (isNearLeftEdge && canScrollLeft) {
275
+ scrollParent.scrollLeft = Math.max(scrollParent.scrollLeft - 20, 0);
276
+ }
277
+ }
278
+ }, {
279
+ key: "handleHorizontalScrollingWithDocument",
280
+ value: function handleHorizontalScrollingWithDocument(positionInfo) {
281
+ if (positionInfo.pageX === undefined || positionInfo.pageY === undefined) {
282
+ return;
283
+ }
284
+
285
+ var $document = jQuery(document);
286
+ var scrollLeft = $document.scrollLeft() || 0;
287
+ var windowWidth = jQuery(window).width() || 0;
288
+ var canScrollLeft = scrollLeft > 0;
289
+ var isNearRightEdge = positionInfo.pageX > windowWidth - 20;
290
+ var isNearLeftEdge = positionInfo.pageX - scrollLeft < 20;
291
+
292
+ if (isNearRightEdge) {
293
+ $document.scrollLeft(scrollLeft + 20);
294
+ } else if (isNearLeftEdge && canScrollLeft) {
295
+ $document.scrollLeft(Math.max(scrollLeft - 20, 0));
296
+ }
297
+ }
298
+ }]);
299
+
300
+ return ScrollHandler;
301
+ }();
302
+
303
+ exports["default"] = ScrollHandler;