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,128 +1,193 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __generator = (this && this.__generator) || function (thisArg, body) {
12
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
- function verb(n) { return function (v) { return step([n, v]); }; }
15
- function step(op) {
16
- if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
18
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
- if (y = 0, t) op = [op[0] & 2, t.value];
20
- switch (op[0]) {
21
- case 0: case 1: t = op; break;
22
- case 4: _.label++; return { value: op[1], done: false };
23
- case 5: _.label++; y = op[1]; op = [0]; continue;
24
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
- default:
26
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
- if (t[2]) _.ops.pop();
31
- _.trys.pop(); continue;
32
- }
33
- op = body.call(thisArg, _);
34
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
- }
37
- };
38
- exports.__esModule = true;
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
39
8
  exports.matchScreenshot = void 0;
40
- var fs_1 = require("fs");
41
- var promises_1 = require("fs/promises");
42
- var path = require("path");
43
- var pngjs_1 = require("pngjs");
9
+
10
+ var _fs = require("fs");
11
+
12
+ var _promises = require("fs/promises");
13
+
14
+ var path = _interopRequireWildcard(require("path"));
15
+
16
+ var _pngjs = require("pngjs");
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
23
+
24
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
25
+
26
+ 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); }
27
+
28
+ 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; }
29
+
30
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
31
+
32
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
33
+
34
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
35
+
36
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
37
+
44
38
  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-var-requires
45
39
  var pixelmatch = require("pixelmatch");
46
- var matchScreenshot = function (testName) { return __awaiter(void 0, void 0, void 0, function () {
47
- var screenshotBuffer, expectedImagePath, expectedImage, screenshot, _a, adjustedExpectedImage, adjustedScreenshot, width, height, diff, mismatchedPixels, percentage;
48
- return __generator(this, function (_b) {
49
- switch (_b.label) {
50
- case 0: return [4 /*yield*/, page.screenshot()];
51
- case 1:
52
- screenshotBuffer = _b.sent();
53
- expectedImagePath = path.join(__dirname, "screenshots/" + testName + "_" + (deviceName || "unknown") + ".png");
54
- if (!!fs_1.existsSync(expectedImagePath)) return [3 /*break*/, 3];
55
- return [4 /*yield*/, saveFile(expectedImagePath, screenshotBuffer)];
56
- case 2:
57
- _b.sent();
58
- return [2 /*return*/];
59
- case 3: return [4 /*yield*/, readPng(expectedImagePath)];
60
- case 4:
61
- expectedImage = _b.sent();
62
- screenshot = pngjs_1.PNG.sync.read(screenshotBuffer);
63
- _a = getImagesOfEqualSize(expectedImage, screenshot), adjustedExpectedImage = _a[0], adjustedScreenshot = _a[1];
64
- width = adjustedExpectedImage.width, height = adjustedExpectedImage.height;
65
- diff = new pngjs_1.PNG({ width: width, height: height });
66
- mismatchedPixels = pixelmatch(adjustedExpectedImage.data, adjustedScreenshot.data, diff.data, width, height, {});
67
- percentage = Math.pow((mismatchedPixels / diff.width / diff.height), 0.5);
68
- if (!(percentage >= 0.1)) return [3 /*break*/, 6];
69
- return [4 /*yield*/, saveFile(path.join(__dirname, testName + ".png"), pngjs_1.PNG.sync.write(adjustedScreenshot))];
70
- case 5:
71
- _b.sent();
72
- _b.label = 6;
73
- case 6:
74
- expect(percentage).toBeLessThan(0.1);
75
- return [2 /*return*/];
40
+
41
+ var matchScreenshot = /*#__PURE__*/function () {
42
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(testName) {
43
+ var screenshotBuffer, expectedImagePath, expectedImage, screenshot, _getImagesOfEqualSize, _getImagesOfEqualSize2, adjustedExpectedImage, adjustedScreenshot, width, height, diff, mismatchedPixels, percentage;
44
+
45
+ return regeneratorRuntime.wrap(function _callee$(_context) {
46
+ while (1) {
47
+ switch (_context.prev = _context.next) {
48
+ case 0:
49
+ _context.next = 2;
50
+ return page.screenshot();
51
+
52
+ case 2:
53
+ screenshotBuffer = _context.sent;
54
+ expectedImagePath = path.join(__dirname, "screenshots/".concat(testName, "_").concat(deviceName || "unknown", ".png"));
55
+
56
+ if ((0, _fs.existsSync)(expectedImagePath)) {
57
+ _context.next = 8;
58
+ break;
59
+ }
60
+
61
+ _context.next = 7;
62
+ return saveFile(expectedImagePath, screenshotBuffer);
63
+
64
+ case 7:
65
+ return _context.abrupt("return");
66
+
67
+ case 8:
68
+ _context.next = 10;
69
+ return readPng(expectedImagePath);
70
+
71
+ case 10:
72
+ expectedImage = _context.sent;
73
+ screenshot = _pngjs.PNG.sync.read(screenshotBuffer);
74
+ _getImagesOfEqualSize = getImagesOfEqualSize(expectedImage, screenshot), _getImagesOfEqualSize2 = _slicedToArray(_getImagesOfEqualSize, 2), adjustedExpectedImage = _getImagesOfEqualSize2[0], adjustedScreenshot = _getImagesOfEqualSize2[1];
75
+ width = adjustedExpectedImage.width, height = adjustedExpectedImage.height;
76
+ diff = new _pngjs.PNG({
77
+ width: width,
78
+ height: height
79
+ }); // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call
80
+
81
+ mismatchedPixels = pixelmatch(adjustedExpectedImage.data, adjustedScreenshot.data, diff.data, width, height, {});
82
+ percentage = Math.pow(mismatchedPixels / diff.width / diff.height, 0.5);
83
+
84
+ if (!(percentage >= 0.1)) {
85
+ _context.next = 20;
86
+ break;
87
+ }
88
+
89
+ _context.next = 20;
90
+ return saveFile(path.join(__dirname, "".concat(testName, ".png")), _pngjs.PNG.sync.write(adjustedScreenshot));
91
+
92
+ case 20:
93
+ expect(percentage).toBeLessThan(0.1);
94
+
95
+ case 21:
96
+ case "end":
97
+ return _context.stop();
76
98
  }
77
- });
78
- }); };
99
+ }
100
+ }, _callee);
101
+ }));
102
+
103
+ return function matchScreenshot(_x) {
104
+ return _ref.apply(this, arguments);
105
+ };
106
+ }();
107
+
79
108
  exports.matchScreenshot = matchScreenshot;
80
- var saveFile = function (filePath, buffer) { return __awaiter(void 0, void 0, void 0, function () {
109
+
110
+ var saveFile = /*#__PURE__*/function () {
111
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(filePath, buffer) {
81
112
  var file;
82
- return __generator(this, function (_a) {
83
- switch (_a.label) {
84
- case 0: return [4 /*yield*/, promises_1.open(filePath, "w")];
85
- case 1:
86
- file = _a.sent();
87
- _a.label = 2;
88
- case 2:
89
- _a.trys.push([2, , 4, 6]);
90
- return [4 /*yield*/, promises_1.writeFile(filePath, buffer)];
91
- case 3:
92
- _a.sent();
93
- return [3 /*break*/, 6];
94
- case 4: return [4 /*yield*/, file.close()];
95
- case 5:
96
- _a.sent();
97
- return [7 /*endfinally*/];
98
- case 6: return [2 /*return*/];
113
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
114
+ while (1) {
115
+ switch (_context2.prev = _context2.next) {
116
+ case 0:
117
+ _context2.next = 2;
118
+ return (0, _promises.open)(filePath, "w");
119
+
120
+ case 2:
121
+ file = _context2.sent;
122
+ _context2.prev = 3;
123
+ _context2.next = 6;
124
+ return (0, _promises.writeFile)(filePath, buffer);
125
+
126
+ case 6:
127
+ _context2.prev = 6;
128
+ _context2.next = 9;
129
+ return file.close();
130
+
131
+ case 9:
132
+ return _context2.finish(6);
133
+
134
+ case 10:
135
+ case "end":
136
+ return _context2.stop();
99
137
  }
100
- });
101
- }); };
102
- var readPng = function (filePath) { return __awaiter(void 0, void 0, void 0, function () {
138
+ }
139
+ }, _callee2, null, [[3,, 6, 10]]);
140
+ }));
141
+
142
+ return function saveFile(_x2, _x3) {
143
+ return _ref2.apply(this, arguments);
144
+ };
145
+ }();
146
+
147
+ var readPng = /*#__PURE__*/function () {
148
+ var _ref3 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(filePath) {
103
149
  var buffer;
104
- return __generator(this, function (_a) {
105
- switch (_a.label) {
106
- case 0: return [4 /*yield*/, promises_1.readFile(filePath)];
107
- case 1:
108
- buffer = _a.sent();
109
- return [2 /*return*/, pngjs_1.PNG.sync.read(buffer)];
150
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
151
+ while (1) {
152
+ switch (_context3.prev = _context3.next) {
153
+ case 0:
154
+ _context3.next = 2;
155
+ return (0, _promises.readFile)(filePath);
156
+
157
+ case 2:
158
+ buffer = _context3.sent;
159
+ return _context3.abrupt("return", _pngjs.PNG.sync.read(buffer));
160
+
161
+ case 4:
162
+ case "end":
163
+ return _context3.stop();
110
164
  }
111
- });
112
- }); };
113
- var adjustImageSize = function (image, width, height) {
114
- if (image.width === width && image.height === height) {
115
- return image;
116
- }
117
- var adjustedImage = new pngjs_1.PNG({ width: width, height: height });
118
- pngjs_1.PNG.bitblt(image, adjustedImage, 0, 0, image.width, image.height, 0, 0);
119
- return adjustedImage;
120
- };
121
- var getImagesOfEqualSize = function (image1, image2) {
122
- var width = Math.max(image1.width, image2.width);
123
- var height = Math.max(image1.height, image2.height);
124
- return [
125
- adjustImageSize(image1, width, height),
126
- adjustImageSize(image2, width, height),
127
- ];
165
+ }
166
+ }, _callee3);
167
+ }));
168
+
169
+ return function readPng(_x4) {
170
+ return _ref3.apply(this, arguments);
171
+ };
172
+ }();
173
+
174
+ var adjustImageSize = function adjustImageSize(image, width, height) {
175
+ if (image.width === width && image.height === height) {
176
+ return image;
177
+ }
178
+
179
+ var adjustedImage = new _pngjs.PNG({
180
+ width: width,
181
+ height: height
182
+ });
183
+
184
+ _pngjs.PNG.bitblt(image, adjustedImage, 0, 0, image.width, image.height, 0, 0);
185
+
186
+ return adjustedImage;
128
187
  };
188
+
189
+ var getImagesOfEqualSize = function getImagesOfEqualSize(image1, image2) {
190
+ var width = Math.max(image1.width, image2.width);
191
+ var height = Math.max(image1.height, image2.height);
192
+ return [adjustImageSize(image1, width, height), adjustImageSize(image2, width, height)];
193
+ };