react-magazine 1.0.0

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 (52) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +205 -0
  3. package/dist/cjs/_virtual/_commonjsHelpers.js +6 -0
  4. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  5. package/dist/cjs/_virtual/page-flip.browser.js +6 -0
  6. package/dist/cjs/_virtual/page-flip.browser.js.map +1 -0
  7. package/dist/cjs/components/MagazineBook.js +264 -0
  8. package/dist/cjs/components/MagazineBook.js.map +1 -0
  9. package/dist/cjs/components/Page.js +21 -0
  10. package/dist/cjs/components/Page.js.map +1 -0
  11. package/dist/cjs/components/PageCover.js +21 -0
  12. package/dist/cjs/components/PageCover.js.map +1 -0
  13. package/dist/cjs/hooks/useFlipBook.js +100 -0
  14. package/dist/cjs/hooks/useFlipBook.js.map +1 -0
  15. package/dist/cjs/index.js +17 -0
  16. package/dist/cjs/index.js.map +1 -0
  17. package/dist/cjs/node_modules/page-flip/dist/js/page-flip.browser.js +13 -0
  18. package/dist/cjs/node_modules/page-flip/dist/js/page-flip.browser.js.map +1 -0
  19. package/dist/esm/_virtual/_commonjsHelpers.js +4 -0
  20. package/dist/esm/_virtual/_commonjsHelpers.js.map +1 -0
  21. package/dist/esm/_virtual/page-flip.browser.js +4 -0
  22. package/dist/esm/_virtual/page-flip.browser.js.map +1 -0
  23. package/dist/esm/components/MagazineBook.js +262 -0
  24. package/dist/esm/components/MagazineBook.js.map +1 -0
  25. package/dist/esm/components/Page.js +19 -0
  26. package/dist/esm/components/Page.js.map +1 -0
  27. package/dist/esm/components/PageCover.js +19 -0
  28. package/dist/esm/components/PageCover.js.map +1 -0
  29. package/dist/esm/hooks/useFlipBook.js +98 -0
  30. package/dist/esm/hooks/useFlipBook.js.map +1 -0
  31. package/dist/esm/index.js +5 -0
  32. package/dist/esm/index.js.map +1 -0
  33. package/dist/esm/node_modules/page-flip/dist/js/page-flip.browser.js +11 -0
  34. package/dist/esm/node_modules/page-flip/dist/js/page-flip.browser.js.map +1 -0
  35. package/dist/styles.css +164 -0
  36. package/dist/types/components/MagazineBook.d.ts +21 -0
  37. package/dist/types/components/MagazineBook.d.ts.map +1 -0
  38. package/dist/types/components/Page.d.ts +8 -0
  39. package/dist/types/components/Page.d.ts.map +1 -0
  40. package/dist/types/components/PageCover.d.ts +8 -0
  41. package/dist/types/components/PageCover.d.ts.map +1 -0
  42. package/dist/types/components/index.d.ts +4 -0
  43. package/dist/types/components/index.d.ts.map +1 -0
  44. package/dist/types/hooks/index.d.ts +2 -0
  45. package/dist/types/hooks/index.d.ts.map +1 -0
  46. package/dist/types/hooks/useFlipBook.d.ts +58 -0
  47. package/dist/types/hooks/useFlipBook.d.ts.map +1 -0
  48. package/dist/types/index.d.ts +5 -0
  49. package/dist/types/index.d.ts.map +1 -0
  50. package/dist/types/types/index.d.ts +144 -0
  51. package/dist/types/types/index.d.ts.map +1 -0
  52. package/package.json +80 -0
@@ -0,0 +1,144 @@
1
+ import type { PageFlip } from 'page-flip';
2
+ /** Page state */
3
+ export type PageState = 'user_fold' | 'fold_corner' | 'flipping' | 'read';
4
+ /** Page orientation */
5
+ export type PageOrientation = 'portrait' | 'landscape';
6
+ /** Page density - hard pages don't bend */
7
+ export type PageDensity = 'hard' | 'soft';
8
+ /** Size type */
9
+ export type SizeType = 'fixed' | 'stretch';
10
+ /** Flip corner type */
11
+ export type FlipCorner = 'top' | 'bottom';
12
+ /** Flip setting interface */
13
+ export interface IFlipSetting {
14
+ /** Page number from which to start viewing */
15
+ startPage: number;
16
+ /** Whether the book will be stretched under the parent element or not */
17
+ size: SizeType;
18
+ /** Page width */
19
+ width: number;
20
+ /** Page height */
21
+ height: number;
22
+ /** Min width for responsive */
23
+ minWidth: number;
24
+ /** Max width for responsive */
25
+ maxWidth: number;
26
+ /** Min height for responsive */
27
+ minHeight: number;
28
+ /** Max height for responsive */
29
+ maxHeight: number;
30
+ /** Draw shadows or not when page flipping */
31
+ drawShadow: boolean;
32
+ /** Flipping animation time in ms */
33
+ flippingTime: number;
34
+ /** Enable switching to portrait mode */
35
+ usePortrait: boolean;
36
+ /** Initial value to z-index */
37
+ startZIndex: number;
38
+ /** If this value is true, the parent element will be equal to the size of the book */
39
+ autoSize: boolean;
40
+ /** Shadow intensity (1: max intensity, 0: hidden shadows) */
41
+ maxShadowOpacity: number;
42
+ /** If this value is true, the first and the last pages will be marked as hard and will be shown in single page mode */
43
+ showCover: boolean;
44
+ /** Disable content scrolling when touching a book on mobile devices */
45
+ mobileScrollSupport: boolean;
46
+ /** Set the forward event of clicking on child elements (buttons, links) */
47
+ clickEventForward: boolean;
48
+ /** Using mouse and touch events to page flipping */
49
+ useMouseEvents: boolean;
50
+ /** Minimum distance to trigger swipe */
51
+ swipeDistance: number;
52
+ /** If this value is true, fold the corners of the book when the mouse pointer is over them */
53
+ showPageCorners: boolean;
54
+ /** If this value is true, flipping by clicking on the whole book will be locked. Only on corners */
55
+ disableFlipByClick: boolean;
56
+ }
57
+ /** Book state */
58
+ export interface IBookState {
59
+ page: number;
60
+ mode: PageOrientation;
61
+ }
62
+ /** Flip event data */
63
+ export interface FlipEvent {
64
+ /** Current page index (0-based) */
65
+ data: number;
66
+ /** The PageFlip object */
67
+ object: PageFlip;
68
+ }
69
+ /** Orientation change event data */
70
+ export interface OrientationEvent {
71
+ /** New orientation */
72
+ data: PageOrientation;
73
+ /** The PageFlip object */
74
+ object: PageFlip;
75
+ }
76
+ /** State change event data */
77
+ export interface StateEvent {
78
+ /** New page state */
79
+ data: PageState;
80
+ /** The PageFlip object */
81
+ object: PageFlip;
82
+ }
83
+ /** Event props */
84
+ export interface IEventProps {
85
+ /** Called when page is flipped */
86
+ onFlip?: (e: FlipEvent) => void;
87
+ /** Called when orientation changes (portrait/landscape) */
88
+ onChangeOrientation?: (e: OrientationEvent) => void;
89
+ /** Called when page state changes */
90
+ onChangeState?: (e: StateEvent) => void;
91
+ /** Called when the book is initialized */
92
+ onInit?: (e: FlipEvent) => void;
93
+ /** Called when pages are updated */
94
+ onUpdate?: (e: FlipEvent) => void;
95
+ }
96
+ /** Page flip instance - exposes the PageFlip object and helper methods */
97
+ export interface PageFlipInstance {
98
+ /** Get the underlying PageFlip object */
99
+ pageFlip: () => PageFlip | null;
100
+ /** Flip to next page with animation */
101
+ flipNext: (corner?: FlipCorner) => void;
102
+ /** Flip to previous page with animation */
103
+ flipPrev: (corner?: FlipCorner) => void;
104
+ /** Flip to specific page with animation */
105
+ flip: (pageNum: number, corner?: FlipCorner) => void;
106
+ /** Turn to specific page without animation */
107
+ turnToPage: (pageNum: number) => void;
108
+ /** Get current page index (0-based) */
109
+ getCurrentPageIndex: () => number;
110
+ /** Get total page count */
111
+ getPageCount: () => number;
112
+ /** Get current orientation */
113
+ getOrientation: () => PageOrientation | null;
114
+ /** Get current page state */
115
+ getState: () => PageState | null;
116
+ }
117
+ /** Props for the Page component */
118
+ export interface PageProps {
119
+ /** Page number (for display purposes) */
120
+ number?: number;
121
+ /** Page density - hard or soft */
122
+ density?: PageDensity;
123
+ /** Page content */
124
+ children?: React.ReactNode;
125
+ /** Additional className */
126
+ className?: string;
127
+ /** Additional style */
128
+ style?: React.CSSProperties;
129
+ }
130
+ /** Props for the PageCover component */
131
+ export interface PageCoverProps {
132
+ /** Page number (for display purposes) */
133
+ number?: number;
134
+ /** Page content */
135
+ children?: React.ReactNode;
136
+ /** Additional className */
137
+ className?: string;
138
+ /** Additional style */
139
+ style?: React.CSSProperties;
140
+ /** Whether this is front or back cover */
141
+ position?: 'front' | 'back';
142
+ }
143
+ export type { PageFlip };
144
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,80 @@
1
+ {
2
+ "name": "react-magazine",
3
+ "version": "1.0.0",
4
+ "description": "A lightweight React component for realistic page-flip animations, featuring built-in navigation controls, full TypeScript support, and easy style customization.",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "dist/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/types/index.d.ts",
12
+ "default": "./dist/esm/index.js"
13
+ },
14
+ "require": {
15
+ "types": "./dist/types/index.d.ts",
16
+ "default": "./dist/cjs/index.js"
17
+ }
18
+ },
19
+ "./styles.css": "./dist/styles.css"
20
+ },
21
+ "files": [
22
+ "dist",
23
+ "README.md",
24
+ "LICENSE"
25
+ ],
26
+ "sideEffects": [
27
+ "*.css"
28
+ ],
29
+ "scripts": {
30
+ "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:css",
31
+ "build:esm": "rollup -c rollup.config.mjs --environment FORMAT:esm",
32
+ "build:cjs": "rollup -c rollup.config.mjs --environment FORMAT:cjs",
33
+ "build:types": "tsc --emitDeclarationOnly --declaration --declarationDir dist/types",
34
+ "build:css": "node -e \"require('fs').mkdirSync('dist', {recursive: true}); require('fs').copyFileSync('src/styles.css', 'dist/styles.css')\"",
35
+ "clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
36
+ "prepublishOnly": "npm run build"
37
+ },
38
+ "dependencies": {
39
+ "page-flip": "^2.0.7"
40
+ },
41
+ "peerDependencies": {
42
+ "react": "^18.0.0 || ^19.0.0",
43
+ "react-dom": "^18.0.0 || ^19.0.0"
44
+ },
45
+ "devDependencies": {
46
+ "@rollup/plugin-commonjs": "^25.0.7",
47
+ "@rollup/plugin-node-resolve": "^15.2.3",
48
+ "@rollup/plugin-typescript": "^11.1.5",
49
+ "@types/react": "^19.0.0",
50
+ "@types/react-dom": "^19.0.0",
51
+ "react": "^19.0.0",
52
+ "react-dom": "^19.0.0",
53
+ "rollup": "^4.9.0",
54
+ "rollup-plugin-peer-deps-external": "^2.2.4",
55
+ "tslib": "^2.6.2",
56
+ "typescript": "^5.3.0"
57
+ },
58
+ "keywords": [
59
+ "react",
60
+ "pageflip",
61
+ "flipbook",
62
+ "magazine",
63
+ "book",
64
+ "page-turn",
65
+ "page-flip",
66
+ "flip-book",
67
+ "typescript",
68
+ "react-component"
69
+ ],
70
+ "author": "Gnanaprakash",
71
+ "license": "MIT",
72
+ "homepage": "https://github.com/Gnanaprakash-Dev/react-magazine#readme",
73
+ "bugs": {
74
+ "url": "https://github.com/Gnanaprakash-Dev/react-magazine/issues"
75
+ },
76
+ "repository": {
77
+ "type": "git",
78
+ "url": "git+https://github.com/Gnanaprakash-Dev/react-magazine.git"
79
+ }
80
+ }