react-magazine 1.0.1 → 1.0.3

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 (47) hide show
  1. package/README.md +55 -40
  2. package/dist/cjs/_virtual/page-flip.browser.js +4 -2
  3. package/dist/cjs/_virtual/page-flip.browser.js.map +1 -1
  4. package/dist/cjs/_virtual/page-flip.browser2.js +6 -0
  5. package/dist/cjs/_virtual/page-flip.browser2.js.map +1 -0
  6. package/dist/cjs/components/MagazineBook.js +72 -23
  7. package/dist/cjs/components/MagazineBook.js.map +1 -1
  8. package/dist/cjs/components/Page.js +16 -4
  9. package/dist/cjs/components/Page.js.map +1 -1
  10. package/dist/cjs/components/PageCover.js +19 -4
  11. package/dist/cjs/components/PageCover.js.map +1 -1
  12. package/dist/cjs/node_modules/page-flip/dist/js/page-flip.browser.js +13 -7
  13. package/dist/cjs/node_modules/page-flip/dist/js/page-flip.browser.js.map +1 -1
  14. package/dist/esm/_virtual/page-flip.browser.js +4 -2
  15. package/dist/esm/_virtual/page-flip.browser.js.map +1 -1
  16. package/dist/esm/_virtual/page-flip.browser2.js +4 -0
  17. package/dist/esm/_virtual/page-flip.browser2.js.map +1 -0
  18. package/dist/esm/components/MagazineBook.js +72 -23
  19. package/dist/esm/components/MagazineBook.js.map +1 -1
  20. package/dist/esm/components/Page.js +16 -4
  21. package/dist/esm/components/Page.js.map +1 -1
  22. package/dist/esm/components/PageCover.js +19 -4
  23. package/dist/esm/components/PageCover.js.map +1 -1
  24. package/dist/esm/node_modules/page-flip/dist/js/page-flip.browser.js +13 -7
  25. package/dist/esm/node_modules/page-flip/dist/js/page-flip.browser.js.map +1 -1
  26. package/dist/types/components/MagazineBook.d.ts +0 -1
  27. package/dist/types/components/Page.d.ts +0 -1
  28. package/dist/types/components/PageCover.d.ts +0 -1
  29. package/dist/types/components/index.d.ts +0 -1
  30. package/dist/types/hooks/index.d.ts +0 -1
  31. package/dist/types/hooks/useFlipBook.d.ts +0 -1
  32. package/dist/types/index.d.ts +0 -1
  33. package/dist/types/types/index.d.ts +0 -1
  34. package/package.json +35 -16
  35. package/dist/cjs/_virtual/_commonjsHelpers.js +0 -6
  36. package/dist/cjs/_virtual/_commonjsHelpers.js.map +0 -1
  37. package/dist/esm/_virtual/_commonjsHelpers.js +0 -4
  38. package/dist/esm/_virtual/_commonjsHelpers.js.map +0 -1
  39. package/dist/styles.css +0 -164
  40. package/dist/types/components/MagazineBook.d.ts.map +0 -1
  41. package/dist/types/components/Page.d.ts.map +0 -1
  42. package/dist/types/components/PageCover.d.ts.map +0 -1
  43. package/dist/types/components/index.d.ts.map +0 -1
  44. package/dist/types/hooks/index.d.ts.map +0 -1
  45. package/dist/types/hooks/useFlipBook.d.ts.map +0 -1
  46. package/dist/types/index.d.ts.map +0 -1
  47. package/dist/types/types/index.d.ts.map +0 -1
@@ -141,4 +141,3 @@ export interface PageCoverProps {
141
141
  position?: 'front' | 'back';
142
142
  }
143
143
  export type { PageFlip };
144
- //# sourceMappingURL=index.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-magazine",
3
- "version": "1.0.1",
3
+ "version": "1.0.3",
4
4
  "description": "A lightweight React component for realistic page-flip animations, featuring built-in navigation controls, full TypeScript support, and easy style customization.",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -15,24 +15,29 @@
15
15
  "types": "./dist/types/index.d.ts",
16
16
  "default": "./dist/cjs/index.js"
17
17
  }
18
- },
19
- "./styles.css": "./dist/styles.css"
18
+ }
20
19
  },
21
20
  "files": [
22
21
  "dist",
23
22
  "README.md",
24
23
  "LICENSE"
25
24
  ],
26
- "sideEffects": [
27
- "*.css"
28
- ],
25
+ "sideEffects": false,
29
26
  "scripts": {
30
- "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types && npm run build:css",
27
+ "dev": "rollup -c rollup.config.mjs --environment FORMAT:esm --watch",
28
+ "build": "npm run clean && npm run build:esm && npm run build:cjs && npm run build:types",
31
29
  "build:esm": "rollup -c rollup.config.mjs --environment FORMAT:esm",
32
30
  "build:cjs": "rollup -c rollup.config.mjs --environment FORMAT:cjs",
33
31
  "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
32
  "clean": "node -e \"require('fs').rmSync('dist', {recursive: true, force: true})\"",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "test:ui": "vitest --ui",
36
+ "test:coverage": "vitest run --coverage",
37
+ "lint": "eslint src --ext .ts,.tsx",
38
+ "lint:fix": "eslint src --ext .ts,.tsx --fix",
39
+ "format": "prettier --write \"src/**/*.{ts,tsx,css}\"",
40
+ "format:check": "prettier --check \"src/**/*.{ts,tsx,css}\"",
36
41
  "prepublishOnly": "npm run build"
37
42
  },
38
43
  "dependencies": {
@@ -43,17 +48,31 @@
43
48
  "react-dom": "^18.0.0 || ^19.0.0"
44
49
  },
45
50
  "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",
51
+ "@rollup/plugin-commonjs": "^29.0.0",
52
+ "@rollup/plugin-node-resolve": "^16.0.3",
53
+ "@rollup/plugin-typescript": "^12.3.0",
54
+ "@testing-library/jest-dom": "^6.9.1",
55
+ "@testing-library/react": "^16.3.2",
56
+ "@types/react": "^19.2.10",
50
57
  "@types/react-dom": "^19.0.0",
51
- "react": "^19.0.0",
52
- "react-dom": "^19.0.0",
53
- "rollup": "^4.9.0",
58
+ "@typescript-eslint/eslint-plugin": "^8.54.0",
59
+ "@typescript-eslint/parser": "^8.54.0",
60
+ "@vitest/ui": "^4.0.18",
61
+ "eslint": "^9.39.2",
62
+ "eslint-config-prettier": "^10.1.8",
63
+ "eslint-plugin-prettier": "^5.5.5",
64
+ "eslint-plugin-react": "^7.37.5",
65
+ "eslint-plugin-react-hooks": "^7.0.1",
66
+ "happy-dom": "^20.5.0",
67
+ "jsdom": "^28.0.0",
68
+ "prettier": "^3.8.1",
69
+ "react": "^19.2.4",
70
+ "react-dom": "^19.2.4",
71
+ "rollup": "^4.57.1",
54
72
  "rollup-plugin-peer-deps-external": "^2.2.4",
55
73
  "tslib": "^2.6.2",
56
- "typescript": "^5.3.0"
74
+ "typescript": "^5.3.0",
75
+ "vitest": "^4.0.18"
57
76
  },
58
77
  "keywords": [
59
78
  "react",
@@ -1,6 +0,0 @@
1
- 'use strict';
2
-
3
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
4
-
5
- exports.commonjsGlobal = commonjsGlobal;
6
- //# sourceMappingURL=_commonjsHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,4 +0,0 @@
1
- var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
-
3
- export { commonjsGlobal };
4
- //# sourceMappingURL=_commonjsHelpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_commonjsHelpers.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
package/dist/styles.css DELETED
@@ -1,164 +0,0 @@
1
- /* React Magazine Styles */
2
-
3
- .react-magazine {
4
- display: block;
5
- position: relative;
6
- user-select: none;
7
- -webkit-user-select: none;
8
- -moz-user-select: none;
9
- -ms-user-select: none;
10
- touch-action: pan-y;
11
- box-sizing: border-box;
12
- }
13
-
14
- .react-magazine canvas {
15
- display: block;
16
- }
17
-
18
- .react-magazine-page {
19
- position: relative;
20
- box-sizing: border-box;
21
- overflow: hidden;
22
- background-color: #fff;
23
- }
24
-
25
- /* Page content wrapper */
26
- .react-magazine-page-content {
27
- width: 100%;
28
- height: 100%;
29
- display: flex;
30
- flex-direction: column;
31
- align-items: center;
32
- justify-content: flex-start;
33
- padding: 20px;
34
- box-sizing: border-box;
35
- }
36
-
37
- /* Hard page styling */
38
- .react-magazine-page[data-density="hard"] {
39
- background: linear-gradient(135deg, #f5f5f5 0%, #e0e0e0 100%);
40
- box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.1);
41
- }
42
-
43
- /* Page number styling */
44
- .react-magazine-page-number {
45
- position: absolute;
46
- bottom: 10px;
47
- left: 50%;
48
- transform: translateX(-50%);
49
- font-size: 12px;
50
- color: #666;
51
- }
52
-
53
- /* Cover page styling */
54
- .react-magazine-cover {
55
- background: linear-gradient(135deg, #2c3e50 0%, #3498db 100%);
56
- color: white;
57
- }
58
-
59
- /* Front cover */
60
- .react-magazine-cover--front {
61
- background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
62
- }
63
-
64
- /* Back cover */
65
- .react-magazine-cover--back {
66
- background: linear-gradient(135deg, #0f3460 0%, #16213e 50%, #1a1a2e 100%);
67
- }
68
-
69
- /* Loading state */
70
- .react-magazine--loading {
71
- opacity: 0.5;
72
- pointer-events: none;
73
- }
74
-
75
- /* Disabled state */
76
- .react-magazine--disabled {
77
- pointer-events: none;
78
- }
79
-
80
- /* Portrait mode adjustments */
81
- .react-magazine--portrait .react-magazine-page {
82
- width: 100%;
83
- }
84
-
85
- /* Landscape mode adjustments */
86
- .react-magazine--landscape .react-magazine-page {
87
- width: 50%;
88
- }
89
-
90
- /* Animation classes */
91
- @keyframes magazine-enter {
92
- from {
93
- opacity: 0;
94
- transform: scale(0.95);
95
- }
96
- to {
97
- opacity: 1;
98
- transform: scale(1);
99
- }
100
- }
101
-
102
- .react-magazine--animated {
103
- animation: magazine-enter 0.3s ease-out;
104
- }
105
-
106
- /* Controls */
107
- .react-magazine-wrapper {
108
- display: flex;
109
- flex-direction: column;
110
- align-items: center;
111
- }
112
-
113
- .react-magazine-controls {
114
- display: flex;
115
- justify-content: center;
116
- align-items: center;
117
- gap: 15px;
118
- margin-top: 8px;
119
- }
120
-
121
- .react-magazine-controls__btn {
122
- display: flex;
123
- align-items: center;
124
- gap: 6px;
125
- padding: 8px 16px;
126
- font-size: 13px;
127
- font-weight: 500;
128
- border: none;
129
- border-radius: 6px;
130
- background: #2196F3;
131
- color: white;
132
- cursor: pointer;
133
- transition: all 0.2s ease;
134
- }
135
-
136
- .react-magazine-controls__btn:hover {
137
- background: #1976D2;
138
- }
139
-
140
- .react-magazine-controls__btn:active {
141
- background: #1565C0;
142
- }
143
-
144
- .react-magazine-controls__btn:disabled {
145
- opacity: 0.5;
146
- cursor: not-allowed;
147
- background: #90CAF9;
148
- }
149
-
150
- .react-magazine-controls__btn:disabled:hover {
151
- background: #90CAF9;
152
- }
153
-
154
- .react-magazine-controls__btn svg {
155
- flex-shrink: 0;
156
- }
157
-
158
- .react-magazine-controls__page-info {
159
- font-size: 13px;
160
- color: #666;
161
- padding: 6px 12px;
162
- background: #f5f5f5;
163
- border-radius: 4px;
164
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"MagazineBook.d.ts","sourceRoot":"","sources":["../../../src/components/MagazineBook.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAC;AAEf,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,gBAAgB,EAIjB,MAAM,UAAU,CAAC;AAElB,UAAU,iBAAkB,SAAQ,OAAO,CAAC,YAAY,CAAC,EAAE,WAAW;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,yBAAyB;IACzB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,0CAA0C;IAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0CAA0C;IAC1C,aAAa,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CACrC;AA2XD,eAAO,MAAM,YAAY,uFAAkC,CAAC;AAE5D,eAAe,YAAY,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Page.d.ts","sourceRoot":"","sources":["../../../src/components/Page.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,IAAI,sGAmBhB,CAAC;AAIF,eAAe,IAAI,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"PageCover.d.ts","sourceRoot":"","sources":["../../../src/components/PageCover.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C;;;GAGG;AACH,eAAO,MAAM,SAAS,2GAoBrB,CAAC;AAIF,eAAe,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useFlipBook.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFlipBook.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACX,MAAM,UAAU,CAAC;AAElB,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,eAAe,CAAC;IAC7B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,8CAA8C;IAC9C,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IAClD,gCAAgC;IAChC,KAAK,EAAE,gBAAgB,CAAC;IACxB,wBAAwB;IACxB,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,4BAA4B;IAC5B,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACxC,4BAA4B;IAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACvD,qCAAqC;IACrC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,qCAAqC;IACrC,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,yCAAyC;IACzC,WAAW,EAAE,MAAM,OAAO,CAAC;IAC3B,6CAA6C;IAC7C,QAAQ,EAAE;QACR,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;QAC/B,mBAAmB,EAAE,CAAC,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;QACnD,aAAa,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;QACvC,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;KAChC,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,IAAI,iBAAiB,CAkF/C;AAED,eAAe,WAAW,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAGvD,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAGtC,YAAY,EAEV,YAAY,EACZ,WAAW,EACX,UAAU,EACV,SAAS,EACT,cAAc,EAGd,gBAAgB,EAGhB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,eAAe,EACf,UAAU,EAGV,SAAS,EACT,gBAAgB,EAChB,UAAU,EAGV,QAAQ,GACT,MAAM,SAAS,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}