@zextras/carbonio-ui-preview 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/preview/ImagePreview.d.ts +8 -0
- package/lib/preview/ImagePreview.js +5 -2
- package/lib/preview/ImagePreview.js.map +1 -1
- package/lib/preview/Navigator.d.ts +5 -0
- package/lib/preview/Navigator.js +28 -0
- package/lib/preview/Navigator.js.map +1 -0
- package/lib/preview/PageController.d.ts +8 -0
- package/lib/preview/PageController.js +101 -0
- package/lib/preview/PageController.js.map +1 -0
- package/lib/preview/PdfPreview.d.ts +10 -0
- package/lib/preview/PdfPreview.js +62 -99
- package/lib/preview/PdfPreview.js.map +1 -1
- package/lib/preview/PdfPreview.test.js +328 -68
- package/lib/preview/PdfPreview.test.js.map +1 -1
- package/lib/preview/PreviewManager.d.ts +8 -2
- package/lib/preview/PreviewManager.js +58 -23
- package/lib/preview/PreviewManager.js.map +1 -1
- package/lib/preview/PreviewManager.test.js +1 -3
- package/lib/preview/PreviewManager.test.js.map +1 -1
- package/lib/preview/StyledComponents.d.ts +3 -0
- package/lib/preview/StyledComponents.js +21 -0
- package/lib/preview/StyledComponents.js.map +1 -0
- package/lib/preview/ZoomController.d.ts +17 -0
- package/lib/preview/ZoomController.js +58 -0
- package/lib/preview/ZoomController.js.map +1 -0
- package/lib/preview/usePageScrollController.d.ts +4 -0
- package/lib/preview/usePageScrollController.js +70 -0
- package/lib/preview/usePageScrollController.js.map +1 -0
- package/lib/preview/useZoom.d.ts +13 -0
- package/lib/preview/useZoom.js +85 -0
- package/lib/preview/useZoom.js.map +1 -0
- package/lib/utils/test-utils.d.ts +1 -0
- package/lib/utils/test-utils.js +63 -1
- package/lib/utils/test-utils.js.map +1 -1
- package/lib-esm/preview/ImagePreview.d.ts +8 -0
- package/lib-esm/preview/ImagePreview.js +5 -2
- package/lib-esm/preview/ImagePreview.js.map +1 -1
- package/lib-esm/preview/Navigator.d.ts +5 -0
- package/lib-esm/preview/Navigator.js +21 -0
- package/lib-esm/preview/Navigator.js.map +1 -0
- package/lib-esm/preview/PageController.d.ts +8 -0
- package/lib-esm/preview/PageController.js +71 -0
- package/lib-esm/preview/PageController.js.map +1 -0
- package/lib-esm/preview/PdfPreview.d.ts +10 -0
- package/lib-esm/preview/PdfPreview.js +63 -100
- package/lib-esm/preview/PdfPreview.js.map +1 -1
- package/lib-esm/preview/PdfPreview.test.js +328 -68
- package/lib-esm/preview/PdfPreview.test.js.map +1 -1
- package/lib-esm/preview/PreviewManager.d.ts +8 -2
- package/lib-esm/preview/PreviewManager.js +57 -25
- package/lib-esm/preview/PreviewManager.js.map +1 -1
- package/lib-esm/preview/PreviewManager.test.js +1 -3
- package/lib-esm/preview/PreviewManager.test.js.map +1 -1
- package/lib-esm/preview/StyledComponents.d.ts +3 -0
- package/lib-esm/preview/StyledComponents.js +15 -0
- package/lib-esm/preview/StyledComponents.js.map +1 -0
- package/lib-esm/preview/ZoomController.d.ts +17 -0
- package/lib-esm/preview/ZoomController.js +28 -0
- package/lib-esm/preview/ZoomController.js.map +1 -0
- package/lib-esm/preview/usePageScrollController.d.ts +4 -0
- package/lib-esm/preview/usePageScrollController.js +66 -0
- package/lib-esm/preview/usePageScrollController.js.map +1 -0
- package/lib-esm/preview/useZoom.d.ts +13 -0
- package/lib-esm/preview/useZoom.js +78 -0
- package/lib-esm/preview/useZoom.js.map +1 -0
- package/lib-esm/utils/test-utils.d.ts +1 -0
- package/lib-esm/utils/test-utils.js +62 -1
- package/lib-esm/utils/test-utils.js.map +1 -1
- package/package.json +3 -2
|
@@ -47,9 +47,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
47
47
|
var react_1 = __importDefault(require("react"));
|
|
48
48
|
var react_2 = require("@testing-library/react");
|
|
49
49
|
var user_event_1 = __importDefault(require("@testing-library/user-event"));
|
|
50
|
-
var test_utils_1 = require("../utils/test-utils");
|
|
51
50
|
var constants_1 = require("./constants");
|
|
52
51
|
var PdfPreview_1 = require("./PdfPreview");
|
|
52
|
+
var test_utils_1 = require("test-utils");
|
|
53
53
|
var pdfFile = (0, test_utils_1.loadPDF)('./__mocks__/_pdf.pdf');
|
|
54
54
|
var zoomInIcon = 'icon: Plus';
|
|
55
55
|
var zoomOutIcon = 'icon: Minus';
|
|
@@ -275,10 +275,10 @@ describe('Pdf Preview', function () {
|
|
|
275
275
|
_a.sent();
|
|
276
276
|
expect(actions[0].onClick).toHaveBeenCalled();
|
|
277
277
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
278
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
278
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
279
279
|
return [4 /*yield*/, user.click(action2Item)];
|
|
280
280
|
case 4:
|
|
281
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
281
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
282
282
|
_a.sent();
|
|
283
283
|
expect(actions[1].onClick).not.toHaveBeenCalled();
|
|
284
284
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
@@ -301,14 +301,14 @@ describe('Pdf Preview', function () {
|
|
|
301
301
|
});
|
|
302
302
|
}); });
|
|
303
303
|
test('Zoom starts at lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
304
|
-
var onClose,
|
|
304
|
+
var onClose, canvas;
|
|
305
305
|
return __generator(this, function (_a) {
|
|
306
306
|
switch (_a.label) {
|
|
307
307
|
case 0:
|
|
308
308
|
onClose = jest.fn();
|
|
309
|
-
|
|
309
|
+
(0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
310
310
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
311
|
-
})
|
|
311
|
+
});
|
|
312
312
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
313
313
|
case 1:
|
|
314
314
|
_a.sent();
|
|
@@ -443,19 +443,19 @@ describe('Pdf Preview', function () {
|
|
|
443
443
|
});
|
|
444
444
|
}); });
|
|
445
445
|
test('Fit to width zoom set width of pdf to width of the window', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
446
|
-
var onClose, ref, mockPdfWidth,
|
|
447
|
-
return __generator(this, function (
|
|
448
|
-
switch (
|
|
446
|
+
var onClose, ref, mockPdfWidth, user;
|
|
447
|
+
return __generator(this, function (_a) {
|
|
448
|
+
switch (_a.label) {
|
|
449
449
|
case 0:
|
|
450
450
|
onClose = jest.fn();
|
|
451
451
|
ref = react_1.default.createRef();
|
|
452
452
|
mockPdfWidth = 1000;
|
|
453
|
-
|
|
453
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
454
454
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
455
|
-
})
|
|
455
|
+
}).user;
|
|
456
456
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
457
457
|
case 1:
|
|
458
|
-
|
|
458
|
+
_a.sent();
|
|
459
459
|
// eslint-disable-next-line testing-library/no-node-access
|
|
460
460
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
461
461
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -464,7 +464,7 @@ describe('Pdf Preview', function () {
|
|
|
464
464
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
465
465
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
466
466
|
case 2:
|
|
467
|
-
|
|
467
|
+
_a.sent();
|
|
468
468
|
// eslint-disable-next-line testing-library/no-node-access
|
|
469
469
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
470
470
|
expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
@@ -474,19 +474,19 @@ describe('Pdf Preview', function () {
|
|
|
474
474
|
});
|
|
475
475
|
}); });
|
|
476
476
|
test('Reset zoom set width to lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
477
|
-
var onClose, ref, mockPdfWidth,
|
|
478
|
-
return __generator(this, function (
|
|
479
|
-
switch (
|
|
477
|
+
var onClose, ref, mockPdfWidth, user;
|
|
478
|
+
return __generator(this, function (_a) {
|
|
479
|
+
switch (_a.label) {
|
|
480
480
|
case 0:
|
|
481
481
|
onClose = jest.fn();
|
|
482
482
|
ref = react_1.default.createRef();
|
|
483
483
|
mockPdfWidth = 1000;
|
|
484
|
-
|
|
484
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
485
485
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
486
|
-
})
|
|
486
|
+
}).user;
|
|
487
487
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
488
488
|
case 1:
|
|
489
|
-
|
|
489
|
+
_a.sent();
|
|
490
490
|
// eslint-disable-next-line testing-library/no-node-access
|
|
491
491
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
492
492
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -495,14 +495,14 @@ describe('Pdf Preview', function () {
|
|
|
495
495
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
496
496
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
497
497
|
case 2:
|
|
498
|
-
|
|
498
|
+
_a.sent();
|
|
499
499
|
// eslint-disable-next-line testing-library/no-node-access
|
|
500
500
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
501
501
|
expect(react_2.screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
502
502
|
expect(react_2.screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
|
|
503
503
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomResetWidthIcon))];
|
|
504
504
|
case 3:
|
|
505
|
-
|
|
505
|
+
_a.sent();
|
|
506
506
|
// eslint-disable-next-line testing-library/no-node-access
|
|
507
507
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
|
|
508
508
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -512,26 +512,26 @@ describe('Pdf Preview', function () {
|
|
|
512
512
|
});
|
|
513
513
|
}); });
|
|
514
514
|
test('When client width is lower than lowest zoom step and zoom is set to fit to width, decrease zoom is disabled and increase is enabled', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
515
|
-
var onClose, ref, mockPdfWidth,
|
|
516
|
-
return __generator(this, function (
|
|
517
|
-
switch (
|
|
515
|
+
var onClose, ref, mockPdfWidth, user;
|
|
516
|
+
return __generator(this, function (_a) {
|
|
517
|
+
switch (_a.label) {
|
|
518
518
|
case 0:
|
|
519
519
|
onClose = jest.fn();
|
|
520
520
|
ref = react_1.default.createRef();
|
|
521
521
|
mockPdfWidth = constants_1.ZOOM_STEPS[0] - 1;
|
|
522
|
-
|
|
522
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
523
523
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
524
|
-
})
|
|
524
|
+
}).user;
|
|
525
525
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
526
526
|
case 1:
|
|
527
|
-
|
|
527
|
+
_a.sent();
|
|
528
528
|
// eslint-disable-next-line testing-library/no-node-access
|
|
529
529
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
530
530
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
531
531
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
532
532
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
533
533
|
case 2:
|
|
534
|
-
|
|
534
|
+
_a.sent();
|
|
535
535
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
536
536
|
expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
537
537
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -541,26 +541,26 @@ describe('Pdf Preview', function () {
|
|
|
541
541
|
});
|
|
542
542
|
}); });
|
|
543
543
|
test('When client width is greater than greatest zoom step and zoom is set to fit to width, decrease zoom is enabled and increase is disabled', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
544
|
-
var onClose, ref, mockPdfWidth,
|
|
545
|
-
return __generator(this, function (
|
|
546
|
-
switch (
|
|
544
|
+
var onClose, ref, mockPdfWidth, user;
|
|
545
|
+
return __generator(this, function (_a) {
|
|
546
|
+
switch (_a.label) {
|
|
547
547
|
case 0:
|
|
548
548
|
onClose = jest.fn();
|
|
549
549
|
ref = react_1.default.createRef();
|
|
550
550
|
mockPdfWidth = constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1] + 1;
|
|
551
|
-
|
|
551
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
552
552
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
553
|
-
})
|
|
553
|
+
}).user;
|
|
554
554
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
555
555
|
case 1:
|
|
556
|
-
|
|
556
|
+
_a.sent();
|
|
557
557
|
// eslint-disable-next-line testing-library/no-node-access
|
|
558
558
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
559
559
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
560
560
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
561
561
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
562
562
|
case 2:
|
|
563
|
-
|
|
563
|
+
_a.sent();
|
|
564
564
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
565
565
|
expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
566
566
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -570,32 +570,32 @@ describe('Pdf Preview', function () {
|
|
|
570
570
|
});
|
|
571
571
|
}); });
|
|
572
572
|
test('After fit to width, decrease zoom set zoom to nearest lower zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
573
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
574
|
-
return __generator(this, function (
|
|
575
|
-
switch (
|
|
573
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
574
|
+
return __generator(this, function (_a) {
|
|
575
|
+
switch (_a.label) {
|
|
576
576
|
case 0:
|
|
577
577
|
onClose = jest.fn();
|
|
578
578
|
ref = react_1.default.createRef();
|
|
579
579
|
stepToReach = 1;
|
|
580
580
|
mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach + 1] - 1;
|
|
581
|
-
|
|
581
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
582
582
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
583
|
-
})
|
|
583
|
+
}).user;
|
|
584
584
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
585
585
|
case 1:
|
|
586
|
-
|
|
586
|
+
_a.sent();
|
|
587
587
|
// eslint-disable-next-line testing-library/no-node-access
|
|
588
588
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
589
589
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
590
590
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
591
591
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
592
592
|
case 2:
|
|
593
|
-
|
|
593
|
+
_a.sent();
|
|
594
594
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
595
595
|
expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
596
596
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
|
|
597
597
|
case 3:
|
|
598
|
-
|
|
598
|
+
_a.sent();
|
|
599
599
|
// eslint-disable-next-line testing-library/no-node-access
|
|
600
600
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
|
|
601
601
|
return [2 /*return*/];
|
|
@@ -603,32 +603,32 @@ describe('Pdf Preview', function () {
|
|
|
603
603
|
});
|
|
604
604
|
}); });
|
|
605
605
|
test('After fit to width, increase zoom set zoom to nearest greater zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
606
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
607
|
-
return __generator(this, function (
|
|
608
|
-
switch (
|
|
606
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
607
|
+
return __generator(this, function (_a) {
|
|
608
|
+
switch (_a.label) {
|
|
609
609
|
case 0:
|
|
610
610
|
onClose = jest.fn();
|
|
611
611
|
ref = react_1.default.createRef();
|
|
612
612
|
stepToReach = 2;
|
|
613
613
|
mockPdfWidth = constants_1.ZOOM_STEPS[stepToReach - 1] + 1;
|
|
614
|
-
|
|
614
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
615
615
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
616
|
-
})
|
|
616
|
+
}).user;
|
|
617
617
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
618
618
|
case 1:
|
|
619
|
-
|
|
619
|
+
_a.sent();
|
|
620
620
|
// eslint-disable-next-line testing-library/no-node-access
|
|
621
621
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
622
622
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
623
623
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
624
624
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
625
625
|
case 2:
|
|
626
|
-
|
|
626
|
+
_a.sent();
|
|
627
627
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
628
628
|
expect(react_2.screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
629
629
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
|
|
630
630
|
case 3:
|
|
631
|
-
|
|
631
|
+
_a.sent();
|
|
632
632
|
// eslint-disable-next-line testing-library/no-node-access
|
|
633
633
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[stepToReach]));
|
|
634
634
|
return [2 /*return*/];
|
|
@@ -636,19 +636,19 @@ describe('Pdf Preview', function () {
|
|
|
636
636
|
});
|
|
637
637
|
}); });
|
|
638
638
|
test('When fit to width is active, resize of the window update width of the pdf', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
639
|
-
var onClose, ref, mockPdfWidth,
|
|
640
|
-
return __generator(this, function (
|
|
641
|
-
switch (
|
|
639
|
+
var onClose, ref, mockPdfWidth, user, getPreviewClientWidthMock;
|
|
640
|
+
return __generator(this, function (_a) {
|
|
641
|
+
switch (_a.label) {
|
|
642
642
|
case 0:
|
|
643
643
|
onClose = jest.fn();
|
|
644
644
|
ref = react_1.default.createRef();
|
|
645
645
|
mockPdfWidth = [1001, 1501, 2001];
|
|
646
|
-
|
|
646
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
647
647
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
648
|
-
})
|
|
648
|
+
}).user;
|
|
649
649
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
650
650
|
case 1:
|
|
651
|
-
|
|
651
|
+
_a.sent();
|
|
652
652
|
// eslint-disable-next-line testing-library/no-node-access
|
|
653
653
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
654
654
|
expect(react_2.screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -656,7 +656,7 @@ describe('Pdf Preview', function () {
|
|
|
656
656
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[0]);
|
|
657
657
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
658
658
|
case 2:
|
|
659
|
-
|
|
659
|
+
_a.sent();
|
|
660
660
|
// eslint-disable-next-line testing-library/no-node-access
|
|
661
661
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[0]));
|
|
662
662
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[1]);
|
|
@@ -671,26 +671,25 @@ describe('Pdf Preview', function () {
|
|
|
671
671
|
});
|
|
672
672
|
}); });
|
|
673
673
|
test('Click on disabled decrease/increase zoom actions does not change step and does not close preview', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
674
|
-
var onClose, ref,
|
|
675
|
-
return __generator(this, function (
|
|
676
|
-
switch (
|
|
674
|
+
var onClose, ref, user;
|
|
675
|
+
return __generator(this, function (_a) {
|
|
676
|
+
switch (_a.label) {
|
|
677
677
|
case 0:
|
|
678
678
|
onClose = jest.fn();
|
|
679
679
|
ref = react_1.default.createRef();
|
|
680
|
-
|
|
681
|
-
_a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
680
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
682
681
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
683
|
-
})
|
|
682
|
+
}).user;
|
|
684
683
|
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
685
684
|
case 1:
|
|
686
|
-
|
|
685
|
+
_a.sent();
|
|
687
686
|
// eslint-disable-next-line testing-library/no-node-access
|
|
688
687
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
689
688
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
690
689
|
expect(react_2.screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
691
690
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomOutIcon))];
|
|
692
691
|
case 2:
|
|
693
|
-
|
|
692
|
+
_a.sent();
|
|
694
693
|
// eslint-disable-next-line testing-library/no-node-access
|
|
695
694
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[0]));
|
|
696
695
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -699,14 +698,14 @@ describe('Pdf Preview', function () {
|
|
|
699
698
|
.mockReturnValue(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]);
|
|
700
699
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomFitToWidthIcon))];
|
|
701
700
|
case 3:
|
|
702
|
-
|
|
701
|
+
_a.sent();
|
|
703
702
|
// eslint-disable-next-line testing-library/no-node-access
|
|
704
703
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
|
|
705
704
|
// eslint-disable-next-line testing-library/no-node-access,jest-dom/prefer-enabled-disabled
|
|
706
705
|
expect(react_2.screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
707
706
|
return [4 /*yield*/, user.click(react_2.screen.getByTestId(zoomInIcon))];
|
|
708
707
|
case 4:
|
|
709
|
-
|
|
708
|
+
_a.sent();
|
|
710
709
|
// eslint-disable-next-line testing-library/no-node-access
|
|
711
710
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(constants_1.ZOOM_STEPS[constants_1.ZOOM_STEPS.length - 1]));
|
|
712
711
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -714,5 +713,266 @@ describe('Pdf Preview', function () {
|
|
|
714
713
|
}
|
|
715
714
|
});
|
|
716
715
|
}); });
|
|
716
|
+
describe('Page selector', function () {
|
|
717
|
+
test('shows page controller', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
718
|
+
var onClose, ref;
|
|
719
|
+
return __generator(this, function (_a) {
|
|
720
|
+
switch (_a.label) {
|
|
721
|
+
case 0:
|
|
722
|
+
onClose = jest.fn();
|
|
723
|
+
ref = react_1.default.createRef();
|
|
724
|
+
(0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
725
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
726
|
+
});
|
|
727
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
728
|
+
case 1:
|
|
729
|
+
_a.sent();
|
|
730
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
731
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
732
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
733
|
+
expect(react_2.screen.getByRole('textbox', { name: /current page/i })).toBeVisible();
|
|
734
|
+
// mock pdf has 4 pages
|
|
735
|
+
expect(react_2.screen.getByText('4')).toBeVisible();
|
|
736
|
+
return [2 /*return*/];
|
|
737
|
+
}
|
|
738
|
+
});
|
|
739
|
+
}); });
|
|
740
|
+
test('blur is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
741
|
+
var onClose, ref, user, pageInput;
|
|
742
|
+
return __generator(this, function (_a) {
|
|
743
|
+
switch (_a.label) {
|
|
744
|
+
case 0:
|
|
745
|
+
onClose = jest.fn();
|
|
746
|
+
ref = react_1.default.createRef();
|
|
747
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
748
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
749
|
+
}).user;
|
|
750
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
751
|
+
case 1:
|
|
752
|
+
_a.sent();
|
|
753
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
754
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
755
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
756
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
757
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
758
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
759
|
+
case 2:
|
|
760
|
+
_a.sent();
|
|
761
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
762
|
+
case 3:
|
|
763
|
+
_a.sent();
|
|
764
|
+
return [4 /*yield*/, user.tab()];
|
|
765
|
+
case 4:
|
|
766
|
+
_a.sent();
|
|
767
|
+
expect(pageInput).not.toHaveFocus();
|
|
768
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
769
|
+
return [2 /*return*/];
|
|
770
|
+
}
|
|
771
|
+
});
|
|
772
|
+
}); });
|
|
773
|
+
test('enter key is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
774
|
+
var onClose, ref, user, pageInput;
|
|
775
|
+
return __generator(this, function (_a) {
|
|
776
|
+
switch (_a.label) {
|
|
777
|
+
case 0:
|
|
778
|
+
onClose = jest.fn();
|
|
779
|
+
ref = react_1.default.createRef();
|
|
780
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
781
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
782
|
+
}).user;
|
|
783
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
784
|
+
case 1:
|
|
785
|
+
_a.sent();
|
|
786
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
787
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
788
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
789
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
790
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
791
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
792
|
+
case 2:
|
|
793
|
+
_a.sent();
|
|
794
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
795
|
+
case 3:
|
|
796
|
+
_a.sent();
|
|
797
|
+
return [4 /*yield*/, user.type(pageInput, '{Enter}')];
|
|
798
|
+
case 4:
|
|
799
|
+
_a.sent();
|
|
800
|
+
expect(pageInput).not.toHaveFocus();
|
|
801
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
802
|
+
return [2 /*return*/];
|
|
803
|
+
}
|
|
804
|
+
});
|
|
805
|
+
}); });
|
|
806
|
+
test('when input is confirmed, input loses focus and the document is scrolled to typed page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
807
|
+
var onClose, ref, scrollIntoViewFn, user, pageInput;
|
|
808
|
+
return __generator(this, function (_a) {
|
|
809
|
+
switch (_a.label) {
|
|
810
|
+
case 0:
|
|
811
|
+
onClose = jest.fn();
|
|
812
|
+
ref = react_1.default.createRef();
|
|
813
|
+
scrollIntoViewFn = jest.fn();
|
|
814
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
815
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
816
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
817
|
+
}).user;
|
|
818
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
819
|
+
case 1:
|
|
820
|
+
_a.sent();
|
|
821
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
822
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
823
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
824
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
825
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
826
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
827
|
+
case 2:
|
|
828
|
+
_a.sent();
|
|
829
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
830
|
+
case 3:
|
|
831
|
+
_a.sent();
|
|
832
|
+
return [4 /*yield*/, user.click(react_2.screen.getByText(/page/i))];
|
|
833
|
+
case 4:
|
|
834
|
+
_a.sent();
|
|
835
|
+
expect(pageInput).not.toHaveFocus();
|
|
836
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
837
|
+
expect(scrollIntoViewFn).toHaveBeenCalledTimes(1);
|
|
838
|
+
expect(scrollIntoViewFn.mock.instances[0]).toHaveAttribute('data-page-number', '2');
|
|
839
|
+
return [2 /*return*/];
|
|
840
|
+
}
|
|
841
|
+
});
|
|
842
|
+
}); });
|
|
843
|
+
test('when input is confirmed with an invalid value, input loses focus and the input value is reset to previous valid page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
844
|
+
var onClose, ref, scrollIntoViewFn, user, pageInput;
|
|
845
|
+
return __generator(this, function (_a) {
|
|
846
|
+
switch (_a.label) {
|
|
847
|
+
case 0:
|
|
848
|
+
onClose = jest.fn();
|
|
849
|
+
ref = react_1.default.createRef();
|
|
850
|
+
scrollIntoViewFn = jest.fn();
|
|
851
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
852
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
853
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
854
|
+
}).user;
|
|
855
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
856
|
+
case 1:
|
|
857
|
+
_a.sent();
|
|
858
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
859
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
860
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
861
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
862
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
863
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
864
|
+
case 2:
|
|
865
|
+
_a.sent();
|
|
866
|
+
return [4 /*yield*/, user.type(pageInput, 'invalid')];
|
|
867
|
+
case 3:
|
|
868
|
+
_a.sent();
|
|
869
|
+
return [4 /*yield*/, user.click(react_2.screen.getByText(/page/i))];
|
|
870
|
+
case 4:
|
|
871
|
+
_a.sent();
|
|
872
|
+
expect(pageInput).not.toHaveFocus();
|
|
873
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
874
|
+
expect(scrollIntoViewFn).not.toHaveBeenCalled();
|
|
875
|
+
return [2 /*return*/];
|
|
876
|
+
}
|
|
877
|
+
});
|
|
878
|
+
}); });
|
|
879
|
+
test('on scroll, if focus is not on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
880
|
+
var onClose, ref, pageInput, page2Element;
|
|
881
|
+
return __generator(this, function (_a) {
|
|
882
|
+
switch (_a.label) {
|
|
883
|
+
case 0:
|
|
884
|
+
onClose = jest.fn();
|
|
885
|
+
ref = react_1.default.createRef();
|
|
886
|
+
(0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
887
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
888
|
+
});
|
|
889
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
890
|
+
case 1:
|
|
891
|
+
_a.sent();
|
|
892
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
893
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
894
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
895
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
896
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
897
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
898
|
+
expect(page2Element).not.toBeNull();
|
|
899
|
+
return [4 /*yield*/, (0, test_utils_1.triggerObserver)(page2Element)];
|
|
900
|
+
case 2:
|
|
901
|
+
_a.sent();
|
|
902
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
903
|
+
return [2 /*return*/];
|
|
904
|
+
}
|
|
905
|
+
});
|
|
906
|
+
}); });
|
|
907
|
+
test('on scroll, if focus is on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
908
|
+
var onClose, ref, user, pageInput, page2Element;
|
|
909
|
+
return __generator(this, function (_a) {
|
|
910
|
+
switch (_a.label) {
|
|
911
|
+
case 0:
|
|
912
|
+
onClose = jest.fn();
|
|
913
|
+
ref = react_1.default.createRef();
|
|
914
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
915
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
916
|
+
}).user;
|
|
917
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
918
|
+
case 1:
|
|
919
|
+
_a.sent();
|
|
920
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
921
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
922
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
923
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
924
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
925
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
926
|
+
case 2:
|
|
927
|
+
_a.sent();
|
|
928
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
929
|
+
case 3:
|
|
930
|
+
_a.sent();
|
|
931
|
+
expect(pageInput).toHaveFocus();
|
|
932
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
933
|
+
expect(page2Element).not.toBeNull();
|
|
934
|
+
return [4 /*yield*/, (0, test_utils_1.triggerObserver)(page2Element)];
|
|
935
|
+
case 4:
|
|
936
|
+
_a.sent();
|
|
937
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
938
|
+
expect(pageInput).toHaveFocus();
|
|
939
|
+
return [2 /*return*/];
|
|
940
|
+
}
|
|
941
|
+
});
|
|
942
|
+
}); });
|
|
943
|
+
test('esc key makes user exit from the preview, even when focus is on input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
944
|
+
var onClose, ref, user, pageInput;
|
|
945
|
+
return __generator(this, function (_a) {
|
|
946
|
+
switch (_a.label) {
|
|
947
|
+
case 0:
|
|
948
|
+
onClose = jest.fn();
|
|
949
|
+
ref = react_1.default.createRef();
|
|
950
|
+
user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
951
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
952
|
+
}).user;
|
|
953
|
+
return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
|
|
954
|
+
case 1:
|
|
955
|
+
_a.sent();
|
|
956
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
957
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
958
|
+
expect(react_2.screen.getByText(/page/i)).toBeVisible();
|
|
959
|
+
pageInput = react_2.screen.getByRole('textbox', { name: /current page/i });
|
|
960
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
961
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
962
|
+
case 2:
|
|
963
|
+
_a.sent();
|
|
964
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
965
|
+
case 3:
|
|
966
|
+
_a.sent();
|
|
967
|
+
expect(pageInput).toHaveFocus();
|
|
968
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
969
|
+
case 4:
|
|
970
|
+
_a.sent();
|
|
971
|
+
expect(onClose).toHaveBeenCalled();
|
|
972
|
+
return [2 /*return*/];
|
|
973
|
+
}
|
|
974
|
+
});
|
|
975
|
+
}); });
|
|
976
|
+
});
|
|
717
977
|
});
|
|
718
978
|
//# sourceMappingURL=PdfPreview.test.js.map
|