Skip to content

Commit 873e37d

Browse files
committed
refactor: remove ROTATION constants and simplify rotation handling in PDFPreviewer
1 parent 0d3d30c commit 873e37d

4 files changed

Lines changed: 8 additions & 22 deletions

File tree

src/PDFPreviewer.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pdfWorkerSource from 'pdfjs-dist/build/pdf.worker.min.mjs';
2-
import React, {useCallback, useLayoutEffect, useRef, useState} from 'react';
2+
import React, {useCallback, useLayoutEffect, useRef, useState, memo} from 'react';
33
import type {CSSProperties, ReactNode, JSX} from 'react';
44
import {times} from 'lodash';
55
import {VariableSizeList as List} from 'react-window';
@@ -11,7 +11,7 @@ import type {PDFDocument, PageViewport, RotationDegrees} from './types.js';
1111
import {pdfPreviewerStyles as styles} from './styles.js';
1212
import PDFPasswordForm, {type PDFPasswordFormProps} from './PDFPasswordForm.js';
1313
import PageRenderer from './PageRenderer.js';
14-
import {PAGE_BORDER, LARGE_SCREEN_SIDE_SPACING, DEFAULT_DOCUMENT_OPTIONS, DEFAULT_EXTERNAL_LINK_TARGET, PDF_PASSWORD_FORM_RESPONSES, ROTATION} from './constants.js';
14+
import {PAGE_BORDER, LARGE_SCREEN_SIDE_SPACING, DEFAULT_DOCUMENT_OPTIONS, DEFAULT_EXTERNAL_LINK_TARGET, PDF_PASSWORD_FORM_RESPONSES} from './constants.js';
1515
import {setListAttributes} from './helpers.js';
1616

1717
type Props = {
@@ -53,7 +53,7 @@ function PDFPreviewer({
5353
contentContainerStyle,
5454
shouldShowErrorComponent = true,
5555
onLoadError,
56-
rotation = ROTATION.DEG_0,
56+
rotation = 0,
5757
}: Props): JSX.Element {
5858
const [pageViewports, setPageViewports] = useState<PageViewport[]>([]);
5959
const [numPages, setNumPages] = useState(0);
@@ -119,7 +119,7 @@ function PDFPreviewer({
119119
const {width: originalWidth, height: originalHeight} = pageViewports[pageIndex];
120120

121121
// Swap dimensions when rotated 90 or 270 degrees
122-
const isRotated90or270 = rotation === ROTATION.DEG_90 || rotation === ROTATION.DEG_270;
122+
const isRotated90or270 = rotation === 90 || rotation === 270;
123123
const pageViewportWidth = isRotated90or270 ? originalHeight : originalWidth;
124124
const pageViewportHeight = isRotated90or270 ? originalWidth : originalHeight;
125125

@@ -289,4 +289,4 @@ function PDFPreviewer({
289289

290290
PDFPreviewer.displayName = 'PDFPreviewer';
291291

292-
export default PDFPreviewer;
292+
export default memo(PDFPreviewer);

src/constants.ts

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,4 @@ const PDF_PASSWORD_FORM_RESPONSES = {
3333
INCORRECT_PASSWORD: 2,
3434
};
3535

36-
/**
37-
* Valid rotation angles for PDF pages, in degrees clockwise.
38-
*/
39-
const ROTATION = {
40-
DEG_0: 0,
41-
DEG_90: 90,
42-
DEG_180: 180,
43-
DEG_270: 270,
44-
} as const;
45-
46-
const ROTATION_DEGREES_STEPS = [ROTATION.DEG_0, ROTATION.DEG_90, ROTATION.DEG_180, ROTATION.DEG_270] as const;
47-
48-
export {PAGE_BORDER, LARGE_SCREEN_SIDE_SPACING, DEFAULT_DOCUMENT_OPTIONS, DEFAULT_EXTERNAL_LINK_TARGET, PDF_PASSWORD_FORM_RESPONSES, ROTATION, ROTATION_DEGREES_STEPS};
36+
export {PAGE_BORDER, LARGE_SCREEN_SIDE_SPACING, DEFAULT_DOCUMENT_OPTIONS, DEFAULT_EXTERNAL_LINK_TARGET, PDF_PASSWORD_FORM_RESPONSES};

src/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
import PDFPreviewer from './PDFPreviewer.js';
2-
import {ROTATION, ROTATION_DEGREES_STEPS} from './constants.js';
32
import type {RotationDegrees} from './types.js';
43

54
const PACKAGE_NAME = 'react-fast-pdf';
65

7-
export {PDFPreviewer, ROTATION, ROTATION_DEGREES_STEPS};
6+
export {PDFPreviewer};
87
export type {RotationDegrees};
98

109
export default {

src/types.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import {CSSProperties} from 'react';
2-
import {ROTATION} from './constants.js';
32

43
type Page = {
54
getViewport: ({scale}: {scale: number}) => PageViewport;
@@ -22,6 +21,6 @@ type ComponentStyles = {
2221
/**
2322
* Valid rotation angles for PDF pages (in degrees clockwise)
2423
*/
25-
type RotationDegrees = typeof ROTATION.DEG_0 | typeof ROTATION.DEG_90 | typeof ROTATION.DEG_180 | typeof ROTATION.DEG_270;
24+
type RotationDegrees = 0 | 90 | 180 | 270;
2625

2726
export type {PDFDocument, PageViewport, ComponentStyles, RotationDegrees};

0 commit comments

Comments
 (0)