@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.
Files changed (69) hide show
  1. package/lib/preview/ImagePreview.d.ts +8 -0
  2. package/lib/preview/ImagePreview.js +5 -2
  3. package/lib/preview/ImagePreview.js.map +1 -1
  4. package/lib/preview/Navigator.d.ts +5 -0
  5. package/lib/preview/Navigator.js +28 -0
  6. package/lib/preview/Navigator.js.map +1 -0
  7. package/lib/preview/PageController.d.ts +8 -0
  8. package/lib/preview/PageController.js +101 -0
  9. package/lib/preview/PageController.js.map +1 -0
  10. package/lib/preview/PdfPreview.d.ts +10 -0
  11. package/lib/preview/PdfPreview.js +62 -99
  12. package/lib/preview/PdfPreview.js.map +1 -1
  13. package/lib/preview/PdfPreview.test.js +328 -68
  14. package/lib/preview/PdfPreview.test.js.map +1 -1
  15. package/lib/preview/PreviewManager.d.ts +8 -2
  16. package/lib/preview/PreviewManager.js +58 -23
  17. package/lib/preview/PreviewManager.js.map +1 -1
  18. package/lib/preview/PreviewManager.test.js +1 -3
  19. package/lib/preview/PreviewManager.test.js.map +1 -1
  20. package/lib/preview/StyledComponents.d.ts +3 -0
  21. package/lib/preview/StyledComponents.js +21 -0
  22. package/lib/preview/StyledComponents.js.map +1 -0
  23. package/lib/preview/ZoomController.d.ts +17 -0
  24. package/lib/preview/ZoomController.js +58 -0
  25. package/lib/preview/ZoomController.js.map +1 -0
  26. package/lib/preview/usePageScrollController.d.ts +4 -0
  27. package/lib/preview/usePageScrollController.js +70 -0
  28. package/lib/preview/usePageScrollController.js.map +1 -0
  29. package/lib/preview/useZoom.d.ts +13 -0
  30. package/lib/preview/useZoom.js +85 -0
  31. package/lib/preview/useZoom.js.map +1 -0
  32. package/lib/utils/test-utils.d.ts +1 -0
  33. package/lib/utils/test-utils.js +63 -1
  34. package/lib/utils/test-utils.js.map +1 -1
  35. package/lib-esm/preview/ImagePreview.d.ts +8 -0
  36. package/lib-esm/preview/ImagePreview.js +5 -2
  37. package/lib-esm/preview/ImagePreview.js.map +1 -1
  38. package/lib-esm/preview/Navigator.d.ts +5 -0
  39. package/lib-esm/preview/Navigator.js +21 -0
  40. package/lib-esm/preview/Navigator.js.map +1 -0
  41. package/lib-esm/preview/PageController.d.ts +8 -0
  42. package/lib-esm/preview/PageController.js +71 -0
  43. package/lib-esm/preview/PageController.js.map +1 -0
  44. package/lib-esm/preview/PdfPreview.d.ts +10 -0
  45. package/lib-esm/preview/PdfPreview.js +63 -100
  46. package/lib-esm/preview/PdfPreview.js.map +1 -1
  47. package/lib-esm/preview/PdfPreview.test.js +328 -68
  48. package/lib-esm/preview/PdfPreview.test.js.map +1 -1
  49. package/lib-esm/preview/PreviewManager.d.ts +8 -2
  50. package/lib-esm/preview/PreviewManager.js +57 -25
  51. package/lib-esm/preview/PreviewManager.js.map +1 -1
  52. package/lib-esm/preview/PreviewManager.test.js +1 -3
  53. package/lib-esm/preview/PreviewManager.test.js.map +1 -1
  54. package/lib-esm/preview/StyledComponents.d.ts +3 -0
  55. package/lib-esm/preview/StyledComponents.js +15 -0
  56. package/lib-esm/preview/StyledComponents.js.map +1 -0
  57. package/lib-esm/preview/ZoomController.d.ts +17 -0
  58. package/lib-esm/preview/ZoomController.js +28 -0
  59. package/lib-esm/preview/ZoomController.js.map +1 -0
  60. package/lib-esm/preview/usePageScrollController.d.ts +4 -0
  61. package/lib-esm/preview/usePageScrollController.js +66 -0
  62. package/lib-esm/preview/usePageScrollController.js.map +1 -0
  63. package/lib-esm/preview/useZoom.d.ts +13 -0
  64. package/lib-esm/preview/useZoom.js +78 -0
  65. package/lib-esm/preview/useZoom.js.map +1 -0
  66. package/lib-esm/utils/test-utils.d.ts +1 -0
  67. package/lib-esm/utils/test-utils.js +62 -1
  68. package/lib-esm/utils/test-utils.js.map +1 -1
  69. 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 do not calls onClose
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 do not calls onClose
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, user, canvas;
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
- user = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose }), {
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
- }).user;
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, _a, user, container;
447
- return __generator(this, function (_b) {
448
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
455
+ }).user;
456
456
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
457
457
  case 1:
458
- _b.sent();
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
- _b.sent();
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, _a, user, container;
478
- return __generator(this, function (_b) {
479
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
486
+ }).user;
487
487
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
488
488
  case 1:
489
- _b.sent();
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
- _b.sent();
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
- _b.sent();
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, _a, user, container;
516
- return __generator(this, function (_b) {
517
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
524
+ }).user;
525
525
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
526
526
  case 1:
527
- _b.sent();
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
- _b.sent();
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, _a, user, container;
545
- return __generator(this, function (_b) {
546
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
553
+ }).user;
554
554
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
555
555
  case 1:
556
- _b.sent();
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
- _b.sent();
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, _a, user, container;
574
- return __generator(this, function (_b) {
575
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
583
+ }).user;
584
584
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
585
585
  case 1:
586
- _b.sent();
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
- _b.sent();
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
- _b.sent();
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, _a, user, container;
607
- return __generator(this, function (_b) {
608
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
616
+ }).user;
617
617
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
618
618
  case 1:
619
- _b.sent();
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
- _b.sent();
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
- _b.sent();
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, _a, user, container, getPreviewClientWidthMock;
640
- return __generator(this, function (_b) {
641
- switch (_b.label) {
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
- _a = (0, test_utils_1.setup)(react_1.default.createElement(PdfPreview_1.PdfPreview, { show: true, src: pdfFile.dataURI, onClose: onClose, ref: ref }), {
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
- }), user = _a.user, container = _a.container;
648
+ }).user;
649
649
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
650
650
  case 1:
651
- _b.sent();
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
- _b.sent();
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, mockPdfWidth, _a, user, container;
675
- return __generator(this, function (_b) {
676
- switch (_b.label) {
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
- mockPdfWidth = [1001, 1501, 2001];
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
- }), user = _a.user, container = _a.container;
682
+ }).user;
684
683
  return [4 /*yield*/, react_2.screen.findByText(/loading pdf/i)];
685
684
  case 1:
686
- _b.sent();
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
- _b.sent();
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
- _b.sent();
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
- _b.sent();
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