@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
|
@@ -42,9 +42,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
42
42
|
import React from 'react';
|
|
43
43
|
import { act, screen, waitFor } from '@testing-library/react';
|
|
44
44
|
import userEvent from '@testing-library/user-event';
|
|
45
|
-
import { loadPDF, setup } from '../utils/test-utils';
|
|
46
45
|
import { ZOOM_STEPS } from './constants';
|
|
47
46
|
import { PdfPreview } from './PdfPreview';
|
|
47
|
+
import { loadPDF, setup, triggerObserver } from 'test-utils';
|
|
48
48
|
var pdfFile = loadPDF('./__mocks__/_pdf.pdf');
|
|
49
49
|
var zoomInIcon = 'icon: Plus';
|
|
50
50
|
var zoomOutIcon = 'icon: Minus';
|
|
@@ -270,10 +270,10 @@ describe('Pdf Preview', function () {
|
|
|
270
270
|
_a.sent();
|
|
271
271
|
expect(actions[0].onClick).toHaveBeenCalled();
|
|
272
272
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
273
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
273
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
274
274
|
return [4 /*yield*/, user.click(action2Item)];
|
|
275
275
|
case 4:
|
|
276
|
-
// click on action 2 skips the handler of the action since it is disabled and
|
|
276
|
+
// click on action 2 skips the handler of the action since it is disabled and does not call onClose
|
|
277
277
|
_a.sent();
|
|
278
278
|
expect(actions[1].onClick).not.toHaveBeenCalled();
|
|
279
279
|
expect(onClose).toHaveBeenCalledTimes(1);
|
|
@@ -296,14 +296,14 @@ describe('Pdf Preview', function () {
|
|
|
296
296
|
});
|
|
297
297
|
}); });
|
|
298
298
|
test('Zoom starts at lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
299
|
-
var onClose,
|
|
299
|
+
var onClose, canvas;
|
|
300
300
|
return __generator(this, function (_a) {
|
|
301
301
|
switch (_a.label) {
|
|
302
302
|
case 0:
|
|
303
303
|
onClose = jest.fn();
|
|
304
|
-
|
|
304
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
|
|
305
305
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
306
|
-
})
|
|
306
|
+
});
|
|
307
307
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
308
308
|
case 1:
|
|
309
309
|
_a.sent();
|
|
@@ -438,19 +438,19 @@ describe('Pdf Preview', function () {
|
|
|
438
438
|
});
|
|
439
439
|
}); });
|
|
440
440
|
test('Fit to width zoom set width of pdf to width of the window', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
441
|
-
var onClose, ref, mockPdfWidth,
|
|
442
|
-
return __generator(this, function (
|
|
443
|
-
switch (
|
|
441
|
+
var onClose, ref, mockPdfWidth, user;
|
|
442
|
+
return __generator(this, function (_a) {
|
|
443
|
+
switch (_a.label) {
|
|
444
444
|
case 0:
|
|
445
445
|
onClose = jest.fn();
|
|
446
446
|
ref = React.createRef();
|
|
447
447
|
mockPdfWidth = 1000;
|
|
448
|
-
|
|
448
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
449
449
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
450
|
-
})
|
|
450
|
+
}).user;
|
|
451
451
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
452
452
|
case 1:
|
|
453
|
-
|
|
453
|
+
_a.sent();
|
|
454
454
|
// eslint-disable-next-line testing-library/no-node-access
|
|
455
455
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
456
456
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -459,7 +459,7 @@ describe('Pdf Preview', function () {
|
|
|
459
459
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
460
460
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
461
461
|
case 2:
|
|
462
|
-
|
|
462
|
+
_a.sent();
|
|
463
463
|
// eslint-disable-next-line testing-library/no-node-access
|
|
464
464
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
465
465
|
expect(screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
@@ -469,19 +469,19 @@ describe('Pdf Preview', function () {
|
|
|
469
469
|
});
|
|
470
470
|
}); });
|
|
471
471
|
test('Reset zoom set width to lowest step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
472
|
-
var onClose, ref, mockPdfWidth,
|
|
473
|
-
return __generator(this, function (
|
|
474
|
-
switch (
|
|
472
|
+
var onClose, ref, mockPdfWidth, user;
|
|
473
|
+
return __generator(this, function (_a) {
|
|
474
|
+
switch (_a.label) {
|
|
475
475
|
case 0:
|
|
476
476
|
onClose = jest.fn();
|
|
477
477
|
ref = React.createRef();
|
|
478
478
|
mockPdfWidth = 1000;
|
|
479
|
-
|
|
479
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
480
480
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
481
|
-
})
|
|
481
|
+
}).user;
|
|
482
482
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
483
483
|
case 1:
|
|
484
|
-
|
|
484
|
+
_a.sent();
|
|
485
485
|
// eslint-disable-next-line testing-library/no-node-access
|
|
486
486
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
487
487
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -490,14 +490,14 @@ describe('Pdf Preview', function () {
|
|
|
490
490
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
491
491
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
492
492
|
case 2:
|
|
493
|
-
|
|
493
|
+
_a.sent();
|
|
494
494
|
// eslint-disable-next-line testing-library/no-node-access
|
|
495
495
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth));
|
|
496
496
|
expect(screen.getByTestId(zoomResetWidthIcon)).toBeVisible();
|
|
497
497
|
expect(screen.queryByTestId(zoomFitToWidthIcon)).not.toBeInTheDocument();
|
|
498
498
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomResetWidthIcon))];
|
|
499
499
|
case 3:
|
|
500
|
-
|
|
500
|
+
_a.sent();
|
|
501
501
|
// eslint-disable-next-line testing-library/no-node-access
|
|
502
502
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[0]));
|
|
503
503
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -507,26 +507,26 @@ describe('Pdf Preview', function () {
|
|
|
507
507
|
});
|
|
508
508
|
}); });
|
|
509
509
|
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 () {
|
|
510
|
-
var onClose, ref, mockPdfWidth,
|
|
511
|
-
return __generator(this, function (
|
|
512
|
-
switch (
|
|
510
|
+
var onClose, ref, mockPdfWidth, user;
|
|
511
|
+
return __generator(this, function (_a) {
|
|
512
|
+
switch (_a.label) {
|
|
513
513
|
case 0:
|
|
514
514
|
onClose = jest.fn();
|
|
515
515
|
ref = React.createRef();
|
|
516
516
|
mockPdfWidth = ZOOM_STEPS[0] - 1;
|
|
517
|
-
|
|
517
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
518
518
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
519
|
-
})
|
|
519
|
+
}).user;
|
|
520
520
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
521
521
|
case 1:
|
|
522
|
-
|
|
522
|
+
_a.sent();
|
|
523
523
|
// eslint-disable-next-line testing-library/no-node-access
|
|
524
524
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
525
525
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
526
526
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
527
527
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
528
528
|
case 2:
|
|
529
|
-
|
|
529
|
+
_a.sent();
|
|
530
530
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
531
531
|
expect(screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
532
532
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -536,26 +536,26 @@ describe('Pdf Preview', function () {
|
|
|
536
536
|
});
|
|
537
537
|
}); });
|
|
538
538
|
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 () {
|
|
539
|
-
var onClose, ref, mockPdfWidth,
|
|
540
|
-
return __generator(this, function (
|
|
541
|
-
switch (
|
|
539
|
+
var onClose, ref, mockPdfWidth, user;
|
|
540
|
+
return __generator(this, function (_a) {
|
|
541
|
+
switch (_a.label) {
|
|
542
542
|
case 0:
|
|
543
543
|
onClose = jest.fn();
|
|
544
544
|
ref = React.createRef();
|
|
545
545
|
mockPdfWidth = ZOOM_STEPS[ZOOM_STEPS.length - 1] + 1;
|
|
546
|
-
|
|
546
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
547
547
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
548
|
-
})
|
|
548
|
+
}).user;
|
|
549
549
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
550
550
|
case 1:
|
|
551
|
-
|
|
551
|
+
_a.sent();
|
|
552
552
|
// eslint-disable-next-line testing-library/no-node-access
|
|
553
553
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
554
554
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
555
555
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
556
556
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
557
557
|
case 2:
|
|
558
|
-
|
|
558
|
+
_a.sent();
|
|
559
559
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
560
560
|
expect(screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
561
561
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
@@ -565,32 +565,32 @@ describe('Pdf Preview', function () {
|
|
|
565
565
|
});
|
|
566
566
|
}); });
|
|
567
567
|
test('After fit to width, decrease zoom set zoom to nearest lower zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
568
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
569
|
-
return __generator(this, function (
|
|
570
|
-
switch (
|
|
568
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
569
|
+
return __generator(this, function (_a) {
|
|
570
|
+
switch (_a.label) {
|
|
571
571
|
case 0:
|
|
572
572
|
onClose = jest.fn();
|
|
573
573
|
ref = React.createRef();
|
|
574
574
|
stepToReach = 1;
|
|
575
575
|
mockPdfWidth = ZOOM_STEPS[stepToReach + 1] - 1;
|
|
576
|
-
|
|
576
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
577
577
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
578
|
-
})
|
|
578
|
+
}).user;
|
|
579
579
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
580
580
|
case 1:
|
|
581
|
-
|
|
581
|
+
_a.sent();
|
|
582
582
|
// eslint-disable-next-line testing-library/no-node-access
|
|
583
583
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
584
584
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
585
585
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
586
586
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
587
587
|
case 2:
|
|
588
|
-
|
|
588
|
+
_a.sent();
|
|
589
589
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
590
590
|
expect(screen.getByTestId(zoomOutIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
591
591
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomOutIcon))];
|
|
592
592
|
case 3:
|
|
593
|
-
|
|
593
|
+
_a.sent();
|
|
594
594
|
// eslint-disable-next-line testing-library/no-node-access
|
|
595
595
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[stepToReach]));
|
|
596
596
|
return [2 /*return*/];
|
|
@@ -598,32 +598,32 @@ describe('Pdf Preview', function () {
|
|
|
598
598
|
});
|
|
599
599
|
}); });
|
|
600
600
|
test('After fit to width, increase zoom set zoom to nearest greater zoom step', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
601
|
-
var onClose, ref, stepToReach, mockPdfWidth,
|
|
602
|
-
return __generator(this, function (
|
|
603
|
-
switch (
|
|
601
|
+
var onClose, ref, stepToReach, mockPdfWidth, user;
|
|
602
|
+
return __generator(this, function (_a) {
|
|
603
|
+
switch (_a.label) {
|
|
604
604
|
case 0:
|
|
605
605
|
onClose = jest.fn();
|
|
606
606
|
ref = React.createRef();
|
|
607
607
|
stepToReach = 2;
|
|
608
608
|
mockPdfWidth = ZOOM_STEPS[stepToReach - 1] + 1;
|
|
609
|
-
|
|
609
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
610
610
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
611
|
-
})
|
|
611
|
+
}).user;
|
|
612
612
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
613
613
|
case 1:
|
|
614
|
-
|
|
614
|
+
_a.sent();
|
|
615
615
|
// eslint-disable-next-line testing-library/no-node-access
|
|
616
616
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
617
617
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
618
618
|
jest.spyOn(ref.current, 'clientWidth', 'get').mockReturnValue(mockPdfWidth);
|
|
619
619
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
620
620
|
case 2:
|
|
621
|
-
|
|
621
|
+
_a.sent();
|
|
622
622
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
623
623
|
expect(screen.getByTestId(zoomInIcon).parentElement).not.toHaveAttribute('disabled', '');
|
|
624
624
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomInIcon))];
|
|
625
625
|
case 3:
|
|
626
|
-
|
|
626
|
+
_a.sent();
|
|
627
627
|
// eslint-disable-next-line testing-library/no-node-access
|
|
628
628
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[stepToReach]));
|
|
629
629
|
return [2 /*return*/];
|
|
@@ -631,19 +631,19 @@ describe('Pdf Preview', function () {
|
|
|
631
631
|
});
|
|
632
632
|
}); });
|
|
633
633
|
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 () {
|
|
634
|
-
var onClose, ref, mockPdfWidth,
|
|
635
|
-
return __generator(this, function (
|
|
636
|
-
switch (
|
|
634
|
+
var onClose, ref, mockPdfWidth, user, getPreviewClientWidthMock;
|
|
635
|
+
return __generator(this, function (_a) {
|
|
636
|
+
switch (_a.label) {
|
|
637
637
|
case 0:
|
|
638
638
|
onClose = jest.fn();
|
|
639
639
|
ref = React.createRef();
|
|
640
640
|
mockPdfWidth = [1001, 1501, 2001];
|
|
641
|
-
|
|
641
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
642
642
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
643
|
-
})
|
|
643
|
+
}).user;
|
|
644
644
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
645
645
|
case 1:
|
|
646
|
-
|
|
646
|
+
_a.sent();
|
|
647
647
|
// eslint-disable-next-line testing-library/no-node-access
|
|
648
648
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
649
649
|
expect(screen.getByTestId(zoomFitToWidthIcon)).toBeVisible();
|
|
@@ -651,7 +651,7 @@ describe('Pdf Preview', function () {
|
|
|
651
651
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[0]);
|
|
652
652
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
653
653
|
case 2:
|
|
654
|
-
|
|
654
|
+
_a.sent();
|
|
655
655
|
// eslint-disable-next-line testing-library/no-node-access
|
|
656
656
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(mockPdfWidth[0]));
|
|
657
657
|
getPreviewClientWidthMock.mockReturnValueOnce(mockPdfWidth[1]);
|
|
@@ -666,26 +666,25 @@ describe('Pdf Preview', function () {
|
|
|
666
666
|
});
|
|
667
667
|
}); });
|
|
668
668
|
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 () {
|
|
669
|
-
var onClose, ref,
|
|
670
|
-
return __generator(this, function (
|
|
671
|
-
switch (
|
|
669
|
+
var onClose, ref, user;
|
|
670
|
+
return __generator(this, function (_a) {
|
|
671
|
+
switch (_a.label) {
|
|
672
672
|
case 0:
|
|
673
673
|
onClose = jest.fn();
|
|
674
674
|
ref = React.createRef();
|
|
675
|
-
|
|
676
|
-
_a = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
675
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
677
676
|
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
678
|
-
})
|
|
677
|
+
}).user;
|
|
679
678
|
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
680
679
|
case 1:
|
|
681
|
-
|
|
680
|
+
_a.sent();
|
|
682
681
|
// eslint-disable-next-line testing-library/no-node-access
|
|
683
682
|
expect(document.querySelector('canvas')).toBeVisible();
|
|
684
683
|
// eslint-disable-next-line jest-dom/prefer-enabled-disabled,testing-library/no-node-access
|
|
685
684
|
expect(screen.getByTestId(zoomOutIcon).parentElement).toHaveAttribute('disabled', '');
|
|
686
685
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomOutIcon))];
|
|
687
686
|
case 2:
|
|
688
|
-
|
|
687
|
+
_a.sent();
|
|
689
688
|
// eslint-disable-next-line testing-library/no-node-access
|
|
690
689
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[0]));
|
|
691
690
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -694,14 +693,14 @@ describe('Pdf Preview', function () {
|
|
|
694
693
|
.mockReturnValue(ZOOM_STEPS[ZOOM_STEPS.length - 1]);
|
|
695
694
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomFitToWidthIcon))];
|
|
696
695
|
case 3:
|
|
697
|
-
|
|
696
|
+
_a.sent();
|
|
698
697
|
// eslint-disable-next-line testing-library/no-node-access
|
|
699
698
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[ZOOM_STEPS.length - 1]));
|
|
700
699
|
// eslint-disable-next-line testing-library/no-node-access,jest-dom/prefer-enabled-disabled
|
|
701
700
|
expect(screen.getByTestId(zoomInIcon).parentElement).toHaveAttribute('disabled', '');
|
|
702
701
|
return [4 /*yield*/, user.click(screen.getByTestId(zoomInIcon))];
|
|
703
702
|
case 4:
|
|
704
|
-
|
|
703
|
+
_a.sent();
|
|
705
704
|
// eslint-disable-next-line testing-library/no-node-access
|
|
706
705
|
expect(document.querySelector('canvas')).toHaveAttribute('width', "".concat(ZOOM_STEPS[ZOOM_STEPS.length - 1]));
|
|
707
706
|
expect(onClose).not.toHaveBeenCalled();
|
|
@@ -709,5 +708,266 @@ describe('Pdf Preview', function () {
|
|
|
709
708
|
}
|
|
710
709
|
});
|
|
711
710
|
}); });
|
|
711
|
+
describe('Page selector', function () {
|
|
712
|
+
test('shows page controller', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
713
|
+
var onClose, ref;
|
|
714
|
+
return __generator(this, function (_a) {
|
|
715
|
+
switch (_a.label) {
|
|
716
|
+
case 0:
|
|
717
|
+
onClose = jest.fn();
|
|
718
|
+
ref = React.createRef();
|
|
719
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
720
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
721
|
+
});
|
|
722
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
723
|
+
case 1:
|
|
724
|
+
_a.sent();
|
|
725
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
726
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
727
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
728
|
+
expect(screen.getByRole('textbox', { name: /current page/i })).toBeVisible();
|
|
729
|
+
// mock pdf has 4 pages
|
|
730
|
+
expect(screen.getByText('4')).toBeVisible();
|
|
731
|
+
return [2 /*return*/];
|
|
732
|
+
}
|
|
733
|
+
});
|
|
734
|
+
}); });
|
|
735
|
+
test('blur is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
736
|
+
var onClose, ref, user, pageInput;
|
|
737
|
+
return __generator(this, function (_a) {
|
|
738
|
+
switch (_a.label) {
|
|
739
|
+
case 0:
|
|
740
|
+
onClose = jest.fn();
|
|
741
|
+
ref = React.createRef();
|
|
742
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
743
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
744
|
+
}).user;
|
|
745
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
746
|
+
case 1:
|
|
747
|
+
_a.sent();
|
|
748
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
749
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
750
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
751
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
752
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
753
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
754
|
+
case 2:
|
|
755
|
+
_a.sent();
|
|
756
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
757
|
+
case 3:
|
|
758
|
+
_a.sent();
|
|
759
|
+
return [4 /*yield*/, user.tab()];
|
|
760
|
+
case 4:
|
|
761
|
+
_a.sent();
|
|
762
|
+
expect(pageInput).not.toHaveFocus();
|
|
763
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
764
|
+
return [2 /*return*/];
|
|
765
|
+
}
|
|
766
|
+
});
|
|
767
|
+
}); });
|
|
768
|
+
test('enter key is a confirmation event on page input', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
769
|
+
var onClose, ref, user, pageInput;
|
|
770
|
+
return __generator(this, function (_a) {
|
|
771
|
+
switch (_a.label) {
|
|
772
|
+
case 0:
|
|
773
|
+
onClose = jest.fn();
|
|
774
|
+
ref = React.createRef();
|
|
775
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
776
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
777
|
+
}).user;
|
|
778
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
779
|
+
case 1:
|
|
780
|
+
_a.sent();
|
|
781
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
782
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
783
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
784
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
785
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
786
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
787
|
+
case 2:
|
|
788
|
+
_a.sent();
|
|
789
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
790
|
+
case 3:
|
|
791
|
+
_a.sent();
|
|
792
|
+
return [4 /*yield*/, user.type(pageInput, '{Enter}')];
|
|
793
|
+
case 4:
|
|
794
|
+
_a.sent();
|
|
795
|
+
expect(pageInput).not.toHaveFocus();
|
|
796
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
797
|
+
return [2 /*return*/];
|
|
798
|
+
}
|
|
799
|
+
});
|
|
800
|
+
}); });
|
|
801
|
+
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 () {
|
|
802
|
+
var onClose, ref, scrollIntoViewFn, user, pageInput;
|
|
803
|
+
return __generator(this, function (_a) {
|
|
804
|
+
switch (_a.label) {
|
|
805
|
+
case 0:
|
|
806
|
+
onClose = jest.fn();
|
|
807
|
+
ref = React.createRef();
|
|
808
|
+
scrollIntoViewFn = jest.fn();
|
|
809
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
810
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
811
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
812
|
+
}).user;
|
|
813
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
814
|
+
case 1:
|
|
815
|
+
_a.sent();
|
|
816
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
817
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
818
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
819
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
820
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
821
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
822
|
+
case 2:
|
|
823
|
+
_a.sent();
|
|
824
|
+
return [4 /*yield*/, user.type(pageInput, '2')];
|
|
825
|
+
case 3:
|
|
826
|
+
_a.sent();
|
|
827
|
+
return [4 /*yield*/, user.click(screen.getByText(/page/i))];
|
|
828
|
+
case 4:
|
|
829
|
+
_a.sent();
|
|
830
|
+
expect(pageInput).not.toHaveFocus();
|
|
831
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
832
|
+
expect(scrollIntoViewFn).toHaveBeenCalledTimes(1);
|
|
833
|
+
expect(scrollIntoViewFn.mock.instances[0]).toHaveAttribute('data-page-number', '2');
|
|
834
|
+
return [2 /*return*/];
|
|
835
|
+
}
|
|
836
|
+
});
|
|
837
|
+
}); });
|
|
838
|
+
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 () {
|
|
839
|
+
var onClose, ref, scrollIntoViewFn, user, pageInput;
|
|
840
|
+
return __generator(this, function (_a) {
|
|
841
|
+
switch (_a.label) {
|
|
842
|
+
case 0:
|
|
843
|
+
onClose = jest.fn();
|
|
844
|
+
ref = React.createRef();
|
|
845
|
+
scrollIntoViewFn = jest.fn();
|
|
846
|
+
window.HTMLElement.prototype.scrollIntoView = scrollIntoViewFn;
|
|
847
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
848
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
849
|
+
}).user;
|
|
850
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
851
|
+
case 1:
|
|
852
|
+
_a.sent();
|
|
853
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
854
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
855
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
856
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
857
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
858
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
859
|
+
case 2:
|
|
860
|
+
_a.sent();
|
|
861
|
+
return [4 /*yield*/, user.type(pageInput, 'invalid')];
|
|
862
|
+
case 3:
|
|
863
|
+
_a.sent();
|
|
864
|
+
return [4 /*yield*/, user.click(screen.getByText(/page/i))];
|
|
865
|
+
case 4:
|
|
866
|
+
_a.sent();
|
|
867
|
+
expect(pageInput).not.toHaveFocus();
|
|
868
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
869
|
+
expect(scrollIntoViewFn).not.toHaveBeenCalled();
|
|
870
|
+
return [2 /*return*/];
|
|
871
|
+
}
|
|
872
|
+
});
|
|
873
|
+
}); });
|
|
874
|
+
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 () {
|
|
875
|
+
var onClose, ref, pageInput, page2Element;
|
|
876
|
+
return __generator(this, function (_a) {
|
|
877
|
+
switch (_a.label) {
|
|
878
|
+
case 0:
|
|
879
|
+
onClose = jest.fn();
|
|
880
|
+
ref = React.createRef();
|
|
881
|
+
setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
882
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
883
|
+
});
|
|
884
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
885
|
+
case 1:
|
|
886
|
+
_a.sent();
|
|
887
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
888
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
889
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
890
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
891
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
892
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
893
|
+
expect(page2Element).not.toBeNull();
|
|
894
|
+
return [4 /*yield*/, triggerObserver(page2Element)];
|
|
895
|
+
case 2:
|
|
896
|
+
_a.sent();
|
|
897
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
898
|
+
return [2 /*return*/];
|
|
899
|
+
}
|
|
900
|
+
});
|
|
901
|
+
}); });
|
|
902
|
+
test('on scroll, if focus is on input, value is updated with current page', function () { return __awaiter(void 0, void 0, void 0, function () {
|
|
903
|
+
var onClose, ref, user, pageInput, page2Element;
|
|
904
|
+
return __generator(this, function (_a) {
|
|
905
|
+
switch (_a.label) {
|
|
906
|
+
case 0:
|
|
907
|
+
onClose = jest.fn();
|
|
908
|
+
ref = React.createRef();
|
|
909
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
910
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
911
|
+
}).user;
|
|
912
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
913
|
+
case 1:
|
|
914
|
+
_a.sent();
|
|
915
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
916
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
917
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
918
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
919
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
920
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
921
|
+
case 2:
|
|
922
|
+
_a.sent();
|
|
923
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
924
|
+
case 3:
|
|
925
|
+
_a.sent();
|
|
926
|
+
expect(pageInput).toHaveFocus();
|
|
927
|
+
page2Element = document.querySelector('[data-page-number="2"]');
|
|
928
|
+
expect(page2Element).not.toBeNull();
|
|
929
|
+
return [4 /*yield*/, triggerObserver(page2Element)];
|
|
930
|
+
case 4:
|
|
931
|
+
_a.sent();
|
|
932
|
+
expect(pageInput).toHaveDisplayValue('2');
|
|
933
|
+
expect(pageInput).toHaveFocus();
|
|
934
|
+
return [2 /*return*/];
|
|
935
|
+
}
|
|
936
|
+
});
|
|
937
|
+
}); });
|
|
938
|
+
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 () {
|
|
939
|
+
var onClose, ref, user, pageInput;
|
|
940
|
+
return __generator(this, function (_a) {
|
|
941
|
+
switch (_a.label) {
|
|
942
|
+
case 0:
|
|
943
|
+
onClose = jest.fn();
|
|
944
|
+
ref = React.createRef();
|
|
945
|
+
user = setup(React.createElement(PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
|
|
946
|
+
setupOptions: { advanceTimers: function () { return Promise.resolve(); } }
|
|
947
|
+
}).user;
|
|
948
|
+
return [4 /*yield*/, screen.findByText(/loading pdf/i)];
|
|
949
|
+
case 1:
|
|
950
|
+
_a.sent();
|
|
951
|
+
// eslint-disable-next-line testing-library/no-node-access
|
|
952
|
+
expect(document.querySelector('canvas')).toBeVisible();
|
|
953
|
+
expect(screen.getByText(/page/i)).toBeVisible();
|
|
954
|
+
pageInput = screen.getByRole('textbox', { name: /current page/i });
|
|
955
|
+
expect(pageInput).toHaveDisplayValue('1');
|
|
956
|
+
return [4 /*yield*/, user.clear(pageInput)];
|
|
957
|
+
case 2:
|
|
958
|
+
_a.sent();
|
|
959
|
+
return [4 /*yield*/, user.type(pageInput, '4')];
|
|
960
|
+
case 3:
|
|
961
|
+
_a.sent();
|
|
962
|
+
expect(pageInput).toHaveFocus();
|
|
963
|
+
return [4 /*yield*/, user.keyboard('{Escape}')];
|
|
964
|
+
case 4:
|
|
965
|
+
_a.sent();
|
|
966
|
+
expect(onClose).toHaveBeenCalled();
|
|
967
|
+
return [2 /*return*/];
|
|
968
|
+
}
|
|
969
|
+
});
|
|
970
|
+
}); });
|
|
971
|
+
});
|
|
712
972
|
});
|
|
713
973
|
//# sourceMappingURL=PdfPreview.test.js.map
|