jqtree 1.5.2 → 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 (174) hide show
  1. package/.eslintrc +1 -0
  2. package/.github/workflows/ci.yml +54 -0
  3. package/.github/workflows/codeql-analysis.yml +28 -0
  4. package/README.md +1 -1
  5. package/_config.yml +1 -1
  6. package/_entries/10_changelog.md +20 -0
  7. package/_entries/{36_showemptynode.md → 36_showemptyfolder.md} +5 -5
  8. package/_entries/38_start_dnd_delay.md +13 -0
  9. package/_entries/{38_tabindex.md → 39_tabindex.md} +0 -0
  10. package/_entries/{39_usecontextmenu.md → 40_usecontextmenu.md} +0 -0
  11. package/_entries/{40_functions.md → 41_functions.md} +0 -0
  12. package/_entries/{41_addparentnode.md → 42_addparentnode.md} +0 -0
  13. package/_entries/{42_addnodeafter.md → 43_addnodeafter.md} +0 -0
  14. package/_entries/{43_addnodebefore.md → 44_addnodebefore.md} +0 -0
  15. package/_entries/{44_appendnode.md → 45_appendnode.md} +0 -0
  16. package/_entries/{45_closenode.md → 46_closenode.md} +0 -0
  17. package/_entries/{46_destroy.md → 47_destroy.md} +0 -0
  18. package/_entries/{47_getnodebycallback.md → 48_getnodebycallback.md} +0 -0
  19. package/_entries/{48_getnodebyid.md → 49_getnodebyid.md} +0 -0
  20. package/_entries/{49_getnodebyhtmlelement.md → 50_getnodebyhtmlelement.md} +0 -0
  21. package/_entries/{50_getselectednode.md → 51_getselectednode.md} +0 -0
  22. package/_entries/{51_getstate.md → 52_getstate.md} +0 -0
  23. package/_entries/{52_gettree.md → 53_gettree.md} +0 -0
  24. package/_entries/{53_isdragging.md → 54_isdragging.md} +0 -0
  25. package/_entries/{54_loaddata.md → 55_loaddata.md} +0 -0
  26. package/_entries/{55_loaddatafromurl.md → 56_loaddatafromurl.md} +0 -0
  27. package/_entries/{56_movedown.md → 57_movedown.md} +0 -0
  28. package/_entries/{57_movenode.md → 58_movenode.md} +0 -0
  29. package/_entries/{58_moveup.md → 59_moveup.md} +0 -0
  30. package/_entries/{59_opennode.md → 60_opennode.md} +0 -0
  31. package/_entries/{60_prependnode.md → 61_prependnode.md} +0 -0
  32. package/_entries/62_refresh.md +12 -0
  33. package/_entries/{61_reload.md → 63_reload.md} +0 -0
  34. package/_entries/{62_removenode.md → 64_removenode.md} +0 -0
  35. package/_entries/{63_selectnode.md → 65_selectnode.md} +0 -0
  36. package/_entries/{64_scrolltonode.md → 66_scrolltonode.md} +0 -0
  37. package/_entries/{65_setoption.md → 67_setoption.md} +0 -0
  38. package/_entries/{66_setstate.md → 68_setstate.md} +0 -0
  39. package/_entries/{67_toggle.md → 69_toggle.md} +0 -0
  40. package/_entries/{68_tojson.md → 70_tojson.md} +0 -0
  41. package/_entries/{69_updatenode.md → 71_updatenode.md} +0 -0
  42. package/_entries/{70_events.md → 72_events.md} +0 -0
  43. package/_entries/{71_tree-click.md → 73_tree-click.md} +0 -0
  44. package/_entries/{72_tree-close.md → 74_tree-close.md} +0 -0
  45. package/_entries/{73_tree-contextmenu.md → 75_tree-contextmenu.md} +0 -0
  46. package/_entries/{74_tree-dblclick.md → 76_tree-dblclick.md} +0 -0
  47. package/_entries/{75_tree-init.md → 77_tree-init.md} +0 -0
  48. package/_entries/{76_tree-load-data.md → 78_tree-load-data.md} +0 -0
  49. package/_entries/{77_tree-loading-data.md → 79_tree-loading-data.md} +0 -0
  50. package/_entries/{78_tree-move.md → 80_tree-move.md} +0 -0
  51. package/_entries/{79_tree-refresh.md → 81_tree-refresh.md} +0 -0
  52. package/_entries/{80_tree-open.md → 82_tree-open.md} +0 -0
  53. package/_entries/{81_tree-select.md → 83_tree-select.md} +0 -0
  54. package/_entries/{82_multiple-selection.md → 84_multiple-selection.md} +0 -0
  55. package/_entries/{83_add-to-selection.md → 85_add-to-selection.md} +0 -0
  56. package/_entries/{84_get-selected-nodes.md → 86_get-selected-nodes.md} +0 -0
  57. package/_entries/{85_is-node-selected.md → 87_is-node-selected.md} +0 -0
  58. package/_entries/{86_remove-from-selection.md → 88_remove-from-selection.md} +0 -0
  59. package/_entries/{87_node-functions.md → 89_node-functions.md} +0 -0
  60. package/_entries/{88_children.md → 90_children.md} +0 -0
  61. package/_entries/{89_getdata.md → 91_getdata.md} +0 -0
  62. package/_entries/{90_getlevel.md → 92_getlevel.md} +0 -0
  63. package/_entries/{91_getnextnode.md → 93_getnextnode.md} +0 -0
  64. package/_entries/{92_getnextsibling.md → 94_getnextsibling.md} +0 -0
  65. package/_entries/{93_getpreviousnode.md → 95_getpreviousnode.md} +0 -0
  66. package/_entries/{94_getprevioussibling.md → 96_getprevioussibling.md} +0 -0
  67. package/_entries/{95_parent.md → 97_parent.md} +0 -0
  68. package/_examples/13_drag_outside.html +2 -1
  69. package/_examples/14_filter.html +113 -0
  70. package/_layouts/base.html +1 -23
  71. package/babel.config.json +11 -0
  72. package/babel.coverage.config.json +4 -0
  73. package/bower.json +1 -1
  74. package/jest-browser.config.js +0 -3
  75. package/jest-jsdom.config.js +1 -2
  76. package/jqtree.css +4 -1
  77. package/jqtree.postcss +3 -0
  78. package/lib/dataLoader.js +146 -98
  79. package/lib/dragAndDropHandler.js +668 -470
  80. package/lib/elementsRenderer.js +282 -197
  81. package/lib/jqtreeOptions.js +1 -2
  82. package/lib/keyHandler.js +134 -87
  83. package/lib/mouse.widget.js +288 -165
  84. package/lib/node.js +693 -505
  85. package/lib/nodeElement.js +329 -205
  86. package/lib/playwright/playwright.test.js +216 -189
  87. package/lib/playwright/testUtil.js +437 -192
  88. package/lib/playwright/visualRegression.js +183 -117
  89. package/lib/saveStateHandler.js +311 -204
  90. package/lib/scrollHandler.js +293 -199
  91. package/lib/selectNodeHandler.js +140 -105
  92. package/lib/simple.widget.js +184 -109
  93. package/lib/test/global.d.js +3 -0
  94. package/lib/test/jqTree/create.test.js +44 -40
  95. package/lib/test/jqTree/events.test.js +185 -138
  96. package/lib/test/jqTree/keyboard.test.js +216 -199
  97. package/lib/test/jqTree/loadOnDemand.test.js +233 -157
  98. package/lib/test/jqTree/methods.test.js +1269 -1000
  99. package/lib/test/jqTree/options.test.js +467 -398
  100. package/lib/test/node.test.js +1036 -873
  101. package/lib/test/nodeUtil.test.js +21 -20
  102. package/lib/test/support/exampleData.js +35 -23
  103. package/lib/test/support/jqTreeMatchers.js +72 -54
  104. package/lib/test/support/matchers.d.js +1 -0
  105. package/lib/test/support/setupTests.js +9 -3
  106. package/lib/test/support/testUtil.js +38 -15
  107. package/lib/test/support/treeStructure.js +41 -32
  108. package/lib/test/util.test.js +21 -20
  109. package/lib/tree.jquery.d.js +1 -0
  110. package/lib/tree.jquery.js +1264 -883
  111. package/lib/types.js +1 -2
  112. package/lib/typings.d.js +2 -0
  113. package/lib/util.js +21 -7
  114. package/lib/version.js +8 -3
  115. package/package.json +43 -36
  116. package/production +4 -4
  117. package/rollup.config.js +16 -11
  118. package/src/dataLoader.ts +6 -6
  119. package/src/dragAndDropHandler.ts +0 -4
  120. package/src/elementsRenderer.ts +4 -0
  121. package/src/jqtreeOptions.ts +33 -32
  122. package/src/mouse.widget.ts +58 -29
  123. package/src/node.ts +32 -46
  124. package/src/nodeElement.ts +17 -9
  125. package/src/playwright/.eslintrc +5 -0
  126. package/src/playwright/playwright.test.ts +30 -30
  127. package/src/playwright/testUtil.ts +36 -37
  128. package/src/saveStateHandler.ts +11 -6
  129. package/src/selectNodeHandler.ts +14 -21
  130. package/src/simple.widget.ts +1 -1
  131. package/src/test/.eslintrc +4 -0
  132. package/src/test/jqTree/create.test.ts +0 -1
  133. package/src/test/jqTree/events.test.ts +12 -13
  134. package/src/test/jqTree/keyboard.test.ts +0 -1
  135. package/src/test/jqTree/loadOnDemand.test.ts +46 -1
  136. package/src/test/jqTree/methods.test.ts +67 -18
  137. package/src/test/jqTree/options.test.ts +5 -6
  138. package/src/test/node.test.ts +2 -2
  139. package/src/test/support/jqTreeMatchers.ts +8 -9
  140. package/src/test/support/matchers.d.ts +2 -4
  141. package/src/test/support/setupTests.ts +2 -1
  142. package/src/tree.jquery.d.ts +19 -13
  143. package/src/tree.jquery.ts +63 -57
  144. package/src/version.ts +1 -1
  145. package/static/bower.json +3 -3
  146. package/static/bower_components/fontawesome/css/all.min.css +2 -2
  147. package/static/bower_components/fontawesome/webfonts/fa-brands-400.eot +0 -0
  148. package/static/bower_components/fontawesome/webfonts/fa-brands-400.svg +774 -627
  149. package/static/bower_components/fontawesome/webfonts/fa-brands-400.ttf +0 -0
  150. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff +0 -0
  151. package/static/bower_components/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
  152. package/static/bower_components/fontawesome/webfonts/fa-regular-400.eot +0 -0
  153. package/static/bower_components/fontawesome/webfonts/fa-regular-400.svg +93 -95
  154. package/static/bower_components/fontawesome/webfonts/fa-regular-400.ttf +0 -0
  155. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff +0 -0
  156. package/static/bower_components/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
  157. package/static/bower_components/fontawesome/webfonts/fa-solid-900.eot +0 -0
  158. package/static/bower_components/fontawesome/webfonts/fa-solid-900.svg +1164 -1074
  159. package/static/bower_components/fontawesome/webfonts/fa-solid-900.ttf +0 -0
  160. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff +0 -0
  161. package/static/bower_components/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
  162. package/static/bower_components/jquery/dist/jquery.js +118 -109
  163. package/static/bower_components/jquery/dist/jquery.min.js +2 -2
  164. package/static/bower_components/jquery-mockjax/dist/jquery.mockjax.js +15 -9
  165. package/static/example.css +13 -0
  166. package/static/example.postcss +13 -0
  167. package/static/example_data.js +33 -36
  168. package/static/examples/filter.js +63 -0
  169. package/tree.jquery.debug.js +4809 -3305
  170. package/tree.jquery.debug.js.map +1 -1
  171. package/tree.jquery.js +3 -3
  172. package/tree.jquery.js.map +1 -1
  173. package/tsconfig.json +1 -0
  174. package/.travis.yml +0 -18
@@ -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;