zimme-zoom 0.1.0 → 0.1.2
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/README.md +1 -28
- package/dist/components/ImageOverlay.d.ts +9 -0
- package/dist/components/Navigation.d.ts +2 -0
- package/dist/components/NavigationActionButton.d.ts +1 -0
- package/dist/components/icons.d.ts +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.esm.js +138 -22
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +138 -22
- package/dist/index.js.map +1 -1
- package/dist/types/image.type.d.ts +10 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -10,34 +10,7 @@ yarn add zimme-zoom
|
|
|
10
10
|
|
|
11
11
|
## Usage
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Development
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Install dependencies
|
|
19
|
-
yarn install
|
|
20
|
-
|
|
21
|
-
# Start development mode
|
|
22
|
-
yarn dev
|
|
23
|
-
|
|
24
|
-
# Build the package
|
|
25
|
-
yarn build
|
|
26
|
-
|
|
27
|
-
# Run tests
|
|
28
|
-
yarn test
|
|
29
|
-
|
|
30
|
-
# Lint code
|
|
31
|
-
yarn lint
|
|
32
|
-
|
|
33
|
-
# Format code
|
|
34
|
-
yarn format
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
## Requirements
|
|
38
|
-
|
|
39
|
-
- Node.js >= 14.0.0
|
|
40
|
-
- Yarn >= 1.22.0
|
|
13
|
+
📖 **Storybook:** [https://zimme-zoom.vercel.app](https://zimme-zoom.vercel.app)
|
|
41
14
|
|
|
42
15
|
## License
|
|
43
16
|
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { OverlayPosition, OverlaySize } from '../types/image.type';
|
|
3
|
+
interface ImageOverlayProps {
|
|
4
|
+
overlay: React.ReactNode | string;
|
|
5
|
+
position?: OverlayPosition;
|
|
6
|
+
size?: OverlaySize;
|
|
7
|
+
}
|
|
8
|
+
export declare const ImageOverlay: React.FC<ImageOverlayProps>;
|
|
9
|
+
export default ImageOverlay;
|
|
@@ -3,6 +3,7 @@ interface NavigationActionButtonProps {
|
|
|
3
3
|
icon: string;
|
|
4
4
|
onClick?: (e?: React.MouseEvent) => void;
|
|
5
5
|
transform?: string;
|
|
6
|
+
style?: React.CSSProperties;
|
|
6
7
|
}
|
|
7
8
|
export declare const NavigationActionButton: React.FC<NavigationActionButtonProps>;
|
|
8
9
|
export default NavigationActionButton;
|
|
@@ -4,3 +4,4 @@ export declare const IconZoomIn = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc
|
|
|
4
4
|
export declare const IconZoomOut = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51aS16b29tLW91dDwvdGl0bGU+CjxnbHlwaCBnbHlwaC1uYW1lPSJ1aS16b29tLW91dCIgdW5pY29kZT0iJiN4ZWM5ODsiIGhvcml6LWFkdi14PSIxMDAwIiAvPgo8cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNOTgyLjIgNzg4LjZsLTIzNC45MDAwMDAwMDAwMDAxLTIxNmMyNy01My41IDQyLjYwMDAwMDAwMDAwMDAyLTExMy43MDAwMDAwMDAwMDAwNSA0Mi42MDAwMDAwMDAwMDAwMi0xNzcuNzAwMDAwMDAwMDAwMDUgMC0yMTguMDk5OTk5OTk5OTk5OTctMTc2Ljg5OTk5OTk5OTk5OTk4LTM5NC45LTM5NC45LTM5NC45LTIxOC4yIDAtMzk1IDE3Ni44LTM5NSAzOTQuOSAwIDIxOC4xMDAwMDAwMDAwMDAwMiAxNzYuOCAzOTUgMzk1IDM5NSA2My44OTk5OTk5OTk5OTk5OCAwIDEyNC4xMDAwMDAwMDAwMDAwMi0xNS41IDE3Ny42MDAwMDAwMDAwMDAwMi00Mi41bDIxNS44OTk5OTk5OTk5OTk5OCAyMzQuODk5OTk5OTk5OTk5OThjMjEgMjIuOTAwMDAwMDAwMDAwMDkgNTYuMjAwMDAwMDAwMDAwMDQ1IDIzLjYwMDAwMDAwMDAwMDAyMyA3OC4yMDAwMDAwMDAwMDAwNSAxLjYwMDAwMDAwMDAwMDAyMjdsMTE3LjI5OTk5OTk5OTk5OTk1LTExNy4yOTk5OTk5OTk5OTk5NWMyMS43OTk5OTk5OTk5OTk5NTUtMjEuODAwMDAwMDAwMDAwMDY4IDIxLjEwMDAwMDAwMDAwMDAyMy01Ny0xLjc5OTk5OTk5OTk5OTk1NDUtNzh6IG0tNTg3LjItMTUyLjcwMDAwMDAwMDAwMDA1Yy0xMzMgMC0yNDAuOS0xMDcuODk5OTk5OTk5OTk5OTgtMjQwLjktMjQwLjg5OTk5OTk5OTk5OTk4czEwNy45LTI0MSAyNDAuOS0yNDFjMTMzLjEwMDAwMDAwMDAwMDAyIDAgMjQwLjg5OTk5OTk5OTk5OTk4IDEwNy44OTk5OTk5OTk5OTk5OCAyNDAuODk5OTk5OTk5OTk5OTggMjQwLjg5OTk5OTk5OTk5OTk4cy0xMDcuODk5OTk5OTk5OTk5OTggMjQxLTI0MC44OTk5OTk5OTk5OTk5OCAyNDF6IG0xMjUuMjk5OTk5OTk5OTk5OTUtMjgyLjVoLTI1My41OTk5OTk5OTk5OTk5N2MtMTIuMzk5OTk5OTk5OTk5OTc3IDAtMjIuNSAxMC4xMDAwMDAwMDAwMDAwMjMtMjIuNSAyMi42MDAwMDAwMDAwMDAwMjN2MjkuNWMwIDEyLjM5OTk5OTk5OTk5OTk3NyAxMC4xMDAwMDAwMDAwMDAwMjMgMjIuNjAwMDAwMDAwMDAwMDIzIDIyLjUgMjIuNjAwMDAwMDAwMDAwMDIzaDI1My41OTk5OTk5OTk5OTk5N2MxMi40MDAwMDAwMDAwMDAwOTEgMCAyMi41LTEwLjEwMDAwMDAwMDAwMDAyMyAyMi41LTIyLjYwMDAwMDAwMDAwMDAyM3YtMjkuNWMwLTEyLjM5OTk5OTk5OTk5OTk3Ny0xMC4wOTk5OTk5OTk5OTk5MDktMjIuNjAwMDAwMDAwMDAwMDIzLTIyLjUtMjIuNjAwMDAwMDAwMDAwMDIzeiIvPgo8L3N2Zz4=\")";
|
|
5
5
|
export declare const IconRotate = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51bmRvPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InVuZG8iIHVuaWNvZGU9IiYjeGVlMGI7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggIGZpbGw9IiNmZmZmZmYiIGQ9Ik04OTguMSA2NTVjLTcuMjAwMDAwMDAwMDAwMDQ1NSAyOS41LTExLjM5OTk5OTk5OTk5OTk3NyA1OS43MDAwMDAwMDAwMDAwNDUtMjEuNzAwMDAwMDAwMDAwMDQ1IDg4LjUtNTMuMzk5OTk5OTk5OTk5OTggMTUwLjcwMDAwMDAwMDAwMDA1LTIwMCAyNTUuODk5OTk5OTk5OTk5OTgtMzU4LjI5OTk5OTk5OTk5OTk1IDI1Ni41LTQxLjcwMDAwMDAwMDAwMDA0NSAwLjEwMDAwMDAwMDAwMDAyMjc0LTc2LjMwMDAwMDAwMDAwMDAxLTI4Ljg5OTk5OTk5OTk5OTk3Ny04MC40MDAwMDAwMDAwMDAwMy02Ny4zOTk5OTk5OTk5OTk5OC00LjM5OTk5OTk5OTk5OTk3Ny00MC44OTk5OTk5OTk5OTk5OCAyMC45MDAwMDAwMDAwMDAwMzQtNzcuODk5OTk5OTk5OTk5OTggNjAuNjAwMDAwMDAwMDAwMDItODUuMTAwMDAwMDAwMDAwMDIgMjIuODAwMDAwMDAwMDAwMDEtNC4xMDAwMDAwMDAwMDAwMjMgNDYuNjk5OTk5OTk5OTk5OTktMi4yOTk5OTk5OTk5OTk5NTQ1IDY5LjQwMDAwMDAwMDAwMDAzLTguNSA5Mi4wOTk5OTk5OTk5OTk5MS0yNS4yMDAwMDAwMDAwMDAwNDUgMTUzLTg0IDE3MC43OTk5OTk5OTk5OTk5NS0xNzcuMjk5OTk5OTk5OTk5OTUgMTguODk5OTk5OTk5OTk5OTc3LTk4LjMwMDAwMDAwMDAwMDA3LTkuNS0xODQuMDAwMDAwMDAwMDAwMDYtOTIuMjAwMDAwMDAwMDAwMDUtMjQ2LjQwMDAwMDAwMDAwMDAzLTIzLjM5OTk5OTk5OTk5OTk3Ny0xNy42MDAwMDAwMDAwMDAwMjMtNTAuODk5OTk5OTk5OTk5OTgtMjguMTk5OTk5OTk5OTk5OTktODAtMjktNTYuMTk5OTk5OTk5OTk5OTMtMS41LTExMi4zOTk5OTk5OTk5OTk5OC0wLjQwMDAwMDAwMDAwMDAzNDEtMTY5LjA5OTk5OTk5OTk5OTk3LTAuNDAwMDAwMDAwMDAwMDM0MSAwLjQwMDAwMDAwMDAwMDAzNDEgNy41IDYuNSAxMC4yMDAwMDAwMDAwMDAwNDUgMTAuNDAwMDAwMDAwMDAwMDM0IDE0LjEwMDAwMDAwMDAwMDAyMyAyNy43OTk5OTk5OTk5OTk5NTUgMjguMTAwMDAwMDAwMDAwMDIzIDU2LjM5OTk5OTk5OTk5OTk4IDU1LjYwMDAwMDAwMDAwMDAyIDgzLjc5OTk5OTk5OTk5OTk1IDg0LjEwMDAwMDAwMDAwMDAyIDMxIDMyLjEwMDAwMDAwMDAwMDAyIDMwLjUgNzkuMjk5OTk5OTk5OTk5OTUtMC4wOTk5OTk5OTk5OTk5NjU5IDEwOS42OTk5OTk5OTk5OTk5My0yOS44MDAwMDAwMDAwMDAwMSAyOS42MDAwMDAwMDAwMDAwMjMtNzcuMTAwMDAwMDAwMDAwMDIgMzAuMjAwMDAwMDAwMDAwMDQ1LTEwOC4zMDAwMDAwMDAwMDAwMS0wLjY5OTk5OTk5OTk5OTkzMTgtOTIuNS05MS43MDAwMDAwMDAwMDAwNS0xODQuMi0xODQuMTAwMDAwMDAwMDAwMDItMjc2LjQtMjc1LjkwMDAwMDAwMDAwMDAzLTcuNTAwMDAwMDAwMDAwMDI4LTcuNS02LjIwMDAwMDAwMDAwMDAxNy0xMS4zOTk5OTk5OTk5OTk5NzcgMC42OTk5OTk5OTk5OTk5NzQ0LTE4LjMwMDAwMDAwMDAwMDAxIDkxLjgtOTEuMjk5OTk5OTk5OTk5OTggMTgzLjM5OTk5OTk5OTk5OTk4LTE4Mi44OTk5OTk5OTk5OTk5OCAyNzQuNy0yNzQuNyAxMS44MDAwMDAwMDAwMDAwMTEtMTEuODk5OTk5OTk5OTk5OTg4IDI3LTE2LjY5OTk5OTk5OTk5OTk5IDQxLTI0LjE5OTk5OTk5OTk5OTk5aDI4LjgwMDAwMDAwMDAwMDAxYzEuMzk5OTk5OTk5OTk5OTc3MyAzLjQgNC41OTk5OTk5OTk5OTk5NjYgMy4xIDcuMzk5OTk5OTk5OTk5OTc3IDQuMSA1OC4xOTk5OTk5OTk5OTk5OSAyMC41IDczLjY5OTk5OTk5OTk5OTk5IDg1LjUgMzAuOTAwMDAwMDAwMDAwMDM0IDEzMC05LjUgOS45MDAwMDAwMDAwMDAwMDYtMTkuNSAxOS41LTI5LjMwMDAwMDAwMDAwMDAxIDI5LjIwMDAwMDAwMDAwMDAxNy0yMS41IDIxLjE5OTk5OTk5OTk5OTk5LTQzIDQyLjUtNjguMzAwMDAwMDAwMDAwMDEgNjcuMzk5OTk5OTk5OTk5OThoMjMuMTAwMDAwMDAwMDAwMDIzYzQ3LjM5OTk5OTk5OTk5OTk4IDAgOTQuNjk5OTk5OTk5OTk5OTktMC4zOTk5OTk5OTk5OTk5NzcyNiAxNDIuMTAwMDAwMDAwMDAwMDIgMC4zMDAwMDAwMDAwMDAwMTEzNyAzNC44OTk5OTk5OTk5OTk5OCAwLjU5OTk5OTk5OTk5OTk5NDMgNjkuMTk5OTk5OTk5OTk5OTMgNi41IDEwMS43OTk5OTk5OTk5OTk5NSAxOS4wOTk5OTk5OTk5OTk5OTQgMTEzLjEwMDAwMDAwMDAwMDAyIDQzLjU5OTk5OTk5OTk5OTk5NCAxODIuMzk5OTk5OTk5OTk5OTggMTI3LjUwMDAwMDAwMDAwMDAzIDIyMC4xMDAwMDAwMDAwMDAwMiAyNDAuMjk5OTk5OTk5OTk5OTggOC44OTk5OTk5OTk5OTk5NzcgMjYuNzAwMDAwMDAwMDAwMDQ1IDExLjM5OTk5OTk5OTk5OTk3NyA1NC44MDAwMDAwMDAwMDAwNyAxOC4zOTk5OTk5OTk5OTk5NzcgODEuODAwMDAwMDAwMDAwMDcgMC4xMDAwMDAwMDAwMDAwMjI3NCAyNy41OTk5OTk5OTk5OTk5MSAwLjEwMDAwMDAwMDAwMDAyMjc0IDU1LjE5OTk5OTk5OTk5OTkzIDAuMTAwMDAwMDAwMDAwMDIyNzQgODIuNzk5OTk5OTk5OTk5OTV6Ii8+Cjwvc3ZnPg==\")";
|
|
6
6
|
export declare const IconReset = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5yZWZyZXNoPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InJlZnJlc2giIHVuaWNvZGU9IiYjeGVmZDE7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTg5OS44IDU1NC42aC00Mi4xOTk5OTk5OTk5OTk5M2MtMTguODk5OTk5OTk5OTk5OTc3IDAtMzYuNSAxNS4xOTk5OTk5OTk5OTk5MzItNDEuNjAwMDAwMDAwMDAwMDIgMzMuMzk5OTk5OTk5OTk5OTgtMzguMjk5OTk5OTk5OTk5OTU1IDEzOC4zOTk5OTk5OTk5OTk5OC0xNjUuMzk5OTk5OTk5OTk5OTggMjQwLTMxNi4yIDI0MC0xMDIuODAwMDAwMDAwMDAwMDEgMC0xOTQuOC00Ny4yOTk5OTk5OTk5OTk5NTUtMjU0LjktMTIxLjYwMDAwMDAwMDAwMDAyLTExLjkwMDAwMDAwMDAwMDAwNi0xNC42OTk5OTk5OTk5OTk5MzItOC44MDAwMDAwMDAwMDAwMTEtMzggNS4wOTk5OTk5OTk5OTk5OTQtNTAuNzk5OTk5OTk5OTk5OTU1bDg0LjgwMDAwMDAwMDAwMDAxLTc3Ljg5OTk5OTk5OTk5OTk4YzEzLjg5OTk5OTk5OTk5OTk3Ny0xMi44MDAwMDAwMDAwMDAwNjggOS44OTk5OTk5OTk5OTk5NzctMjMuMTAwMDAwMDAwMDAwMDIzLTktMjMuMTAwMDAwMDAwMDAwMDIzaC0yMjkuMTAwMDAwMDAwMDAwMDJjLTE4Ljg5OTk5OTk5OTk5OTk5IDAtMzQuMTk5OTk5OTk5OTk5OTkgMTUuMjk5OTk5OTk5OTk5OTU1LTM0LjE5OTk5OTk5OTk5OTk5IDM0LjE5OTk5OTk5OTk5OTkzdjIwNS4xMDAwMDAwMDAwMDAwMmMwIDE4Ljg5OTk5OTk5OTk5OTk3NyAxMS4yOTk5OTk5OTk5OTk5OTcgMjMuODAwMDAwMDAwMDAwMDY4IDI1LjA5OTk5OTk5OTk5OTk5NCAxMWwzMC42MDAwMDAwMDAwMDAwMS0yOC4xOTk5OTk5OTk5OTk5MzJjMTMuODk5OTk5OTk5OTk5OTkxLTEyLjgwMDAwMDAwMDAwMDA2OCAzMy44OTk5OTk5OTk5OTk5OS0xMC42MDAwMDAwMDAwMDAwMjMgNDYuMTAwMDAwMDAwMDAwMDEgMy44OTk5OTk5OTk5OTk5NzczIDgwLjI5OTk5OTk5OTk5OTk4IDk1Ljg5OTk5OTk5OTk5OTk4IDIwMC44OTk5OTk5OTk5OTk5OCAxNTYuODk5OTk5OTk5OTk5OTggMzM1LjUgMTU2Ljg5OTk5OTk5OTk5OTk4IDIxMS40OTk5OTk5OTk5OTk5NCAwIDM4Ny43LTE1MCA0MjguNTk5OTk5OTk5OTk5OTctMzQ5LjIwMDAwMDAwMDAwMDA1IDMuODk5OTk5OTk5OTk5OTc3My0xOC41LTkuNjk5OTk5OTk5OTk5OTMyLTMzLjY5OTk5OTk5OTk5OTkzLTI4LjYwMDAwMDAwMDAwMDAyMy0zMy42OTk5OTk5OTk5OTk5M3ogbTEzLjUtMzU4LjQwMDAwMDAwMDAwMDAzbC0yOS44OTk5OTk5OTk5OTk5NzcgMjkuODAwMDAwMDAwMDAwMDFjLTEzLjM5OTk5OTk5OTk5OTk3NyAxMy4zMDAwMDAwMDAwMDAwMTEtMzIuNzk5OTk5OTk5OTk5OTU1IDExLjUtNDQuNzk5OTk5OTk5OTk5OTU1LTMuMDk5OTk5OTk5OTk5OTk0My04MC4yMDAwMDAwMDAwMDAwNS05Ny45LTIwMi4zMDAwMDAwMDAwMDAwNy0xNjAuNC0zMzguOC0xNjAuNC0yMTEuMTAwMDAwMDAwMDAwMDIgMC0zODcuNiAxNDkuNy00MjguMyAzNDkuMi0zLjc5OTk5OTk5OTk5OTk5NyAxOC41IDkuNzk5OTk5OTk5OTk5OTk3IDMzLjgwMDAwMDAwMDAwMDAxIDI4LjcwMDAwMDAwMDAwMDAwMyAzMy44MDAwMDAwMDAwMDAwMWg0Mi4yYzE4LjkwMDAwMDAwMDAwMDAwNiAwIDM2LjUtMTUuMTAwMDAwMDAwMDAwMDIzIDQxLjUtMzMuMzAwMDAwMDAwMDAwMDEgMzguMjk5OTk5OTk5OTk5OTgtMTM4LjggMTY1LjQtMjQwLjIgMzE1LjktMjQwLjIgMTA2LjYwMDAwMDAwMDAwMDAyIDAgMjAxLjIwMDAwMDAwMDAwMDA1IDUwLjUgMjYxLjIwMDAwMDAwMDAwMDA1IDEyOS4xMDAwMDAwMDAwMDAwMiAxMS41IDE1IDguMzk5OTk5OTk5OTk5OTc3IDM5LTQuODk5OTk5OTk5OTk5OTc3IDUyLjI5OTk5OTk5OTk5OTk1NWwtNjcuODAwMDAwMDAwMDAwMDcgNjcuOTAwMDAwMDAwMDAwMDNjLTEzLjI5OTk5OTk5OTk5OTk1NSAxMy4zOTk5OTk5OTk5OTk5NzctOC44OTk5OTk5OTk5OTk5NzcgMjQuMTk5OTk5OTk5OTk5OTkgMTAgMjQuMTk5OTk5OTk5OTk5OTloMjA1LjEwMDAwMDAwMDAwMDAyYzE4Ljg5OTk5OTk5OTk5OTk3NyAwIDM0LjIwMDAwMDAwMDAwMDA0NS0xNS4zMDAwMDAwMDAwMDAwMTEgMzQuMjAwMDAwMDAwMDAwMDQ1LTM0LjE5OTk5OTk5OTk5OTk5di0yMDUuMTAwMDAwMDAwMDAwMDJjLTAuMTAwMDAwMDAwMDAwMDIyNzQtMTguODk5OTk5OTk5OTk5OTc3LTEwLjg5OTk5OTk5OTk5OTk3Ny0yMy4zOTk5OTk5OTk5OTk5NzctMjQuMzAwMDAwMDAwMDAwMDY4LTEweiIvPgo8L3N2Zz4=\")";
|
|
7
|
+
export declare const IconOverlay = "url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwMCIgd2lkdGg9IjEwMDAiPjxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xMDAgMTAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDEwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCAxMDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNDAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDQwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA0MDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNzAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDcwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA3MDBoMjAwdjIwMGgtMjAwdi0yMDB6Ii8+PC9zdmc+\")";
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { PhotoViewer } from './components/PhotoViewer';
|
|
2
2
|
export type { PhotoViewerProps } from './components/PhotoViewer';
|
|
3
3
|
export { Gallery } from './components/Gallery';
|
|
4
|
-
export type { ZZImage } from './types/image.type';
|
|
5
4
|
export { Image } from './components/Image';
|
|
5
|
+
export type { ZZImage, OverlayPosition, OverlaySize } from './types/image.type';
|
package/dist/index.esm.js
CHANGED
|
@@ -39,28 +39,18 @@ var IconZoomIn = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdG
|
|
|
39
39
|
var IconZoomOut = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51aS16b29tLW91dDwvdGl0bGU+CjxnbHlwaCBnbHlwaC1uYW1lPSJ1aS16b29tLW91dCIgdW5pY29kZT0iJiN4ZWM5ODsiIGhvcml6LWFkdi14PSIxMDAwIiAvPgo8cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNOTgyLjIgNzg4LjZsLTIzNC45MDAwMDAwMDAwMDAxLTIxNmMyNy01My41IDQyLjYwMDAwMDAwMDAwMDAyLTExMy43MDAwMDAwMDAwMDAwNSA0Mi42MDAwMDAwMDAwMDAwMi0xNzcuNzAwMDAwMDAwMDAwMDUgMC0yMTguMDk5OTk5OTk5OTk5OTctMTc2Ljg5OTk5OTk5OTk5OTk4LTM5NC45LTM5NC45LTM5NC45LTIxOC4yIDAtMzk1IDE3Ni44LTM5NSAzOTQuOSAwIDIxOC4xMDAwMDAwMDAwMDAwMiAxNzYuOCAzOTUgMzk1IDM5NSA2My44OTk5OTk5OTk5OTk5OCAwIDEyNC4xMDAwMDAwMDAwMDAwMi0xNS41IDE3Ny42MDAwMDAwMDAwMDAwMi00Mi41bDIxNS44OTk5OTk5OTk5OTk5OCAyMzQuODk5OTk5OTk5OTk5OThjMjEgMjIuOTAwMDAwMDAwMDAwMDkgNTYuMjAwMDAwMDAwMDAwMDQ1IDIzLjYwMDAwMDAwMDAwMDAyMyA3OC4yMDAwMDAwMDAwMDAwNSAxLjYwMDAwMDAwMDAwMDAyMjdsMTE3LjI5OTk5OTk5OTk5OTk1LTExNy4yOTk5OTk5OTk5OTk5NWMyMS43OTk5OTk5OTk5OTk5NTUtMjEuODAwMDAwMDAwMDAwMDY4IDIxLjEwMDAwMDAwMDAwMDAyMy01Ny0xLjc5OTk5OTk5OTk5OTk1NDUtNzh6IG0tNTg3LjItMTUyLjcwMDAwMDAwMDAwMDA1Yy0xMzMgMC0yNDAuOS0xMDcuODk5OTk5OTk5OTk5OTgtMjQwLjktMjQwLjg5OTk5OTk5OTk5OTk4czEwNy45LTI0MSAyNDAuOS0yNDFjMTMzLjEwMDAwMDAwMDAwMDAyIDAgMjQwLjg5OTk5OTk5OTk5OTk4IDEwNy44OTk5OTk5OTk5OTk5OCAyNDAuODk5OTk5OTk5OTk5OTggMjQwLjg5OTk5OTk5OTk5OTk4cy0xMDcuODk5OTk5OTk5OTk5OTggMjQxLTI0MC44OTk5OTk5OTk5OTk5OCAyNDF6IG0xMjUuMjk5OTk5OTk5OTk5OTUtMjgyLjVoLTI1My41OTk5OTk5OTk5OTk5N2MtMTIuMzk5OTk5OTk5OTk5OTc3IDAtMjIuNSAxMC4xMDAwMDAwMDAwMDAwMjMtMjIuNSAyMi42MDAwMDAwMDAwMDAwMjN2MjkuNWMwIDEyLjM5OTk5OTk5OTk5OTk3NyAxMC4xMDAwMDAwMDAwMDAwMjMgMjIuNjAwMDAwMDAwMDAwMDIzIDIyLjUgMjIuNjAwMDAwMDAwMDAwMDIzaDI1My41OTk5OTk5OTk5OTk5N2MxMi40MDAwMDAwMDAwMDAwOTEgMCAyMi41LTEwLjEwMDAwMDAwMDAwMDAyMyAyMi41LTIyLjYwMDAwMDAwMDAwMDAyM3YtMjkuNWMwLTEyLjM5OTk5OTk5OTk5OTk3Ny0xMC4wOTk5OTk5OTk5OTk5MDktMjIuNjAwMDAwMDAwMDAwMDIzLTIyLjUtMjIuNjAwMDAwMDAwMDAwMDIzeiIvPgo8L3N2Zz4=\")";
|
|
40
40
|
var IconRotate = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51bmRvPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InVuZG8iIHVuaWNvZGU9IiYjeGVlMGI7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggIGZpbGw9IiNmZmZmZmYiIGQ9Ik04OTguMSA2NTVjLTcuMjAwMDAwMDAwMDAwMDQ1NSAyOS41LTExLjM5OTk5OTk5OTk5OTk3NyA1OS43MDAwMDAwMDAwMDAwNDUtMjEuNzAwMDAwMDAwMDAwMDQ1IDg4LjUtNTMuMzk5OTk5OTk5OTk5OTggMTUwLjcwMDAwMDAwMDAwMDA1LTIwMCAyNTUuODk5OTk5OTk5OTk5OTgtMzU4LjI5OTk5OTk5OTk5OTk1IDI1Ni41LTQxLjcwMDAwMDAwMDAwMDA0NSAwLjEwMDAwMDAwMDAwMDAyMjc0LTc2LjMwMDAwMDAwMDAwMDAxLTI4Ljg5OTk5OTk5OTk5OTk3Ny04MC40MDAwMDAwMDAwMDAwMy02Ny4zOTk5OTk5OTk5OTk5OC00LjM5OTk5OTk5OTk5OTk3Ny00MC44OTk5OTk5OTk5OTk5OCAyMC45MDAwMDAwMDAwMDAwMzQtNzcuODk5OTk5OTk5OTk5OTggNjAuNjAwMDAwMDAwMDAwMDItODUuMTAwMDAwMDAwMDAwMDIgMjIuODAwMDAwMDAwMDAwMDEtNC4xMDAwMDAwMDAwMDAwMjMgNDYuNjk5OTk5OTk5OTk5OTktMi4yOTk5OTk5OTk5OTk5NTQ1IDY5LjQwMDAwMDAwMDAwMDAzLTguNSA5Mi4wOTk5OTk5OTk5OTk5MS0yNS4yMDAwMDAwMDAwMDAwNDUgMTUzLTg0IDE3MC43OTk5OTk5OTk5OTk5NS0xNzcuMjk5OTk5OTk5OTk5OTUgMTguODk5OTk5OTk5OTk5OTc3LTk4LjMwMDAwMDAwMDAwMDA3LTkuNS0xODQuMDAwMDAwMDAwMDAwMDYtOTIuMjAwMDAwMDAwMDAwMDUtMjQ2LjQwMDAwMDAwMDAwMDAzLTIzLjM5OTk5OTk5OTk5OTk3Ny0xNy42MDAwMDAwMDAwMDAwMjMtNTAuODk5OTk5OTk5OTk5OTgtMjguMTk5OTk5OTk5OTk5OTktODAtMjktNTYuMTk5OTk5OTk5OTk5OTMtMS41LTExMi4zOTk5OTk5OTk5OTk5OC0wLjQwMDAwMDAwMDAwMDAzNDEtMTY5LjA5OTk5OTk5OTk5OTk3LTAuNDAwMDAwMDAwMDAwMDM0MSAwLjQwMDAwMDAwMDAwMDAzNDEgNy41IDYuNSAxMC4yMDAwMDAwMDAwMDAwNDUgMTAuNDAwMDAwMDAwMDAwMDM0IDE0LjEwMDAwMDAwMDAwMDAyMyAyNy43OTk5OTk5OTk5OTk5NTUgMjguMTAwMDAwMDAwMDAwMDIzIDU2LjM5OTk5OTk5OTk5OTk4IDU1LjYwMDAwMDAwMDAwMDAyIDgzLjc5OTk5OTk5OTk5OTk1IDg0LjEwMDAwMDAwMDAwMDAyIDMxIDMyLjEwMDAwMDAwMDAwMDAyIDMwLjUgNzkuMjk5OTk5OTk5OTk5OTUtMC4wOTk5OTk5OTk5OTk5NjU5IDEwOS42OTk5OTk5OTk5OTk5My0yOS44MDAwMDAwMDAwMDAwMSAyOS42MDAwMDAwMDAwMDAwMjMtNzcuMTAwMDAwMDAwMDAwMDIgMzAuMjAwMDAwMDAwMDAwMDQ1LTEwOC4zMDAwMDAwMDAwMDAwMS0wLjY5OTk5OTk5OTk5OTkzMTgtOTIuNS05MS43MDAwMDAwMDAwMDAwNS0xODQuMi0xODQuMTAwMDAwMDAwMDAwMDItMjc2LjQtMjc1LjkwMDAwMDAwMDAwMDAzLTcuNTAwMDAwMDAwMDAwMDI4LTcuNS02LjIwMDAwMDAwMDAwMDAxNy0xMS4zOTk5OTk5OTk5OTk5NzcgMC42OTk5OTk5OTk5OTk5NzQ0LTE4LjMwMDAwMDAwMDAwMDAxIDkxLjgtOTEuMjk5OTk5OTk5OTk5OTggMTgzLjM5OTk5OTk5OTk5OTk4LTE4Mi44OTk5OTk5OTk5OTk5OCAyNzQuNy0yNzQuNyAxMS44MDAwMDAwMDAwMDAwMTEtMTEuODk5OTk5OTk5OTk5OTg4IDI3LTE2LjY5OTk5OTk5OTk5OTk5IDQxLTI0LjE5OTk5OTk5OTk5OTk5aDI4LjgwMDAwMDAwMDAwMDAxYzEuMzk5OTk5OTk5OTk5OTc3MyAzLjQgNC41OTk5OTk5OTk5OTk5NjYgMy4xIDcuMzk5OTk5OTk5OTk5OTc3IDQuMSA1OC4xOTk5OTk5OTk5OTk5OSAyMC41IDczLjY5OTk5OTk5OTk5OTk5IDg1LjUgMzAuOTAwMDAwMDAwMDAwMDM0IDEzMC05LjUgOS45MDAwMDAwMDAwMDAwMDYtMTkuNSAxOS41LTI5LjMwMDAwMDAwMDAwMDAxIDI5LjIwMDAwMDAwMDAwMDAxNy0yMS41IDIxLjE5OTk5OTk5OTk5OTk5LTQzIDQyLjUtNjguMzAwMDAwMDAwMDAwMDEgNjcuMzk5OTk5OTk5OTk5OThoMjMuMTAwMDAwMDAwMDAwMDIzYzQ3LjM5OTk5OTk5OTk5OTk4IDAgOTQuNjk5OTk5OTk5OTk5OTktMC4zOTk5OTk5OTk5OTk5NzcyNiAxNDIuMTAwMDAwMDAwMDAwMDIgMC4zMDAwMDAwMDAwMDAwMTEzNyAzNC44OTk5OTk5OTk5OTk5OCAwLjU5OTk5OTk5OTk5OTk5NDMgNjkuMTk5OTk5OTk5OTk5OTMgNi41IDEwMS43OTk5OTk5OTk5OTk5NSAxOS4wOTk5OTk5OTk5OTk5OTQgMTEzLjEwMDAwMDAwMDAwMDAyIDQzLjU5OTk5OTk5OTk5OTk5NCAxODIuMzk5OTk5OTk5OTk5OTggMTI3LjUwMDAwMDAwMDAwMDAzIDIyMC4xMDAwMDAwMDAwMDAwMiAyNDAuMjk5OTk5OTk5OTk5OTggOC44OTk5OTk5OTk5OTk5NzcgMjYuNzAwMDAwMDAwMDAwMDQ1IDExLjM5OTk5OTk5OTk5OTk3NyA1NC44MDAwMDAwMDAwMDAwNyAxOC4zOTk5OTk5OTk5OTk5NzcgODEuODAwMDAwMDAwMDAwMDcgMC4xMDAwMDAwMDAwMDAwMjI3NCAyNy41OTk5OTk5OTk5OTk5MSAwLjEwMDAwMDAwMDAwMDAyMjc0IDU1LjE5OTk5OTk5OTk5OTkzIDAuMTAwMDAwMDAwMDAwMDIyNzQgODIuNzk5OTk5OTk5OTk5OTV6Ii8+Cjwvc3ZnPg==\")";
|
|
41
41
|
var IconReset = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5yZWZyZXNoPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InJlZnJlc2giIHVuaWNvZGU9IiYjeGVmZDE7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTg5OS44IDU1NC42aC00Mi4xOTk5OTk5OTk5OTk5M2MtMTguODk5OTk5OTk5OTk5OTc3IDAtMzYuNSAxNS4xOTk5OTk5OTk5OTk5MzItNDEuNjAwMDAwMDAwMDAwMDIgMzMuMzk5OTk5OTk5OTk5OTgtMzguMjk5OTk5OTk5OTk5OTU1IDEzOC4zOTk5OTk5OTk5OTk5OC0xNjUuMzk5OTk5OTk5OTk5OTggMjQwLTMxNi4yIDI0MC0xMDIuODAwMDAwMDAwMDAwMDEgMC0xOTQuOC00Ny4yOTk5OTk5OTk5OTk5NTUtMjU0LjktMTIxLjYwMDAwMDAwMDAwMDAyLTExLjkwMDAwMDAwMDAwMDAwNi0xNC42OTk5OTk5OTk5OTk5MzItOC44MDAwMDAwMDAwMDAwMTEtMzggNS4wOTk5OTk5OTk5OTk5OTQtNTAuNzk5OTk5OTk5OTk5OTU1bDg0LjgwMDAwMDAwMDAwMDAxLTc3Ljg5OTk5OTk5OTk5OTk4YzEzLjg5OTk5OTk5OTk5OTk3Ny0xMi44MDAwMDAwMDAwMDAwNjggOS44OTk5OTk5OTk5OTk5NzctMjMuMTAwMDAwMDAwMDAwMDIzLTktMjMuMTAwMDAwMDAwMDAwMDIzaC0yMjkuMTAwMDAwMDAwMDAwMDJjLTE4Ljg5OTk5OTk5OTk5OTk5IDAtMzQuMTk5OTk5OTk5OTk5OTkgMTUuMjk5OTk5OTk5OTk5OTU1LTM0LjE5OTk5OTk5OTk5OTk5IDM0LjE5OTk5OTk5OTk5OTkzdjIwNS4xMDAwMDAwMDAwMDAwMmMwIDE4Ljg5OTk5OTk5OTk5OTk3NyAxMS4yOTk5OTk5OTk5OTk5OTcgMjMuODAwMDAwMDAwMDAwMDY4IDI1LjA5OTk5OTk5OTk5OTk5NCAxMWwzMC42MDAwMDAwMDAwMDAwMS0yOC4xOTk5OTk5OTk5OTk5MzJjMTMuODk5OTk5OTk5OTk5OTkxLTEyLjgwMDAwMDAwMDAwMDA2OCAzMy44OTk5OTk5OTk5OTk5OS0xMC42MDAwMDAwMDAwMDAwMjMgNDYuMTAwMDAwMDAwMDAwMDEgMy44OTk5OTk5OTk5OTk5NzczIDgwLjI5OTk5OTk5OTk5OTk4IDk1Ljg5OTk5OTk5OTk5OTk4IDIwMC44OTk5OTk5OTk5OTk5OCAxNTYuODk5OTk5OTk5OTk5OTggMzM1LjUgMTU2Ljg5OTk5OTk5OTk5OTk4IDIxMS40OTk5OTk5OTk5OTk5NCAwIDM4Ny43LTE1MCA0MjguNTk5OTk5OTk5OTk5OTctMzQ5LjIwMDAwMDAwMDAwMDA1IDMuODk5OTk5OTk5OTk5OTc3My0xOC41LTkuNjk5OTk5OTk5OTk5OTMyLTMzLjY5OTk5OTk5OTk5OTkzLTI4LjYwMDAwMDAwMDAwMDAyMy0zMy42OTk5OTk5OTk5OTk5M3ogbTEzLjUtMzU4LjQwMDAwMDAwMDAwMDAzbC0yOS44OTk5OTk5OTk5OTk5NzcgMjkuODAwMDAwMDAwMDAwMDFjLTEzLjM5OTk5OTk5OTk5OTk3NyAxMy4zMDAwMDAwMDAwMDAwMTEtMzIuNzk5OTk5OTk5OTk5OTU1IDExLjUtNDQuNzk5OTk5OTk5OTk5OTU1LTMuMDk5OTk5OTk5OTk5OTk0My04MC4yMDAwMDAwMDAwMDAwNS05Ny45LTIwMi4zMDAwMDAwMDAwMDAwNy0xNjAuNC0zMzguOC0xNjAuNC0yMTEuMTAwMDAwMDAwMDAwMDIgMC0zODcuNiAxNDkuNy00MjguMyAzNDkuMi0zLjc5OTk5OTk5OTk5OTk5NyAxOC41IDkuNzk5OTk5OTk5OTk5OTk3IDMzLjgwMDAwMDAwMDAwMDAxIDI4LjcwMDAwMDAwMDAwMDAwMyAzMy44MDAwMDAwMDAwMDAwMWg0Mi4yYzE4LjkwMDAwMDAwMDAwMDAwNiAwIDM2LjUtMTUuMTAwMDAwMDAwMDAwMDIzIDQxLjUtMzMuMzAwMDAwMDAwMDAwMDEgMzguMjk5OTk5OTk5OTk5OTgtMTM4LjggMTY1LjQtMjQwLjIgMzE1LjktMjQwLjIgMTA2LjYwMDAwMDAwMDAwMDAyIDAgMjAxLjIwMDAwMDAwMDAwMDA1IDUwLjUgMjYxLjIwMDAwMDAwMDAwMDA1IDEyOS4xMDAwMDAwMDAwMDAwMiAxMS41IDE1IDguMzk5OTk5OTk5OTk5OTc3IDM5LTQuODk5OTk5OTk5OTk5OTc3IDUyLjI5OTk5OTk5OTk5OTk1NWwtNjcuODAwMDAwMDAwMDAwMDcgNjcuOTAwMDAwMDAwMDAwMDNjLTEzLjI5OTk5OTk5OTk5OTk1NSAxMy4zOTk5OTk5OTk5OTk5NzctOC44OTk5OTk5OTk5OTk5NzcgMjQuMTk5OTk5OTk5OTk5OTkgMTAgMjQuMTk5OTk5OTk5OTk5OTloMjA1LjEwMDAwMDAwMDAwMDAyYzE4Ljg5OTk5OTk5OTk5OTk3NyAwIDM0LjIwMDAwMDAwMDAwMDA0NS0xNS4zMDAwMDAwMDAwMDAwMTEgMzQuMjAwMDAwMDAwMDAwMDQ1LTM0LjE5OTk5OTk5OTk5OTk5di0yMDUuMTAwMDAwMDAwMDAwMDJjLTAuMTAwMDAwMDAwMDAwMDIyNzQtMTguODk5OTk5OTk5OTk5OTc3LTEwLjg5OTk5OTk5OTk5OTk3Ny0yMy4zOTk5OTk5OTk5OTk5NzctMjQuMzAwMDAwMDAwMDAwMDY4LTEweiIvPgo8L3N2Zz4=\")";
|
|
42
|
+
var IconOverlay = "url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwMCIgd2lkdGg9IjEwMDAiPjxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xMDAgMTAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDEwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCAxMDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNDAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDQwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA0MDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNzAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDcwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA3MDBoMjAwdjIwMGgtMjAwdi0yMDB6Ii8+PC9zdmc+\")";
|
|
42
43
|
|
|
43
44
|
var NavigationActionButton = function (_a) {
|
|
44
|
-
var icon = _a.icon, onClick = _a.onClick, transform = _a.transform;
|
|
45
|
-
return (React.createElement("div", { className: "nav-action-button", style: {
|
|
46
|
-
width: '12px',
|
|
47
|
-
height: '12px',
|
|
48
|
-
backgroundImage: icon,
|
|
49
|
-
backgroundSize: 'contain',
|
|
50
|
-
backgroundRepeat: 'no-repeat',
|
|
51
|
-
cursor: 'pointer',
|
|
52
|
-
transform: transform,
|
|
53
|
-
transition: 'all 0.2s ease-in-out',
|
|
54
|
-
borderRadius: '4px',
|
|
55
|
-
padding: '4px',
|
|
56
|
-
}, onClick: onClick }));
|
|
45
|
+
var icon = _a.icon, onClick = _a.onClick, transform = _a.transform, customStyle = _a.style;
|
|
46
|
+
return (React.createElement("div", { className: "nav-action-button", style: __assign({ width: '12px', height: '12px', backgroundImage: icon, backgroundSize: 'contain', backgroundRepeat: 'no-repeat', cursor: 'pointer', transform: transform, transition: 'all 0.2s ease-in-out', borderRadius: '4px', padding: '4px' }, customStyle), onClick: onClick }));
|
|
57
47
|
};
|
|
58
48
|
var style = document.createElement('style');
|
|
59
49
|
style.textContent = "\n .nav-action-button:hover {\n transform: scale(1.2);\n background-color: rgba(0, 0, 0, 0.05);\n }\n";
|
|
60
50
|
document.head.appendChild(style);
|
|
61
51
|
|
|
62
52
|
var Navigation = function (_a) {
|
|
63
|
-
var title = _a.title, onClose = _a.onClose, onZoomIn = _a.onZoomIn, onZoomOut = _a.onZoomOut, onRotate = _a.onRotate, onReset = _a.onReset, onNext = _a.onNext, onPrevious = _a.onPrevious, _b = _a.showControls, showControls =
|
|
53
|
+
var title = _a.title, onClose = _a.onClose, onZoomIn = _a.onZoomIn, onZoomOut = _a.onZoomOut, onRotate = _a.onRotate, onReset = _a.onReset, onNext = _a.onNext, onPrevious = _a.onPrevious, onToggleOverlay = _a.onToggleOverlay, _b = _a.showOverlay, showOverlay = _b === void 0 ? false : _b, _c = _a.showControls, showControls = _c === void 0 ? true : _c;
|
|
64
54
|
return (React.createElement("div", { className: "photo-viewer-navigation", style: {
|
|
65
55
|
position: 'fixed',
|
|
66
56
|
bottom: 30,
|
|
@@ -86,9 +76,126 @@ var Navigation = function (_a) {
|
|
|
86
76
|
onZoomIn && React.createElement(NavigationActionButton, { icon: IconZoomIn, onClick: onZoomIn }),
|
|
87
77
|
onRotate && React.createElement(NavigationActionButton, { icon: IconRotate, onClick: function () { return onRotate('left'); } }),
|
|
88
78
|
onRotate && (React.createElement(NavigationActionButton, { icon: IconRotate, onClick: function () { return onRotate('right'); }, transform: "rotateY(180deg)" })),
|
|
79
|
+
onToggleOverlay && (React.createElement(NavigationActionButton, { icon: IconOverlay, onClick: onToggleOverlay, style: showOverlay ? { backgroundColor: 'rgba(255, 255, 255, 0.2)' } : undefined })),
|
|
89
80
|
onClose && React.createElement(NavigationActionButton, { icon: IconClose, onClick: onClose }))));
|
|
90
81
|
};
|
|
91
82
|
|
|
83
|
+
var ImageOverlay = function (_a) {
|
|
84
|
+
var overlay = _a.overlay, _b = _a.position, position = _b === void 0 ? 'center' : _b, _c = _a.size, size = _c === void 0 ? {} : _c;
|
|
85
|
+
// Calculate position styles
|
|
86
|
+
var getPositionStyles = function (pos) {
|
|
87
|
+
var styles = {};
|
|
88
|
+
switch (pos) {
|
|
89
|
+
case 'center':
|
|
90
|
+
styles.top = '50%';
|
|
91
|
+
styles.left = '50%';
|
|
92
|
+
styles.transform = 'translate(-50%, -50%)';
|
|
93
|
+
styles.display = 'flex';
|
|
94
|
+
styles.alignItems = 'center';
|
|
95
|
+
styles.justifyContent = 'center';
|
|
96
|
+
break;
|
|
97
|
+
case 'top-left':
|
|
98
|
+
styles.top = 0;
|
|
99
|
+
styles.left = 0;
|
|
100
|
+
break;
|
|
101
|
+
case 'top-right':
|
|
102
|
+
styles.top = 0;
|
|
103
|
+
styles.right = 0;
|
|
104
|
+
break;
|
|
105
|
+
case 'bottom-left':
|
|
106
|
+
styles.bottom = 0;
|
|
107
|
+
styles.left = 0;
|
|
108
|
+
break;
|
|
109
|
+
case 'bottom-right':
|
|
110
|
+
styles.bottom = 0;
|
|
111
|
+
styles.right = 0;
|
|
112
|
+
break;
|
|
113
|
+
case 'top':
|
|
114
|
+
styles.top = 0;
|
|
115
|
+
styles.left = '50%';
|
|
116
|
+
styles.transform = 'translateX(-50%)';
|
|
117
|
+
break;
|
|
118
|
+
case 'bottom':
|
|
119
|
+
styles.bottom = 0;
|
|
120
|
+
styles.left = '50%';
|
|
121
|
+
styles.transform = 'translateX(-50%)';
|
|
122
|
+
break;
|
|
123
|
+
case 'left':
|
|
124
|
+
styles.top = '50%';
|
|
125
|
+
styles.left = 0;
|
|
126
|
+
styles.transform = 'translateY(-50%)';
|
|
127
|
+
break;
|
|
128
|
+
case 'right':
|
|
129
|
+
styles.top = '50%';
|
|
130
|
+
styles.right = 0;
|
|
131
|
+
styles.transform = 'translateY(-50%)';
|
|
132
|
+
break;
|
|
133
|
+
}
|
|
134
|
+
return styles;
|
|
135
|
+
};
|
|
136
|
+
// Calculate size styles
|
|
137
|
+
var getSizeStyles = function () {
|
|
138
|
+
var sizeStyles = {};
|
|
139
|
+
if (size.maxWidth !== undefined) {
|
|
140
|
+
sizeStyles.maxWidth = typeof size.maxWidth === 'number' ? "".concat(size.maxWidth, "px") : size.maxWidth;
|
|
141
|
+
}
|
|
142
|
+
if (size.maxHeight !== undefined) {
|
|
143
|
+
sizeStyles.maxHeight = typeof size.maxHeight === 'number' ? "".concat(size.maxHeight, "px") : size.maxHeight;
|
|
144
|
+
}
|
|
145
|
+
if (size.width !== undefined) {
|
|
146
|
+
sizeStyles.width = typeof size.width === 'number' ? "".concat(size.width, "px") : size.width;
|
|
147
|
+
}
|
|
148
|
+
if (size.height !== undefined) {
|
|
149
|
+
sizeStyles.height = typeof size.height === 'number' ? "".concat(size.height, "px") : size.height;
|
|
150
|
+
}
|
|
151
|
+
// Keep aspect ratio if only one dimension is specified
|
|
152
|
+
if (size.width && !size.height) {
|
|
153
|
+
sizeStyles.height = 'auto';
|
|
154
|
+
}
|
|
155
|
+
else if (size.height && !size.width) {
|
|
156
|
+
sizeStyles.width = 'auto';
|
|
157
|
+
}
|
|
158
|
+
// If maxWidth or maxHeight is set, ensure aspect ratio is maintained
|
|
159
|
+
if (size.maxWidth && !size.maxHeight && !size.width && !size.height) {
|
|
160
|
+
sizeStyles.height = 'auto';
|
|
161
|
+
}
|
|
162
|
+
else if (size.maxHeight && !size.maxWidth && !size.width && !size.height) {
|
|
163
|
+
sizeStyles.width = 'auto';
|
|
164
|
+
}
|
|
165
|
+
return sizeStyles;
|
|
166
|
+
};
|
|
167
|
+
var positionStyles = getPositionStyles(position);
|
|
168
|
+
var sizeStyles = getSizeStyles();
|
|
169
|
+
// If no size is specified, assume the overlay should cover the full image
|
|
170
|
+
var hasSizeConstraints = size.maxWidth !== undefined ||
|
|
171
|
+
size.maxHeight !== undefined ||
|
|
172
|
+
size.width !== undefined ||
|
|
173
|
+
size.height !== undefined;
|
|
174
|
+
var shouldCoverFullImage = !hasSizeConstraints;
|
|
175
|
+
// Check if overlay is a URL string
|
|
176
|
+
var isUrlOverlay = typeof overlay === 'string';
|
|
177
|
+
return (React.createElement("div", { style: {
|
|
178
|
+
position: 'absolute',
|
|
179
|
+
pointerEvents: 'none',
|
|
180
|
+
top: shouldCoverFullImage ? 0 : positionStyles.top,
|
|
181
|
+
left: shouldCoverFullImage ? 0 : positionStyles.left,
|
|
182
|
+
right: shouldCoverFullImage ? 0 : positionStyles.right,
|
|
183
|
+
bottom: shouldCoverFullImage ? 0 : positionStyles.bottom,
|
|
184
|
+
width: shouldCoverFullImage ? '100%' : sizeStyles.width,
|
|
185
|
+
height: shouldCoverFullImage ? '100%' : sizeStyles.height,
|
|
186
|
+
maxWidth: shouldCoverFullImage ? undefined : sizeStyles.maxWidth,
|
|
187
|
+
maxHeight: shouldCoverFullImage ? undefined : sizeStyles.maxHeight,
|
|
188
|
+
transform: shouldCoverFullImage ? undefined : positionStyles.transform,
|
|
189
|
+
display: shouldCoverFullImage ? 'block' : positionStyles.display,
|
|
190
|
+
alignItems: positionStyles.alignItems,
|
|
191
|
+
justifyContent: positionStyles.justifyContent,
|
|
192
|
+
} }, isUrlOverlay ? (React.createElement("img", { src: overlay, alt: "Overlay", style: {
|
|
193
|
+
width: '100%',
|
|
194
|
+
height: '100%',
|
|
195
|
+
objectFit: 'contain',
|
|
196
|
+
} })) : (overlay)));
|
|
197
|
+
};
|
|
198
|
+
|
|
92
199
|
var DEFAULT_ZOOM_STEP = 0.3;
|
|
93
200
|
var DEFAULT_LARGE_ZOOM = 4;
|
|
94
201
|
var defaultSettings = {
|
|
@@ -109,13 +216,15 @@ var PhotoViewer = function (_a) {
|
|
|
109
216
|
var _c = useState(1), zoom = _c[0], setZoom = _c[1];
|
|
110
217
|
var _d = useState(0), rotationCount = _d[0], setRotationCount = _d[1];
|
|
111
218
|
var _e = useState(false), isHovered = _e[0], setIsHovered = _e[1];
|
|
219
|
+
var _f = useState(false), showOverlay = _f[0], setShowOverlay = _f[1];
|
|
112
220
|
var containerRef = useRef(null);
|
|
113
221
|
var imageRef = useRef(null);
|
|
114
|
-
var
|
|
222
|
+
var _g = useState(selectedImage), currentSelectedImage = _g[0], setCurrentSelectedImage = _g[1];
|
|
115
223
|
useEffect(function () {
|
|
116
224
|
setCurrentSelectedImage(selectedImage);
|
|
117
225
|
setZoom(1);
|
|
118
226
|
setRotationCount(0);
|
|
227
|
+
setShowOverlay(false);
|
|
119
228
|
}, [selectedImage]);
|
|
120
229
|
var handleNext = useCallback(function () {
|
|
121
230
|
var currentImageIndex = images.findIndex(function (img) { return img.id === (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.id); });
|
|
@@ -125,6 +234,7 @@ var PhotoViewer = function (_a) {
|
|
|
125
234
|
setCurrentSelectedImage(nextImage);
|
|
126
235
|
setZoom(1);
|
|
127
236
|
setRotationCount(0);
|
|
237
|
+
setShowOverlay(false);
|
|
128
238
|
onImageChange === null || onImageChange === void 0 ? void 0 : onImageChange(nextImage);
|
|
129
239
|
}
|
|
130
240
|
}, [images, currentSelectedImage, onImageChange]);
|
|
@@ -136,6 +246,7 @@ var PhotoViewer = function (_a) {
|
|
|
136
246
|
setCurrentSelectedImage(prevImage);
|
|
137
247
|
setZoom(1);
|
|
138
248
|
setRotationCount(0);
|
|
249
|
+
setShowOverlay(false);
|
|
139
250
|
onImageChange === null || onImageChange === void 0 ? void 0 : onImageChange(prevImage);
|
|
140
251
|
}
|
|
141
252
|
}, [images, currentSelectedImage, onImageChange]);
|
|
@@ -233,7 +344,7 @@ var PhotoViewer = function (_a) {
|
|
|
233
344
|
justifyContent: 'center',
|
|
234
345
|
zIndex: 1000,
|
|
235
346
|
}, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } },
|
|
236
|
-
React.createElement(Navigation, { title: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.title) || 'Photo Viewer', onClose: onClose, onNext: images.length > 1 ? handleNext : undefined, onPrevious: images.length > 1 ? handlePrevious : undefined, onZoomIn: allowZoom ? function () { return handleZoom(zoom + zoomStep); } : undefined, onZoomOut: allowZoom ? function () { return handleZoom(zoom - zoomStep); } : undefined, onRotate: allowRotate ? handleRotate : undefined, onReset: zoom !== 1 || rotationCount !== 0 ? handleReset : undefined, showControls: isHovered }),
|
|
347
|
+
React.createElement(Navigation, { title: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.title) || 'Photo Viewer', onClose: onClose, onNext: images.length > 1 ? handleNext : undefined, onPrevious: images.length > 1 ? handlePrevious : undefined, onZoomIn: allowZoom ? function () { return handleZoom(zoom + zoomStep); } : undefined, onZoomOut: allowZoom ? function () { return handleZoom(zoom - zoomStep); } : undefined, onRotate: allowRotate ? handleRotate : undefined, onReset: zoom !== 1 || rotationCount !== 0 ? handleReset : undefined, onToggleOverlay: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.svgOverlay) ? function () { return setShowOverlay(!showOverlay); } : undefined, showOverlay: showOverlay, showControls: isHovered }),
|
|
237
348
|
React.createElement("div", { style: {
|
|
238
349
|
position: 'relative',
|
|
239
350
|
width: '100%',
|
|
@@ -242,15 +353,20 @@ var PhotoViewer = function (_a) {
|
|
|
242
353
|
alignItems: 'center',
|
|
243
354
|
justifyContent: 'center',
|
|
244
355
|
} },
|
|
245
|
-
React.createElement("
|
|
246
|
-
|
|
247
|
-
maxHeight: '80%',
|
|
248
|
-
minHeight: '80%',
|
|
249
|
-
objectFit: 'contain',
|
|
356
|
+
React.createElement("div", { style: {
|
|
357
|
+
position: 'relative',
|
|
250
358
|
transform: "scale(".concat(zoom, ") rotateZ(").concat(rotationCount * 90, "deg)"),
|
|
251
359
|
transformOrigin: 'center',
|
|
252
360
|
transition: 'transform 0.2s ease',
|
|
253
|
-
|
|
361
|
+
display: 'inline-block',
|
|
362
|
+
} },
|
|
363
|
+
React.createElement("img", { ref: imageRef, src: currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.src, alt: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.alt) || '', onDoubleClick: handleDoubleClick, style: {
|
|
364
|
+
maxWidth: '80vw',
|
|
365
|
+
maxHeight: '80vh',
|
|
366
|
+
objectFit: 'contain',
|
|
367
|
+
display: 'block',
|
|
368
|
+
} }),
|
|
369
|
+
showOverlay && (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.svgOverlay) && (React.createElement(ImageOverlay, { overlay: currentSelectedImage.svgOverlay, position: currentSelectedImage.overlayPosition, size: currentSelectedImage.overlaySize }))))));
|
|
254
370
|
};
|
|
255
371
|
|
|
256
372
|
var Image = function (_a) {
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -41,28 +41,18 @@ var IconZoomIn = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdG
|
|
|
41
41
|
var IconZoomOut = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51aS16b29tLW91dDwvdGl0bGU+CjxnbHlwaCBnbHlwaC1uYW1lPSJ1aS16b29tLW91dCIgdW5pY29kZT0iJiN4ZWM5ODsiIGhvcml6LWFkdi14PSIxMDAwIiAvPgo8cGF0aCBmaWxsPSIjZmZmZmZmIiBkPSJNOTgyLjIgNzg4LjZsLTIzNC45MDAwMDAwMDAwMDAxLTIxNmMyNy01My41IDQyLjYwMDAwMDAwMDAwMDAyLTExMy43MDAwMDAwMDAwMDAwNSA0Mi42MDAwMDAwMDAwMDAwMi0xNzcuNzAwMDAwMDAwMDAwMDUgMC0yMTguMDk5OTk5OTk5OTk5OTctMTc2Ljg5OTk5OTk5OTk5OTk4LTM5NC45LTM5NC45LTM5NC45LTIxOC4yIDAtMzk1IDE3Ni44LTM5NSAzOTQuOSAwIDIxOC4xMDAwMDAwMDAwMDAwMiAxNzYuOCAzOTUgMzk1IDM5NSA2My44OTk5OTk5OTk5OTk5OCAwIDEyNC4xMDAwMDAwMDAwMDAwMi0xNS41IDE3Ny42MDAwMDAwMDAwMDAwMi00Mi41bDIxNS44OTk5OTk5OTk5OTk5OCAyMzQuODk5OTk5OTk5OTk5OThjMjEgMjIuOTAwMDAwMDAwMDAwMDkgNTYuMjAwMDAwMDAwMDAwMDQ1IDIzLjYwMDAwMDAwMDAwMDAyMyA3OC4yMDAwMDAwMDAwMDAwNSAxLjYwMDAwMDAwMDAwMDAyMjdsMTE3LjI5OTk5OTk5OTk5OTk1LTExNy4yOTk5OTk5OTk5OTk5NWMyMS43OTk5OTk5OTk5OTk5NTUtMjEuODAwMDAwMDAwMDAwMDY4IDIxLjEwMDAwMDAwMDAwMDAyMy01Ny0xLjc5OTk5OTk5OTk5OTk1NDUtNzh6IG0tNTg3LjItMTUyLjcwMDAwMDAwMDAwMDA1Yy0xMzMgMC0yNDAuOS0xMDcuODk5OTk5OTk5OTk5OTgtMjQwLjktMjQwLjg5OTk5OTk5OTk5OTk4czEwNy45LTI0MSAyNDAuOS0yNDFjMTMzLjEwMDAwMDAwMDAwMDAyIDAgMjQwLjg5OTk5OTk5OTk5OTk4IDEwNy44OTk5OTk5OTk5OTk5OCAyNDAuODk5OTk5OTk5OTk5OTggMjQwLjg5OTk5OTk5OTk5OTk4cy0xMDcuODk5OTk5OTk5OTk5OTggMjQxLTI0MC44OTk5OTk5OTk5OTk5OCAyNDF6IG0xMjUuMjk5OTk5OTk5OTk5OTUtMjgyLjVoLTI1My41OTk5OTk5OTk5OTk5N2MtMTIuMzk5OTk5OTk5OTk5OTc3IDAtMjIuNSAxMC4xMDAwMDAwMDAwMDAwMjMtMjIuNSAyMi42MDAwMDAwMDAwMDAwMjN2MjkuNWMwIDEyLjM5OTk5OTk5OTk5OTk3NyAxMC4xMDAwMDAwMDAwMDAwMjMgMjIuNjAwMDAwMDAwMDAwMDIzIDIyLjUgMjIuNjAwMDAwMDAwMDAwMDIzaDI1My41OTk5OTk5OTk5OTk5N2MxMi40MDAwMDAwMDAwMDAwOTEgMCAyMi41LTEwLjEwMDAwMDAwMDAwMDAyMyAyMi41LTIyLjYwMDAwMDAwMDAwMDAyM3YtMjkuNWMwLTEyLjM5OTk5OTk5OTk5OTk3Ny0xMC4wOTk5OTk5OTk5OTk5MDktMjIuNjAwMDAwMDAwMDAwMDIzLTIyLjUtMjIuNjAwMDAwMDAwMDAwMDIzeiIvPgo8L3N2Zz4=\")";
|
|
42
42
|
var IconRotate = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT51bmRvPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InVuZG8iIHVuaWNvZGU9IiYjeGVlMGI7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggIGZpbGw9IiNmZmZmZmYiIGQ9Ik04OTguMSA2NTVjLTcuMjAwMDAwMDAwMDAwMDQ1NSAyOS41LTExLjM5OTk5OTk5OTk5OTk3NyA1OS43MDAwMDAwMDAwMDAwNDUtMjEuNzAwMDAwMDAwMDAwMDQ1IDg4LjUtNTMuMzk5OTk5OTk5OTk5OTggMTUwLjcwMDAwMDAwMDAwMDA1LTIwMCAyNTUuODk5OTk5OTk5OTk5OTgtMzU4LjI5OTk5OTk5OTk5OTk1IDI1Ni41LTQxLjcwMDAwMDAwMDAwMDA0NSAwLjEwMDAwMDAwMDAwMDAyMjc0LTc2LjMwMDAwMDAwMDAwMDAxLTI4Ljg5OTk5OTk5OTk5OTk3Ny04MC40MDAwMDAwMDAwMDAwMy02Ny4zOTk5OTk5OTk5OTk5OC00LjM5OTk5OTk5OTk5OTk3Ny00MC44OTk5OTk5OTk5OTk5OCAyMC45MDAwMDAwMDAwMDAwMzQtNzcuODk5OTk5OTk5OTk5OTggNjAuNjAwMDAwMDAwMDAwMDItODUuMTAwMDAwMDAwMDAwMDIgMjIuODAwMDAwMDAwMDAwMDEtNC4xMDAwMDAwMDAwMDAwMjMgNDYuNjk5OTk5OTk5OTk5OTktMi4yOTk5OTk5OTk5OTk5NTQ1IDY5LjQwMDAwMDAwMDAwMDAzLTguNSA5Mi4wOTk5OTk5OTk5OTk5MS0yNS4yMDAwMDAwMDAwMDAwNDUgMTUzLTg0IDE3MC43OTk5OTk5OTk5OTk5NS0xNzcuMjk5OTk5OTk5OTk5OTUgMTguODk5OTk5OTk5OTk5OTc3LTk4LjMwMDAwMDAwMDAwMDA3LTkuNS0xODQuMDAwMDAwMDAwMDAwMDYtOTIuMjAwMDAwMDAwMDAwMDUtMjQ2LjQwMDAwMDAwMDAwMDAzLTIzLjM5OTk5OTk5OTk5OTk3Ny0xNy42MDAwMDAwMDAwMDAwMjMtNTAuODk5OTk5OTk5OTk5OTgtMjguMTk5OTk5OTk5OTk5OTktODAtMjktNTYuMTk5OTk5OTk5OTk5OTMtMS41LTExMi4zOTk5OTk5OTk5OTk5OC0wLjQwMDAwMDAwMDAwMDAzNDEtMTY5LjA5OTk5OTk5OTk5OTk3LTAuNDAwMDAwMDAwMDAwMDM0MSAwLjQwMDAwMDAwMDAwMDAzNDEgNy41IDYuNSAxMC4yMDAwMDAwMDAwMDAwNDUgMTAuNDAwMDAwMDAwMDAwMDM0IDE0LjEwMDAwMDAwMDAwMDAyMyAyNy43OTk5OTk5OTk5OTk5NTUgMjguMTAwMDAwMDAwMDAwMDIzIDU2LjM5OTk5OTk5OTk5OTk4IDU1LjYwMDAwMDAwMDAwMDAyIDgzLjc5OTk5OTk5OTk5OTk1IDg0LjEwMDAwMDAwMDAwMDAyIDMxIDMyLjEwMDAwMDAwMDAwMDAyIDMwLjUgNzkuMjk5OTk5OTk5OTk5OTUtMC4wOTk5OTk5OTk5OTk5NjU5IDEwOS42OTk5OTk5OTk5OTk5My0yOS44MDAwMDAwMDAwMDAwMSAyOS42MDAwMDAwMDAwMDAwMjMtNzcuMTAwMDAwMDAwMDAwMDIgMzAuMjAwMDAwMDAwMDAwMDQ1LTEwOC4zMDAwMDAwMDAwMDAwMS0wLjY5OTk5OTk5OTk5OTkzMTgtOTIuNS05MS43MDAwMDAwMDAwMDAwNS0xODQuMi0xODQuMTAwMDAwMDAwMDAwMDItMjc2LjQtMjc1LjkwMDAwMDAwMDAwMDAzLTcuNTAwMDAwMDAwMDAwMDI4LTcuNS02LjIwMDAwMDAwMDAwMDAxNy0xMS4zOTk5OTk5OTk5OTk5NzcgMC42OTk5OTk5OTk5OTk5NzQ0LTE4LjMwMDAwMDAwMDAwMDAxIDkxLjgtOTEuMjk5OTk5OTk5OTk5OTggMTgzLjM5OTk5OTk5OTk5OTk4LTE4Mi44OTk5OTk5OTk5OTk5OCAyNzQuNy0yNzQuNyAxMS44MDAwMDAwMDAwMDAwMTEtMTEuODk5OTk5OTk5OTk5OTg4IDI3LTE2LjY5OTk5OTk5OTk5OTk5IDQxLTI0LjE5OTk5OTk5OTk5OTk5aDI4LjgwMDAwMDAwMDAwMDAxYzEuMzk5OTk5OTk5OTk5OTc3MyAzLjQgNC41OTk5OTk5OTk5OTk5NjYgMy4xIDcuMzk5OTk5OTk5OTk5OTc3IDQuMSA1OC4xOTk5OTk5OTk5OTk5OSAyMC41IDczLjY5OTk5OTk5OTk5OTk5IDg1LjUgMzAuOTAwMDAwMDAwMDAwMDM0IDEzMC05LjUgOS45MDAwMDAwMDAwMDAwMDYtMTkuNSAxOS41LTI5LjMwMDAwMDAwMDAwMDAxIDI5LjIwMDAwMDAwMDAwMDAxNy0yMS41IDIxLjE5OTk5OTk5OTk5OTk5LTQzIDQyLjUtNjguMzAwMDAwMDAwMDAwMDEgNjcuMzk5OTk5OTk5OTk5OThoMjMuMTAwMDAwMDAwMDAwMDIzYzQ3LjM5OTk5OTk5OTk5OTk4IDAgOTQuNjk5OTk5OTk5OTk5OTktMC4zOTk5OTk5OTk5OTk5NzcyNiAxNDIuMTAwMDAwMDAwMDAwMDIgMC4zMDAwMDAwMDAwMDAwMTEzNyAzNC44OTk5OTk5OTk5OTk5OCAwLjU5OTk5OTk5OTk5OTk5NDMgNjkuMTk5OTk5OTk5OTk5OTMgNi41IDEwMS43OTk5OTk5OTk5OTk5NSAxOS4wOTk5OTk5OTk5OTk5OTQgMTEzLjEwMDAwMDAwMDAwMDAyIDQzLjU5OTk5OTk5OTk5OTk5NCAxODIuMzk5OTk5OTk5OTk5OTggMTI3LjUwMDAwMDAwMDAwMDAzIDIyMC4xMDAwMDAwMDAwMDAwMiAyNDAuMjk5OTk5OTk5OTk5OTggOC44OTk5OTk5OTk5OTk5NzcgMjYuNzAwMDAwMDAwMDAwMDQ1IDExLjM5OTk5OTk5OTk5OTk3NyA1NC44MDAwMDAwMDAwMDAwNyAxOC4zOTk5OTk5OTk5OTk5NzcgODEuODAwMDAwMDAwMDAwMDcgMC4xMDAwMDAwMDAwMDAwMjI3NCAyNy41OTk5OTk5OTk5OTk5MSAwLjEwMDAwMDAwMDAwMDAyMjc0IDU1LjE5OTk5OTk5OTk5OTkzIDAuMTAwMDAwMDAwMDAwMDIyNzQgODIuNzk5OTk5OTk5OTk5OTV6Ii8+Cjwvc3ZnPg==\")";
|
|
43
43
|
var IconReset = "url(\"data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaGVpZ2h0PSIxMDAwIiB3aWR0aD0iMTAwMCIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgo8bWV0YWRhdGE+SWNvRm9udCBJY29uczwvbWV0YWRhdGE+Cjx0aXRsZT5yZWZyZXNoPC90aXRsZT4KPGdseXBoIGdseXBoLW5hbWU9InJlZnJlc2giIHVuaWNvZGU9IiYjeGVmZDE7IiBob3Jpei1hZHYteD0iMTAwMCIgLz4KPHBhdGggZmlsbD0iI2ZmZmZmZiIgZD0iTTg5OS44IDU1NC42aC00Mi4xOTk5OTk5OTk5OTk5M2MtMTguODk5OTk5OTk5OTk5OTc3IDAtMzYuNSAxNS4xOTk5OTk5OTk5OTk5MzItNDEuNjAwMDAwMDAwMDAwMDIgMzMuMzk5OTk5OTk5OTk5OTgtMzguMjk5OTk5OTk5OTk5OTU1IDEzOC4zOTk5OTk5OTk5OTk5OC0xNjUuMzk5OTk5OTk5OTk5OTggMjQwLTMxNi4yIDI0MC0xMDIuODAwMDAwMDAwMDAwMDEgMC0xOTQuOC00Ny4yOTk5OTk5OTk5OTk5NTUtMjU0LjktMTIxLjYwMDAwMDAwMDAwMDAyLTExLjkwMDAwMDAwMDAwMDAwNi0xNC42OTk5OTk5OTk5OTk5MzItOC44MDAwMDAwMDAwMDAwMTEtMzggNS4wOTk5OTk5OTk5OTk5OTQtNTAuNzk5OTk5OTk5OTk5OTU1bDg0LjgwMDAwMDAwMDAwMDAxLTc3Ljg5OTk5OTk5OTk5OTk4YzEzLjg5OTk5OTk5OTk5OTk3Ny0xMi44MDAwMDAwMDAwMDAwNjggOS44OTk5OTk5OTk5OTk5NzctMjMuMTAwMDAwMDAwMDAwMDIzLTktMjMuMTAwMDAwMDAwMDAwMDIzaC0yMjkuMTAwMDAwMDAwMDAwMDJjLTE4Ljg5OTk5OTk5OTk5OTk5IDAtMzQuMTk5OTk5OTk5OTk5OTkgMTUuMjk5OTk5OTk5OTk5OTU1LTM0LjE5OTk5OTk5OTk5OTk5IDM0LjE5OTk5OTk5OTk5OTkzdjIwNS4xMDAwMDAwMDAwMDAwMmMwIDE4Ljg5OTk5OTk5OTk5OTk3NyAxMS4yOTk5OTk5OTk5OTk5OTcgMjMuODAwMDAwMDAwMDAwMDY4IDI1LjA5OTk5OTk5OTk5OTk5NCAxMWwzMC42MDAwMDAwMDAwMDAwMS0yOC4xOTk5OTk5OTk5OTk5MzJjMTMuODk5OTk5OTk5OTk5OTkxLTEyLjgwMDAwMDAwMDAwMDA2OCAzMy44OTk5OTk5OTk5OTk5OS0xMC42MDAwMDAwMDAwMDAwMjMgNDYuMTAwMDAwMDAwMDAwMDEgMy44OTk5OTk5OTk5OTk5NzczIDgwLjI5OTk5OTk5OTk5OTk4IDk1Ljg5OTk5OTk5OTk5OTk4IDIwMC44OTk5OTk5OTk5OTk5OCAxNTYuODk5OTk5OTk5OTk5OTggMzM1LjUgMTU2Ljg5OTk5OTk5OTk5OTk4IDIxMS40OTk5OTk5OTk5OTk5NCAwIDM4Ny43LTE1MCA0MjguNTk5OTk5OTk5OTk5OTctMzQ5LjIwMDAwMDAwMDAwMDA1IDMuODk5OTk5OTk5OTk5OTc3My0xOC41LTkuNjk5OTk5OTk5OTk5OTMyLTMzLjY5OTk5OTk5OTk5OTkzLTI4LjYwMDAwMDAwMDAwMDAyMy0zMy42OTk5OTk5OTk5OTk5M3ogbTEzLjUtMzU4LjQwMDAwMDAwMDAwMDAzbC0yOS44OTk5OTk5OTk5OTk5NzcgMjkuODAwMDAwMDAwMDAwMDFjLTEzLjM5OTk5OTk5OTk5OTk3NyAxMy4zMDAwMDAwMDAwMDAwMTEtMzIuNzk5OTk5OTk5OTk5OTU1IDExLjUtNDQuNzk5OTk5OTk5OTk5OTU1LTMuMDk5OTk5OTk5OTk5OTk0My04MC4yMDAwMDAwMDAwMDAwNS05Ny45LTIwMi4zMDAwMDAwMDAwMDAwNy0xNjAuNC0zMzguOC0xNjAuNC0yMTEuMTAwMDAwMDAwMDAwMDIgMC0zODcuNiAxNDkuNy00MjguMyAzNDkuMi0zLjc5OTk5OTk5OTk5OTk5NyAxOC41IDkuNzk5OTk5OTk5OTk5OTk3IDMzLjgwMDAwMDAwMDAwMDAxIDI4LjcwMDAwMDAwMDAwMDAwMyAzMy44MDAwMDAwMDAwMDAwMWg0Mi4yYzE4LjkwMDAwMDAwMDAwMDAwNiAwIDM2LjUtMTUuMTAwMDAwMDAwMDAwMDIzIDQxLjUtMzMuMzAwMDAwMDAwMDAwMDEgMzguMjk5OTk5OTk5OTk5OTgtMTM4LjggMTY1LjQtMjQwLjIgMzE1LjktMjQwLjIgMTA2LjYwMDAwMDAwMDAwMDAyIDAgMjAxLjIwMDAwMDAwMDAwMDA1IDUwLjUgMjYxLjIwMDAwMDAwMDAwMDA1IDEyOS4xMDAwMDAwMDAwMDAwMiAxMS41IDE1IDguMzk5OTk5OTk5OTk5OTc3IDM5LTQuODk5OTk5OTk5OTk5OTc3IDUyLjI5OTk5OTk5OTk5OTk1NWwtNjcuODAwMDAwMDAwMDAwMDcgNjcuOTAwMDAwMDAwMDAwMDNjLTEzLjI5OTk5OTk5OTk5OTk1NSAxMy4zOTk5OTk5OTk5OTk5NzctOC44OTk5OTk5OTk5OTk5NzcgMjQuMTk5OTk5OTk5OTk5OTkgMTAgMjQuMTk5OTk5OTk5OTk5OTloMjA1LjEwMDAwMDAwMDAwMDAyYzE4Ljg5OTk5OTk5OTk5OTk3NyAwIDM0LjIwMDAwMDAwMDAwMDA0NS0xNS4zMDAwMDAwMDAwMDAwMTEgMzQuMjAwMDAwMDAwMDAwMDQ1LTM0LjE5OTk5OTk5OTk5OTk5di0yMDUuMTAwMDAwMDAwMDAwMDJjLTAuMTAwMDAwMDAwMDAwMDIyNzQtMTguODk5OTk5OTk5OTk5OTc3LTEwLjg5OTk5OTk5OTk5OTk3Ny0yMy4zOTk5OTk5OTk5OTk5NzctMjQuMzAwMDAwMDAwMDAwMDY4LTEweiIvPgo8L3N2Zz4=\")";
|
|
44
|
+
var IconOverlay = "url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTAwMCIgd2lkdGg9IjEwMDAiPjxwYXRoIGZpbGw9IiNmZmZmZmYiIGQ9Ik0xMDAgMTAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDEwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCAxMDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNDAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDQwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA0MDBoMjAwdjIwMGgtMjAwdi0yMDB6IE0xMDAgNzAwaDIwMHYyMDBoLTIwMHYtMjAweiBNNDAwIDcwMGgyMDB2MjAwaC0yMDB2LTIwMHogTTcwMCA3MDBoMjAwdjIwMGgtMjAwdi0yMDB6Ii8+PC9zdmc+\")";
|
|
44
45
|
|
|
45
46
|
var NavigationActionButton = function (_a) {
|
|
46
|
-
var icon = _a.icon, onClick = _a.onClick, transform = _a.transform;
|
|
47
|
-
return (React.createElement("div", { className: "nav-action-button", style: {
|
|
48
|
-
width: '12px',
|
|
49
|
-
height: '12px',
|
|
50
|
-
backgroundImage: icon,
|
|
51
|
-
backgroundSize: 'contain',
|
|
52
|
-
backgroundRepeat: 'no-repeat',
|
|
53
|
-
cursor: 'pointer',
|
|
54
|
-
transform: transform,
|
|
55
|
-
transition: 'all 0.2s ease-in-out',
|
|
56
|
-
borderRadius: '4px',
|
|
57
|
-
padding: '4px',
|
|
58
|
-
}, onClick: onClick }));
|
|
47
|
+
var icon = _a.icon, onClick = _a.onClick, transform = _a.transform, customStyle = _a.style;
|
|
48
|
+
return (React.createElement("div", { className: "nav-action-button", style: __assign({ width: '12px', height: '12px', backgroundImage: icon, backgroundSize: 'contain', backgroundRepeat: 'no-repeat', cursor: 'pointer', transform: transform, transition: 'all 0.2s ease-in-out', borderRadius: '4px', padding: '4px' }, customStyle), onClick: onClick }));
|
|
59
49
|
};
|
|
60
50
|
var style = document.createElement('style');
|
|
61
51
|
style.textContent = "\n .nav-action-button:hover {\n transform: scale(1.2);\n background-color: rgba(0, 0, 0, 0.05);\n }\n";
|
|
62
52
|
document.head.appendChild(style);
|
|
63
53
|
|
|
64
54
|
var Navigation = function (_a) {
|
|
65
|
-
var title = _a.title, onClose = _a.onClose, onZoomIn = _a.onZoomIn, onZoomOut = _a.onZoomOut, onRotate = _a.onRotate, onReset = _a.onReset, onNext = _a.onNext, onPrevious = _a.onPrevious, _b = _a.showControls, showControls =
|
|
55
|
+
var title = _a.title, onClose = _a.onClose, onZoomIn = _a.onZoomIn, onZoomOut = _a.onZoomOut, onRotate = _a.onRotate, onReset = _a.onReset, onNext = _a.onNext, onPrevious = _a.onPrevious, onToggleOverlay = _a.onToggleOverlay, _b = _a.showOverlay, showOverlay = _b === void 0 ? false : _b, _c = _a.showControls, showControls = _c === void 0 ? true : _c;
|
|
66
56
|
return (React.createElement("div", { className: "photo-viewer-navigation", style: {
|
|
67
57
|
position: 'fixed',
|
|
68
58
|
bottom: 30,
|
|
@@ -88,9 +78,126 @@ var Navigation = function (_a) {
|
|
|
88
78
|
onZoomIn && React.createElement(NavigationActionButton, { icon: IconZoomIn, onClick: onZoomIn }),
|
|
89
79
|
onRotate && React.createElement(NavigationActionButton, { icon: IconRotate, onClick: function () { return onRotate('left'); } }),
|
|
90
80
|
onRotate && (React.createElement(NavigationActionButton, { icon: IconRotate, onClick: function () { return onRotate('right'); }, transform: "rotateY(180deg)" })),
|
|
81
|
+
onToggleOverlay && (React.createElement(NavigationActionButton, { icon: IconOverlay, onClick: onToggleOverlay, style: showOverlay ? { backgroundColor: 'rgba(255, 255, 255, 0.2)' } : undefined })),
|
|
91
82
|
onClose && React.createElement(NavigationActionButton, { icon: IconClose, onClick: onClose }))));
|
|
92
83
|
};
|
|
93
84
|
|
|
85
|
+
var ImageOverlay = function (_a) {
|
|
86
|
+
var overlay = _a.overlay, _b = _a.position, position = _b === void 0 ? 'center' : _b, _c = _a.size, size = _c === void 0 ? {} : _c;
|
|
87
|
+
// Calculate position styles
|
|
88
|
+
var getPositionStyles = function (pos) {
|
|
89
|
+
var styles = {};
|
|
90
|
+
switch (pos) {
|
|
91
|
+
case 'center':
|
|
92
|
+
styles.top = '50%';
|
|
93
|
+
styles.left = '50%';
|
|
94
|
+
styles.transform = 'translate(-50%, -50%)';
|
|
95
|
+
styles.display = 'flex';
|
|
96
|
+
styles.alignItems = 'center';
|
|
97
|
+
styles.justifyContent = 'center';
|
|
98
|
+
break;
|
|
99
|
+
case 'top-left':
|
|
100
|
+
styles.top = 0;
|
|
101
|
+
styles.left = 0;
|
|
102
|
+
break;
|
|
103
|
+
case 'top-right':
|
|
104
|
+
styles.top = 0;
|
|
105
|
+
styles.right = 0;
|
|
106
|
+
break;
|
|
107
|
+
case 'bottom-left':
|
|
108
|
+
styles.bottom = 0;
|
|
109
|
+
styles.left = 0;
|
|
110
|
+
break;
|
|
111
|
+
case 'bottom-right':
|
|
112
|
+
styles.bottom = 0;
|
|
113
|
+
styles.right = 0;
|
|
114
|
+
break;
|
|
115
|
+
case 'top':
|
|
116
|
+
styles.top = 0;
|
|
117
|
+
styles.left = '50%';
|
|
118
|
+
styles.transform = 'translateX(-50%)';
|
|
119
|
+
break;
|
|
120
|
+
case 'bottom':
|
|
121
|
+
styles.bottom = 0;
|
|
122
|
+
styles.left = '50%';
|
|
123
|
+
styles.transform = 'translateX(-50%)';
|
|
124
|
+
break;
|
|
125
|
+
case 'left':
|
|
126
|
+
styles.top = '50%';
|
|
127
|
+
styles.left = 0;
|
|
128
|
+
styles.transform = 'translateY(-50%)';
|
|
129
|
+
break;
|
|
130
|
+
case 'right':
|
|
131
|
+
styles.top = '50%';
|
|
132
|
+
styles.right = 0;
|
|
133
|
+
styles.transform = 'translateY(-50%)';
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return styles;
|
|
137
|
+
};
|
|
138
|
+
// Calculate size styles
|
|
139
|
+
var getSizeStyles = function () {
|
|
140
|
+
var sizeStyles = {};
|
|
141
|
+
if (size.maxWidth !== undefined) {
|
|
142
|
+
sizeStyles.maxWidth = typeof size.maxWidth === 'number' ? "".concat(size.maxWidth, "px") : size.maxWidth;
|
|
143
|
+
}
|
|
144
|
+
if (size.maxHeight !== undefined) {
|
|
145
|
+
sizeStyles.maxHeight = typeof size.maxHeight === 'number' ? "".concat(size.maxHeight, "px") : size.maxHeight;
|
|
146
|
+
}
|
|
147
|
+
if (size.width !== undefined) {
|
|
148
|
+
sizeStyles.width = typeof size.width === 'number' ? "".concat(size.width, "px") : size.width;
|
|
149
|
+
}
|
|
150
|
+
if (size.height !== undefined) {
|
|
151
|
+
sizeStyles.height = typeof size.height === 'number' ? "".concat(size.height, "px") : size.height;
|
|
152
|
+
}
|
|
153
|
+
// Keep aspect ratio if only one dimension is specified
|
|
154
|
+
if (size.width && !size.height) {
|
|
155
|
+
sizeStyles.height = 'auto';
|
|
156
|
+
}
|
|
157
|
+
else if (size.height && !size.width) {
|
|
158
|
+
sizeStyles.width = 'auto';
|
|
159
|
+
}
|
|
160
|
+
// If maxWidth or maxHeight is set, ensure aspect ratio is maintained
|
|
161
|
+
if (size.maxWidth && !size.maxHeight && !size.width && !size.height) {
|
|
162
|
+
sizeStyles.height = 'auto';
|
|
163
|
+
}
|
|
164
|
+
else if (size.maxHeight && !size.maxWidth && !size.width && !size.height) {
|
|
165
|
+
sizeStyles.width = 'auto';
|
|
166
|
+
}
|
|
167
|
+
return sizeStyles;
|
|
168
|
+
};
|
|
169
|
+
var positionStyles = getPositionStyles(position);
|
|
170
|
+
var sizeStyles = getSizeStyles();
|
|
171
|
+
// If no size is specified, assume the overlay should cover the full image
|
|
172
|
+
var hasSizeConstraints = size.maxWidth !== undefined ||
|
|
173
|
+
size.maxHeight !== undefined ||
|
|
174
|
+
size.width !== undefined ||
|
|
175
|
+
size.height !== undefined;
|
|
176
|
+
var shouldCoverFullImage = !hasSizeConstraints;
|
|
177
|
+
// Check if overlay is a URL string
|
|
178
|
+
var isUrlOverlay = typeof overlay === 'string';
|
|
179
|
+
return (React.createElement("div", { style: {
|
|
180
|
+
position: 'absolute',
|
|
181
|
+
pointerEvents: 'none',
|
|
182
|
+
top: shouldCoverFullImage ? 0 : positionStyles.top,
|
|
183
|
+
left: shouldCoverFullImage ? 0 : positionStyles.left,
|
|
184
|
+
right: shouldCoverFullImage ? 0 : positionStyles.right,
|
|
185
|
+
bottom: shouldCoverFullImage ? 0 : positionStyles.bottom,
|
|
186
|
+
width: shouldCoverFullImage ? '100%' : sizeStyles.width,
|
|
187
|
+
height: shouldCoverFullImage ? '100%' : sizeStyles.height,
|
|
188
|
+
maxWidth: shouldCoverFullImage ? undefined : sizeStyles.maxWidth,
|
|
189
|
+
maxHeight: shouldCoverFullImage ? undefined : sizeStyles.maxHeight,
|
|
190
|
+
transform: shouldCoverFullImage ? undefined : positionStyles.transform,
|
|
191
|
+
display: shouldCoverFullImage ? 'block' : positionStyles.display,
|
|
192
|
+
alignItems: positionStyles.alignItems,
|
|
193
|
+
justifyContent: positionStyles.justifyContent,
|
|
194
|
+
} }, isUrlOverlay ? (React.createElement("img", { src: overlay, alt: "Overlay", style: {
|
|
195
|
+
width: '100%',
|
|
196
|
+
height: '100%',
|
|
197
|
+
objectFit: 'contain',
|
|
198
|
+
} })) : (overlay)));
|
|
199
|
+
};
|
|
200
|
+
|
|
94
201
|
var DEFAULT_ZOOM_STEP = 0.3;
|
|
95
202
|
var DEFAULT_LARGE_ZOOM = 4;
|
|
96
203
|
var defaultSettings = {
|
|
@@ -111,13 +218,15 @@ var PhotoViewer = function (_a) {
|
|
|
111
218
|
var _c = React.useState(1), zoom = _c[0], setZoom = _c[1];
|
|
112
219
|
var _d = React.useState(0), rotationCount = _d[0], setRotationCount = _d[1];
|
|
113
220
|
var _e = React.useState(false), isHovered = _e[0], setIsHovered = _e[1];
|
|
221
|
+
var _f = React.useState(false), showOverlay = _f[0], setShowOverlay = _f[1];
|
|
114
222
|
var containerRef = React.useRef(null);
|
|
115
223
|
var imageRef = React.useRef(null);
|
|
116
|
-
var
|
|
224
|
+
var _g = React.useState(selectedImage), currentSelectedImage = _g[0], setCurrentSelectedImage = _g[1];
|
|
117
225
|
React.useEffect(function () {
|
|
118
226
|
setCurrentSelectedImage(selectedImage);
|
|
119
227
|
setZoom(1);
|
|
120
228
|
setRotationCount(0);
|
|
229
|
+
setShowOverlay(false);
|
|
121
230
|
}, [selectedImage]);
|
|
122
231
|
var handleNext = React.useCallback(function () {
|
|
123
232
|
var currentImageIndex = images.findIndex(function (img) { return img.id === (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.id); });
|
|
@@ -127,6 +236,7 @@ var PhotoViewer = function (_a) {
|
|
|
127
236
|
setCurrentSelectedImage(nextImage);
|
|
128
237
|
setZoom(1);
|
|
129
238
|
setRotationCount(0);
|
|
239
|
+
setShowOverlay(false);
|
|
130
240
|
onImageChange === null || onImageChange === void 0 ? void 0 : onImageChange(nextImage);
|
|
131
241
|
}
|
|
132
242
|
}, [images, currentSelectedImage, onImageChange]);
|
|
@@ -138,6 +248,7 @@ var PhotoViewer = function (_a) {
|
|
|
138
248
|
setCurrentSelectedImage(prevImage);
|
|
139
249
|
setZoom(1);
|
|
140
250
|
setRotationCount(0);
|
|
251
|
+
setShowOverlay(false);
|
|
141
252
|
onImageChange === null || onImageChange === void 0 ? void 0 : onImageChange(prevImage);
|
|
142
253
|
}
|
|
143
254
|
}, [images, currentSelectedImage, onImageChange]);
|
|
@@ -235,7 +346,7 @@ var PhotoViewer = function (_a) {
|
|
|
235
346
|
justifyContent: 'center',
|
|
236
347
|
zIndex: 1000,
|
|
237
348
|
}, onMouseEnter: function () { return setIsHovered(true); }, onMouseLeave: function () { return setIsHovered(false); } },
|
|
238
|
-
React.createElement(Navigation, { title: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.title) || 'Photo Viewer', onClose: onClose, onNext: images.length > 1 ? handleNext : undefined, onPrevious: images.length > 1 ? handlePrevious : undefined, onZoomIn: allowZoom ? function () { return handleZoom(zoom + zoomStep); } : undefined, onZoomOut: allowZoom ? function () { return handleZoom(zoom - zoomStep); } : undefined, onRotate: allowRotate ? handleRotate : undefined, onReset: zoom !== 1 || rotationCount !== 0 ? handleReset : undefined, showControls: isHovered }),
|
|
349
|
+
React.createElement(Navigation, { title: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.title) || 'Photo Viewer', onClose: onClose, onNext: images.length > 1 ? handleNext : undefined, onPrevious: images.length > 1 ? handlePrevious : undefined, onZoomIn: allowZoom ? function () { return handleZoom(zoom + zoomStep); } : undefined, onZoomOut: allowZoom ? function () { return handleZoom(zoom - zoomStep); } : undefined, onRotate: allowRotate ? handleRotate : undefined, onReset: zoom !== 1 || rotationCount !== 0 ? handleReset : undefined, onToggleOverlay: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.svgOverlay) ? function () { return setShowOverlay(!showOverlay); } : undefined, showOverlay: showOverlay, showControls: isHovered }),
|
|
239
350
|
React.createElement("div", { style: {
|
|
240
351
|
position: 'relative',
|
|
241
352
|
width: '100%',
|
|
@@ -244,15 +355,20 @@ var PhotoViewer = function (_a) {
|
|
|
244
355
|
alignItems: 'center',
|
|
245
356
|
justifyContent: 'center',
|
|
246
357
|
} },
|
|
247
|
-
React.createElement("
|
|
248
|
-
|
|
249
|
-
maxHeight: '80%',
|
|
250
|
-
minHeight: '80%',
|
|
251
|
-
objectFit: 'contain',
|
|
358
|
+
React.createElement("div", { style: {
|
|
359
|
+
position: 'relative',
|
|
252
360
|
transform: "scale(".concat(zoom, ") rotateZ(").concat(rotationCount * 90, "deg)"),
|
|
253
361
|
transformOrigin: 'center',
|
|
254
362
|
transition: 'transform 0.2s ease',
|
|
255
|
-
|
|
363
|
+
display: 'inline-block',
|
|
364
|
+
} },
|
|
365
|
+
React.createElement("img", { ref: imageRef, src: currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.src, alt: (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.alt) || '', onDoubleClick: handleDoubleClick, style: {
|
|
366
|
+
maxWidth: '80vw',
|
|
367
|
+
maxHeight: '80vh',
|
|
368
|
+
objectFit: 'contain',
|
|
369
|
+
display: 'block',
|
|
370
|
+
} }),
|
|
371
|
+
showOverlay && (currentSelectedImage === null || currentSelectedImage === void 0 ? void 0 : currentSelectedImage.svgOverlay) && (React.createElement(ImageOverlay, { overlay: currentSelectedImage.svgOverlay, position: currentSelectedImage.overlayPosition, size: currentSelectedImage.overlaySize }))))));
|
|
256
372
|
};
|
|
257
373
|
|
|
258
374
|
var Image = function (_a) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
export type OverlayPosition = 'center' | 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'top' | 'bottom' | 'left' | 'right';
|
|
2
|
+
export type OverlaySize = {
|
|
3
|
+
maxWidth?: string | number;
|
|
4
|
+
maxHeight?: string | number;
|
|
5
|
+
width?: string | number;
|
|
6
|
+
height?: string | number;
|
|
7
|
+
};
|
|
1
8
|
export type ZZImage = {
|
|
2
9
|
id: string;
|
|
3
10
|
src: string;
|
|
4
11
|
alt?: string;
|
|
5
12
|
title?: string;
|
|
6
|
-
svgOverlay?: React.ReactNode;
|
|
13
|
+
svgOverlay?: React.ReactNode | string;
|
|
14
|
+
overlayPosition?: OverlayPosition;
|
|
15
|
+
overlaySize?: OverlaySize;
|
|
7
16
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "zimme-zoom",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "A lightweight React photo viewer with zoom, navigation, blurred background, and SVG overlay support",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.esm.js",
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
"license": "MIT",
|
|
65
65
|
"repository": {
|
|
66
66
|
"type": "git",
|
|
67
|
-
"url": "https://github.com/kulcsarrudolf/zimme-zoom"
|
|
67
|
+
"url": "git+https://github.com/kulcsarrudolf/zimme-zoom.git"
|
|
68
68
|
},
|
|
69
69
|
"bugs": {
|
|
70
70
|
"url": "https://github.com/kulcsarrudolf/zimme-zoom/issues"
|